【HALCON】lines_gauss 関数について - ライン検出と幅の推定ガイド
2024-08-20
2024-08-20
HALCON
のlines_gauss
関数は、画像内の曲線構造(ライン)をサブピクセル精度で検出し、その幅を推定するために使用されます。この関数は、Gaussianフィルタを使用してラインを抽出し、光の強弱に応じて明るいラインまたは暗いラインを検出できます。この記事では、lines_gauss
関数の使用方法とそのパラメータについて詳しく解説します。
関数の概要
lines_gauss
関数は、Gaussianフィルタを使用して画像内のラインを検出し、その幅を推定します。検出されたラインは、サブピクセル精度でXLD輪郭として返されます。この関数は、特に製造業や医療画像解析など、精密なライン検出が必要なアプリケーションに適しています。
関数のシグネチャ
lines_gauss(Image : Lines : Sigma, Low, High, LightDark, ExtractWidth, LineModel, CompleteJunctions : )
Image
入力オブジェクト。ライン検出を行う画像です。Lines
出力オブジェクト。検出されたラインがサブピクセル精度でXLD輪郭として格納されます。Sigma
入力コントロール。Gaussianスムージングの強度を指定します。大きな値にするとスムージングが強くなります。Low
閾値ヒステリシス操作の下限値を設定します。High
閾値ヒステリシス操作の上限値を設定します。LightDark
明るいラインまたは暗いラインを抽出するかを指定します('light'
または'dark'
)。ExtractWidth
ラインの幅を抽出するかどうかを指定します('true'
または'false'
)。LineModel
ラインの位置と幅を補正するためのモデルを指定します(例:'bar-shaped'
、'parabolic'
、'gaussian'
)。CompleteJunctions
接合点を補完するかどうかを指定します('true'
または'false'
)。
主要パラメータの詳細
Sigma(スムージングパラメータ)
Sigma
は、Gaussianスムージングの強度を制御します。値が大きいほど画像のスムージングが強化され、ラインの局所化が難しくなります。一般的な推奨値は1.5
ですが、用途によって調整が必要です。
Low(下限閾値)とHigh(上限閾値)
Low
とHigh
は、ヒステリシス閾値操作のしきい値を設定します。High
は強いエッジとみなされるポイントの上限値を定義し、Low
は無視されるエッジ点の下限値を定義します。
LightDark(ラインの明暗)
LightDark
は、明るいラインまたは暗いラインを抽出するかを指定します。たとえば、血管のような明るいラインを検出したい場合は'light'
を選択します。
ExtractWidth(幅の抽出)
このオプションを'true'
に設定すると、検出されたラインの幅も抽出されます。幅の推定が必要な場合に有効です。
LineModel(ラインモデル)
LineModel
は、検出されたラインの位置と幅を補正するために使用されます。たとえば、ラインの形状が非常にシャープである場合、'parabolic'
モデルが適しています。
使用例
以下は、lines_gauss
を使用した基本的なライン検出の例です:
read_image(Image, 'mreut4_3')
lines_gauss(Image, Lines, 1.5, 3, 8, 'light', 'true', 'bar-shaped', 'true')
dev_display(Lines)
この例では、Sigma
を1.5
、下限閾値Low
を3
、上限閾値High
を8
に設定し、明るいラインを検出しています。また、ラインの幅も抽出され、結果はLines
オブジェクトに格納されます。
まとめ
lines_gauss
関数は、画像内のラインをサブピクセル精度で検出し、その幅を推定する強力なツールです。Gaussianフィルタとしきい値設定を組み合わせて使用することで、さまざまなライン検出タスクに対応できます。ラインモデルや接合点の補完オプションを活用することで、より精度の高い検出が可能です。