匹配问题
Harris角点检测是Chris Harris和Mike Stephens在1988年提出的。主要用于运动图像的追踪。当时的普遍想法是利用边缘进行追踪,但是当相机或物体运动时你不知道朝哪个方向,相机的几何变换也是未知的,所以边缘匹配很难达到预期的效果。即使是当时最优秀的边缘检测算子Canny算子,它的边缘检测也依赖于阈值的选取。所以Harris等人放弃了匹配边缘,转而寻找一些特殊的点来匹配,这些点是边缘线段的连接点,它们表征了图像的结构,代表了图像局部的特征。
例如不同时刻两幅建筑物图像,想要匹配它们,就是要找到它们有没有共同区域,一种方法就是——Patch Matching:
那么第二副图中哪一个窗口与红色窗是最佳匹配呢?人眼可以迅速判断出,怎么让计算机知道?
什么是角点
直观的说就是图像轮廓的连接点。不管视角怎么变换,这些点依然存在,是稳定的;它们与领域的点差别比较大。所以角点是一种优良的特征点。
如果你用一个小的加权窗口在角点的附近各个方向移动,将会出现一个大的变化!
Moravec角点检测
Harris角点检测来自于Moravec检点检测(1977,Moravec),并对它进行了改进和更强的数学建模。
Moravec角点检测用一个二值窗口在图像的某个像素点的所有方向上进行移动,并计算移动后和移动前像素强度变化的平均值,得到的最小的值定为该点的角点响应值。用公式表示,即为:
在移动时,会出现三种情况:
1.如果是在图像的平坦区域,shift的所有结果都很小;
2.如果是在图像的边缘,那么只有沿着边缘的方向shift时值比较小,其他方向都很大。
3.如果实在边缘的连接点处或者一个单独的点,无论什么方向怎么移动,值都很大。
最后设定一个阈值,大于这个阈值的判定为角点。
一般计算这个像素点水平、垂直、对角线、反对角线4个方向上的灰度差平方和。
Harris角点检测
Moravec角点有一些缺点,导致它的检测不精确,Harris改良了这些缺点。
1.相应是各向异性的,因为只考虑了45度倍数方向上的响应。Harris通过对shift region进行泰勒展开,覆盖所有方向的移动。
二元函数的一阶泰勒近似为:
所以,对于很小的shift,响应强度可以表示为:
将后面的平方项展开,
这里我们暂时把窗口去掉,考察一下移动