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

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

【はじめに】メディアンフィルタとは

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

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

【原理】メディアンフィルタのアルゴリズム

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

処理
注目画素の近傍の画素値を取得します。(8近傍なら周囲8画素+注目画素の合計9画素)
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 【Python/OpenCV】メディアンフィルタでぼかし・平滑化
C# 【C#】メディアンフィルタで画像のぼかし(ノイズ除去)
まとめ 【画像処理入門】アルゴリズム&プログラミング
画像処理
技術雑記

コメント

タイトルとURLをコピーしました