【画像処理】メディアンフィルタの原理・特徴・計算式

画像処理におけるメディアンフィルタの原理や計算式についてまとめました。

スポンサーリンク

メディアンフィルタとは

メディアン(Median:中央値)とは、「データを値が小さい順に並べた時に、真ん中にあるデータ」のことです。
これを画像処理に利用したものがメディアンフィルタです。
メディアンフィルタでは、画像内の周囲と大きく異なる画素を取り除くことができるため、画像からゴマ塩ノイズを除去するのに適しています。

元画像(左)とフィルタをかけた画像(右)
12

スポンサーリンク

メディアンフィルタのアルゴリズム(原理)

メディアンフィルタの処理の流れは以下のとおりです。

①注目画素の近傍の画素値を取得します(8近傍なら周囲8画素+注目画素の合計9画素)。

②取得した画素値を小さい順に並べます(8近傍なら9つの画素値を小さい順に並べる)。
③真ん中にある値(8近傍なら5番目に小さい値)を注目画素の新しい画素値とします。

このように、メディアンフィルタは他の平滑化フィルタと比べて、周囲の飛び抜けた値に左右されないという性質を持ちます。
そのため、ゴマ塩ノイズの除去に有効とされています。

スポンサーリンク

メディアンフィルタの計算例

入力画像Iが次のように与えられたとき、メディアンフィルタ(8近傍)で処理した後の出力画像I'を求めます。。

(1)   \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*}

注目画素I(1, 1)=120の場合、9画素(8近傍にある画素+注目画素)の画素値の中央値(5番目に小さい値)は150となります。
なので、出力画像の画素値素I'(1, 1)の画素値を120から150に置き換えます。

この操作を端以外の画素に対して行います。
尚、端の画素値はそのまま出力画像の画素値にします。

よって、出力画像I'は次のようになります。

(2)   \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*}

スポンサーリンク

プログラミングで実装例

プログラムで実装した例を下記事で解説しています。

【Python/OpenCV】cv2.medianBlur(メディアンフィルタ)で画像のぼかし・ノイズ除去
Python+OpenCVでメディアンフィルタを「NumPy」「cv2.medianBlur」で実装し、画像をぼかし・平滑化・ノイズ除去する方法をソースコード付きで解説します。
【C#】メディアンフィルタで画像のぼかし(ノイズ除去)
C#とメディアンフィルタを用いて、画像からゴマ塩ノイズを除去する方法について紹介します。
【画像処理入門】アルゴリズム&プログラミング
この記事では、画像処理における基本的なアルゴリズムとその実装例(プログラム)についてまとめました。
画像処理
スポンサーリンク
西住工房

コメント