【HALCON】median_image 関数について - 画像処理におけるメディアンフィルタの使い方
2024-08-20
2024-08-20
画像処理では、ノイズ除去や画像の平滑化が重要なステップの一つです。HALCON
の median_image
関数は、これらの処理を行うための強力なツールで、メディアンフィルタを使って画像の不要なノイズを除去します。この記事では、median_image
の使い方やその設定項目について詳しく解説します。
median_image 関数とは?
median_image
関数は、画像に対してメディアンフィルタを適用することで、ノイズを除去し、画像を平滑化します。メディアンフィルタとは、指定されたマスク内の画素値を並べ替え、その中央値を画素値として使用するフィルタです。これにより、画素の外れ値を除去し、ノイズを抑えることができます。
関数のシグネチャ
median_image(Image : ImageMedian : MaskType, Radius, Margin : )
Image
入力オブジェクト。平滑化を行う対象の画像です。ImageMedian
出力オブジェクト。平滑化処理後の画像が格納されます。MaskType
フィルタマスクのタイプを指定します。 “circle”(円形)または “square”(四角形)を選択できます。Radius
フィルタマスクの半径を指定します。値が大きいほど広範囲にフィルタが適用されます。Margin
画像の境界処理の方法を指定します。“mirrored”(反射)、“continued”(連続)、“cyclic”(周期的)などがあります。
median_image の使用例
基本的なメディアンフィルタの適用
まず、median_image
関数の基本的な使い方を見てみましょう。以下は、工場で撮影された画像にメディアンフィルタを適用する例です。
* 画像の読み込み
read_image(Image, 'fabrik')
* メディアンフィルタの適用
median_image(Image, ImageMedian, 'circle', 3, 'continued')
* フィルタ適用後の画像の表示
dev_display(ImageMedian)
この例では、read_image
関数で読み込んだ画像に、半径3ピクセルの円形マスクを適用してメディアンフィルタをかけています。境界処理には “continued”(連続)を指定し、画像の境界付近のピクセルが自然に処理されるようにしています。
フィルタのマスクタイプとサイズ
マスクタイプ
median_image
では、2種類のマスクタイプを選択できます。
circle
(円形):フィルタマスクが中心ピクセルを囲む円形になります。square
(四角形):フィルタマスクが中心ピクセルを囲む四角形になります。
フィルタのサイズ(Radius)
フィルタのサイズは、マスクの半径で指定します。半径が大きいほど、より広範囲にメディアンフィルタが適用され、ノイズ除去効果が強くなりますが、ディテールも失われる可能性があるため、慎重に選択する必要があります。
境界処理(Margin)
画像の境界部分に対する処理も重要です。median_image
関数では、以下のような境界処理を選択できます:
gray value
: 境界外のピクセルは指定したグレースケール値として扱います。mirrored
: 画像の境界を反転して処理します。continued
: 境界のピクセルをそのまま延長して処理します。cyclic
: 画像の境界を周期的に続けて処理します。
median_image(Image, ImageMedian, 'circle', 3, 'mirrored')
このコードでは、画像の境界部分を反射させた形で処理を行っています。
他の代替フィルタとの比較
median_image
の代替として、median_rect
や rank_image
などのフィルタがあります。それぞれ異なるアルゴリズムや特性を持つため、処理の内容や画像に応じて最適なフィルタを選択することが重要です。
median_rect
: より高速なメディアンフィルタの代替手法。大きなマスクサイズで特に効果的。rank_image
: 特定のランクに基づいて画素を選択するフィルタ。
まとめ
HALCON
の median_image
関数は、ノイズ除去や画像の平滑化に効果的なメディアンフィルタを提供します。円形や四角形のマスクを使用して、異なる半径のフィルタを適用することで、画像処理の精度と速度を調整することができます。用途に応じて最適なフィルタ設定を選び、効率的な画像処理を実現しましょう。