模板匹配的基本概念

Python OpenCV 模板匹配 什么是模板匹配? 模板匹配是一项在一幅图像中寻找与另一幅模板图像最匹配(相似)部分的技术。 如何实现模板匹配? 我们需要2幅图像:原图像和模板,我们希望在原图像中找到一块和模板图像最匹配的区域。 为了确定匹配区域,我们在原图像上滑动模板图像和原图像进行比较: 模板图像块一次移动一个像素 (从左往右,从上往下),在每一个位置都进行一次度量计算它与这个位置的匹配程度 (或者说模板图像和原... 阅读详情
模板匹配是数字图像处理的重要组成部分之一。把不同传感器或同一传感器在不同时间、
不同成像条件下对同一景物获取的两幅或多幅图像在空间上对准,或根据已知模式到另一幅
图中寻找相应模式的处理方法就叫做模板匹配。
简单而言,模板就是一幅已知的小图像。模板匹配就是在一幅大图像中搜寻目标,已知
该图中有要找的目标,且该目标同模板有相同的尺寸、方向和图像,通过一定的算法可以
在图中找到目标,确定其坐标位置。
以8 位图像(其1 个像素由1 个字节描述)为例,模板T( m × n 个像素)叠放在被搜
索图S( W × H 个像素)上平移,模板覆盖被搜索图的那块区域叫子图Sij。i,j为子图
左上角在被搜索图S 上的坐标。搜索范围是:
1 ≤ i ≤ W – M
1 ≤ j ≤ H – N
通过比较T 和Sij 的相似性,完成模板匹配过程。
衡量模板T和子图S i,j的匹配程度,可用下列两种测度:

或者

展开前一个式子,有:

(3)式右边的第三项表示模板的总能量,是一个常数,与(i,j)无关。第一项是模板覆盖下那块子图像的能量,它随(i,j)位置而缓慢改变。第二项是子图像和模板的互相关函数,随(i,j)变化而迅速改变。模板T和子图S i,j匹配时这一项的值最大,因此可以用下列相关函数来反应匹配程度:

2 建立数学模型

2.1 计算公式

  模板匹配算法计算模板和匹配区域的相似程度,以最相似位置为匹配点。由于模板需要在匹配区域上逐次匹配,运算量很大。所以选择匹配公式对整个匹配的效率有极大的影响。

  工控机的数据处理能力有限,需要针对红外热成像跟踪技术的特点来简化数学模型,选定计算量最小的计算公式。目标跟踪算法用来确定目标位置,可以用匹配误差的相对大小作为目标判别的依据,误差最小的位置就是目标位置,不需要考虑绝对相似程度。

  公式(1)~(5)都能够真实反应模板的相对匹配程度,选择计算量最小、效率最高的公式(1)作为原始数学模型。匹配点位置算法完成整个匹配区域内的最小匹配误差点检索,表示为公式(6):

  变量K、L为匹配区域尺寸;M、N为模板尺寸。

2.2 模板尺寸

  模板尺寸对系统性能和计算量的影响不容小觑。模板过大导致动态特性变差;过小又会减少目标的特征数据量,降低匹配的敏感程度,增大目标检测难度。实际操作中,模板尺寸设置为32×16时效果非常理想。

2.3 匹配区域

  不同的应用环境下,对匹配区域和实时性要求也不尽相同。光电探测设备需要在视频图像采集周期内(20ms)完成数据实时处理。由于目标在两场视频图像之间的移动量较小、特征变化不大,匹配区域可以大大缩小。

  匹配区域太小会导致目标动态特性变差,过大又会导致计算量大幅度增加,具体选择需要权衡设备参数来决定。由于CCIR制式视频信号是隔行扫描,系统出于实时性考虑,数据以场为单位处理,导致图像比例为2:1状态。为了保持水平、垂直方向的动态特性一致,图像匹配区域也按2:1比例选择。

  在满足实时性要求的情况下,选择相对较大的匹配范围,可提高设备的动态特性。从表1实测数据可以看出,选择匹配区域100×50点、模板32×16点时,动态范围为69×35,时间消耗为13ms。光电探测设备系统目标动态特性要求处理区域不小于40×20点。可见以上选择可以很好地满足动态特性和实时性要求。

3 数学模型优化方法

  数学模型结合选择的模板和搜索区域大小,可以知道模板最佳匹配点计算公式如下:

  

  由公式(7)可以看出,程序需要进行大量的循环计算,整体运算量仍然不小,需要进一步优化,减少处理时间。运用如下优化算法进一步减少实际运算量。

3.1 粗精匹配结合

  观察实际模板匹配运算结果可以发现,匹配点附近的匹配误差迅速下降,明显区别于其它位置。针对这一特点,采用粗精匹配结合的算法迅速锁定匹配点大致区域,可大大降低整体匹配次数。

具体实现方法:先跳动着隔几个点进行一次粗匹配,大致框定匹配区域,然后在附近区域逐一检索获得最佳匹配点。运算量可减少到三分之一以下,且目标提取效果相当好。

3.2 限制最大匹配误差

  因为只需找到最小匹配误差的位置,不必完整计算每一位置的绝对匹配误差,而以已经计算的最小匹配误差作为最大允许误差。若计算误差大于该最大允许误差,就肯定不是最佳匹配点,可以提前结束计算,进入下一匹配位置的计算;如果匹配完成后仍小于最大允许误差,就用当前误差替换最大允许误差,并把该点作为潜在的匹配位置记录下来。

  匹配点和非匹配点的误差常常相差2~3个数量级。经过这种处理后,匹配点后剩余的计算量可以大大降低。

3.3 乱序匹配

  目标出现在匹配区域中的位置不确定。不固定顺序算法可以更快地检索到匹配区域,迅速降低最大匹配误差,减少剩余非匹配点的计算量,降低整体运算量。

  针对光电探测设备的实际工作情况,在跟踪状态下,目标位移角速度和角加速度有限,导致目标常处于匹配区域中心附近。选择由中心向周围辐射匹配的方式效果最理想。

4 程序样本

  以下程序样本综合使用了上面的优化算法,成功应用于红外热成像跟踪技术的原理样机,达到了预期效果。

该函数用于图像模板匹配运算,适用于256灰度值的黑白图像数据。

  Deal_With::TemplateMatch(unsigned char* lpSource, LONG lWidth, LONG lHeight, unsigned char*lpTemplate, LONG

  lTemplateWidth,LONG lTemplateHeight,)

  {

   unsigned char* Source;     //指向待处理图像的指针

  unsigned char* Template; //指向模板图像的指针

  int i,j,m,n;  //循环变量

  unsigned char lMaxWidth, lMaxHeight,

lMaxWidthExact,lMaxHeightExact

   //匹配位置

   unsigned long D;       //相似误差

  unsigned long MaxD;        //最大允许相似误差

  //粗相关

   MaxD =0x10000000;          //约定最大匹配误差

   for (j = 0;j < lHeight - lTemplateHeight +1 ;j+=2){

   for(i = 0;i < lWidth - lTemplateWidth + 1;i+=2){

      D=0;

   Source=(unsigned char *)lpSource+lWidth*j+i;

  Template=(unsigned char *)lpTemplate ;

  for (n=0;n < lTemplateHeight && D<mind;n++){< p="">

  for(m=0;m<ltemplatewidth p="" &&="" d<mind;m++)="" <="">

D+=(*Source++-*Template++)*(*Source++

-*Template++);

 Source+=lWidth-lTemplateWidth;

  }

   if (D<maxd){< p="">

   MaxD=D;

  lMaxWidth=i;

  lMaxHeight=j;

  }

   }

  }

  //精相关

  lMaxWidthExact = lMaxWidth;

  lMaxHeightExact = lMaxHeight;

  for (j = lMaxHeight-2;j <= lMaxHeight+2 ;j++){

for(i = lMaxWidth-2;i <= lMaxWidth+2;i++){

D=0;

Source=(unsigned char *)lpSource+lWidth*j+i;

Template=(unsigned char *)lpTemplate ;

for(n=0;n<ltemplateheight p="" &&="" d<mind;n++){<="">

   for(m = 0;m < lTemplateWidth && D<mind;m++) p="" ?<="">

   D+=(*Source++-*Template++)*(*Source++

-*Template++);

   Source+=lWidth-lTemplateWidth;

    }

   if (D<maxd){< p="">

   MaxD=D;

  lMaxWidthExact=i; //x方向最佳匹配点位置

  lMaxHeightExact=j;   //y方向最佳匹配点位置

}

}

}

}

转载自:http://www.cnblogs.com/qianqianfy/archive/2009/07/28/1533007.html


OpenCV(11):模板匹配实例讲解 在OpenCV中,模板匹配是一种图像处理技术,用于在一个大的图像中查找和定位一个小的目标图像(也称为模板)。通俗而言,就是通过一张图片找到和另一张图片相似的部分 阅读详情

相关推荐

基于OpenCV的模板匹配算法探索与实践

随着从简单的测量(平方差)到更复杂的测量(相关系数),我们可获得越来越准确的匹配(同时也意味着越来越大的计算代价)。

AI_dataloads的博客 3224

第15章:模板匹配

第15章:模板匹配一、模板匹配基础:1. cv2.matchTemplate()函数:2. 匹配原理:3. 查找最值:二、多模版匹配:1. 获取匹配位置集合:2. 循环:3.调整坐标4.标记匹配图像的位置 ​ 模板匹配是指在当前图像A内匹配与图像B最相似的部分,一般将图像A称为输入图像,将图像B称为模板图像。 模板匹配的方法是将模板图像B在图像A上滑动,逐个遍历所有像素以完成匹配。 ​ 例如,下图中,大图像“lena”是输入图像,“眼睛”图像是模板图像。查找的方式是,将模板图像在输入图像内从左上角开始滑

weixin_57440207的博客 1万+

Halcon 第五章『模板匹配Matching』◆第1节:模板匹配的介绍&金字塔

一、前言 图像处理中的模式指的是对图像目标所具有的特征的描述,而模式识别(Pattern Recognition)就是利用计算机对图像目标进行分类,在错误概率最小的条件下使识别的结果尽量与客观事物符合。 二、图像模式识别的定义 人们在观察事物或现象时,常常会观察它与其他事物或现象的相同或不同之处,会把具有相似特征的归为一类。把上述过程用计算机来实现,就是模式识别过程。它可以定义为表征事物或现象的各种形式的(数值的、文字的和逻辑关系的)信息...

Halcon机器视觉 6139

OpenCV第十章——模板匹配

模板是指被查找的目标图像,查找模板出现在原始图像中哪个位置的过程就叫模板匹配。OpenCV提供了matchTemplate()方法来实现目标匹配,其语法结构如下:参数说明:iamge:原始图像,必须是单通道,8位或32位浮点图像。temp1:模板图像,其尺寸不得大于原始图像method:匹配的方法,详情见下表mask:可选参数。

2301_80166849的博客 1万+

halcon知识:常见三种模板匹配方法总结

halcon的三种模板匹配方法总结,halcon有三种模板匹配方法:即Component-Based、Gray-Value-Based、Shaped_based,分别是基于组件(或成分、元素)的匹配,基于灰度值的匹配和基于形状的匹配,此外还有变形匹配和三维模型匹配也是分属于前面的大类 本文只对形状匹配做简要说明和补充: Shape_Based匹配方法: 上图介绍的是形状匹配做法的一般流程及模板制作的两种方法。 先要补充点知识:形状匹配常见的有四种情况 一般形状匹配模板shape_model、线性变

gongdiwudu的专栏 4万+

VisionPro - 基础 - 模板匹配技术-Search/PMAlign/PatMax(1)- 模板匹配和模板变换的基本概念

PatMaxPatMaxPatMax和其他的模板匹配技术一样,PatMax通过在一个图像或者一个实时的运行图片中,设定一个或者多个匹配模版。PatMax的主要特点,和其他的模板匹配技术不同的地方,在于他不是通过Pixel的觉得网格来匹配(这种方法往往在准确定位和缩放的时候效率低下),还是基于【案,我认为是抽象的特征】特征的表达,这样可以很快并且准确的获取匹配的结果。【由此,可以用于旋转和缩放发生的时候,单纯的pixel的对照无法实现的匹配】PatMaxPatMax。

山云的专栏 1674

用c语言对图像进行模板匹配,[转载]模板匹配的基本概念

简单而言,模板就是一幅已知的小图像。模板匹配就是在一幅大图像中搜寻目标,已知该图中有要找的目标,且该目标同模板有相同的尺寸、方向和图像,通过一定的算法可以在图中找到目标,确定其坐标位置。以8 位图像(其1 个像素由1 个字节描述)为例,模板T( m × n 个像素)叠放在被搜索图S( W × H 个像素)上平移,模板覆盖被搜索图的那块区域叫子图Sij。i,j为子图左上角在被搜索图S 上的坐标。搜索...

weixin_31577315的博客 894

C++实现带旋转的模板匹配算法

本文还有配套的精品资源,点击获取 简介:模板匹配是计算机视觉中的一种技术,用于在图像中定位已知小图像(模板)。传统方法假设模板与目标图像区域完全一致,但现实应用中物体可能旋转。带旋转的模板匹配技术能够处理这种不确定性,允许在未知旋转角度的情况下查找模板。算法实现包括对模板进行预处理(旋转模板生成),执行匹配(使用OpenCV的matchTemplate函数),得分评估(寻找...

weixin_42602726的博客 2698

图像模式识别中模板匹配的基本概念以及基本算法

认知是一个把未知与已知联系起来的过程。对一个复杂的视觉系统来说,他的内部常同时存在着多种输入和其他知识共存的表达形式。感知是把视觉输入与事先已有表达结合的过程,而识别与需要建立或发现各种内部表达式之间的联系。匹配就是建立这些联系的技术和过程。建立联系的目的是为了用已知解释未知。(摘自章毓晋《图像工程》) 1、模板匹配法: 在机器识别事物的过程中,常常需要把不同传感器或同一传感器在不同时...

weixin_30636089的博客 1395

别再手动量了!用Python+Open3D给BIM模型做‘CT扫描’,自动揪出施工误差(附完整代码)

本文介绍如何利用Python和Open3D技术实现BIM模型的毫米级施工误差自动检测。通过点云预处理、模型配准和偏差分析,系统能自动生成三维差异热力图和验收报告,显著提升施工质量检测效率。特别适合混凝土结构错位和钢结构安装偏差等常见问题的智能分析。

weixin_29284657的博客 243

NX二次开发入门必看:手把手教你搭建开发环境

想顺利开展nx二次开发,第一步就是配置好开发环境。本文详细讲解从安装准备到环境调试的完整流程,结合实际操作细节,帮你避开常见坑点,快速进入nx二次开发的实战阶段。

weixin_31569663的博客 1456

第十天模板匹配,卷积基本概念

卷积具体介绍这篇文章是我看的最好的:https://blog.youkuaiyun.com/qq_39521554/article/details/79083864                     CV_TM_SQDIFF 平方差匹配法:该方法采用平方差来进行匹配;最好的匹配值为0;匹配越差,匹配值越大。       CV_TM_CCORR 相关匹配法:该方法采用乘法操作;数值越大表明匹配程度越...

qq_32340685的博客 1067

【Telephony】APN配置及加载流程&项目实践(AOSP)

学习APN关键是学会明白apns-conf.xml文件各个参数的意思,然后熟悉TelephonyProvider是如何读取文件创建数据库的,譬如数据库表的约束、文件的读写顺序等,还有读取后的ApnSetting的二次定制以及显示(例如屏蔽xcap等)。虽然一般在项目中APN的需求很简单,就是按照客户提供的APN参数添加上配置,或者在显示屏蔽一些参数,但是项目维护的过程中APN的问题也是比较多的。

weixin_44513784的博客 5509

第二十一课: 模板匹配的基本概念--模板匹配的分类及注意事项

---first_example_shape_matching.hdev 模板匹配主要分三种,基于形状,基于相关性,基于灰度,主要掌握基于形状的模板匹配。基于形状的模板匹配主要分为创建边缘模板(create_shape_model)、创建边缘轮廓模板(create_shape_model_xld)该模板的输入参数为轮廓,两种都和算子find_shape_model一起使用。创建具有缩放比的模板(...

以梦为马 不负韶华 3816

CXL技术入门:从PCIe到高性能计算的桥梁(附最新2.0协议解析)

本文深入解析CXL技术如何作为PCIe的进化版,成为高性能计算的关键桥梁,特别聚焦CXL 2.0协议的关键升级。从技术架构、三大子协议到典型应用场景,全面介绍CXL在缓存一致性、内存共享等方面的优势,帮助开发者快速掌握这一前沿技术。

wdx012345的博客 728

Unity 数字孪生笔记1 工具介绍

前言 工欲善其事必先利其器 流程思考 数字孪生本质上一种基于实际物理数据的可视化方案,通过对接实际数据,在三维界面中展示孪生结果。 那么这个流程就很简单了。 整个流程分为三块:数据来源-》数据分析-》数据展示 输入数据 首先我们需要考虑我们能拿到什么。第一,实际物体的三维数据从哪里来,第二,实际数据怎么获取到。 模型数据 工业上常常会用到CAD模型,CAD模型具有精确、统一的特点,但是CAD不是三角面片,我们不能直接导出到Unity中,而且导入之后有很多不合理的地方,例如面片杂乱、面数过高等问题。针对这个

Thissky的专栏 1万+

OpenCV Java 模板匹配

什么是模板匹配 模板就是一副已知的小图像,而模板匹配就是在一副大图像中搜寻目标,已知该图中有要找的目标,且该目标同模板有相同的尺寸、方向和图像元素,通过一定的算法可以在图中找到目标,确定其坐标位置。 模板匹配是一种最原始、最基本的模式识别方法,研究某一特定对象物的图案位于图像的什么地方,进而识别对象物,这就是一个匹配问题。它是图像处理中最基本、最常用的匹配方法。模板匹配具有自身的局限性,主要表现在...

梦里蓝天 3750

硬件压力测试工具使用方法

B, --bind host# 绑定到主机的多个地址中的一个。当客户端到服务器端的测试结束时,服务器端通过-l选项指定的端口(或默认为客户端连接到服务器端的端口),反向连接至客户端。-c, --client host#如果Iperf运行在服务器模式,并且用-c参数指定一个主机,那么Iperf将只接受指定主机的连接。-C, --compatibility# 与低版本的Iperf使用时,可以使用兼容模式。-b, --bandwidth #[KM] UDP模式使用的带宽,单位bits/sec。

weixin_53303772的博客 8215

opencv模板匹配

1. 什么是模板匹配? 模板匹配是一种用于在源图像S中寻找定位给定目标图像T(即模板图像)的技术。其原理很简单,就是通过一些相似度准则来衡量两个图像块之间的相似度Similarity(S,T)。 2. 用途 模板匹配方法常用于一些平面图像处理中,例如印刷中的数字、工业零器件等小尺寸目标图像识别分类。 3. 方法 模板匹配中,源图像和模板图像可以是二值图像、

u014528515的专栏 1281

芒果YOLO11改进137:卷积AKConv篇,即插即用,具有任意采样形状和任意数量的参数的卷积内核

卷积AKConv篇,即插即用,具有任意采样形状和任意数量的参数的卷积内核

包括YOLOv5、YOLOv7、YOLOv8等模型改进 295

jdbc从入门到精通(全)

前言 Java语言连接数据库(Java DataBase Connectivity) 面向接口/抽象编程(降低程序的耦合度,提高程序的扩展力)类似多态机制

码农研究僧的博客 1757

Opencv学习笔记(七) 模板匹配(基于某特征模板识别图像)

什么是模板匹配 ? 本文参考链接:Opencv官方文档 官方介绍: 模板匹配是一种最原始、最基本的模式识别方法,研究某一特定对象物的图案位于图像的什么地方,进而识别对象物,这就是一个匹配问题。它是图像处理中最基本、最常用的匹配方法。 作者观点: 模板匹配其实通过识别已知模板的特征,然后根据此特征对待检测的图像进行遍历地扫描,识别出待检测图像中与模板特征最相似的像素并且定位。(就好比是给你一朵花的照...

Rosen的博客 7090

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

OpenCV-Python(24):模板匹配

模板匹配是一种常用的图像处理技术,它用于。模板匹配的基本思想是将模板图像在目标图像上滑动,并计算它们的相似度,找到相似度最高的位置即为匹配位置。下面介绍一种模板匹配算法——平方差匹配算法(Sum of Squared Differences, SSD)。算法步骤:1.加载目标图像和模板图像。2.将模板图像在目标图像上滑动,计算每个位置的相似度。3.找到相似度最高的位置即为匹配位置。在上述代码中,我们首先加载了目标图像和模板图像,然后使用函数进行模板匹配,得到匹配结果。最后,通过。

图灵追幕者博客录 3449

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

浅谈视觉模板匹配

浅谈视觉模板匹配 1.百度定义: 模板就是一副已知的小图像,而模板匹配就是在一副大图像中搜寻目标,已知该图中有要找的目标,且该目标同模板有相同的尺寸、方向和图像元素,通过一定的算法可以在图中找到目标,确定其坐标位置。 2.模板匹配在视觉中的应用: 视觉检测识别有无、视觉引导 3.如何快速了解模板匹配: 打开visionpro 有一个工具叫做 CogPMAlignTool ,这是一个很有用的工具,掌...

dsfjs的博客 2988

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

上一篇: C语言有string吗?
下一篇: int 与 long 、long long
DVStream
博客等级 码龄15年 50粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值