【转】Opencv的KeyPoint和DMatch数据结构

转自博客园https://www.cnblogs.com/TransTown/p/7396996.html

/*

 * Struct for matching: query descriptor index, train descriptor index, train image index and distance between descriptors.

 */ 

 /*

  * DMatch主要用来储存匹配信息的结构体,query是要匹配的描述子,train是被匹配的描述子,在Opencv中进行匹配时

  * void DescriptorMatcher::match( const Mat& queryDescriptors, const Mat& trainDescriptors, vector<DMatch>& matches, const Mat& mask ) const

  * match函数的参数中位置在前面的为query descriptor,后面的是 train descriptor

  * 例如:query descriptor的数目为20,train descriptor数目为30,则DescriptorMatcher::match后的vector<DMatch>的size为20

  * 若反过来,则vector<DMatch>的size为30

  

 */ 

struct CV_EXPORTS_W_SIMPLE DMatch 

    //默认构造函数,FLT_MAX是无穷大 

    //#define FLT_MAX         3.402823466e+38F        /* max value */ 

    CV_WRAP DMatch() : queryIdx(-1), trainIdx(-1), imgIdx(-1), distance(FLT_MAX) {} 

    //DMatch构造函数 

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

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

    //DMatch构造函数 

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

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

   

    //queryIdx为query描述子的索引,match函数中前面的那个描述子 

    CV_PROP_RW int queryIdx; // query descriptor index 

    //trainIdx为train描述子的索引,match函数中后面的那个描述子 

    CV_PROP_RW int trainIdx; // train descriptor index 

    //imgIdx为进行匹配图像的索引 

    //例如已知一幅图像的sift描述子,与其他十幅图像的描述子进行匹配,找最相似的图像,则imgIdx此时就有用了。 

    CV_PROP_RW int imgIdx;   // train image index 

    //distance为两个描述子之间的距离 

    CV_PROP_RW float distance; 

    //DMatch比较运算符重载,比较的是DMatch中的distance,小于为true,否则为false 

    // less is better 

    bool operator<( const DMatch &m ) const 

    

        return distance < m.distance; 

    

}; 

  


KeyPoint这数据结构中有如下数据结构(http://docs.opencv.org/3.3.0/d2/d29/classcv_1_1KeyPoint.html):

angle:角度,表示关键点的方向,通过Lowe大神的论文可以知道,为了保证方向不变形,SIFT算法通过对关键点周围邻域进行梯度运算,求得该点方向。-1为初值。

class_id:当要对图片进行分类时,我们可以用class_id对每个特征点进行区分,未设定时为-1,需要靠自己设定

octave:代表是从金字塔哪一层提取的得到的数据。

pt:关键点点的坐标

response:响应程度,代表该点强壮大小—response代表着该关键点how good,更确切的说,是该点角点的程度。

size:该点直径的大小

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值