Learning OpenCV亚像素级角点检测方法——运动与跟踪基础

在图像处理中,亚像素级角点检测对于几何测量至关重要,提供了比整数坐标更高的精度。cvFindCornerSubPix是OpenCV中实现亚像素角点检测的函数,用于提高如摄像机标定、跟踪和重建任务中的测量精度。该函数通过迭代方法,以初始角点位置为中心,调整到最佳亚像素位置。常用在三维重建、摄像机标定等领域,涉及的理论包括D.Chen和G.Zhang的研究以及L.Lucchese和S.K.Mitra的论文。

               如果我们进行图像处理的目的不是提取用于识别的特征点而是进行几何测量,则通常需要更高的精度,而cvGoodFeaturesToTrack()只能提供简单的像素的坐标值,也就是说我们有时候需要实数坐标值而不是整数坐标值,所以要进行亚像素级角点的检测。亚像素检测方法就是一些有关峰值点位置的计算技巧,常见领域:三维重建、摄像机标定、图像拼接以及在卫星图像中查找特定信号,如一栋建筑的精确位置。亚像素级角点的位置在摄像机标定、跟踪并重建摄像机的轨迹或者重建被跟踪目标的三维结构时,是一个基本的测量值。理论参考文章:

1. D.Chen and G.Zhang,"A new sub-pixel detector for x-corners in camera calibration targets," WSCG Short Papers(2005):97-100.

2. L.Lucchese and S.K.Mitra,"Using saddle points for subpixel feature detection in camera calibration targets,"Proceedings of the 2002 Asia Pacific Conference on Circuits and Systems(pp.191-195),December 2000.

OpenCV函数:

void cvFindCornerSubPix(

       const CvArr*      image,

       CvPoint2D32f*   corners,

       int                       count,

       CvSize                win,

        CvSize               zero_zone,

       CvTermCriteria   criteria

);

   iamge 是8位单通道的灰度图像,是出入图像;

   corners 整数值的像素位置,例如由cvGoodFeatures()得到的位置坐标,corners设定了角点的初始位置。

count 为需要计算的角点数目

win 指定了等式产生的窗口的尺寸,搜索窗口的中心是整个坐标值的角点并从中心点在每个方向上扩展win指定的像素

zero_zone定义了一个禁区,这个区域在方程组以及自相关矩阵中不被考虑,如果不需要这样一个禁区,则zero_zone应该设置为cvSize(-1,-1);

当找到一个q新位置时,算法会以这个新的角点作为初始点进行迭代知道满足用户定义的迭代终止条件。迭代过程的终止条件可以是最大迭代次数CV_TERMCRIT_ITER类型,或者是设定的精度CV_TERMCRIT_ITER类型,或者是两者的组合。

 

 


       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值