Harris角点检测
1角点特点
角点:简单理解就是在两个明显不同方向上梯度有明显变化的点,就是在水平、竖直两个方向上变化均较大的点,即Ix、Iy都较大。
边缘:若仅仅在某一个方向上梯度明显变化,即仅在水平、或者仅在竖直方向有较大的变化量,即Ix和Iy只有其一较大
平坦地区:若任何方向上梯度都没有明显变化,即在水平、竖直方向的变化量均较小,即Ix、Iy都较小,则该点在光滑区域的内部。
2 角点检测启发
现在我们从零来思考角点检测问题,我们可以想到用窗口对图像进行分割:
1)若该窗口在光滑连续区域中,则在较小的范围内,无论按照哪个方向移动窗口,窗口内对应位置的像素灰度值变化较小;
2)若窗口沿着场景边界方向,则窗口内的像素灰度值变化较小,若垂直于边界方向移动,则窗口内对应位置的像素灰度值变化较大;
3)若该点为角点或者孤立点,则无论窗口沿哪个方向,窗口内对应位置的像素灰度值变化均较大。
3 Harris角点检测算法原理和步骤
1)Harris角点检测算法基本步骤:
1. Harris角点检测算法,该算法的基本原理是取以目标像素点为中心的一个小窗口,计算窗口沿任何方向移动后的灰度变化,并用解析形式表达。设以像素点(x,y)为中心的小窗口在X方向上移动u,y方向上移动v,Harris给出了灰度变化度量的解析表达式:
其中,为窗口内的灰度变化度量;
为窗口函数,一般定义为
I为图像灰度函数,略去无穷小项有:
表示限定某一个窗口内的像素点为1其余为0,其本质就是各个方向滑动窗口来求取其对应位置灰度值的差异。这里(x,y)用来表示方向向量,例如(1.0),(1,1),(0,1)等表示水平方向,45°方向和竖直方向,用来表示窗口的移动(shift).这样做的缺点较多,例如方向(x,y)的选择,很容易造成各个方向不同的能量惩罚,这里称为'anisotropic'; 另外更重要的是其对边界太敏感,容易误检测。
将其化为二次型有:
其中,R为旋转因子,对角化处理后并不改变以u,v为坐标参数的空间曲面的形状,其特征值反应了两个主轴方向的图像表面曲率。
(1)当两个特征值均较小时,表明目标点附近区域为“平坦区域”;
(2)特征值一大一小时,表明特征点位于“边缘”上;
(3)当两个特征值均比较大时,沿任何方向的移动均将导致灰度的剧烈变化,为角点。
Harris的角点响应函数(CRF)表达式由此而得到:
其中:det(M)表示矩阵M的行列式,det(M)=λ1*λ2
响应函数公式推导如下:
总的来说,对于边界情况,理想的情况是,和
中一个为0,另外一个很大,当然事实上,由于噪声,通常是一个很大,另外一个相比较而言会足够小。对于光滑连续区域,则
和
都很小,仅当 和 都很大时候,命中角点区域。
此时我们希望有关于E的新能量方程,使在角点处的E较大,而在边界处和光滑处E较小,其中ηi为权值系数,且η2>η1即意味着对边界的惩罚力度较大:
而所有需要计算的特征值用A与B进行相应的计算即可,这个很省事。
这里有个地方需要说明,根据A,B与C的定义可知,A*B-C*C=0
这样一来似乎没有计算Det(M)的必要,然而我们在实际操作过程中,由于噪声的存在,常常用Gaussian对窗口 进行平滑,此时计算中Det(M)不为0.
即:2 strong eigenvalues——interest point,1 strong eigenvalues——contour/edge
0 eigenvalues
2 编程实现
基本步骤:
参考文献
[1].HARRIS, C. ; STEPHENS, M.: A Combined Corner and Edge Detector. In:Proceedings of the 4th Alvey Vision Conference, 1988, S. 147—151
[2].MORAVEC, H, OBSTACLE AVOIDANCE AND NAVIGATION IN THE REAL WORLD BY A SEEINGROBOT ROVER, TECH REPORT CMU-RI-TR-3, CARNEGIE-MELLON