【HALCON】lines_gauss 関数について - ライン検出と幅の推定ガイド

【HALCON】lines_gauss 関数について - ライン検出と幅の推定ガイド

2024-08-20

2024-08-20

HALCONlines_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(上限閾値)

LowHighは、ヒステリシス閾値操作のしきい値を設定します。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)

この例では、Sigma1.5、下限閾値Low3、上限閾値High8に設定し、明るいラインを検出しています。また、ラインの幅も抽出され、結果はLinesオブジェクトに格納されます。

まとめ

lines_gauss 関数は、画像内のラインをサブピクセル精度で検出し、その幅を推定する強力なツールです。Gaussianフィルタとしきい値設定を組み合わせて使用することで、さまざまなライン検出タスクに対応できます。ラインモデルや接合点の補完オプションを活用することで、より精度の高い検出が可能です。

Recommend