基本思想:
(a) 平坦区域 (b)边缘区域 (c)角点区域
算法的基本思想是:
(1)如果图片在窗口附近变化平坦,窗口所有方向上的移动只会引起窗口内对应像素灰度值微小的变化,如图a所示。
(2)如果窗口位于图像边缘上,那么顺着边缘方向上的移动引起上述值微小的变化,垂直于边缘方向上的移动将引起巨大的变化,如图b所示。
(3)如果窗口位于图像的角点上,则所有方向上的移动都将造成窗口内对应像素灰度值巨大的变化,如图c所示。
Moravec算法:
moravec算法为上述算法的一个裸奔实现:
1、采用窗口模板
2、使用若干个方向(如上下左右4个方向)
3、使用各个方向的变化最小值作为角点响应值
用公式表示即:
其中w表示所使用的二值化窗口,(x,y)包含[(1,0),(1,1),(0,1),(-1,1)]四个方向,Moravec算法通过该点在4个方向上的min Ex,y 是否大于某一阈值来判断该点是否为图像的角点。
Harris角点检测算法:
由于Moravec算法有如下明显缺陷:
(1)Moravec角点检测算法只考虑了每个45度角方向,如图所示,不属于这几个方向的边缘会被检测为角点。
(a)原图使用Moravec角点检测 (b)旋转之后使用Moravec角点检测
(2)Moravec角点检测算法采用二值化窗口,对噪声较为敏感。
(3)Moravec角点检测算法只关注这几个方向中E的最小值。
harris算法进行了如下改进:
(1)Moravec算法只计算了间隔25度的几个方向,Harris算法使用Taylor展式近似计算任意方向:
其中X和Y分别为x和y方向上的梯度:
则对于任意方向的微小移动(x,y):
其中:
w为卷积窗口。
(2)Moravec算法采用二值窗口,Harris算法采用更加平滑的窗口,如高斯窗口:
(3)Moravec算法通过各个方向Ex,y的最小值检测角点,Harris使用一种新的判断方法:
使用矩阵的形式表示Ex,y为:
其中
M的两个特征值α,β和局部自相关函数的主曲率成正比,同Moravec算法一样,分如下三种情况讨论α,β和图像特征的关系:
(1)如果两个曲率都较小,即局部自相关函数整体较平坦,则所有方向上的移动将引起E的微小变化。
(2)如果其中一个曲率较大而另一个较小,即局部自相关函数呈山脊状。沿着山脊的移动引起E微小的变化,此时窗口处于图像边缘处。
(3)如果两个曲率都较大,则局部自相关函数呈山顶形状:所有方向的移动引起E剧烈的变化,此时窗口处于图像的角点处。
基于上述考虑,Harris定义角点响应函数:
其中:
Nobel角点检测算法:
由于Harris算法中参数k需要根据经验提前设定,Nobel于1988年提出利用如下公式计算角点的响应值:
采用上述公式计算角点的CRF值,从而避免的参数k对角点选取的影响,在实际应用中,通常选用这个改进的Harris角点检测算法进行检测:当cim值大于预定的阈值,则该点为角点候选点,通过非极大值抑制挑选出最终的角点。
Shi-Tomasi角点检测算法:
J.Shi和J.Tomasi于2000年采用与Harris不同的角点响应函数。在Harris算法中角点响应函数定义为:
其中和分别为M矩阵的两个特征值。而Shi-Tomasi算法采用的角点响应函数为:
即两个特征值中的最小值即: