绝点检测(3):亚像素级角点检测
一,背景概述;
二,寻找亚像素角点: cornerSubPix()函数;
三,综合示例:亚像素级角点检测;
一,背景概述
若我们进行图像处理的目的不是提取用于识别的特征点而是进行几何测量,这通常需要更高的精度,而函数 goodFeaturesToTrack()只能提供简单的像素的坐标值,也就是说,有时候会需要实数坐标值而不是整数坐标值。
亚像素级角点检测的位置在摄像机标定、跟踪并重建摄像机的轨迹,或者重建被跟踪目标的三维结构时,是一个基本的测量值。
下面我们将讨论如何将所求得的角点位置精确到亚像素级精度。一个向量和与其正交的向量的点积为0,角点则满足如图10.11所示情况。

其中,(a)点p附近的图像是均匀的,其梯度为0;(b)边缘的梯度与沿边缘方向的q-p 向量正交。在图中的两种情况下,p点梯度与q-p向量的点积均为0。
图10.11中,我们假设起始角点q在实际亚像素级角点的附近。检测所有的q-p向量。若点p位于一个均匀的区域,则点p处的梯度为0。若q-p向量的方向与边缘的方向一致,则此边缘上p点处的梯度与q-p向量正交,在这两种情况下,p点处的梯度与q-p向量的点积为0。我们可以在p点周围找到很多组梯度以及相关的向量q-p,令其点集为0,然后可以通过求解方程组,方程组的解即为角点q的亚像素级精度的位置,也就是精确的角点位置。
OpenCV为

本文介绍了亚像素级角点检测的重要性,特别是在几何测量中的应用。通过OpenCV的cornerSubPix()函数,可以实现角点位置的亚像素级精度。该函数利用点积为0的原理寻找角点,通过求解方程组确定精确位置。在示例中,展示了如何使用goodFeaturesToTrack()检测角点,然后用cornerSubPix()进行亚像素级精确定位,最后输出并显示了检测结果。
最低0.47元/天 解锁文章
1675

被折叠的 条评论
为什么被折叠?



