【HALCON】edges_sub_pix 関数について - サブピクセル精度でエッジを抽出
2024-08-21
2024-08-21
edges_sub_pix 関数とは
edges_sub_pix
関数は、サブピクセル精度で画像のエッジを検出するために使用される重要な画像処理ツールです。DericheやCannyといったエッジ検出アルゴリズムを活用し、非常に細かいエッジ検出が可能です。この関数は、さまざまなフィルタを使用して画像内のステップエッジを抽出し、そのエッジをサブピクセル精度で返します。
利用できるフィルタ
edges_sub_pix
で使用可能なエッジ検出フィルタは次の通りです:
-
‘deriche1’, ‘deriche2’
Dericheアルゴリズムに基づくフィルタで、速度と精度のバランスに優れています。 -
‘lanser1’, ‘lanser2’
Dericheフィルタの改良版で、斜め方向のエッジに対して精度を向上させています。 -
‘shen’, ‘mshen’
速度重視のフィルタで、特に大規模な画像に対して効率的です。 -
‘canny’
伝統的なCannyアルゴリズムに基づくフィルタで、フィルタ幅を大きくすると詳細なエッジ検出が可能になります。 -
‘sobel’, ‘sobel_fast’
シンプルで高速なエッジ検出を行うSobelフィルタで、sobel_fast
はさらに軽量化されています。
使用例
以下は、edges_sub_pix
を使用してエッジを検出する簡単な例です:
* 画像を読み込み
read_image (Image, 'fabrik')
* サブピクセル精度でエッジを検出
edges_sub_pix (Image, Edges, 'lanser2', 0.5, 20, 40)
* 検出されたエッジを表示
dev_display (Edges)
この例では、lanser2
フィルタを使用し、Alpha値を0.5に設定してエッジを検出しています。上限しきい値は40、下限しきい値は20に設定されています。
パラメーターの詳細
-
Image(入力オブジェクト)
処理対象の画像。単一チャネルの画像を使用します(例:グレースケール画像)。 -
Edges(出力オブジェクト)
検出されたエッジがXLD形式で出力されます。これにより、エッジの精度や方向などの情報がサブピクセル精度で取得できます。 -
Filter(入力パラメーター)
使用するエッジ検出フィルタ。デフォルトは'canny'
です。 -
Alpha(入力パラメーター)
フィルタの幅(スムージングの度合い)を指定します。小さい値では詳細なエッジを検出し、大きい値ではノイズに対して強くなります。 -
Low, High(入力パラメーター)
ヒステリシスしきい値操作における下限しきい値と上限しきい値を設定します。
並列処理のサポート
edges_sub_pix
関数はOpenCL対応デバイスで並列処理をサポートしています。特に、canny
と sobel_fast
フィルタはOpenCLデバイス上で実行され、フィルタ幅や画像サイズに応じて効率的に計算を行います。
高度なフィルタ選択と性能
DericheやLanser、Shenといったフィルタは、任意のフィルタ幅に対応しており、フィルタ幅を大きくしても実行時間が増加しません。一方で、Cannyフィルタはフィルタマスクを使用しているため、フィルタ幅が大きくなると計算時間も増加します。
また、フィルタごとにエッジの検出能力や速度が異なるため、用途に応じて最適なフィルタを選択することが重要です。たとえば、広範なフィルタが必要な場合はderiche1
やlanser2
が適しており、簡易な検出が必要な場合はsobel_fast
が便利です。
まとめ
edges_sub_pix
関数は、HALCONを使った画像処理において、非常に精密なエッジ検出を可能にします。DericheやCannyフィルタをはじめとした多彩なフィルタオプションにより、ノイズに対する強度や検出精度を調整し、画像の特定のディテールを抽出できます。用途に応じてフィルタを選び、サブピクセル精度でのエッジ検出を最大限に活用しましょう。