【HALCON】median_image 関数について - メディアンフィルタを用いた画像の平滑化
2024-08-22
2024-08-22
median_image 関数とは
median_image
関数は、画像に対してメディアンフィルタを適用し、ノイズを除去しながら平滑化するために使用されます。この関数は、特定の範囲内のピクセルのグレースケール値をソートし、中央値を取得してノイズを除去します。
フィルタの仕組み
メディアンフィルタは、指定された形状のマスク内のグレースケール値をソートし、その中央値を各ピクセルの新しい値として使用します。これにより、画像が平滑化され、小さなノイズや異常値が効果的に除去されます。
使用方法
median_image
関数の基本的な構文は以下の通りです。
median_image(Image, ImageMedian, MaskType, Radius, Margin)
Image
: フィルタを適用する入力画像ImageMedian
: フィルタ適用後の出力画像MaskType
: フィルタの形状(circle
またはsquare
)Radius
: フィルタマスクの半径Margin
: 画像境界の処理方法(mirrored
,continued
,cyclic
など)
具体例
以下は、メディアンフィルタを適用する具体的な例です。
read_image (Image, 'fabrik')
median_image (Image, Median, 'circle', 3, 'continued')
dev_display(Median)
この例では、まず画像を読み込み、circle
型のメディアンフィルタを半径3で適用し、境界ピクセルはcontinued
モードで処理しています。
フィルタ形状とサイズ
median_image
関数では、フィルタの形状とサイズを柔軟に設定できます。
circle
: マスクが円形で、指定された半径内のピクセルを含みます。square
: マスクが正方形で、指定された半径のサイズのピクセルを含みます。
フィルタサイズはRadius
パラメータで指定し、1から最大4095までの値を選択できます。一般的には小さい値を使用して、微細なノイズを除去しますが、大きな値を使用することで、広範囲のノイズ除去や背景の推定が可能です。
境界処理オプション
Margin
パラメータは、画像の境界部分でフィルタがどのように動作するかを指定します。以下は一般的なオプションです。
mirrored
: 境界外のピクセルを反射して利用continued
: 境界のピクセルを延長cyclic
: 境界外のピクセルを循環的に参照
並列処理とパフォーマンス
median_image
関数は、OpenCL
デバイスをサポートし、マルチスレッド処理にも対応しています。これにより、大きな画像や複雑なフィルタリング処理を効率的に行うことが可能です。特に小さいフィルタサイズで、SIMD
やMMX
の最適化が適用されるため、高速な処理が期待できます。
まとめ
median_image
関数は、画像内のノイズを除去し、平滑化を行う強力なツールです。異なるフィルタ形状や境界処理方法を組み合わせて、様々な用途に応じた画像処理が可能です。特に、動的なしきい値処理や背景の推定といった前処理に適しており、HALCON
での高度な画像処理において役立ちます。