end0tknr's kipple - 新web写経開発

http://d.hatena.ne.jp/end0tknr/ から移転しました

テイラー/マクローリン展開からのHarrisコーナー検出 (その2)

で、Harrisコーナー検出の理論編。

以下に書いてはみたものの、十分には理解できていない印象です。

参考url

コーナー検出法 - Wikipedia

画像処理の数式を見て石になった時のための、金の針 - Qiita

Harrisコーナー検出の定義式

Harrisコーナー検出とは、 「一次微分値(差分)が一方向に大きければエッジ、多方向に大きければコーナー」 の考えに基きます。

画像上の点の強度 I(x,y)と、そこから(u,v)移動した点強度 I(x+u,y+v) の 変化量 E(u,v)を次のように表します。

 \Large
E(u,v) = \sum_{x,y} w(x,y)(I(x+u,y+v) - I(x,y))^2 (式1)

※ w(x,y)は窓関数(window function)で、ある区間外では0となるもの(例:ガウス窓)。

Iの導関数をIx , Iyとして、先程の式1にある I(x+u,y+v)部分にテイラー展開


f(x) ≒ f(x_0) + f'(x_0)(x-x_0)

を適用すると、次のように変形/近似できます

 \Large
I(x+u,y+v) ≒ I(x,y) + I_u(x,y)u + I_v(x,y)v (式2)

よって、式1は次のようになります


E(u,v) \\
\Large ≒ \sum_{x,y} w(x,y)( I(x,y) + I_u(x,y)u + I_v(x,y)v - I(x,y))^2 \\
\Large = \sum_{x,y} w(x,y)( I_u(x,y)u + I_v(x,y)v )^2 (式3)

更に、次のようにMを設定して、行列式に変形します

 \Large
M = \sum_{x,y} w(x,y)
\left[ \begin{array}{cc}
      {I_X}^{2}  & {I_X}{I_Y} \\\
      {I_X}{I_Y} & {I_Y}^{2}
\end{array} \right]
 (式4)
 \Large
E(u,v) ≒ [u,v] M 
\left[ \begin{array}{c}
      u \\\ v
\end{array} \right]
 (式5)

式4に特異点分解を行うと、エッジやコーナーの判定ができますが、 固有値算出は計算量が多い為、次のRを用いて判定を行います。

 \Large
R = detM - k(trace M)^2

ここで、 ・detM とは、行列式です。(例 ad-bc)

線形代数 : 行列式とサラスの公式、そしてクラメル式によるn元1次連立方程式の解 - end0tknr's kipple - 新web写経開発

・trace Mとは、対角和です。(例 a+d)

・kは定数 (0.04~0.06)

・R=大→コーナー、R=小さい→フラット、R<0→エッジ