码迷,mamicode.com
首页 > 其他好文 > 详细

OpenCv_cvFindCornerSubPix()查找亚像素级角点

时间:2015-03-06 19:07:53      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:opencv   亚像素角点   

如果我们进行图像处理的目的不是用于识别特征点而是进行稽核测量,则通常需要更高的精度,而cvGoodFeatureToTrack()只能提供简单的像素坐标值,但有时候我们会需要实际坐标值而不是证书坐标值,例如,我们想要确定图形中一个尖锐的峰值点的位置,但是峰值点的位置一般都不会位于一个像素点的正中心,,这时候就可以使用亚像素检测方法。

亚像素级角点的位置在社星际标定、跟踪并重建蛇形阿基的轨迹或者重建被跟踪目标的三维结构时就是一个基本的测量值。通过cvGoodFeaturesToTrack()函数可以证书角点坐标值,接下来就要讨论如何将求得的坐标值精确到亚像素级精度。方法就是向量的点积理论:uoge向量和其正交的向量的点积为0,角点我们之前有说过了,就是两个边缘的相交,可以满足这样的情况。如下图:

技术分享

当要求的点P位于一个区域的内部时,点p边缘是平缓的,它的梯度值为0,此时向量

void cvFindCornerSubPix( const CvArr* image, CvPoint2D32f* corners,
int count, CvSize win, 
CvSize zero_zone,
CvTermCriteria criteria );

image
输入图像.
corners
输入角点的初始坐标,也存储精确的输出坐标
count
角点数目
win
搜索窗口的一半尺寸。如果 win=(5,5) 那么使用 5*2+1 × 5*2+1 = 11 × 11 大小的搜索窗口
zero_zone
死区的一半尺寸,死区为不对搜索区的中央位置做求和运算的区域。它是用来避免自相关矩阵出现的某些可能的奇异性。当值为 (-1,-1) 表示没有死区。
criteria
求角点的迭代过程的终止条件。即角点位置的确定,要么迭代数大于某个设定值,或者是精确度达到某个设定值。 criteria 可以是最大迭代数目,或者是设定的精确度,也可以是它们的组合。
函数 cvFindCornerSubPix 通过迭代来发现具有子象素精度的角点位置,或如图所示的放射鞍点(radial saddle points)。

党赵到一个q的新位置时,算法会以这个新的角点作为初始点进行迭代知道满足用户定义的迭代终止条件。

OpenCv_cvFindCornerSubPix()查找亚像素级角点

标签:opencv   亚像素角点   

原文地址:http://blog.csdn.net/llp1992/article/details/44103187

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!