【画像処理】空間フィルタリングとは?

プログラミング

こんにちは!zhackです。

今回は画像処理でよく使われる空間フィルタリングについて、紹介します!

空間フィルタリングとは?

画像中の注目しているある画像に対して、注目している画素とその周囲の画素から、注目している画素を変換する処理です。

この一言で伝わりましたでしょうか、、?

絵で示したほうがわかりやすいかもしれませんね。

具体的にどのような処理なのか

処理対象の画像と、フィルタを用意しました。
こんなイメージです。

フィルタの濃い黄色のところが注目画素のフィルタになります。
フィルタ処理を行う際、このフィルタを以下のように動かします。

フィルタを処理対象画像に重ね、上の図のように、処理対象画像の全画素がフィルタの注目画素に重なるように1画素ずつずらしていきます。

このずらしていく過程で、数値計算を行い、処理対象画像を変換します。

例えば、以下のように重なっている場合の計算の様子はこんな感じです。

なんとなくイメージできましたでしょうか。

このように、空間フィルタリングとは、

画像中の注目しているある画像に対して、注目している画素とその周囲の画素から、注目している画素を変換する処理です。(本記事冒頭より)

ちなみに、このような計算処理のことを、“畳み込み演算”と呼びます。

キーワードとして覚えておくと、調べたときに役に立つと思います。

フィルタについて

今回の例では、3×3の注目画素の左右の画素が1、他は0であるフィルタを用いました。

しかし、実際は、フィルタ内の数値の合計が1になるように数字を調整します。

なぜならば、画素内の数値は0~255で表現されており、フィルタ内の数値の合計が1出ない場合、その範囲を超えてしまう可能性があるためです。

そのため、フィルタ内の数値の和を1に抑えつつ、
このフィルタを様々な数値に変えることでいろんな処理を行うことができます。

フィルタにより可能な処理の一覧はこんな感じです~。

  • 平滑化
  • 輪郭抽出(エッジ検出)
  • 鮮鋭化

順に説明していきます。

平滑化

平滑化の名前の通り、全体的に画素の値をならすような処理をします。

結果として表れる画像は、全体的にボケた感じの画像になります。

フィルタの例として、このようなフィルタになります。

 

輪郭抽出

画像中に写っている境界線を抽出します。

エッジ検出ですね。

フィルタの例として、こういうフィルタが考えられます。

鮮鋭化

画像中のエッジが強調される処理です。

エッジを抽出するのではなく、強調されます。

フィルタの例として、このようなフィルタが挙げられます。

 

さいごに

画像の空間フィルタリングについて、紹介しました。

実際に、空間フィルタリングを実装した記事もよろしければご参考ください。

【画像処理】Go言語で空間フィルタリングいろいろやってみた【サンプルコード付】
こんにちは!zhackです。 今日は、いろんな空間フィルタリングをやっていきます。 先日のプログラムの大半を変えることなく、変数の値を変えるだけでいろんな画像処理ができます! ちなみに、空間フィルタリングに関する解説記事も...

 

ではでは!

 

 

コメント

  1. […] 先日、フィルタ処理に関する記事を掲載しましたが、 その中の輪郭抽出である、X方向及びY方向の微分について、実装してみました。 […]

  2. […] […]

  3. […] […]

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