您的位置:首页 > 运维架构

Opencv中特征点提取和匹配介绍

2017-03-05 15:35 253 查看
特征点类:

class KeyPoint

{            Point2f  pt;  //坐标

             float  size; //特征点邻域直径

             float  angle; //特征点的方向,值为[零,三百六十),负值表示不使用

             float  response;

             int  octave; //特征点所在的图像金字塔的组

             int  class_id; //用于聚类的id

}

存放匹配结果的结构:

struct DMatch

{              //三个构造函数

          DMatch():

queryIdx(-1),trainIdx(-1),imgIdx(-1),distance(std::numeric_limits<float>::max()) {}

          DMatch(int  _queryIdx, int  _trainIdx, float  _distance ) :

queryIdx( _queryIdx),trainIdx( _trainIdx), imgIdx(-1),distance( _distance) {}

          DMatch(int  _queryIdx, int  _trainIdx, int  _imgIdx, float  _distance ) :  queryIdx(_queryIdx), trainIdx( _trainIdx), imgIdx( _imgIdx),distance( _distance) {}

          int   queryIdx;  //此匹配对应的查询图像的特征描述子索引

          int   trainIdx;   //此匹配对应的训练(模板)图像的特征描述子索引

          int   imgIdx;    //训练图像的索引(若有多个)

          float  distance;  //两个特征向量之间的欧氏距离,越小表明匹配度越高。

          bool   operator < (const DMatch &m) const;

};


trainIdx    是匹配之后所对应关键点的序号,第一个载入图片的匹配关键点序号

queryIdx  是匹配之后所对应关键点的序号,第二个载入图片的匹配关键点序号

根据序列号即可获得相应图片关键点的坐标、所属金字塔组等信息。

在得到匹配点对的坐标之后,即可进行相应的拼接、目标检测等操作。SURF、SIFT特征提取和FLANN、BF特征匹配以及根据欧式距离剔除误匹配代码下载地址:http://download.csdn.net/detail/u011028345/9770964
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: