【HALCON】dyn_threshold 関数について - ローカルしきい値を使用した画像のセグメンテーション
2024-08-21
2024-08-21
dyn_threshold 関数とは
HALCON の dyn_threshold
関数は、ローカルなしきい値を使用して画像をセグメント化する強力なツールです。この関数は、指定されたしきい値条件に基づいて画像内の領域を選択し、抽出された領域を RegionDynThresh
として返します。
例えば、入力画像の一部領域が他の部分と異なる輝度を持つ場合、ローカルなしきい値を適用することで、その部分を抽出することが可能です。多くの場合、dyn_threshold
は、オリジナル画像をスムージングしたしきい値画像と一緒に使用されます。
使用例
以下は、dyn_threshold
関数を用いた簡単な例です。
* 直径 D のオブジェクトを持つ領域を抽出
mean_image(Image, Mean, D*2+1, D*2+1)
dyn_threshold(Image, Mean, Seg, 5, 'light')
connection(Seg, Regions)
この例では、まず画像を平均化フィルタで平滑化し、その後 dyn_threshold
を使用して、平滑化された画像とオフセットを基にして領域を抽出しています。
パラメータの詳細
-
OrigImage(入力オブジェクト)
セグメント化するための元画像。単一チャネルの画像(例:グレースケール画像)である必要があります。 -
ThresholdImage(入力オブジェクト)
各ピクセルに対するしきい値を含む画像。通常、平滑化されたバージョンの元画像が使用されます。 -
RegionDynThresh(出力オブジェクト)
指定されたしきい値条件を満たす領域が返されます。 -
Offset(入力パラメータ)
しきい値画像に対して適用されるオフセット。この値を調整することで、領域の検出感度が変わります。通常、5から40の範囲で設定します。 -
LightDark(入力パラメータ)
‘light’(明るい領域を抽出)、‘dark’(暗い領域を抽出)、‘equal’(特定の範囲内の領域を抽出)、‘not_equal’(特定の範囲外の領域を抽出)を指定します。
パフォーマンスと並列処理
dyn_threshold
は、複数のスレッドで並行して実行可能な再入可能型のマルチスレッド関数です。また、タプルレベルやドメインレベルで自動的に並列化されるため、効率的に処理を行うことができます。
まとめ
dyn_threshold
関数は、ローカルしきい値に基づいた高度なセグメンテーションを可能にする非常に強力なツールです。適切に平滑化されたしきい値画像とオフセットを使用することで、複雑なオブジェクトや領域を効果的に抽出できます。