画像処理における1次微分フィルタの原理や特徴、計算式についてまとめました。
一次微分フィルタとは
一次微分フィルタは、画像から輪郭を抽出する空間フィルタです。
一次微分を計算することで、注目画素の左右・上下の画素値の変化の傾きが求まります。
画像の輪郭は画素値の変化が大きいため、微分した画素値が大きい箇所が輪郭となります。
■入力画像(左)、出力画像(右)
出力画像を見ると、輪郭の部分が白くなっている、つまり画素値が大きいことがわかります。
一次微分フィルタのカーネル
注目画素の水平方向、および垂直方向それぞれの一次微分は次のようになります。
(1)
よって、一次微分フィルタの水平方向微分のカーネル、および垂直方向微分に用いるカーネルは次のようになります。
(2)
ただし、このやり方だと、実際には2つの画素の中間における微分値()となってしまいます。
そこで、注目画素の両端の画素値の差分を計算することで、注目画素の位置に合わせる方法もあります。
(3)
このとき、水平方向微分のカーネル、および垂直方向微分に用いるカーネルは次のようになります。
(4)
水平方向微分では縦方向の輪郭を取り出すことができます。
逆に、垂直方向微分では横方向の輪郭を取り出します。
最後に、縦方向に検出された輪郭画像の画素値を、横方向に検出された輪郭画像の画素値をとすると、縦横両方向の輪郭画像の画素値は、次式で計算できます(二乗和平方根)。
(5)
【計算例】4×4の入力画像を一次微分フィルタに掛けた場合
入力画像と一次微分フィルタ(垂直方向微分)のカーネルが次のように与えられたとき、出力画像を求めます。
(6)
入力画像とカーネルを畳み込み演算してやると
(7)
となります。今回、入力画像の端の画素値は0とします。
また、0未満の画素値は絶対値を取って10とします。
すると、出力画像は次のようになります。
(8)
プログラミングで実装
プログラミングによる実装例について下記事で解説しています。
コメント
Ix,Iyからカーネルになる過程がわかりません
よかったら教えてください