计算机视觉-harris算法
复习一下hw1所需知识。
四、特征检测
2、角点检测
Moravec
略
Harris角点检测器
原理
窗口在角点上按任意角度移动时,窗口的灰度图都会有明显的变化。
窗口滑动分别按x和y方向移动[u, v]后,灰度的变化为
\[
E(u,v) = \sum_{x,y}w(x,y) { [I(x+u,y+v)-I(x,y)]^2}
\] \({w(x,y)}\)是窗口函数,二维的滤波器。
\({I(x+u,y+v)}\)和\({I(x,y)}\)分别是平移前和平移后的窗口灰度图。
再用泰勒公式\({f(x+u,y+v) =
f(x,y)+uf_x(x,y)+vf_y(x,y)}\) 简化为
\[
E(x,y)=[u,v]M{ \left[
\begin{matrix}
u\\v
\end{matrix}
\right]}
\] \[
M=\sum_{x,y}w(x,y){ \left[
\begin{matrix}
I_x^2&I_xI_y\\
I_xI_y&I_y^2
\end{matrix}
\right]}
\]
\({I_x}\)和\({I_y}\)为x和y方向的梯度值,可以用Sobel进行计算。
接着\({M}\)可以用实对称矩阵对角化进一步化简:
\[
M=R^{-1}
{\left[
\begin{matrix}
\lambda_1&0\\
0&\lambda_2
\end{matrix}
\right] }
R
\] 最后根据\({\lambda_1}\)和\({\lambda_2}\)计算角点响应函数R:
\[
R={\lambda_1\lambda_2}-k(\lambda_1+\lambda_2)^2
\] k为经验常数,一般取0.04-0.06。
当R很小且小于threshold时,认为是平坦区域;
当R<0且R<threshold时,认为是边缘;
当R>0且R>threshold时,认为是角点。
步骤
- 计算\({I_x}\)和\({I_y}\)
- 计算\({I_xI_y}\)
- 把\({w(x,y)}\),一般是高斯滤波器,应用到\({I_x}\)、\({I_y}\)和\({I_xI_y}\)上,计算\(M\)矩阵
- 计算响应值R
特性
平移不变性
旋转不变性
不满足尺度不变性
高斯差分滤波器(DoG)
尺度不变性