文章目录
一、Harris角点检测
1.Harris角点检测算法
Harris角点检测算子是于1988年由CHris Harris & Mike Stephens提出来的,是通过数学计算在图像上发现角点特征的一种算法,其具有旋转不变性的特质。Harris算法使用微分运算和自相关矩阵来进行角点检测,具有运算简单、提取的角点特征均匀合理、性能稳定等特点。
算法基本思想是使用一个固定窗口在图像上进行任意方向上的滑动,比较滑动前与滑动后两种情况,窗口中的像素灰度变化程度,如果存在任意方向上的滑动,都有着较大灰度变化,那么我们可以认为该窗口中存在角点。
但Moravec早在1981就提出来一个Moravec角点检测算子。Harris角点检测算子实质上是对Moravec算子的改良和优化。
假设图像像素点(x,y)的灰度为 I(x,y),以像素点为中心的窗口沿 x 和 y 方向分别移动 u 和 v 的灰度强度变化的表达式为:
其中 E(u,v)是灰度变化,w(x,y) 是窗口函数,一般是高斯函数,所以可以把w(x,y)看做是高斯滤波器。I(x,y)是图像灰度, I(x+u,y+v)是平移后的图像灰度。
收到泰勒公式的启发,在这里我们可以将 I(x+u,y+v)函数在(x,y)处泰勒展开,为了提高抗干扰的能力并且简化运算,我们取到了一阶导数部分,后面的无穷小小量O(u2+v2)可以忽略,整理得到表达式如下:
将[ Ixu+Iyv ]展开后整理可以用矩阵表达为:
最后我们可以近似得到E(x,y)的表达式,将其化为二次型后得到:
其中M是一个2X2的矩阵,称为像素点的自相关矩阵,可以由图像的导数求得。M=窗口函数*偏导矩阵,表达式为:
因为u,v是局部微小的移动变量,所以我们对M进行讨论,M是一个2X2的矩阵,M的表达式中与点的位置(x,y)具体强相关性,记M得特征值为λ1,λ2,关于特征值我们可以简单理解为该点的灰度值变化速度,那么a1和a2可以分别看做是x方向和y方向的灰度变化速率,就可以用a1,a2两者的大小关系来进行分类。
2.何为角点
算法基本思想是使用一个固定窗口在图像上进行任意方向上的滑动,比较滑动前与滑动后两种情况,窗口中的像素灰度变化程度,如果存在任意方向上的滑动,都有着较大灰度变化,那么我们可以认为该窗口中存在角点。该算法的主要思想是,如果像素周围显示存在多于一个方向的边,我们认为该点为兴趣点,称该点为角点。通常意义上来说,角点就是极值点,即在某方面属性特别突出的点,所谓的角点就是灰度在两个垂直方向上均变化较大的点,是在某些属性上强度最大或者最小的孤立点、线段的终点。而对于图像而言,即为图像的角点,其是物体轮廓线的连接点。
如何对角点进行检测就归结为如何检测出一个点区域在两个相互垂直方向上的梯度变化
3.对比Moravec角点检测算子
- Moravec算子对方向的依赖性太强,在上文中我们可以看到,Moravec算子实际上只是移动了四个45度角的离散方向,真正优秀的检测算子应该能考虑到各个现象的移动变化情况。
其中:
所以E就可以表示为:
2.由于Moravec算子采用的是方形的windows,因此的E的响应比较容易受到干扰,Harris采用了一个较为平滑的窗口——高斯函数:
3.Moravec算子对边缘响应过于灵敏。为此,Harris提出了对E进行变形:
变成了二次型,其中,