画像処理の技術には、画像の修正を行ったり、ノイズを除去したりする
「フィルタ」という方法があります。
気に入った景色、友達との記念写真など、スマホやデジカメで撮ることもあるかと思います。
手軽に撮影できる反面、手ぶれしたり、顔が暗く写ったりと、
納得いく写真が撮れないこともあるかと思います。
こんな時デジタル画像なら、画像処理を行うことで、
- 明るさを調節したり
- ぼけを修正したり
- ノイズを消したり
サクッと画像の修正をすることができます。
画像処理で修正することで、後からでも、より良い写真に変えることができるわけです。
画像の修正処理技術の1つが「フィルタ」になります。
フィルタは
- 画像処理アプリや Photoshopなどの画像編集ソフトについて、ここはフィルタを使って処理しているな、などのように中のアルゴリズムを理解しながら活用できる
- 精密な画像解析を行うための、画像のクリーニングができる
- 画像認識など人工知能技術の入力となる特徴量をより良いものにできる
といった場面で応用・活用されており、学ぶメリットも感じてもらえるかと思います。
そこで本記事では、画像処理のフィルタの1つ「空間フィルタ」について、
- 画像処理を基本から学びたい
- 画像処理関係の仕事や就職、転職やアルバイトに備えたい
- 画像処理の知識を活用できる人工知能などの分野の基礎を作りたい
といったあなたのために、
空間フィルタの基本的な仕組みから、その方法、手法の種類などを、わかりやすくまとめました。
本記事の概要
- 1 【画像処理の基礎技術2】「フィルタ」とは?画像の改善、解析、認識をやりたいあなたのために、空間フィルタリングの方法などをわかりやすくまとめました
【画像処理の基礎技術2】「フィルタ」とは?画像の改善、解析、認識をやりたいあなたのために、空間フィルタリングの方法などをわかりやすくまとめました
上では、フィルタについて、空間フィルタといったのですが、別に、周波数フィルタというものもあります。
どちらも発想は同じですが、具体的な仕組みについては違いますので、ここでは区別しています。
周波数フィルタについても、他の機会に説明したいと思います。
フィルタとは、空間フィルタの基本知識と方法(Spacial filter)
- 画像をよりよくしたい!
- 見栄えのいい画像に変えたい
といった場合には、
- 明るさを変える
- コントラストを変える
といった方法があります。
明るさやコントラストの情報は、デジタル画像の場合、画素(ピクセル)1つずつにデータが収められています。これを「画素値」と呼びます。
なので、明るさやコントラストを変えたければ、画像のそれぞれの画素値を変えればいい、というわけです。
そして、画素値の変え方には、大きく分けて、2通りのやり方があります。
1つ目は、1つの画素ごとに単独で変える方法です。
この方法では、入力した画像のそれぞれの画素値は、
階調変換関数(トーンカーブ関数)などを使って、単独で別の画素値に変えられます。
2つ目は、1つの画素の情報(画素値)を、周りの画素の画素値を考慮した上で変える方法です。
ある画素値を変える時、周りの画素値の情報も使う、というわけです。
この方法がフィルタを使う手法で、今回のメインになります。
具体的に説明しますね。
例えば、ある画素を考える時、その縦横斜めの9画素を1つのかたまりと考えます。
するとこれは、3×3の9個の画素値があり、3×3の行列とみなすこともできます。
次に、この画素値を成分に持つ行列と、ある別の行列との積和を計算します。
その計算結果を新しい画素値を求めることができます。
画素値を成分に持つ行列に対して使った、別の行列のことを「フィルタ」と呼びます。
フィルタを使って、周りの画素値の影響を考慮した、新しい画素値を計算することができるわけです。
(ちなみに「積和」というのは、各成分同士をかけ算して、それらを全て足し合わせる操作のことです。詳しくは線形代数で学べます)
『「線形代数」を独学したい人はチェックしてほしい良書、13冊はこちらです』
フィルタは1つではなく、様々な種類のものがあり、それぞれに長所や短所があり、目的に応じて使い分けられています。
フィルタの種類とそれぞれの特徴、応用例
フィルタには、大きく分けて、
- 線形フィルタ
- 非線形フィルタ
の2種類があります。
上で説明したものは、行列の積和計算を使っていて、線形フィルタの例となります。
線形・非線形については、詳細になると説明が煩雑なので、サクッとイメージをつかんでもらえたらと思います。
- 線形というのは、比例関係のようなもの
ある入力があれば、線形に変換すれば、出力は必ず正確に予測できるのが特徴です。
- 非線形というのは、線形以外のもの
ある入力に対して、2乗・3乗で変化するものや、そもそも入力に対する出力が予測不能なものなど、様々なものをまとめた言い方になります。
ここでは画像処理の基礎ということで、
線形フィルタの種類について、特徴とともに説明したいと思います。
画像処理の平滑化フィルタ一覧
画像処理の空間フィルタには、平滑化という考え方が使われます。
平滑化とは(ぼかし smoothing)とは
平滑化とは、読んで字のごとく、平らにして滑らかにする、という意味です。
ん?何を平らにするの?具体的にどんなもの?
と思われるかと思いますので、そこのところを説明しますね。
画像処理で平滑化を使う事例の1つに、「ノイズの除去」があります。
平滑化をするとノイズを目立たなくできるからです。
ノイズの例としては、
画像に白黒の点がランダムに入っている「ごま塩ノイズ」と呼ばれるノイズを考えてみます。
白や黒の画素の濃度値は、
(8ビットの場合)0から255のうちの、0や255近くの両端の値になります。
白黒のノイズの場合、周囲とは極端に濃度値が違っているわけです。
なので、周囲との濃度差を滑らかにすることで、画像のノイズをぼかすことができる、という考え方です。
この濃度値を平坦にして滑らかにする操作を「平滑化」または「ぼかし」といいます。
実はこの平滑化の仕組みは、上で説明した「空間フィルタ」そのものなんです。
平滑化の仕組みは以下の通りです。
ある画素の濃度値を平滑化するには、
その画素と、その周囲の画素の濃度値をひとかたまりとした濃度値を成分に持つ行列を考えます。
そしてその濃度値行列と、特定のフィルタ行列(またはオペレータとも言います)を積和します。
その積和計算結果を新しい濃度値として使う、という操作をします。
フィルタには様々なものがあり、それによって呼び方が変わります。
平滑化1:平均フィルタ(averaging filter)
例えば、3×3の濃度値を成分に持つ行列なら、すべて1/9の成分を持つ3×3のフィルタ行列を使って積和を計算する方法があります。
他にも、4×4の濃度値を成分に持つ行列なら、すべて1/16の成分を持つ4×4のフィルタ行列を使う方法もあります。
このように、n × n の濃度値を成分に持つ行列なら、すべて1/nの成分を持つ n × nのフィルタ行列を使う方法があります。
この手法では、濃度値にフィルタを積和することで、濃度値行列の平均値が出力され、新しい濃度値として使われます。
平均値を使うので、平均フィルタ(または平均化フィルタ)と呼ばれてます。
平均フィルタの特徴としては、
nが大きくなるほど周囲の影響が大きくなるので、ボケ具合が強い画像が出力されるという特徴があります。
平均化フィルタでは、ぼかしが強くなりすぎる場合があります。
その点を改良したのが、重みつき平均フィルタになります。
平滑化2:重み付き平均フィルタ(加重平均フィルタ Weighted averaging filter)
重みつき平均フィルタでは、
フィルタ行列の成分について中央に近い成分ほど大きい値になるように作られています。
周りの影響も取り入れつつ、元々の濃度値の影響をより多く考慮して、濃度値が出力されます。
上の平均化フィルタよりも、ぼけを少なくできます。
平滑化3:ガウシアンフィルタ(Gaussian filter)
ガウシアンフィルタは、重みつき平均と似ているのですが、
重みの決め方にガウス分布を使ったものになります。
より滑らかな平滑化が期待できる手法になっています。
ちなみに、これらのフィルタは、「移動平均フィルタ」とも呼ばれています。
画像処理や音声処理などの信号処理だけでなく、時系列分析でもよく使われ、
金融分野、気象分野、計測分野などでもよく使われる方法となっています。
平均化フィルタ、重みつき平均フィルタ、ガウシアンフィルタは、
どれもノイズの濃淡値も含めて計算するので、どうしてもノイズの影響が残ってしまいます。
このような場合に使えるのが、メディアンフィルタです。
平滑化4:メディアンフィルタ(Median filter)
メディアンというのは、統計学の用語で、「中央値」の意味になります。
多数のデータがあった時、それらを小さい順に並べ替えて、
その真ん中の値を「メディアン」と呼びます。
この辺は、統計学を学ぶとよくわかります
『『「統計学」に入門したい人はチェックしてほしい良書、10冊はこちらです』』
メディアンフィルタでは、
例えば、3×3の画素の画素値であれば、
9つの画素値を小さい順に並べて、
その真ん中の値を出力して新しい画素値にする、という方法です。
多くのノイズの濃淡値は、周囲の濃淡値とかけ離れています。
中央値を取れば、ノイズの情報は使うことなく、平滑化することができます。
なので、メディアンフィルタは、ノイズの影響のない平滑化といえます。
ただし、データを並び替える操作があるので、計算時間が多くかかるというデメリットがあります。
以上まとめますと、空間フィルタには、様々な手法があり、
- 平均化フィルタ
- 重みつき平均フィルタ
- ガウシアンフィルタ
- メディアンフィルタ
といったものがありました。
どの手法を使うかは、画像によっても変わりますが、
上から下に行くほど、ノイズの影響を小さくすることができます。
というわけで、本記事では、画像処理のフィルタについてまとめました。
こちらもございます↓
こちらもどうぞ↓
はじめて学ぶディジタル・フィルタと高速フーリエ変換―基礎・原理からよく理解するための (ディジタル信号処理シリーズ)
新編 画像解析ハンドブック
高校数学でわかるフーリエ変換―フーリエ級数からラプラス変換まで (ブルーバックス)
マンガでわかるフーリエ解析
やり直しのための信号数学―DFT、FFT、DCTの基礎と信号処理応用 (ディジタル信号処理シリーズ)
こちらもどうぞ
『時系列分析をサクッと学べるおすすめの良書、9冊はこちらです』
『「機械学習」に入門したいあなたにチェックしてほしい良書、10冊はこちらです』
『「自然言語処理」を学びたい人におすすめの良書、10冊はこちらです』