得到了杂乱无章的特征点后,要筛选出好的特征点,也就是good matches.


BruteForceMatcher

FlannBasedMatcher

两者的区别:http://yangshen998.iteye.com/blog/1311575

flann的含义:http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/features2d/feature_flann_matcher/feature_flann_matcher.html

在FLANN特征匹配的基础上,还可以进一步利用Homography映射找出已知物体。

具体来说就是利用findHomography函数利用匹配的关键点找出相应的变换,再利用perspectiveTransform函数映射点群。

Mat H = findHomography( obj, scene, CV_RANSAC );  // 获得了变换 Matrix

From: http://blog.sina.com.cn/s/blog_821b37de0102uzwb.html

OpenCV里有很多的feature,建立和使用方法也比较杂,现在整理一下避免以后用到。

1、detector

统一的定义方式:
Ptr  detector = FeatureDetector::create("STAR");
"FAST" – FastFeatureDetector
"STAR" – StarFeatureDetector
"SIFT" – SIFT (nonfree module)
"SURF" – SURF (nonfree module)
"ORB" – ORB
"BRISK" – BRISK
"MSER" – MSER
"GFTT" – GoodFeaturesToTrackDetector
"HARRIS" – GoodFeaturesToTrackDetector with Harris detector enabled
"Dense" – DenseFeatureDetector
"SimpleBlob" – SimpleBlobDetector
 
除了统一定义方式之外,有的可以用它自己的feature名字定义,比如
SurfFeatureDetector detector;
SiftFeatureDetector detector;
FastFeatureDetector detector;
STARFeatureDetector detector;
 
还有一种统一定义方式:
cv::Ptr  detector2 = cv::Algorithm::create("BRISK");
其中cv::可以去掉。
动态的特征点定义方式:
Ptr detector =
            new DynamicAdaptedFeatureDetector(
            AdjusterAdapter::create("SURF"), 100, 500, 5);
 

2、Descriptorextractor

统一定义方式:  Ptr extractor=DescriptorExtractor::create("SURF");
"SIFT" – SIFT
"SURF" – SURF
"BRIEF" – BriefDescriptorExtractor
"BRISK" – BRISK
"ORB" – ORB
"FREAK" – FREAK
 
个别定义方式:Ptr extractor=new SiftDescriptorExtractor;
Ptr extractor =new SurfDescriptorExtractor;
Ptr extractor =new BriefDescriptorExtractor;
其他定义方式:
 SurfDescriptorExtractor extractor;
SiftDescriptorExtractor extractor;
BriefDescriptorExtractor extractor;
其他的一些特征可以直接定义对象并用来detect和extract特征
比方说 BRISK  BRISKD(60,4,1.0f);
   BRISKD.create("BRISK");
   BRISKD.detect(object,kp_object);
   BRISKD.compute(object,kp_object,des_object);
 

3、matcher

统一定义方式 Ptr matcher = DescriptorMatcher::create("FlannBased");
BruteForce (it uses L2 )
BruteForce-L1
BruteForce-Hamming
BruteForce-Hamming(2)
FlannBased
 
其他定义方式:
BFMatcher matcher(type);
normType – One of NORM_L1, NORM_L2, NORM_HAMMING, NORM_HAMMING2. L1 and L2 norms are preferable choices for SIFT and SURF descriptors, NORM_HAMMING should be used with ORB, BRISK and BRIEF, NORM_HAMMING2 should be used with ORB when WTA_K==3 or 4 (see ORB::ORB constructor description).
FlannBasedMatcher matcher;
 

[OpenCV] Feature Matching的更多相关文章

  1. OpenCV stereo matching BM 算法

    一直找不到opencv stereo matching的根据和原理出处,下面这个文章贴了个链接,有时间看看: Basically OpenCV provides 2 methods to calcul ...

  2. Computer Vision_33_SIFT:Robust scale-invariant feature matching for remote sensing image registration——2009

    此部分是计算机视觉部分,主要侧重在底层特征提取,视频分析,跟踪,目标检测和识别方面等方面.对于自己不太熟悉的领域比如摄像机标定和立体视觉,仅仅列出上google上引用次数比较多的文献.有一些刚刚出版的 ...

  3. Computer Vision_33_SIFT:Remote Sensing Image Registration With Modified SIFT and Enhanced Feature Matching——2017

    此部分是计算机视觉部分,主要侧重在底层特征提取,视频分析,跟踪,目标检测和识别方面等方面.对于自己不太熟悉的领域比如摄像机标定和立体视觉,仅仅列出上google上引用次数比较多的文献.有一些刚刚出版的 ...

  4. McGan: Mean and Covariance Feature Matching GAN

    目录 概 主要内容 Mean Matching IPM prime dual Covariance Feature Matching IPM prime dual 算法 代码 Mroueh Y, Se ...

  5. Computer Vision: OpenCV, Feature Tracking, and Beyond--From <<Make Things See>> by Greg

    In the 1960s, the legendary Stanford artificial intelligence pioneer, John McCarthy, famously gave a ...

  6. OpenCV Template Matching Subpixel Accuracy

    OpenCV has function matchTemplate to easily do the template matching. But its accuracy can only reac ...

  7. OpenCV stereo matching 代码 matlab实现视差显示

    转载请注明出处:http://blog.csdn.net/wangyaninglm/article/details/44151213, 来自:shiter编写程序的艺术 基础知识 计算机视觉是一门研究 ...

  8. [OpenCV] Feature Extraction

    特征检测 特征描述 特征匹配 特征跟踪 “不读白不读,读了还想读” 的一本基础书 低层次特征提取 阈值方法 1. 边缘检测 一阶检测算子 二阶检测算子 相位一致性(频域) 2. 角点检测(局部特征提取 ...

  9. [Python] python vs cplusplus

    一些学习过程中的总结的两种语言的小对比,帮助理解OO programming. Continue... 字典 序列 --> 字典 Python: def get_counts(sequence) ...

随机推荐

  1. lamper技能树

  2. 转:主流数据恢复软件——EasyRecovery/Ashampoo Undeleter/Wise Data Recovery/Recuva/Undelete 360

    转自:Baidu 空间 2012-10-05 13:57 主流数据恢复软件——EasyRecovery/Ashampoo Undeleter/Wise Data Recovery/Recuva/Und ...

  3. java文件同步性能测试

    2003同步速度

  4. Oracle中的索引详解

    Oracle中的索引概述 索引与表一样,也属于段(segment)的一种.里面存放了用户的数据,跟表一样需要占用磁盘空间.索引是一种允许直接访问数据表中某一数据行的树型结构,为了提高查询效率而引入,是 ...

  5. 工作组环境下管理windows.

    此处指的是windows7 1.防火墙设置 开启wmi,remote admin,防火墙远程管理 可以使用命令行 netsh advfirewall export "C:\temp\WFco ...

  6. WPF与winform与silverlight的区别

    收到了一封学生的邮件: =========================== 金老师您好: 最近在学C#.NET,基本语法学习的差不多了,接下来准备学习图形界面设计部分.但是我目前对于.NET的Wi ...

  7. liunx 服务内存消耗100% 怎么处理

      一.排查问题 查看内存使用 free 查看进程使用存储状况.看是不是业务进程在消耗存储,如果是就要优化业务代码了 使用top 命令 如果不是怎么办 二.处理办法 1.把没有用到的消耗内存的服务进程 ...

  8. Goldengate进程的拆分与合并

    Goldengate的拆分与合并分类: ORACLE GoldenGate 2013-10-10 15:22 721人阅读 评论(0) 收藏 举报在使用Goldengate作为复制解决方案时,随着负载 ...

  9. Apache shiro之权限校验流程

    从张开涛blog学习后整理:http://jinnianshilongnian.iteye.com/blog/2018398 图片原图比较大,建议将图片在新的选项卡打开后100%大小浏览 在权限校验中 ...

  10. android 14.04 64位 adb cannot run program adb

    按照网上的说法: Failed to get the adb version: Cannot run program "adb": error=2, 没有那个文件或目录 64位系统 ...