【HALCON】rank_n 関数について - ノイズ除去のためのランクフィルタリング
2024-09-12
2024-09-12
HALCON
のrank_n
関数は、画像に対してランクフィルタリングを適用し、ノイズを効果的に除去しながら画像のエッジを保持するためのツールです。この関数を使用することで、指定したランクに基づいて周囲のピクセルから値を選択し、滑らかでノイズの少ない画像を生成することができます。特に、ノイズ除去を行う際に、エッジを保護する処理が必要な場面で役立ちます。
rank_n 関数の概要
rank_n
関数は、画像の局所的な領域におけるピクセルのランクを指定し、そのランクに応じたピクセル値を選択してフィルタリングを行います。このフィルタリングは、ノイズを除去しつつも、エッジを保持するため、画像の品質を向上させることができます。ランクフィルタは、中央値フィルタのような特定のランク値を指定して処理する場合に特に有効です。
使用方法
基本的な使用方法は以下の通りです。
rank_n(Image, FilteredImage, Width, Height, Number)
Image
フィルタリング対象の画像。FilteredImage
フィルタリング後の出力画像。Width
フィルタリングに使用するマスクの幅。Height
フィルタリングに使用するマスクの高さ。Number
ランクフィルタリングにおいて、選択するピクセルのランク。例えば、中央値フィルタを適用する場合は、マスク内の中央に位置するピクセルのランクを指定します。
具体例
以下に、rank_n
関数を使用して画像に中央値フィルタを適用する例を示します。
* 画像の読み込み
read_image(Image, 'input_image')
* 中央値フィルタを適用(5x5のマスク内でランク値6を使用)
rank_n(Image, FilteredImage, 5, 5, 6)
* フィルタリング後の画像を表示
disp_image(FilteredImage, WindowHandle)
この例では、5x5のマスクを使ってrank_n
関数を適用し、ランク値6を使用して中央値フィルタを実行しています。ランク値6は、25ピクセルのマスク内で中央値に相当します。
応用例
rank_n
関数は、以下のような用途で活用できます。
-
ノイズ除去
ランクフィルタを使って、画像内のランダムノイズやスパイクノイズを除去し、平滑化を実現します。 -
エッジ保持平滑化
フィルタリングを行う際に、画像のエッジを維持しながら滑らかな結果を得ることができるため、エッジ情報を損なわずにノイズ除去が可能です。 -
画像の質の向上
フィルタリングにより、画像全体の質を向上させ、特に低品質な画像を扱う場合に効果的です。
まとめ
HALCON
のrank_n
関数は、指定したランクに基づいたフィルタリングを提供し、ノイズ除去やエッジ保持の処理に役立ちます。この関数を使用することで、画像内の不要なノイズを効率的に除去しながら、エッジの重要な情報を保持することが可能です。様々な画像処理のシナリオで柔軟に対応できる強力なツールです。