平滑化フィルタでは注目画素の周辺画素の輝度値を平均し、ノイズを除去していましたが、画像の輪郭もボケてしまう欠点がありました。それに対し、メディアンフィルタでは周辺輝度値の大きさを順に並べ、メディアン(中央値)を注目画素に置き換えることでノイズを除去します。
特に周辺画素の輝度値よりも大きく異なるノイズ(ゴマ塩ノイズとかスパイクノイズという)を除去するのに効果を発揮します。
メディアンフィルタ処理前 | → | メディアンフィルタ処理後 |
輝度値の3D表示 |
輝度値の3D表示 |
処理の詳細
注目画素(画像中央の輝度値165の部分)周辺の輝度値を取得します。
61、96、41、57、165、34、24、30、31
この輝度値を順番に並べます。
24、30、31、34、41、57、61、96、165
並べた輝度値のメディアン(中央値)の41で輝度値165を置き換えます。
この処理を全画素について行うと、ノイズを除去することができます。
ただし、平滑化処理に比べ、処理が重い...
もう少し具体例でいうとこんな感じ
【メディアン処理前】
【メディアン処理後】
コメント
今メディアンフィルタについて勉強しており、わかりやすかったため
こちらのプログラムを知りたいのですが、教えていただけませんか。
メディアンフィルタについて公開できるプログラムはないのですが、このへん↓
http://csharpimage.blog60.fc2.com/blog-entry-9.html
のページを参考にしてみては如何でしょうか?
メディアフィルタ処理後の、上下左右の一番端の値の出したかが分かりません、どのようにして例えば左端上は134という値をだしたのですか?
ここに書いてある処理結果は、もう少し大きい画像の一部分を表示しているので、この結果だけでは端の値を求める事はできないのですが、端の部分の処理は、下記ページを参考にして下さい。
http://imagingsolution.net/imaging/make-border/
[…] メディアンフィルタ(カーネルサイズ7×7) […]