【HALCON】median_image 関数について - メディアンフィルタを用いた画像の平滑化

【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 デバイスをサポートし、マルチスレッド処理にも対応しています。これにより、大きな画像や複雑なフィルタリング処理を効率的に行うことが可能です。特に小さいフィルタサイズで、SIMDMMXの最適化が適用されるため、高速な処理が期待できます。

まとめ

median_image 関数は、画像内のノイズを除去し、平滑化を行う強力なツールです。異なるフィルタ形状や境界処理方法を組み合わせて、様々な用途に応じた画像処理が可能です。特に、動的なしきい値処理や背景の推定といった前処理に適しており、HALCON での高度な画像処理において役立ちます。

Recommend