【HALCON】sobel_amp 関数について - Sobelフィルタによるエッジ検出

【HALCON】sobel_amp 関数について - Sobelフィルタによるエッジ検出

2024-08-22

2024-08-22

sobel_amp 関数とは

sobel_amp 関数は、HALCONの画像処理ライブラリにおいて、Sobelオペレーターを使用して画像のエッジを検出するために使用されます。Sobelフィルタは、画像の一階微分を計算することにより、エッジの強さ(振幅)を抽出します。この関数は、主にエッジ検出の前処理として利用されます。

フィルタマスク

sobel_amp 関数では、以下のフィルタマスクを使用して画像を処理します。

A =
  1  2  1
  0  0  0
 -1 -2 -1
B =
  1  0 -1
  2  0 -2
  1  0 -1

これらのマスクは、縦方向および横方向のエッジ検出にそれぞれ使用され、画像のエッジ強度を計算します。

使用方法

sobel_amp 関数の基本的な構文は以下の通りです。

sobel_amp(Image, EdgeAmplitude, FilterType, Size)
  • Image: 処理対象の画像
  • EdgeAmplitude: 出力されるエッジの振幅画像
  • FilterType: 使用するフィルタのタイプ(例: sum_abs, x, y)
  • Size: フィルタマスクのサイズ(3, 5, 7など)

具体例

次に、Sobelオペレーターを使用してエッジを検出する具体的な例を示します。

read_image(Image, 'fabrik')
sobel_amp(Image, Amp, 'sum_abs', 3)
threshold(Amp, Edg, 128, 255)
dev_display(Edg)

この例では、まず画像を読み込み、Sobelオペレーターを使ってエッジ振幅を計算し、その後しきい値処理を行ってエッジを抽出しています。

フィルタタイプとサイズ

sobel_amp 関数は、複数のフィルタタイプとサイズオプションをサポートしています。最も一般的なフィルタタイプは以下の通りです。

  • sum_abs: エッジ振幅の絶対値の合計を計算
  • x: 横方向のエッジのみを検出
  • y: 縦方向のエッジのみを検出
  • sum_sqrt: エッジ振幅の平方根を使用して計算

フィルタサイズは、画像のスムージングに影響を与え、3x3から39x39までの範囲で選択できます。大きなサイズを使用すると、エッジ検出前に画像が平滑化され、エッジの精度に影響を与えます。

並列化とパフォーマンス

sobel_amp 関数は、OpenCLデバイスをサポートし、マルチスレッド処理にも対応しています。特に、大規模なデータセットや複雑な処理において、並列化によるパフォーマンス向上が期待できます。

まとめ

sobel_amp 関数は、Sobelフィルタを使用して画像内のエッジを検出するための強力なツールです。様々なフィルタタイプとサイズオプションを提供しており、エッジ検出の用途に応じてカスタマイズ可能です。エッジ検出の前処理や、画像の特徴抽出に最適な関数として、多くの画像処理アプリケーションで利用されています。

Recommend