ガウシアンフィルタ

シェアする

  • このエントリーをはてなブックマークに追加

移動平均フィルタでは注目画素周辺の輝度値を単に平均していましが、一般的な画像では 注目画素に近い画素の輝度値は注目画素の輝度値と近い場合が多いですが、注目画素から遠くなればなるほど、注目画素の輝度値とは差が大きくなる場合が多くなります。
この事を考慮し、注目画素に近いほど、平均値を計算するときの重みを大きくし、遠くなるほど重みを小さくなるようにガウス分布の関数

を用いてレートを計算しているのがガウシアンフィルタです。
σの値が小さいほど平滑化の効果は小さくなり、大きいほど効果が大きくなりますが、
よく以下のカーネルが用いられます。 

3×3の場合

ガウシアンフィルタ3×3

5×5の場合

ガウシアンフィルタ5×5

ガウシアンフィルタにはローパスフィルタと同様の効果があるそうです。

ということで、フィルタ処理した画像をフーリエ変換し、確かめてみました。

オリジナル(処理前)の画像はこちら↓

オリジナル画像 二次元フーリエ変換画像
ガウシアンフィルタオリジナル画像 二次元フーリエ変換画像

上記の画像にノイズ除去系のガウシアンフィルタ、移動平均フィルタ、メディアンフィルタの
処理を行い、二次元フーリエ変換を行い確認してみました。

上記画像に5×5のガウシアンフィルタ処理を行うと

5×5のガウシアンフィルタ処理 二次元フーリエ変換画像
ガウシアンフィルタ5×5 ガウシアンフィルタ5×5_フーリエ変換

5×5の移動平均処理を行うと

5×5の移動平均処理 二次元フーリエ変換画像
5×5移動平均フィルタ 5×5移動平均フィルタ_フーリエ変換

5×5のメディアンフィルタ処理を行うと

5×5のメディアンフィルタ処理 二次元フーリエ変換画像
5×5メディアンフィルタ 5×5メディアンフィルタ_フーリエ変換

確かに処理結果を見てみると、ガウシアンフィルタが最も高周波成分を除去できているように
思います。

なぜ、そうなるのか?
本には数式においても、この効果が証明できるような事が書いてありましたが、ちょっと難しいので、
カーネルの値について見てみたいと思います。

そもそも、ある特定の周期の成分を消すためには、どうすれば良いか?というと、
周期の半分の離れた2点のデータを平均していけば、その周波数の成分を消す事が出来ます。

周波数除去の原理

ここで、画像で表すことのできる最も高い周波数は

となる2画素周期のパターンで、このパターンを消すためには、隣り合う2画素の輝度値を
平均すると、画像データから最も高周波の成分を除去する事が出来ます。
しかし、隣り合う2画素の平均の結果は、画素間の位置の輝度値を示してしまうので、
この平均のさらに平均値を取ります。

連続する5つの輝度値の値をI-2~I2とすると、平均した値の平均値は

ガウシアンフィルタ処理アルゴリズム

となり、なんとこの結果が3×3のガウシアンフィルタの横方向(縦方向)の係数と等しくなります。
さらに、平均の平均を取ると、5×5のガウシアンフィルタの係数と同じ。
7×7のガウシアンフィルタまで確認してみましたが、この平均の平均で表すことが出来るようです。

という訳で、ガウシアンフィルタの式

で表される係数なら何でも良いと思いつつも、

ガウシアンフィルタ3×3 ガウシアンフィルタ5×5

の係数が良く使われるのかも?しれませんね。

さらにこの係数、半分の半分で求めるのは、ちょっと面倒。
これがまた都合よく、(a+b)nの式を展開したときの係数に使われる
パスカルの三角形
の値

パスカルの三角形

と一次元のガウシアンフィルタの係数と等しくなります。(少なくとも7×7ぐらいまでは)
これを以下のように二次元的に掛け合わせて、係数の合計で割ればガウシアンフィルタの係数となります。
例えば7×7のガウシアンフィルタの係数では下図のようになります。

ガウシアンフィルタの係数

この値を係数の合計(=4096)で割ればガウシアンフィルタの係数の出来上がり!!!
(このときσの値は約1.3となります。)

画像処理アルゴリズムへ戻る

コメント

  1. […] ガウシアンフィルタなどでノイズを除去します […]

  2. […] この擬色などを手っ取り早く消すには、カラーに変換した画像にガウシアンフィルタをかけ、アンシャープマスキングを行うと、少しまともな感じになります。 […]

  3. […] でも、分母分子に出てくる最初のexpの部分はガウシアンフィルタで見たことがあるな~ […]

  4. […] ガウシアンフィルタ(カーネルサイズ7×7) […]