本記事では、エッジ検出と空間フィルタリングについて紹介します。
空間フィルタリング
空間フィルタリングとは、入力画像の着目した画素値だけでなく、その近傍(周囲)にある画素値を利用することで、出力画像の画素値を計算する処理のことをいいます。 この計算のことを畳み込み演算、もしくはマスク演算ともいいます。
画素値とは、各画素の色の濃淡や明るさを表す値のことです。
左の画像(入力画像)の左上の画素に着目します。この入力画像の周りの8画素を、それぞれ対応するフィルターとの積和計算を行う。このとき、入力画像の外側の画素値は 0 として計算する。
積和計算が負の値になれば 0 とする。
積和計算の結果を、入力画像の画素の座標と同じ出力画像の画素の座標に対応する。
この操作を全ての画素について繰り返して行う。
エッジ検出
画素値がエッジ(境界)として大きく変化する部分を抽出することをエッジ検出といいます。つまり、画像中の明るさが大きく変化したところを抽出するということ。
微分を使えば、その変化を捉えることができます。連続値であれば、微分して接線の傾きから導けますが、画像は連続値ではありません。
そこで、微分の近似である画素値間の差分により求めます。
1 次微分
1 次微分のフィルターには sobel フィルターを使います。
sobel フィルターはノイズや雑音を除去して微分をすることができるのです。
出力画素値の求め方は、空間フィルタリングでしたように、入力画像に対して sobel フィルターの
水平演算子 Gx(x 軸方向)と垂直演算子 Gy(y 軸方向)を積和計算で求め、それぞれの2乗和の平方根を出力画素値とします。
2 次微分
2 次微分ではラプラシアンフィルタを使い、出力画素値を求めます。
これにより、二次微分を利用して画像から輪郭を抽出できます。
計算方法は、積和計算するだけです。下の図は、ラプラシアンフィルタです。