【HALCON】hysteresis_threshold関数ガイド - ヒステリシス閾値によるエッジ検出
2024-09-11
2024-09-11
HALCON
のhysteresis_threshold
関数は、画像内のエッジを検出するためにヒステリシス閾値処理を適用する関数です。この手法では、2つの閾値を使用して強いエッジと弱いエッジを区別し、強いエッジを優先しながら、弱いエッジを保存することでノイズを抑えた精度の高いエッジ検出が可能になります。特に、複雑な画像やノイズの多い画像において、細かいエッジの抽出に有効です。
hysteresis_threshold関数の概要
hysteresis_threshold
関数は、ヒステリシス処理を使った2段階の閾値処理を行います。この方法では、最初に高い閾値で明確な強いエッジを検出し、次に低い閾値で弱いエッジを追跡しながら、エッジの連続性を維持します。これにより、ノイズに影響されにくいエッジ検出が可能となります。
基本構文
hysteresis_threshold(Image, RegionEdges, MinGray, MaxGray, LightDark)
Image
入力画像(グレースケール)。RegionEdges
出力領域。エッジ検出された領域が格納されます。MinGray
弱いエッジを検出するための低い閾値。MaxGray
強いエッジを検出するための高い閾値。LightDark
エッジの検出方向を指定します。'light'
は明るいエッジ、'dark'
は暗いエッジ、'light_dark'
は両方を検出します。
この関数では、2つの閾値(MinGray
とMaxGray
)を設定し、高い閾値で強いエッジを優先的に検出しつつ、低い閾値で弱いエッジも追跡して連続性を維持します。
使用例
次に、hysteresis_threshold
関数を使って、画像からエッジを検出するシンプルな例を示します。
* 入力画像の読み込み
read_image(Image, 'example_image')
* ヒステリシス閾値処理を適用してエッジを検出
hysteresis_threshold(Image, RegionEdges, 50, 150, 'light_dark')
* 結果の表示
dev_open_window(0, 0, 512, 512, 'black', WindowID)
disp_region(RegionEdges, WindowID)
この例では、強いエッジを検出するために150の高い閾値を設定し、弱いエッジを追跡するために50の低い閾値を設定しています。結果として、強いエッジを優先しつつ、弱いエッジも保持した精度の高いエッジ検出が行われます。
実際の応用
エッジ検出と形状認識
hysteresis_threshold
は、エッジ検出において非常に有効です。例えば、製造ラインで製品の輪郭を正確に検出する場合や、複雑な背景に対しても物体のエッジを正確に抽出したい場合に役立ちます。
ノイズの多い画像でのエッジ抽出
ノイズの多い画像では、通常のエッジ検出ではエッジが失われるか、ノイズがエッジとして誤認識される可能性があります。ヒステリシス閾値処理を使うことで、弱いエッジも保存しながら、ノイズを無視して強いエッジを優先的に検出できます。
医療画像や衛星画像の解析
医療画像や衛星画像では、画像内の細かい構造や特徴を正確に検出する必要があります。ヒステリシス閾値処理を使用することで、これらの画像に含まれる微細なエッジや形状を検出しやすくなります。
hysteresis_thresholdの応用例
以下の例では、ノイズの多い画像からエッジを検出し、製品の輪郭を強調する方法を示します。
* ノイズの多い画像を読み込む
read_image(Image, 'noisy_image')
* ヒステリシス閾値処理でエッジを抽出
hysteresis_threshold(Image, RegionEdges, 30, 120, 'light_dark')
* エッジ結果の表示
disp_region(RegionEdges, WindowID)
この例では、低い閾値30と高い閾値120を設定し、エッジの連続性を保持しつつ、ノイズの影響を最小限に抑えたエッジ検出を行っています。
まとめ
HALCON
のhysteresis_threshold
関数は、ヒステリシス処理を用いて強いエッジと弱いエッジを区別しながらエッジを検出するための強力なツールです。この関数は、ノイズに強いエッジ検出を実現し、複雑な画像や微細な形状を持つ画像の解析において非常に有効です。製造業、医療画像解析、パターン認識など、幅広いアプリケーションで利用でき、エッジ検出の精度向上に貢献します。