opencv::SURF特征

 

SURF特征基本介绍 SURF(Speeded Up Robust Features)特征关键特性: 
-特征检测 
-尺度空间 
-选择不变性 
-特征向量 

工作原理 
1. 选择图像中POI(Points of Interest) Hessian Matrix 
2. 在不同的尺度空间发现关键点,非最大信号压制 
3. 发现特征点方法、旋转不变性要求 
4. 生成特征向量

SURF特征提取代码演示
-upright          // 0- 表示计算选择不变性,1表示不计算,速度 更快 
-HessianThreshold // 默认值在300~500之间 
-Octaves          // 4表示在四个尺度空间 
-OctaveLayers     // 表示每个尺度的层数 

 

#include <opencv2/opencv.hpp>
#include <opencv2/xfeatures2d.hpp>
#include <iostream>

using namespace cv;
using namespace cv::xfeatures2d;
using namespace std;

int main(int argc, char** argv) {
    Mat src = imread("D:/vcprojects/images/test.png", IMREAD_GRAYSCALE);
    if (src.empty()) {
        printf("could not load image...\n");
        return -1;
    }
    namedWindow("input image", CV_WINDOW_AUTOSIZE);
    imshow("input image", src);
    
    //SURF特征检测
    int minHessian = 100;
    Ptr<SURF> detector = SURF::create(minHessian);
    vector<KeyPoint> keypoints;
    detector->detect(src, keypoints, Mat());
    //绘制关键点
    Mat keypoint_img;
    drawKeypoints(src, keypoints, keypoint_img, Scalar::all(-1), DrawMatchesFlags::DEFAULT);
    imshow("KeyPoints Image", keypoint_img);

    waitKey(0);
    return 0;
}

 

posted @ 2019-10-09 17:31  osbreak  阅读(810)  评论(0编辑  收藏  举报