• ORB特征点


    ORB(Oriented FAST and Rotated BRIEF),2011年提出,是一种快速特征点提取和描述的算法。ORB特征是将FAST特征点的检测方法与BRIEF特征描述子结合起来,并在它们原来的基础上做了改进与优化(ORB主要解决了BRIEF描述子不具备旋转不变性的问题)。据说,ORB算法的速度是sift的100倍,是surf的10倍。

    【函数】

    Ptr<ORB> create(int nfeatures=500, float scaleFactor=1.2f, int nlevels=8, int edgeThreshold=31, int firstLevel=0, int WTA_K=2, int scoreType=ORB::HARRIS_SCORE, int patchSize=31, int fastThreshold=20);

    【参数说明】原理链接

    nfeatures——最多提取的特征点的数量

    scaleFactor——金字塔图像之间的尺度参数

    nlevels——金字塔层数

    edgeThreshold——边缘阈值,这个值主要是根据后面的patchSize来定的,靠近边缘edgeThreshold以内的像素是不检测特征点的。

    firstLevel——第一层的索引值

    WTA_K——用于产生BIREF描述子的点对的个数,一般为2个,也可以设置为3个或4个,那么这时候描述子之间的距离计算就不能用汉明距离了,而是应该用一个变种。OpenCV中,如果设置WET_K = 2,则选用点对就只有2个点,匹配的时候距离参数选择NORM_HAMMING,像素点会被判为0或1标识不同区域。如果WET_K设置为3或4,则BIREF描述子会选择3个或4个点,那么后面匹配的时候应该选择的距离参数为NORM_HAMMING2,像素点会被标识为0、1、2或者0、1、2、3。

    scoreType——用于对特征点进行排序的算法,你可以选择HARRIS_SCORE,也可以选择FAST_SCORE,但是它也只是比前者快一点点而已。

    patchSize——用于计算BIREF描述子的特征点邻域大小

    fastThreshold——fast特征阈值

    【案例】

    #include <opencv2/opencv.hpp>
    #include <iostream>
    using namespace std;
    using namespace cv;
    
    int main()
    {
        Mat srcImage = imread("D:/sunflower.png");
            Mat srcGrayImage;
            if (srcImage.channels() == 3)
            {
                cvtColor(srcImage,srcGrayImage,CV_RGB2GRAY);
            }
            else
            {
                srcImage.copyTo(srcGrayImage);
            }
            vector<KeyPoint>detectKeyPoint;
            Mat keyPointImage1,keyPointImage2;
    
            Ptr<ORB> orb = ORB::create();
            orb->detect(srcGrayImage,detectKeyPoint);
            drawKeypoints(srcImage,detectKeyPoint,keyPointImage1,Scalar(0,0,255),DrawMatchesFlags::DRAW_RICH_KEYPOINTS);
            drawKeypoints(srcImage,detectKeyPoint,keyPointImage2,Scalar(0,0,255),DrawMatchesFlags::DEFAULT);
    
            imshow("src image",srcImage);
            imshow("keyPoint image1",keyPointImage1);
            imshow("keyPoint image2",keyPointImage2);
    
            waitKey(0);
            return 0;
    }
  • 相关阅读:
    团队项目启动及成员分工
    图书馆 管理系统--可行性报告
    KING小组
    什么是F#
    都删了,走了
    机器学习-决策树
    深度学习--说一说卷积和池化
    机器学习--逻辑回归_LR(内附细说极大似然估计,梯度下降法)
    Dlib安装(Mac版)
    动态语言、静态语言及动态语言的“鸭子类型“
  • 原文地址:https://www.cnblogs.com/xixixing/p/12469428.html
Copyright © 2020-2023  润新知