1 致谢

感谢网友大奥特曼打小怪兽的帮助

原文链接如下:

https://www.cnblogs.com/zyly/p/9646201.html

1 前言

特征点方法是计算机视觉传统目标检测方法中很常用的一种算法思想,例如:SIFT,就是一种十分典型的特征点方法。

2 常用函数介绍

cv2.detectAndCompute(image, mask[, descriptors[, useProvidedKeypoints]]) —— 计算特征点

用来计算特征点的函数。

从image数据中计算特征点信息。

函数最常见的调用形式是:

sift.detectAndCompute(img, None)

其中img表示需要进行处理的图片,None表示不使用模板(即:不使用参数mask)。

那么“None”(mask)具体是什么意思呢?

我们可以看看其完整的函数声明:

detectAndCompute(image, mask[, descriptors[, useProvidedKeypoints]]) -> keypoints, descriptors

参数说明:

  • mask:Mask specifying where to look for keypoints (optional). It must be a 8-bit integer matrix with non-zero values in the region of interest. (来自OpenCV的官方说明文档)

∴“None”的意思就是不使用模板。

cv2.BFMatcher_create([, normType[, crossCheck]]) —— 暴力匹配函数

暴力匹配函数,用来创建一个暴力匹配器。

暴力匹配即两两匹配。该算法不涉及优化,假设从图片A中提取了m个特征描述符,从B图片提取了n个特征描述符。对于A中m个特征描述符的任意一个都需要和B中的n个特征描述符进行比较。每次比较都会给出一个距离值,然后将得到的距离进行排序,取距离最近的一个作为匹配点。这种方法简单粗暴,其结果也是显而易见的,可能会存在大量的错误匹配,这就需要使用一些机制来过滤掉错误的匹配。比如我们对匹配点按照距离来排序,并指定一个距离阈值,过滤掉一些匹配距离较远的点。

OpenCV专门提供了一个BFMatcher对象来实现匹配,并且针对匹配误差做了一些优化,即:

BFMatcher_create([, normType[, crossCheck]]) -> retval

参数说明:

  • normType:它是用来指定要使用的距离测试类型。默认值为cv2.Norm_L2。这很适合SIFT和SURF等(c2.NORM_L1也可)。对于使用二进制描述符的ORB、BRIEF和BRISK算法等,要使用cv2.NORM_HAMMING,这样就会返回两个测试对象之间的汉明距离。如果ORB算法的参数设置为WTA_K==3或4,normType就应该设置成cv2.NORM_HAMMING2。
  • crossCheck:针对暴力匹配,可以使用交叉匹配的方法来过滤错误的匹配。默认值为False。如果设置为True,匹配条件就会更加严格,只有到A中的第ii个特征点与B中的第j个特征点距离最近,并且B中的第jj个特征点到A中的第i个特征点也是最近时才会返回最佳匹配(i,j)(i,j),即这两个特征点要互相匹配才行。

计算机视觉CV中特征点方法相关函数的学习笔记~相关推荐

  1. 计算机视觉CV中特征点提取SURF算法的学习笔记

    1 致谢 感谢网友tongle.Wang的帮助, 链接如下: https://blog.csdn.net/ecnu18918079120/article/details/78195792 2 SURF ...

  2. 计算机视觉CV中特征点提取SIFT算法的学习笔记

    1 SIFT算法介绍 SIFT算法,即 Scale-Invariant Feature Transform,尺度无关的特征变换算法. 2 SIFT算法的主要步骤 2.1 生成特征点 2.1.1生成尺度 ...

  3. Python中字符串使用方法总结(学习笔记)

    文章目录 1.字符串的连接 2.计算字符串的长度 3.截取字符串 4.字符串分割 5.字符串检索 1.count()方法 2.find()方法 3.index()方法 4.startswith()方法 ...

  4. 高维数据中特征筛选方法的思考总结——多变量分析筛选法

    前言:之前的文章(高维数据中特征筛选方法的思考总结--单变量分析筛选法)中,对单变量分析筛选变量进行了初步考量,本文将进一步总结多变量分析筛选法.由于本文多处摘录网上的博客,只是进行了归纳整理,因此笔 ...

  5. 高维数据中特征筛选方法的思考总结——单变量分析筛选法

    基因组学.转录组学.蛋白组学及代谢组学等生信问题(高通量数据)中,面临的第一步往往就是降维(或者说筛选特征).降维方法分为两大类:单变量分析降维法.多变量分析降维法.单变量降维常常使用FC值或者P值, ...

  6. 论文《基于深度学习的表面缺陷检测方法综述》学习笔记

    <基于深度学习的表面缺陷检测方法综述>学习笔记 前段时间完成了<基于图像的零部件缺陷识别系统设计>毕业课程设计,过程中收获了很多,老师也分享了很多论文,在此记录一下学习的收获. ...

  7. 6.方法(go语言学习笔记)

    6.方法(go语言学习笔记) 目录 定义 匿名字段 方法集 表达式 1. 定义 方法是与对象实例绑定的特殊函数. 方法是面向对象编程的基本概念,用于维护和展示对象的自身状态.对象是内敛的,每个实例对象 ...

  8. Java中如何创建自定义的注解学习笔记(MD版)

    概要 Java中如何创建自定义的注解学习笔记(MD版). 博客 博客地址:IT老兵驿站. 前言 记得这篇笔记还是在泉州的龙玲酒店记录的,是一个周六的晚上,坐飞机从上海到泉州,从笔记中能勾起一些旅游的回 ...

  9. Asp.Net 中Report Service (RDLC)动态绑定数据-学习笔记

    Asp.Net 中Report Service (RDLC)动态绑定数据-学习笔记 1)托拽ReportViewer控件到aspx页面,此时,系统会自动添加相关引用,修改Web.config设置: 2 ...

最新文章

  1. 【边缘计算】边缘计算元年一文看懂云边协同!九大场景带来新一轮信息革命...
  2. yii框架相关知识(转)
  3. python所有插件框架_Python中实现简单的插件框架
  4. 硒品牌谋定功能性农业-农业大健康·万祥军:践行健康中国
  5. html3D效果可以在手机打开吗,手机怎么打开HTML
  6. React Native 轻松集成分享功能( iOS 篇)
  7. (转)漫画:什么是分布式事务?
  8. 春春幼儿园堆积木大赛_春云边车
  9. 从JDK 8到JDK 17,GC都有哪些进步?
  10. 开源linux远程桌面,10分钟配置自己的vnc [linux远程桌面]
  11. 91. php 命名空间(1)
  12. pycharm英文版转成中文版
  13. 关于web中的字体, .woff, .eot, .svg
  14. Map集合遍历的四种方式
  15. 对外汉语语料库有哪些_国内外有哪些比较好的语料库?(corpora)
  16. Python简单电影推荐算法原理实现
  17. 陶哲轩实分析 5.2 节习题试解
  18. 【动手学MVG】ICP算法原理和代码实现
  19. Linux基础知识详解
  20. python基础logging 压缩、根据指定文件夹并进行删除

热门文章

  1. 使用工具(Database Configuration Assistant)创建Oracle数据库
  2. Centos下安装JDK环境配置
  3. mybatis plus 入门
  4. Linux调整时区和同步时间
  5. 7 练习1 -基础练习
  6. python(条件语句和基本数据类型)
  7. java内存模型—先行发生原则
  8. week7 read
  9. javascript设计模式系列
  10. oracle修改用户的登录密码