メディアンフィルター
メディアンフィルターは、画像または信号からノイズを除去するためによく使用される非線形デジタルフィルター技術です。このようなノイズ低減は、後の処理(たとえば、画像のエッジ検出)の結果を改善するための一般的な前処理ステップです。メディアンフィルタリングは、特定の条件下でエッジを保持しながらノイズを除去するため(以下の説明を参照)、信号処理にも応用できるため、デジタル画像処理で非常に広く使用されています。
アルゴリズムの説明
メディアンフィルターの主な考え方は、エントリごとに信号を実行し、各エントリを隣接するエントリの中央値で置き換えることです。隣人のパターンは「ウィンドウ」と呼ばれ、信号ごとにエントリごとにスライドします。 1D信号の場合、最も明らかなウィンドウは前後の最初のいくつかのエントリに過ぎませんが、2D(または高次元)データの場合、ウィンドウには指定された半径または楕円体領域内のすべてのエントリが含まれる必要があります(つまり、メディアンフィルターは分離できません)フィルタ)。
動作する1Dの例
デモンストレーションのために、3つのウィンドウサイズを使用して、各エントリの直前と直後に1つのエントリを使用して、メディアンフィルターを次の単純な1D信号に適用します。
x =(2、3、80、6)。したがって、メディアンフィルター処理された出力信号yは次のようになります。
y 1 = med(2、3、80)= 3、 y 2 = med(3、80、6)= med(3、6、80)= 6、 y 3 = med(80、6、2)= med (2、6、80)= 6、 y 4 = med(6、2、3)= med(2、3、6)= 3、すなわち、 y =( 3、6、6、3 )。
境界の問題
上記の例では、最初の値の前にエントリがないため、最後の値と同様に最初の値が繰り返され、ウィンドウを満たすのに十分なエントリが取得されます。これは、信号の境界で欠落しているウィンドウエントリを処理する1つの方法ですが、特定の状況で優先される可能性のある異なるプロパティを持つ他のスキームがあります。
- 後で信号または画像の境界をトリミングするかどうかにかかわらず、境界の処理を避けます。
- 信号の他の場所からエントリを取得します。たとえば、画像では、はるかに水平または垂直の境界からエントリが選択される場合がありますが、
- すべてのウィンドウがいっぱいになるように、ウィンドウを境界の近くで縮小します。
2Dメディアンフィルターの擬似コード
単純な2Dメディアンフィルターアルゴリズムのコードは次のようになります。
outputPixelValueimage widthを割り当てますウィンドウの割り当てedgex:=(window width / 2)edgeyを切り捨てます:=(window height / 2)xをedgexからimage widthに切り捨てます-yをedgeyからimage heightに切り捨てます-edgey i = 0 fxに対して0からfyのウィンドウ幅0からウィンドウの高さwindow:= inputPixelValuex + fx-edgex i:= i + 1ウィンドウ内のエントリをソートoutputPixelValuex:= windowこのアルゴリズム:
- 1つのカラーチャネルのみを処理します。
- 「境界を処理しない」アプローチを取ります(境界の問題に関する上記の説明を参照)。
アルゴリズム実装の問題
通常、計算の労力と時間の大半は各ウィンドウの中央値の計算に費やされます。フィルタは信号などのすべてのエントリを処理する必要があるため、画像などの大きな信号の場合、この中央値計算の効率は、アルゴリズムの実行速度を決定する重要な要素です。上記の単純な実装は、ウィンドウ内のすべてのエントリをソートして中央値を見つけます。ただし、数値のリストの中央の値のみが必要なので、選択アルゴリズムははるかに効率的です。さらに、いくつかのタイプの信号(画像の場合が非常に多い)は整数表現を使用します:これらの場合、ヒストグラムの中央値はウィンドウごとに更新し、ヒストグラムの中央値を見つけるのが簡単なため、はるかに効率的です特に面倒ではありません。
エッジ保存プロパティ
中央値フィルタリングは、線形ガウスフィルタリングと同様に、平滑化手法の一種です。すべてのスムージング技術は、信号の滑らかなパッチまたは滑らかな領域のノイズを除去するのに効果的ですが、エッジに悪影響を及ぼします。ただし、多くの場合、信号のノイズを低減すると同時に、エッジを保持することが重要です。たとえば、エッジは画像の視覚的な外観にとって非常に重要です。小さなレベルから中程度のレベルのガウスノイズの場合、メディアンフィルターは、所定の固定ウィンドウサイズのエッジを維持しながらノイズを除去する点でガウスぼかしよりも明らかに優れています。ただし、高レベルのノイズではガウスぼかしよりもパフォーマンスはそれほど良くありませんが、スペックルノイズとソルトアンドペッパーノイズ(インパルスノイズ)では特に効果的です。このため、中央値フィルタリングはデジタル画像処理で非常に広く使用されています。