harris角点检测

一:harris基础

图1.计算点(u,v)处的harrirs响应,实际是计算两个窗口内所有像素值的加权差异

以像素点(u,v)为中心的窗口W1经过平移(\Delta u,\Delta v)得到窗口W2,两个窗口像素差异定义为:

E(\Delta u,\Delta v)=\sum_{x,y}   \omega (x,y)[I(x+\Delta u,y+\Delta v) -I(x,y) ]

                                \approx \sum_{x,y}\omega (x,y)[\frac{δI}{δx}(x,y)\Delta u+\frac{δI}{δy} (x,y)\Delta v ]²

                        =[\Delta u,\Delta v]H[\Delta u,\Delta v]^T

其中:

(x,y)为窗口W1内的像素点,(x+\Delta u,y+\Delta v)为窗口W2内像素点。

\omega (x,y)=\frac{e^{-(x^2 +y^2)}}{2\sigma ^2} 为窗口内的高斯卷积核(和窗口同样大小)

H=\sum_{x,y}  \left[\begin{matrix}  w(x,y)\cdot  (\frac{\delta I}{\delta x}(x,y))^2   & w(x,y)\cdot  \frac{\delta I}{\delta x}(x,y)\cdot \frac{\delta I}{\delta x}(x,y)  \\  w(x,y)\cdot  \frac{\delta I}{\delta x}(x,y)\cdot \frac{\delta I}{\delta x}(x,y) &  w(x,y)\cdot (\frac{\delta I}{\delta y}(x,y))^2    \end{matrix}\right]

二:计算流程

1)计算梯度图X,Y

            X=I\otimes (-1,0,1)

            Y=I\otimes (-1,0,1)^T

2)计算梯度图的卷积

            A=X\cdot X\otimes w

            B=Y\cdot Y\otimes w

            C=X\cdot Y\otimes w

其中\cdot 为梯度图矩阵对应位置相乘,w为5x5高斯卷积核(也可以为其他大小的高斯卷积核)

则:

            H=\left[\begin{matrix}   A(u,v) & C(u,v) \\   C(u,v) & B(u,v)   \end{matrix}\right]

3)计算每个像素点(u,v)的harris响应值

设矩阵H的特征值分别为\alpha ,\beta ,则:

            Tr(H)=\alpha +\beta =A(u,v)+B(u,v)

            Det(H)=\alpha \beta =A(u,v)B(u,v)-{C(u,v)}^2

像素点(u,v)的harris的响应值(response)为:

            R(u,v)=Det(H)-k\cdot {Tr(H)}^2

其中k=0.04(也可以为其他值),如果R(u,v)>M,则点(u,v)为预选harris角点

4)harris角点筛选

对步骤3中的预选harris角点执行非极大值抑制,得到最终的harris角点。

三:代码示例

图2.harris角点检测结果
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。