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

keypoint && DMatch

时间:2015-06-22 13:40:16      阅读:303      评论:0      收藏:0      [点我收藏+]

标签:

下面单独介绍KEYPOINT 与DMatch的内在联系

 1     std::vector<cv::Point2f> points1, points2;
 2 
 3     for (std::vector<cv::DMatch>::const_iterator it= matches.begin();
 4              it!= matches.end(); ++it) {
 5 
 6              // Get the position of left keypoints
 7              float x= keypoints1[it->queryIdx].pt.x;
 8              float y= keypoints1[it->queryIdx].pt.y;
 9              points1.push_back(cv::Point2f(x,y));
10              cv::circle(image1,cv::Point(x,y),3,cv::Scalar(255,255,255),3);
11              // Get the position of right keypoints
12              x= keypoints2[it->trainIdx].pt.x;
13              y= keypoints2[it->trainIdx].pt.y;
14              cv::circle(image2,cv::Point(x,y),3,cv::Scalar(255,255,255),3);
15              points2.push_back(cv::Point2f(x,y));
16     }

class KeyPoint

{          

             Point2f  pt;  //坐标  常用的就是这个了

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

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

             float  response;

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

             int  class_id; //用于聚类的id

}

  1. 存放匹配结果的结构:

    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) {}

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

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

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

    /*********************************         

    int queryIdx; // query descriptor index
    int trainIdx; // train descriptor index
    int imgIdx; // train image index

    ***********************************/

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

              bool operator  < (const DMatch &m) const;

    };

  2. 3

    图片中特征点欧式距离的计算公式:

    0ρ = √( (x1-x2)2+(y1-y2)2 ) |x| = √( x2 + y2 )

keypoint && DMatch

标签:

原文地址:http://www.cnblogs.com/haoxing990/p/4593163.html

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