OpenCVで画像のメディアンフィルタを行うには、medianBlur()関数を用います。
メディアンフィルタは、ごま塩ノイズやスパイクノイズなどと言われる、小さい点々のノイズを除去するのに効果的です。
また、他の平滑化(blur)やガウシアンフィルタ(GaussianBlur)などと比べて、画像のエッジ部分がぼやけることがありません。
元画像 | メディアンフィルタ後 |
メディアンフィルタ処理の構文
medianBlur( src, ksize[, dst] ) -> dst
引数
src | メディアンフィルタ処理を行う画像データを指定します。 |
ksize | カーネルのサイズを正の奇数で指定します。1, 3, 5… カーネルは幅と高さが同じサイズになります。 |
戻り値
dst | メディアン処理された画像データ |
サンプルプログラム
メディアンフィルタ処理のサンプルプログラムを以下に示します。
import cv2
src = cv2.imread("Pepper.bmp", cv2.IMREAD_UNCHANGED)
# メディアンフィルタ
dst = cv2.medianBlur(src, 5)
# 二値化処理後の画像表示
cv2.imshow("Src Image", src)
cv2.imshow("medianBlur", dst)
cv2.waitKey()
実行結果
参照ページ
OpenCV: Image Filtering
メディアンフィルタ
平滑化フィルタでは注目画素の周辺画素の輝度値を平均し、ノイズを除去していましたが、画像の輪郭もボケてしまう欠点がありました。それに対し、メディアンフィルタでは周辺輝度値の大きさを順に並べ、メディアン(中央値)を注目画素に置き換えることでノイ...
コメント