Lerning OpenCV 角点-------运动与跟踪基础

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-1 23:36   11   0

跟踪伊始我们可以选择多种局部特征进行跟踪,被选择的点或者特征应该是独一无二的,或者至少接近独一无二,并且在与另一张图像的其他点可以进行参数化的比较。在选择点时,如果一个点在两个正交的方向上都有明显的导数,则我们认为此点更倾向是独一无二的,所以,许多可跟踪的特征点都称为角点。从直观上讲,角点并不是边缘点,而是一类含有足够信息且能从当前帧和下一帧中都能提取出来的点。

最普遍使用的角点是由Harris提出的,定义的基础是图像灰度强度的二阶导数矩阵,可以其成为一幅新的“二阶导数图像”。最原始的定义是将二阶导数的矩阵的行列式与二阶导数矩阵的迹(带权重系数)相减,再将差值同预先给定的阈值进行比较;后来Shi和Tomasi发现,若两个特征值中较小的一个大雨最小阈值,则会得到强角点。

OpenCV函数采用Shi和Tomasi提出的方法,先计算二阶导数,再计算特征值,它返回满足易于跟踪的定义的一些列点,函数如下:

void cvGoodFeaturesToTrack(

const CvArr* image,

CvArr* eigImage,

CvArr* tempImage,

CvPoint2D32f* corners,

int* corner_count,

double quality_level,

double min_distance,

const CvArr* mask = NULL,

int block_size =3,

int use_harris = 0,

double k = 0.4

)

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP