• Opencv的KeyPoint和DMatch数据结构


    /* 
     * 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:该点直径的大小

  • 相关阅读:
    自己定义九宫格手势解锁
    2015程序猴的总结:不破楼兰终不还!
    Codeforces Round #402 (Div. 2)
    [整体二分]【学习笔记】【更新中】
    BZOJ 3110: [Zjoi2013]K大数查询 [整体二分]
    BZOJ 2738: 矩阵乘法 [整体二分]
    BZOJ 2527: [Poi2011]Meteors [整体二分]
    [偏序关系与CDQ分治]【学习笔记】
    BZOJ 2244: [SDOI2011]拦截导弹 [CDQ分治 树状数组]
    COGS 2479. [HZOI 2016]偏序 [CDQ分治套CDQ分治 四维偏序]
  • 原文地址:https://www.cnblogs.com/TransTown/p/7396996.html
Copyright © 2020-2023  润新知