今回は空間フィルタリングのpart1ということで、pythonを用いて平滑化フィルタとエッジ抽出フィルタを設計してみます。平滑化フィルタは、画像内のノイズを除去し、ぼかしの効果を与えるのに有効です。また、エッジ抽出フィルタは画像内の輪郭線のみを取り出すことができます。入力画像には様々なノイズ、歪みが含まれるため、こういったフィルタを用いて、人間の目でも見やすい画像をつくることができます。
空間フィルタリングと畳み込み演算
空間フィルタリングとは、画像の任意の座標$(i,j)$における画素$f(i,j)$に対しフィルタの重み$h(m,n)$を用いて
の演算を行い、$g(i,j)$ を座標$(i,j)$の新しい画素として置き換えるような処理です。このように、画像の画素値とフィルタの重みを用いて積和する演算を畳み込み演算と呼びます。
また、フィルタの重みである$h(m,n)$の値を変化させることで、様々な空間フィルタリングを行うことができま す。
空間フィルタリングの種類
空間フィルタリングにも様々な種類があり、フィルタの重みによって画像を鮮明にしたり、逆にぼかしたり、または画像内のある特性のみ取り出したり、画像に凹凸をつけたりすることもできます。
今回はその中から以下の2つの空間フィルタリングを取り上げます。
1. 平滑化フィルタ
平滑化フィルタは、画像全体にぼかしの効果を与え、結果的に画像内のノイズを除去するようなフィルタです。これには、平均化フィルタ、モーションフィルタ、ガウシアンフィルタなどが存在しますが、今回は平均化フィルタについて取り扱います。
2. エッジ抽出フィルタ
エッジ抽出フィルタは文字どおり画像内の輪郭線のみを取り出すフィルタです。
空間フィルタリングの実行
まず、pythonのライブラリにあるOpenCVとMatplotlibをインポートします。