Opencv实验合集——实验六:模板匹配

news2024/9/29 17:29:37

1.概念

模板匹配旨在在图像中找到与给定模板最相似的部分。其核心思想是通过滑动模板,计算每个位置与模板的相似性,然后找到最匹配的位置。这一过程常涉及选择匹配度量方法,如平方差匹配、归一化平方差匹配、相关性匹配等。模板匹配在目标检测、物体识别等领域有广泛应用,尽管对于光照、尺度、旋转等变化敏感,但仍然是图像处理中常用的技术之一。

2.有关的函数方法

cv.matchTemplate(img, template, method):这一行代码执行模板匹配操作。它采用三个参数:

img:表示待搜索的原始图像。

template:表示要在原始图像中搜索的模板图像。

method:表示匹配方法,即模板匹配算法的选择。这可以是以下之一:     

  • cv.TM_SQDIFF:平方差匹配法
  • cv.TM_SQDIFF_NORMED:归一化平方差匹配法
  • cv.TM_CCORR:相关性匹配法
  • cv.TM_CCORR_NORMED:归一化相关性匹配法
  • cv.TM_CCOEFF:系数匹配法
  • cv.TM_CCOEFF_NORMED:归一化系数匹配法

cv.matchTemplate 返回一个二维数组(图像),表示匹配程度,该数组的大小是原始图像减去模板图像的大小加一。 

min_val, max_val, min_loc, max_loc = cv.minMaxLoc(res):这一行代码用于找到匹配结果中的最小值、最大值以及它们的位置。具体来说:

  • min_val:是匹配结果中的最小值。
  • max_val:是匹配结果中的最大值。
  • min_loc:是最小值的位置(x,y坐标)。
  • max_loc:是最大值的位置(x,y坐标)。

3.匹配算法有关的原理: 

1.TM_CCOEFF (系数匹配法):

  • 原理:计算模板与图像的协方差。
  • 概念:协方差表示两个变量之间的关联程度,正值表示正相关,负值表示负相关。
  • 适用:适用于模板和图像中存在明显对比度差异的情况。

协方差具体计算公式:

cov(X,Y) = \frac{\sum_{n}^{i-1}(X(_{i})-\bar{X})^{T}(Y(_{i})-\bar{Y})}{n-1}

在实际操作中,可以使用矩阵运算来高效地计算协方差矩阵。如果 X 和 Y 分别是 m×n 和 m×p 的矩阵,这将产生一个 n×p 的协方差矩阵,

 2.TM_CCOEFF_NORMED (归一化系数匹配法):

  • 原理:计算模板与图像的归一化协方差。
  • 概念:通过标准化协方差,将匹配结果归一化到范围 [-1, 1]。
  • 适用:适用于处理不同尺度和对比度的图像。

corr(X,Y) = \frac{cov(X,Y)}{\sqrt{var(X)*var(Y)}}

var(X) =\frac{1}{n-1} \sum_{n}^{i=1}(X-\bar{X})^{2}

3.TM_CCORR (相关性匹配法):

  • 原理:计算模板与图像的相关性。
  • 概念:相关性表示两个信号之间的相似性程度,值越大表示匹配越好。
  • 适用:适用于处理模板和图像灰度变化较小的情况。

R(x,y)= \sum_{M}^{i=1}\sum_{N}^{j=1} [I(x+i,y+j)⋅T(i,j)]

  • I(x+i,y+j) 是图像在位置 (x+i,y+j) 的像素值;
  • T(i,j) 是模板在位置 (i,j) 的像素值;
  • M 和 N 分别是模板的高度和宽度

在上述公式中,通过将模板与图像的对应像素值相乘,然后将所有乘积相加,得到一个相关性值。这个值越大,表示在图像的该位置与模板更相似

4.TM_CCORR_NORMED (归一化相关性匹配法):

  • 原理:计算模板与图像的归一化相关性。
  • 概念:通过标准化相关性,将匹配结果归一化到范围 [0, 1]。
  • 适用:适用于处理不同尺度和对比度的图像。

5.TM_SQDIFF (平方差匹配法):

  • 原理:计算模板与图像的像素差的平方和。
  • 概念:值越小表示匹配越好。
  • 适用:适用于处理灰度变化较大的图像。

 6.TM_SQDIFF_NORMED (归一化平方差匹配法):

  • 原理:计算模板与图像的归一化平方差。
  • 概念:通过标准化平方差,将匹配结果归一化到范围 [0, 1]。
  • 适用:适用于处理不同尺度和对比度的图像。

示例代码:

 

效果展示:

输入原图:

输出图:

 

 

 

 

 

本次实验主要展示了图像处理中的模板匹配功能,模板匹配功能主要还是通过对模板和图像的像素点的计算进行匹配,没有过多考虑到光照等其他方面的因素,可能比较适合灰度值图像,匹配出来的效果也因人而异,效果不是特别好,所以在此做个了解学习

如有错误或遗漏,希望小伙伴批评指正!!!! 

希望这篇博客对你有帮助!!!!

 实验五:Opencv实验合集——实验五:高动态范围-CSDN博客

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

git缓存区、本地仓库、远程仓库的同步问题(初始化库无法pull和push)

git新建库与本地库同步 gitee使用教程,git的下载与安装接不在叙述了。 新建远程仓库 新建远程仓库必须要使用仓库提供的api,也就是仓库门户网站,例如gitee,github,gitlab等。在上图中使用gitee网址中新建了一个test仓…

【无语】Microsoft Edge 浏览器不显示后台返回的数值数据

Microsoft Edge 禁用 JSON 视图 写在前面禁用 JSON 视图 写在前面 遇到一个有意思的事情,在用 Microsoft Edge 浏览器发送请求测试时发现,后端返回的数值数据没有正常展示,而是类似查看源码的结果,只显示了一个行号1,…

SpringMVC01

SpringMVC 1. 学习⽬标2. 什么叫MVC?3. SpringMVC 框架概念与特点4. SpringMVC 请求流程5. Spring MVC 环境搭建6. URL 地址映射配置7. 参数绑定8. JSON 数据开发JSON普通数组步骤1:pom.xml添加依赖步骤2: 修改配置⽂件步骤3. 注解使⽤ 1. 学习⽬标 2. 什…

Android Studio: 解决Gradle sync failed 错误

文章目录 1. 前言2. 错误情况3. 解决办法3.1 获取gradle下载地址3.2 获取gradle存放目录3.3 替换并删除临时文件3.4 触发Try Again 4. 执行成功 1. 前言 今天调试项目,发现新装的AS,在下载gradle的过程中,一直显示连接失败,Gradl…

Zookeeper-快速开始

Zookeeper介绍 简介:ZooKeeper 是一个开源的分布式协调框架,是Apache Hadoop 的一个子项目,主要用来解决分布式集群中应用系统的一致性问题。 设计目标:将那些复杂且容易出错的分布式一致性服务封装起来,构成一个高效…

数据可视化---饼图、环形图、雷达图

类别内容导航机器学习机器学习算法应用场景与评价指标机器学习算法—分类机器学习算法—回归机器学习算法—聚类机器学习算法—异常检测机器学习算法—时间序列数据可视化数据可视化—折线图数据可视化—箱线图数据可视化—柱状图数据可视化—饼图、环形图、雷达图统计学检验箱…

linux:掌握systemctl命令控制软件的启动和关闭、掌握使用ln命令创建软连接

掌握使用systemctl命令控制软件的启动和关闭 一:systemctl命令: Linux系统很多软件(内置或第三方)均支持使用systemctl命令控制:启动停止、开机自启 能够被systemctl管理的软件一般也称之为:服务 语法: systemctl | start | stop | status | enable …

JDK各个版本特性讲解-JDK17特性

JDK各个版本特性讲解-JDK17特性 一、JAVA17概述二、语法层面的变化1.JEP 409:密封类2.JEP 406:switch模式匹配(预览) 三、API层面变化1.JEP 414:Vector API(第二个孵化器)2.JEP 415:…

10000字讲解TCP协议(确认应答,超时重传,三次握手,四次挥手等等众多机制)以及UDP协议(UDP报文,校验和)

文章目录 UDP协议?什么是校验和?基于UDP的应用层协议(了解) TCP协议确认应答(可靠性机制)超时重传(可靠性机制)连接管理(可靠性机制)三次握手(重点)四次挥手(重点) 三次握手和四次挥手时客户端和服务器的状态滑动窗口(效率机制)流量控制(效率机制)窗口探…

【论文笔记】动态蛇卷积(Dynamic Snake Convolution)

精确分割拓扑管状结构例如血管和道路,对医疗各个领域至关重要,可确保下游任务的准确性和效率。然而许多因素使分割任务变得复杂,包括细小脆弱的局部结构和复杂多变的全局形态。针对这个问题,作者提出了动态蛇卷积,该结…

腾讯云消息队列11月产品月报 | RocketMQ 5.x 国际站上线

2023年 11月动态 消息队列 RocketMQ 版 1、5.x 形态国际站上线 国际站上线 5.x 集群全系列,第一批先开放新加坡和硅谷地域。 控制台链接:https://console.tencentcloud.com/trocketmq 2、 无感迁移能力 支持用户白屏化操作,将自建的 Roc…

搭建 ElasticSearch 集群环境

安装基础环境 我们用虚拟机创建出3台机器,查看centos版本为7.9 [roots1 ~]# cat /etc/centos-release CentOS Linux release 7.9.2009 (AltArch)下载相关命令 yum -y install vim* yum -y install net-tools yum -y install lsof yum -y install wget yum -y ins…

SpringBoot知识点回顾01

Spring是为了解决企业级应用开发的复杂性而创建的,简化开发。 Spring是如何简化Java开发的 为了降低Java开发的复杂性,Spring采用了以下4种关键策略: 1、基于POJO的轻量级和最小侵入性编程,所有东西都是bean; 2、通…

Tomcat 部署论坛

一、安装好mysql数据库和jdk之后 开始部署论坛 用Navicat Premium 15连接mysql数据库并创建jforum数据库 下载版本 点击安装选择minninum点击下一步 点击一下一步 选择默认安装路径 安装验证,在安装完毕且启动Apache Tomcat,通过浏览器访问tomcat的80…

Google Earth Engine谷歌地球引擎GEE批量下载ImageCollection遥感影像数据合集的方法

本文介绍在谷歌地球引擎GEE中,批量导出、下载ee.ImageCollection格式的多张栅格遥感影像数据的简便方法。 本文是谷歌地球引擎(Google Earth Engine,GEE)系列教学文章的第十九篇,更多GEE文章请参考专栏:GEE…

[最后一个月征稿、ACM独立出版】第三届密码学、网络安全和通信技术国际会议(CNSCT 2024)

第三届密码学、网络安全和通信技术国际会议(CNSCT 2024) 2024 3rd International Conference on Cryptography, Network Security and Communication Technology 一、大会简介 随着互联网和网络应用的不断发展,网络安全在计算机科学中的地…

pycharm运行正常,但命令行执行提示module不存在的多种解决方式

问题描述 在执行某个测试模块时出现提示,显示自定义模块data不存在,但是在PyCharm下运行正常。错误信息如下: Traceback (most recent call last):File "/run/channelnterface-autocase/testcases/test_chanel_detail.py", line 2…

基于ssm高校推免报名系统源码和论文

网络的广泛应用给生活带来了十分的便利。所以把高校推免报名管理与现在网络相结合,利用java技术建设高校推免报名管理系统,实现高校推免报名的信息化。则对于进一步提高高校推免报名管理发展,丰富高校推免报名管理经验能起到不少的促进作用。…

XZ_iOS 之 M1 M2 M3的M系列芯片的Mac苹果电脑安装cocoapods

安装的前提,应用程序->终端->右键-显示简介->勾选 使用Rosetta打开,如下图,然后重启终端 安装的顺序如下:Homebrew->rvm->ruby->cocoapods 1、安装Homebrew /bin/bash -c "$(curl -fsSL https://raw.git…

算法02哈希法

算法01之哈希法 1.哈希法理论基础1.1哈希表(1)哈希表(2)哈希函数(3)哈希碰撞 1.2哈希法基本思想1.3哈希法适用场景与最常用的哈希结构 2.LeetCode242:有效的字母异位词(1&#xff09…