分享

OpenCV之特征检测器(Feature Detector),描述子提取器(Descriptor Extractor)和描述子匹配器(Descriptor Matcher)

 mscdj 2017-12-02

1.特征检测子

    -Harris

  1. cv::cornerHarris(image,strength,3,3,0.01);  

    -Fast

  1. cv::Ptr<cv::FastFeatureDetector> fast = cv::FastFeatureDetector::create();  
  1. //或  
  1. cv::FAST(InputArray image, std::vector<KeyPoint> &keypoints, int threshold)  
  1. //或  
  1. cv::FAST(InputArray image, std::vector<KeyPoint> &keypoints, int threshold, bool nonmaxSuppression, int type)  

    -SIFT

  1. cv::Ptr<cv::xfeatures2d::SIFT> sift = cv::xfeatures2d::SIFT::create();  
  1. //或  
  1. <pre name="code" class="cpp">cv::Ptr<cv::xfeatures2d::SiftFeatureDetector> sift = cv::xfeatures2d::SiftFeatureDetector::create();  


    -SURF

  1. cv::Ptr<cv::xfeatures2d::SURF> surf = cv::xfeatures2d::SURF::create();  
  1. //或  
  1. cv::Ptr<cv::xfeatures2d::SurfFeatureDetector> surf = cv::xfeatures2d::SurfFeatureDetector::create();  

    -ORB

  1. cv::Ptr<cv::ORB> orb = cv::ORB::create();  

    -MSER

  1. cv::Ptr<cv::MSER> mser = cv::MSER::create();  

    -GFTT

  1. cv::Ptr<cv::GFTTDetector> gftt = cv::GFTTDetector::create();  

或者直接用goodFeaturesToTrack function;

    -AGAST

  1. cv::AGAST(InputArray image, std::vector<KeyPoint> &keypoints, int threshold)  
  2. //或  
  3. cv::AGAST(InputArray image, std::vector<KeyPoint> &keypoints, int threshold, bool nonmaxSuppression, int type)  
  4. //或  
  5. cv::Ptr<cv::AgastFeatureDetector> agast = cv::AgastFeatureDetector::create();  

    -BRISK

  1. cv::Ptr<cv::BRISK> brisk = cv::BRISK::create();  


    -SimpleBlob

  1. cv::Ptr<cv::SimpleBlobDetector> blob = cv::SimpleBlobDetector::create();  

    -KAZE

  1. cv::Ptr<cv::KAZE> kaze = cv::KAZE::create();  

    -AKAZE

  1. cv::Ptr<cv::AKAZE> akaze = cv::AKAZE::create();  

2.描述子提取器

    -SIFT

  1. <span style="font-weight: normal;"><span style="font-size:12px;">cv::Ptr<cv::xfeatures2d::SIFT> sift = cv::xfeatures2d::SIFT::create();  
  2. //或  
  3. cv::Ptr<cv::xfeatures2d::SiftDescriptorExtractor> sift = cv::xfeatures2d::SiftDescriptorExtractor::create();</span></span>  

    -SURF

  1. <span style="font-weight: normal;"><span style="font-size:12px;">cv::Ptr<cv::xfeatures2d::SURF> surf = cv::xfeatures2d::SURF::create();  
  2. //或  
  3. cv::Ptr<cv::xfeatures2d::SurfDescriptorExtractor> surf = cv::xfeatures2d::SurfDescriptorExtractor::create();</span></span>  

    -BRIEF

Opencv中没有单独将BRIEF用来提取描述子,因为它是被用于ORB中的;

    -BRISK

  1. <span style="font-weight: normal;"><span style="font-size:12px;">cv::Ptr<cv::BRISK> brisk = cv::BRISK::create();</span></span>  

    -ORB

  1. <span style="font-size:12px;font-weight: normal;">cv::Ptr<cv::ORB> orb = cv::ORB::create();</span>  
ORB是用fast特征; 

   -KAZE

  1. <span style="font-size:12px;font-weight: normal;">cv::Ptr<cv::KAZE> kaze = cv::KAZE::create();</span>  

注:KAZE描述子只能使用KAZE或AKAZE特征点;

    -AKAZE

  1. <span style="font-size:12px;font-weight: normal;">cv::Ptr<cv::AKAZE> akaze = cv::AKAZE::create();</span>  

同样,AKAZE描述子也只能使用KAZE或AKAZE特征点;

3.描述子匹配器

   -BruteForce-BFMatcher

  1. cv::Ptr<cv::BFMatcher> bf = cv::BFMatcher::create("BruteForce");  

其中,匹配类型还可以是“BruteForce-L1”,“BruteForce-L2”,“BruteForce-Hamming”;

   -FlannBased-FlannBasedMatcher

  1. cv::Ptr<cv::FlannBasedMatcher> flann = cv::FlannBasedMatcher::create("FlannBased");  



    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约