OpenCV特征匹配

1、OpenCV Brute-Force匹配器

Brute-Force匹配器的匹配方法非常简单,输入两张图像所分别对应的特征(特征点坐标与特征点域对应的描述子),循环遍历两幅图像中的特征,计算第一幅图像与第二幅图像之间每个特征点之间的距离,然后返回距离最近的特征点对或者返回距离最近的k个特征点对。OpenCV中的Brute-Force特征匹配一般用cv2.BFMatcher类实现,类构建方法定义如下:

cv2.BFMatcher(normType, crossCheck)

normType参数常见的可选的类型与所适应的主要特征检测与描述算法如下:

# SIFT、SURF等
normType = cv2.NORM_L2
normType = cv2.NORM_L1

# BRISK、ORB等
normType = cv2.NORM_HAMMING

crossCheck参数为交叉检验参数,约束输出结果的默认的类型为False。若记输出的一对特征点对为(p1,p2),(p1,p2)所对应的特征对为(feature1,feature2),当参数为False时,匹配对(p1,p2)所对应的特征只需要满足下述的条件①;当默认类型调整为True时,则匹配输出的匹配对会更加严格,匹配对(p1,p2)所对应的特征则需要同时满足下述的条件①与条件②。

①第一幅图像中的特征feature1与第二幅图像中的所有的特征比较后与feature2距离最近;

②第二幅图像中的特征feature2与第一幅图像中的所有的特征比较后与feature1距离最近。

下图将两幅图像之间的每个特征点之间的匹配分数做下可视化,横竖分别表示第一幅图与第二幅图,颜色越红则表示距离越近。则条件①表示只需满足一行中颜色最红即可,如匹配对(27,8);而条件①②则表示行列中均满足颜色最红,如匹配对(16,36)。

2、cv2.BFMatcher的两种比对方法

2.1、match方法

match方法输出结果为距离最近的特征点对,输出结果中第一幅图像中每个特征点在第二幅中只有唯一的一个匹配特征点结果。

2.2、knnMatch方法

knnMatch方法输出结果为距离最近的1~k个特征点对,常见的设置为k=2,输出结果中第一幅图像中每个特征点在第二幅图像中可以有1~k个匹配结果。输出的k个匹配对需要进一步处理,从而确定一个特征点对是否是更加可靠的、更加具有特征性的,一般处理方式为比较k个特征点对之间的距离,若距离相近则说明第一幅图像中的对应特征点在第二幅图像中有多个相近的特征点,则说明该对特征点不太能确定这多个相近的特征点中那个才是正确匹配,说明该特征点对不可靠,反之则说明该特征点对匹配结果为更加可靠,可以暂定k对中最距离最近的匹配对为正确匹配。

具体的匹配可视化示例如下图所示:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/704565.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

49.Python-web框架-Django解决多语言redirect时把post改为get的问题

目录 1.背景 2.思路 3.寻找 Find and Replace 4.再次运行程序,POST来了 5.小结 1.背景 昨天在练习一个Django功能时,把form的method设置为POST,但是实际提交时,一直是GET方法。最后发现这是与多语言相关,django前面…

Linux - 复盘一次句柄数引发的故障

文章目录 Pre(内核、用户、进程)句柄数设置问题 shell修复 Pre Linux - 深入理解/proc虚拟文件系统:从基础到高级 (内核、用户、进程)句柄数设置 在Linux系统中,进程打开的最大句柄数可以通过多种方式配置…

计算机组成原理 期末复习笔记整理(上)(个人复习笔记/侵删/有不足之处欢迎斧正)

零、计算机的发展 冯.诺依曼计算机的特点: 1.计算机由五大部件组成 2.指令和数据以同等地位存于存储器,可按地址寻访 3.指令和数据用二进制表示 4.指令由操作码和地址码组成 5.存储程序(首次提出存储结构) 6.以运算器为中心(现代…

大众点评全国美食POI采集780万家-2024年5月底

大众点评全国美食POI采集780万家-2024年5月底 店铺POI点位示例: 店铺id H8kTSRz3kLUQ2WtU 店铺名称 幸福西饼生日蛋糕(布心店) 十分制服务评分 8.2 十分制环境评分 8.4 十分制划算评分 8.3 人均价格 75 评价数量 119033 店铺地址 金稻田路1068号边防布心住…

Python文件操作与IO:从基础到高级技巧的完整指南

目录 一、引言 二、基础文件操作 打开文件 写入文件 读取和写入二进制文件 四、文件路径处理 五、文件操作的高级技巧 上下文管理器(with 语句) 文件锁 文件编码 使用内置模块处理文件 文件压缩与解压缩 六、案例:处理日志文件 …

支付卡产业最新发布PCI DSS v4.0.1

自2022年3月PCI DSS v4.0发布以来,受到全球支付产业高度关注,为了解决来自所有产业相关者的反馈和问题,PCI安全标准委员会(PCI SSC)发布了该标准的修订版PCI DSS v4.0.1。其中包括对格式和印刷错误的更正,也…

顶顶通呼叫中心中间件-限制最大通话时间(mod_cti基于FreeSWITCH)

顶顶通呼叫中心中间件-限制最大通话时间(mod_cti基于FreeSWITCH) 一、最大通话时间 1、配置拨号方案 1、点击拨号方案 ->2、在框中输入通话最大时长->3、点击添加->4、根据图中配置->5、勾选continue。修改拨号方案需要等待一分钟即可生效 action"sched…

基于Pytorch实现AI写藏头诗

网上你找了一圈发现开源的代码不是付费订阅就是代码有问题,基于Pytorch实现AI写藏头诗看我这篇就够了。 用到的工具:华为云ModelArts平台的notebook/Pycharm/Vscode都行。 镜像:pytorch1.8-cuda10.2-cudnn7-ubuntu18.04,有GPU优先使用GPU资源。 实验背景 在短时测试使用场…

变电站SF6-O2在线监控报警系统在电力行业的创新应用

一、六氟化硫是什么? 六氟化硫又称为SF6,这种气体在常温常压下为无色无臭无毒的气体。不燃烧。对热稳定,没有腐蚀性,可以作为通用材料。电绝缘性能和消弧性能好,绝缘性能为空气的2~3倍,而且气体…

外网如何访问公司内网服务器?

在现代商业环境中,随着信息技术的快速发展,越来越多的公司有需求让远程用户在外网环境下访问公司内网服务器。这在很大程度上提高了远程办公的灵活性和效率。由于安全和网络限制等问题,实现这一目标并不是一件容易的事情。 在处理这个问题时…

【Qt 学习笔记】Qt窗口 | 对话框 | 创建自定义对话框

博客主页:Duck Bro 博客主页系列专栏:Qt 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ Qt窗口 | 对话框 | 创建自定义对话框 文章编号:Qt 学习笔记…

[人工智能]啥是大模型?一篇文章看懂火遍全网的“AI大模型”

美国商业科技界正在升起两位“新神”。 一位是“钢铁侠”埃隆马斯克,“带领人类走向火星”; 一位是“奥特曼”山姆阿尔特曼,“带领AI走向人类”。 大多数人对马斯克很熟悉了,特斯拉汽车在中国道路上疾驰,朋友圈也经…

B端系统的颜值问题:成也框架,败也框架!

B端UI框架和前端框架的出现,让系统的搭建就像堆积木一样,十分的容易了。这也一下子把程序员的设计和审美水平拔高到了UI框架能够达到的高度。伴随而来的则是系统的堆砌、同质化、糟糕的体验,以及各种违和的组件被生搬硬套的绑定在一块&#x…

LabVIEW故障预测

在LabVIEW故障预测中,振动信号特征提取的关键技术主要包括以下几个方面: 时域特征提取:时域特征是直接从振动信号的时间序列中提取的特征。常见的时域特征包括振动信号的均值、方差、峰值、峰-峰值、均方根、脉冲指数等。这些特征能够反映振动…

电信数字员工“上岗”!重庆电信携手实在智能加快“数智化”转型

中国电信股份有限公司重庆分公司(以下简称重庆电信)与实在智能已达成合作,由实在智能为其建设RPA数字员工,首批已覆盖数十个业务场景,大幅提升相应业务自动化和智能化水平。深度适配电信业务运转的RPA数字员工&#xf…

JVM原理之运行时数据区域

Java运行时数据区(Runtime Data Area)是Java虚拟机(JVM)在运行Java程序时内部维护的一系列数据区域。这些区域共同协作,确保Java程序能够高效、稳定地运行。本文将详细介绍Java运行时数据区的结构和作用。 java虚拟机运行时数据区域 根据《Java虚拟机规范》规定,jvm内存…

【Java笔记】第11章:内部类

前言1. 讲解结语 上期回顾:【Java笔记】第10章:接口 个人主页:C_GUIQU 归属专栏:【Java学习】 前言 各位小伙伴大家好!上期小编给大家讲解了Java中的接口,接下来讲讲Java中的内部类! 1. 讲解 Java中的内…

通用大模型VS垂直大模型,相辅相成!

1.通用大模型: 如OpenAI的GPT系列、Google的PaLM等,因其广泛的训练数据来源和强大的泛化能力,展现出在多种任务和场景中的应用潜力。它们能够处理从文本生成、代码编写到语言翻译等多种复杂任务,适应性强,减少了针对单…

一文读懂Web Codecs API:浏览器背后的媒体魔术师

引言 ​在早期的Web 网页中,视频播放通常要依靠 Flash 和 Silverlight 等插件来完成,浏览器是不支持直接播放视频的。 随着网络技术的发展,视频这种媒体方式的需求变得普遍,HTML5中,出现了一个新的元素Video&#xf…

可积分兑换收银的会员卡小程序源码系统 带完整的安装代码包+搭建部署教程

系统概述 本会员卡小程序源码系统基于主流的前后端分离架构设计,前端采用Vue.js框架开发,后端服务则通过Node.js实现,数据库选用MySQL存储会员数据和交易记录。这样的技术栈确保了系统的高性能、易维护性和良好的扩展性。 代码示例 系统特色…