画像処理におけるメディアンフィルタの原理や計算式についてまとめました。
メディアンフィルタとは
本ページの内容は以下動画で解説しています。
メディアン(Median:中央値)とは、「データを値が小さい順に並べた時に、真ん中にあるデータ」のことです。
これを画像処理に利用したものがメディアンフィルタです。
メディアンフィルタでは、画像内の周囲と大きく異なる画素を取り除くことができるため、画像からゴマ塩ノイズを除去するのに適しています。
例
元画像(左)とフィルタをかけた画像(右)


メディアンフィルタのアルゴリズム(原理)
メディアンフィルタの処理の流れは以下のとおりです。
①注目画素の近傍の画素値を取得します(8近傍なら周囲8画素+注目画素の合計9画素)。
②取得した画素値を小さい順に並べます(8近傍なら9つの画素値を小さい順に並べる)。
③真ん中にある値(8近傍なら5番目に小さい値)を注目画素の新しい画素値とします。
このように、メディアンフィルタは他の平滑化フィルタと比べて、周囲の飛び抜けた値に左右されないという性質を持ちます。
そのため、ゴマ塩ノイズの除去に有効とされています。
メディアンフィルタの計算例
入力画像
が次のように与えられたとき、メディアンフィルタ(8近傍)で処理した後の出力画像
を求めます。。
(1) ![Rendered by QuickLaTeX.com \begin{eqnarray*} I= \left[ \begin{array}{ccccc} 100 & 200 & 150 & 110\\ 110 & 120 & 130 & 140\\ 190 & 230 & 210 & 150\\ 160 & 190 & 180 & 170\\ \end{array} \right] \end{eqnarray*}](https://algorithm.joho.info/wp-content/ql-cache/quicklatex.com-6d94f2bad6d9a19fc109a7095d8798de_l3.png)
注目画素
の場合、9画素(8近傍にある画素+注目画素)の画素値の中央値(5番目に小さい値)は150となります。
なので、出力画像の画素値素
の画素値を120から150に置き換えます。
この操作を端以外の画素に対して行います。
尚、端の画素値はそのまま出力画像の画素値にします。
よって、出力画像
は次のようになります。
(2) ![Rendered by QuickLaTeX.com \begin{eqnarray*} I'= \left[ \begin{array}{ccccc} 100 & 200 & 150 & 110\\ 110 & 150 & 150 & 140\\ 190 & 150 & 170 & 150\\ 160 & 190 & 180 & 170\\ \end{array} \right] \end{eqnarray*}](https://algorithm.joho.info/wp-content/ql-cache/quicklatex.com-4e4bcfc6bbc0d12a6c0380111e19dbad_l3.png)
関連ページ
プログラムで実装した例を下記事で解説しています。

【Python/OpenCV】cv2.medianBlur(メディアンフィルタ)で画像のぼかし・ノイズ除去
Python+OpenCVでメディアンフィルタを「NumPy」「cv2.medianBlur」で実装し、画像をぼかし・平滑化・ノイズ除去する方法をソースコード付きで解説します。

【画像処理超入門】アルゴリズムの仕組みと実装方法を簡単に解説
画像処理超アルゴリズムの仕組みとプログラミングによる実装方法を簡単に解説します。

コメント