亚像素角点

Posted luofeiju

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了亚像素角点相关的知识,希望对你有一定的参考价值。

    Harris 角点定义为一个邻域内存在两个正交方向上梯度变化较大的点。

    作 xy 平面上的二维函数,使用自相关函数可描述图像上一固定点在任意方向上的灰度变化;然后利用泰勒级数展开自相关函数,即可将其转换为矩阵特征值问题(参考博文 "光流跟踪")。

    在某些应用中(如视觉测量),想获得更加精确的角点定位,可使用角点亚像素算法实现。

    在提取亚像素边缘时,可以通过数学建模(最小二乘法)来描述边缘方向上一阶导数曲线,该曲线为一个二次函数;然后找到数学模型的最值点即为亚像素边缘位置。

    对于 Harris 角点,考察 角点邻域内点 p 的梯度向量,p点与初始角点 q 构成的向量 ,在理想情况下,发现两向量点积均为 0。具体来说:

    1)当 p 点位于平坦区域内,p 的梯度向量为 0,两向量点积为 0;

    2)当 p 点位于边缘上,p 的梯度向量于向量 qp 正交,两向量点积仍然为 0。

          技术图片

    如上图所示,将 q 点坐标当作未知量,通过解方程组即可求得更加精确的角点坐标。一旦求解到新的角点坐标,可以使用新的角点坐标位起点,按同样方法建立方程组,迭代求解,直到精度满足要求。

    在实际应用中,当考察点离参考角点 q 较近时,角点附近点存在两个方向梯度,故合成梯度方向与 qp 边缘基本不能正交;

    当考察点离参考角点 q 较远时,考察点多半位于边缘上,故考察点梯度方向与 qp 边缘基本正交;

    所以,实际应用中会排除离 p 点较近的部分点,以提升线性方程组可解性。

    另一方面,在平坦区域内点的梯度一般不等于 0,这会提升方程组真实解。可以设定一个梯度门限,方程组仅接收梯度门限较大值,从而提升可解性。

 

    参考资料 Learning OpenCV 3

以上是关于亚像素角点的主要内容,如果未能解决你的问题,请参考以下文章

寻找HarrisShi-Tomasi和亚像素角点

OpenCV亚像素级的角点检测

图像处理之角点检测与亚像素角点定位

Opencv 亚像素级别角点检测

Qt + opencv 角点检测(Shi-Tomas + 亚像素精度角点)

OpenCV——HarrisShi Tomas自定义亚像素角点检测