【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フィルタとしきい値設定を組み合わせて使用することで、さまざまなライン検出タスクに対応できます。ラインモデルや接合点の補完オプションを活用することで、より精度の高い検出が可能です。