画像認識・物体検出の為の画像前処理
【No.1】平滑化

1. 平滑化とは

画像の平滑化とは、一言で「画像をぼかすこと」と言えます。
画像をぼかすことで、主に画像内のノイズ除去に有効に作用します。

では、具体的にどうやって画像をぼかすのでしょうか。
これは、「画素値の変化を小さくする、滑らかにする」ことで画像をぼかします。
一つずつ見ていきます。

まず、そもそもデジタル画像の概要をみていきます。
デジタル画像は、画素(ピクセル)とよばれる、粒のようなものの集合体です。
カラー画像の場合、画素は1つ1つに色情報(RGB)を保有しています。色情報は、赤・緑・青の3色について、それぞれ0〜255の数値として存在します。
要するに、色情報はそれぞれ単なる数値です。この数値のことを画素値と呼びます。
3色分の画素値を格納している箱の様なものが画素であり、その画素の集合体がデジタル画像と言えます。

図1 デジタル画像と各色の画素値

一方、モノクロ画像の場合は、画素は明暗の情報を保有しています。画素が保有する画素値は、明暗の0〜255のみです。

図2 モノクロ画像と画素値

今回は簡便化の為に、モノクロ画像を使用します。

図3 隣接する画素値同士の差

図3において、画素Aと画素Bの画素値はそれぞれ221、234で、差の絶対値は13です。
要は、画像をぼかす為には、この13という値をなるべく小さくすれば良いと言うことになります。
隣接する画素値の差を小さくする為に、フィルタ処理というものを使用します。

2. フィルタ処理とは

フィルタ処理とは、ある特定の画素値だけでなく、その周辺の画素値を用いて画素値を計算する方法です。文字だとイメージしづらいので、図で解説します。

図4 画像と画素値
図5 カーネル

図5内の青い領域は、「カーネル」と呼ばれたりします。
カーネルには、通常特定の係数が格納されています。ここではサイズが3×3、それぞれのマスに1/9という値を格納したカーネルを用意しています。このカーネルを、通常左上に重ね合わせ、重なった領域内において特定の計算を実施します。その後、カーネルをずらし、同様の処理を繰り返していきます。
具体的には、以下の流れで処理が実施されます。

カーネルを使用した処理アニメーション図 図6 カーネルを使用した処理アニメーション図
1 この青い領域内の画素値について特定の計算を実施します。
今回は例として、青い領域内の画素値とカーネルの係数を乗算します。
その後それらを全て加算します(カーネルの係数が1/9なので、この計算は、青い領域内の平均値を算出していることになります)。 算出した平均値が右の赤い数値です。

2 算出後、青い領域を一つ右側にスライドし、上記の処理をまた行います。これを繰り返し行い、画像の右端に到着するまで処理を行います。

3 右端到着後、青い領域を一つ下にずらして、また左端から処理を行っていきます。これを繰り返し行い、画像の左下端に到着したら、処理を終了します。

※上処理一式は、解説のために簡略化しています。詳細のフローや、数式については、ここでは割愛します。
図7 画素値と画像の比較

上記の処理によって生成された画像の画素値と元画像の画素値を比べてみると、隣り合う画素値の差が、生成画像の方が小さいことがわかります。

また、画像を見比べてみると、元画像に比べ、生成画像の方が少しぼやけている様に見えます。
これは、隣接する画素値同士の差が小さくなった為です。
冒頭でも述べましたが、「画像の平滑化とは、画像をぼかすこと」であり、画像をぼかすことでノイズを除去することにつながります。

次に、よく使用されるフィルタ処理を紹介します。

3. 平均化フィルタ

平均化フィルタとは、対象の画素値とその周辺の画素値の平均値を算出し、その値を使用していく処理です。先ほどのフィルタ処理の具体例で使用した処理は、この平均化フィルタになります。

図8 平均化フィルタ

7×7のカーネルを使用し、実際にノイズが含まれる画像に適応してみます。

図9 平均化フィルタの適応例

上記処理によって、各画素値の差が小さくなり、濃淡変化が滑らかになります。その結果、画像に含まれるノイズなどが軽減されます。

一方で、全体的に輪郭がぼやけ、元画像に比べ見辛くなっている印象です。

4. ガウシアンフィルタ

ガウシアンフィルタとは、カーネル内の重みをガウス分布に従い算出し、その値を使用していく処理です。
ここでは詳しい理論について割愛しますが、平均化フィルタとの大きな違いはカーネルの中心が最も重みが大きくなり、外側ほど重みが小さくなる点です。

図10 ガウシアンフィルタ
図11 ガウシアンフィルタの適応例

これによって、平均化フィルタに比べ輪郭をある程度保ちつつぼかすことが可能となっています。

5. メディアンフィルタ

メディアンフィルタとは、カーネル内の全画素値から中央値を算出し、その中央値をカーネルの中心の画素値に置換する処理です。

図12 メディアンフィルタ

図12の場合、カーネル内の画素値「237、224、184、227、137、111、211、122、138」で、中央値は「184」なので、「184」をカーネルの中心に置換します。

図13 メディアンフィルタ適応例

デジタル画像におけるノイズとは、画素値が周辺に比べ極端に大きい・もしくは小さい部分とも言えます。
メディアンフィルタではそういった画素値を中央値に置換することで差を小さくし、ノイズを除去しています。

6. バイラテラルフィルタ

バイラテラルフィルタとは、ガウシアンフィルタを改良した処理です。
バイラテラルフィルタの処理は、対象の画素と周辺の画素との画素値を比べます。差が大きい画素は小さい重み、差が小さい画素は大きい重みをつけます。

図14 バイラテラルフィルタ適応例

イメージとしては、ガウシアンフィルタの強化版になります。
ガウシアンフィルタで考慮していなかった「画像の輪郭(エッジ)」を保ちつつ画像を平滑化するので、元画像の形を損なうことなくノイズ除去ができます。

・物体検出AIの導入
・アノテーションサービス
・手書き計算サイト ZONE++ の運営
・技術ブログ LAB++の運営
   上記をメインにおこなっております

詳しくはこちら

Category

Search