普遍认为,角点是二维图像亮度变化剧烈的点或图像边缘曲线上曲率极大值的点。这些点在保留图像图形重要特征的同时, 可以有效地减少信息的数据量, 使其信息的含量很高, 有效地提高了计算的速度, 有利于图像的可靠匹配, 使得实时处理成为可能。其在三维场景重建、运动估计、目标跟踪、目标识别、图像配准与匹配等计算机视觉领域起着非常重要的作用。     

        Harris 角点检测算法是Harris 和Stephens 于1988 年在Moravec 算法的基础上提出基于信号的点特征提取方法,其原理为:如果某一点向任一方向小小偏移都会引起灰度的很大变化, 这就说明该点是角点。考虑的是用一个高斯窗或矩形窗在图像上移动, 由模板窗口取得原图像衍生出2 ×2的局部结构矩阵。该方法计算图像X 方向和Y 方向上的梯度自相关函数相联系的矩阵M 及M 的两个特征值,而矩阵M 的特征值是自相关函数的一阶曲率,若两个曲率值都很高,则认为该点为角点。Harris 算法利用微分算子计算像素点在任意方向上的灰度变化,并计算目标像素点的角点响应函数值CRF( Corner Response Function) ,当CRF 超过设定的阈值时,则把该像素点视为角点。Harris 算法中,假设以目标像素点( x,y ) 在X 和Y 方向上移动( u,v) 距离后灰度变化可表示为

Harris角点检测特征点 harris角点检测算法的原理_Harris角点检测特征点

提高抗噪能力的Gauss 窗口函数,Ix、Iy、Ixy分别表示像素点灰度在X 和Y 方向的偏导( 即梯度) 及二阶混合偏导。像素( x,y) 的角点响应函数为

Harris角点检测特征点 harris角点检测算法的原理_像素点_02

式中,k 为常数项,其取值范围为0. 04 ~ 0. 06,λ1 、λ2是矩阵M 的特征值,它们与角点判定关系如图1 所示,可知角点处特征值λ1 、λ2都较大,i 、j 分别为像素位置与Gauss 模板中心坐标差。若某一像素的R 值大于给定的阈值,且是局部最大值,则认为该处为角点。R 值局部local 非极大值抑制,表达式为

      

Harris角点检测特征点 harris角点检测算法的原理_灰度_03

      值得注意的是该方法具有旋转不变性, 但检测的角点有较大的冗余, 需要根据实际经验来确定R的阈值。

      Harris 角点检测步骤为:
Step1:计算图矩阵M;
Step2:对图像进行高斯滤波,得到新的M,高斯滤波窗口可选9×9;
Step3:用CRF=Det(M)-kTrace^2(M)计算原图像上各个点的CRF 值;
Step4:选取局部极值点;
Step5:设定阈值,CRF 值大于阈值的点作为最终选取的角点。