模板匹配

OpenCV(11):模板匹配实例讲解 在OpenCV中,模板匹配是一种图像处理技术,用于在一个大的图像中查找和定位一个小的目标图像(也称为模板)。通俗而言,就是通过一张图片找到和另一张图片相似的部分 阅读详情
模板匹配是数字图像处理的重要组成部分之一。把不同传感器或同一传感器在不同时间、
不同成像条件下对同一景物获取的两幅或多幅图像在空间上对准,或根据已知模式到另一幅
图中寻找相应模式的处理方法就叫做模板匹配。
    简单而言,模板就是一幅已知的小图像。模板匹配就是在一幅大图像中搜寻目标,已知
该图中有要找的目标,且该目标同模板有相同的尺寸、方向和图像,通过一定的算法可以
在图中找到目标,确定其坐标位置。 
以8 位图像(其1 个像素由1 个字节描述)为例,模板T( m × n 个像素)叠放在被搜
索图S( W × H 个像素)上平移,模板覆盖被搜索图的那块区域叫子图Sij。i,j为子图
左上角在被搜索图S 上的坐标。搜索范围是: 
1 ≤ i ≤ W – M 
1 ≤ j ≤ H – N 
通过比较T 和Sij 的相似性,完成模板匹配过程。
衡量模板T和子图Si,j的匹配程度,可用下列两种测度:

或者

展开前一个式子,有:

(3)式右边的第三项表示模板的总能量,是一个常数,与(i,j)无关。第一项是模板覆盖下那块子图像的能量,它随(i,j)位置而缓慢改变。第二项是子图像和模板的互相关函数,随(i,j)变化而迅速改变。模板T和子图Si,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

                                   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方向最佳匹配点位置

                   }

              }

         }

  }

基于OpenCV的模板匹配算法探索与实践 随着从简单的测量(平方差)到更复杂的测量(相关系数),我们可获得越来越准确的匹配(同时也意味着越来越大的计算代价)。 阅读详情

相关推荐

基于轮廓的模板匹配

一. 理论部分 模板匹配的算法包括基于灰度的匹配,基于特征的匹配,基于组件的匹配,基于相关性的匹配以及局部变形匹配。基于灰度的匹配一般应用在没有缩放和旋转,颜色变化不大的场合。基于特征的匹配一般应用在具有缩放和旋转,颜色变化较大的场合。在模板各个组件有相对位移的情况下,使用基于组件的匹配算法。在图像模糊,目标定位不依赖于边缘的情况下一般使用基于相关性的匹配。目标有局部变形的情况使用局部变形匹配算法...

千人斩的博客 7963

第15章:模板匹配

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

weixin_57440207的博客 1万+

基于opencv的模板匹配详解

模板匹配的知识总结

ove_z的博客 1万+

OpenCV第十章——模板匹配

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

2301_80166849的博客 1万+

图像处理之模板匹配

模板匹配法 模板匹配是一种用于在源图像S中寻找定位给定目标图像T(即模板图像)的技术。其原理很简单,就是通过一些相似度准则来衡量两个图像块之间的相似度Similarity(S,T)。 模板匹配的工作方式 模板匹配的工作方式跟直方图的反向投影基本一样,大致过程是这样的:通过在输入图像上滑动图像块对实际的图像块和输入图像进行匹配。假设我们有一张100x100的输入图像...

weixin_40063211的博客 1万+

【OpenCVSharp】多目标模板匹配MatchTemplate

建立测试程序 通过NuGet工具为工程添加OpenCvSharp3-AnyCPU: 工具–NuGet包管理器—管理解决方案的NuGet程序包 测试程序 打开位于\bin\Debug\netcoreapp2.1和dill文件同目录下的lenna.jpg。 先添加引用:using OpenCvSharp; static void Main(string[] args) {...

云敬山 1万+

8、halcon基于形状模板匹配

1、模板匹配基本原理 模板匹配:通俗讲就是,拿着模板去匹配,就是先制作一个模板,然后利用这个模板去图像中寻找与模板相似的部分,并记录寻找到的位置。 模板匹配分类:按照有无变形,分为刚性模板匹配与变形模板匹配,变形模板匹配比较复杂,工业上基本是基本使用的刚性模板匹配。 常用匹配方式:ncc模板匹配、形状模板匹配和XLD模板匹配。 2、XLD模板创建和匹配 (1)、XLD模板创建 读...

panjinliang066333的博客 7765

<Halcon> 浅学形状模板匹配

基于Halcon的形状模板匹配的学习

thisiszdy的博客 3600

Python+Opencv实现模板匹配

目录一、模板匹配简介二、传统模板匹配算法不足之处三、多尺度模板匹配实现步骤四、多尺度模板匹配实现代码五、多尺度模板匹配效果展示和分析六、思维扩展参考资料注意事项 一、模板匹配简介   所谓的模板匹配,即在给定的图片中查找和模板最相似的区域,该算法的输入包括模板和测试图片,整个任务的思路就是按照滑窗的思路不断的移动模板图片,计算其与图像中对应区域的匹配度,最终将匹配度最高的区域选择为最终的结果。下图...

WZZ18191171661的博客 1万+

<Halcon>基于形状和轮廓的模板匹配

1、模板匹配 模板就是一副已知的小图像,而模板匹配就是在一副大图像中搜寻目标,已知该图中有要找的目标,且该目标同模板有相同的尺寸、方向和图像元素,通过一定的算法可以在图中找到目标,确定其坐标位置。 2、模板匹配方法 基于形状的匹配 基于轮廓的匹配 基于灰度的匹配 基于组件的匹配 基于互相关匹配 3、基于形状和轮廓的匹配 1、创建ROI ①标准形状 draw_rectangle1/2 draw_circle draw_ellipse draw_line ②任意形状 draw_region draw

thisiszdy的博客 1万+

OpenCV 的模板匹配

模板匹配(Template Matching)是一种在图像中查找和匹配小图像片段(模板)的技术。OpenCV 提供了一些函数来执行模板匹配,并可以通过多种方法来计算匹配程度。将图像转换为灰度图像。模板匹配通常在灰度图像上进行,以减少计算复杂度。OpenCV 提供了几种不同的模板匹配方法,可以通过。函数在原图像中搜索模板图像,并返回匹配结果。函数找到匹配结果中大于或等于阈值的位置。函数在原图像中绘制矩形框标记匹配区域。或 OpenCV 显示结果图像。函数读取原始图像和模板图像。

像风一样自由的博客 2529

opencv中的模板匹配

实现opencv中自带的模板匹配,并对其尺寸不变性进行了改进。使其可以自适应匹配最优解

lucifer_zhy的博客 1万+

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

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

gongdiwudu的专栏 4万+

Halcon——模板匹配

组件匹配用于在图像中检测和识别符合特定形状和属性的组件或物体。相当于是形状的拓展,但是不支持大小缩放匹配。适用于多个对象定位的场合。基于形状的模板匹配方法,可以用于检测和定位具有特定形状的对象。这种方法通常适用于对形状较为明显的目标进行匹配定位。

一个不掉头发的资深小白 5018

海思MIPI屏调试实战:从参数计算到点亮屏幕的完整指南

本文提供了一份海思平台MIPI屏幕调试的完整实战指南。文章以Hi3516DV300调试800x1280分辨率屏幕为例,详细讲解了从参数计算、配置文件修改到最终点亮屏幕的全流程,并分享了常见问题排查与进阶优化技巧,旨在帮助嵌入式开发者高效解决MIPI屏调试难题。

weixin_29190573的博客 736

[亚信线上教学] AX58100: EtherCAT从站设备仿真功能设计教学

什么情况需要开启EtherCAT从站设备仿真功能呢? 一般来说, 当EtherCAT从站产品,不需要使用额外的微控制器介入,或使用不具备EtherCAT从站通讯协议栈的微控制器一同协作的情况下,就必须开启EtherCAT从站设备仿真功能,这样EtherCAT主站才能够正常设置从站设备的工作状态. 亚信AX58100 EtherCAT从站控制芯片的优点 AX58100 EtherCAT从站控制器, 集成2个百兆以太网Phis, 并支持一些额外的控制接口, 例如脉冲宽度调变, 增量, 霍尔编码器, .

allanchou1的专栏 7422

模板匹配——基于模板与基于特征的两种模板匹配对比

在图像匹配算法可分为两大类别,基于模板的匹配和基于特征的匹配各具特色。 1.基于模板的方法,也被称作区域匹配法,适用于模板图像在图像中缺乏显著特征的情况。这种方法直接处理像素值,通过计算图像与模板的强度值来衡量匹配程度。 2.基于特征的方法则适用于源图像和模板图像在特征和控制点上有较高一致性的情况。此时,特征可以是点、曲线或表面模型,用于执行模板匹配。

知来者逆的博客 6230

保姆级教程:中科蓝讯Downloader配置详解,从软硬开关机到EQ调音一步到位

本文详细介绍了中科蓝讯Downloader的配置流程,从硬件初始化到音频调优的全方位指南。涵盖软硬开关机选择、电源管理、DAC校准、EQ调音等关键步骤,帮助开发者高效完成配置并避免常见问题。特别适合需要精确控制音频设备和电源管理的中科蓝讯芯片开发者。

weixin_33670786的博客 309

OpenCV 模板匹配方法详解

模板匹配(Template Matching)是计算机视觉中的一种基础技术,用于在目标图像(大图)中查找与模板图像(小图)最相似的部分。目标检测(如人脸、物体识别)图像对齐(如医学影像、卫星图像)自动化测试(如 UI 元素定位)工业视觉(如零件定位)方法适用场景特点TM_SQDIFF精确匹配越小越好,适合固定亮度场景鲁棒匹配越大越好,抗光照变化快速匹配计算快,但对亮度敏感模板匹配适合固定尺寸、无旋转多尺度匹配特征匹配(SIFT、ORB)深度学习(YOLO、SSD)

zdx2585503940的博客 2436

神州路由器DHCPv6配置

神州路由器DHCPv6配置.。

weixin_41687096的博客 461

【YOLOv12改进trick】高效多尺度卷积注意力EMCAD_Block模块引入YOLOv12,实现涨点和效率提升,含创新点Python代码

EMCAD引入YOLOv12模块,实现高效多尺度注意力模块引入到YOLOv12中的快速涨点及效率提升

向上生长的程序媛的博客 851

EmguCv模板匹配

模板匹配是一种最原始、最基本的模式识别方法,研究某一特定对象物的图案位于图像的什么地方,进而识别对象物,这就是一个匹配问题。它是图像处理中最基本、最常用的匹配方法。模板匹配具有自身的局限性,主要表现在它只能进行平行移动,若原图像中的匹配目标发生旋转或大小变化,该算法无效。 先贴上简陋的界面图   代码: Mat src = new Image&lt;Bgr, byte&gt;(ib_o...

言午独行 5334

Langchain cannot connect with Azure SQL Database

Langchain 无法连接到 Azure SQL 数据库

suiusoar 633

OpenCV 模板匹配教程

模板匹配是 OpenCV 提供的强大功能,可以用于对象检测和图像分析。通过本文的教程,我们学习了如何使用 OpenCV 实现模板匹配、选择不同的匹配方法、检测多个对象以及使用金字塔技术进行多尺度匹配。根据不同的应用需求,可以调整匹配方法和参数以达到最佳效果。更多关于 OpenCV 模板匹配的详细信息和高级用法,请参考OpenCV 官方文档。

jixiaoyu0209的博客 2057

YOLOv8改进:注意力系列篇 |高效的通道先验卷积注意力(CPCA) | 中科院 2023.6

高效的通道先验卷积注意力(CPCA)方法,支持注意力权重在通道和空间维度上的动态分布;

会AI的学姐 2041

客服转人工率直降60%!OpenClaw深度集成NLP引擎,打造企业级对话自动化智能客服系统

本文介绍了一套基于OpenClaw智能体框架和NLP大模型引擎的智能客服系统解决方案。该系统通过深度集成NLP引擎实现精准语义理解,采用分层架构设计支持多渠道接入和业务系统对接,显著提升了客服效率。核心亮点包括:92%的重复问题自动解决率,60%的转人工率下降,40%的人力成本降低,以及从30秒压缩至0.5秒的平均响应时长。文章详细阐述了技术选型、系统架构设计、核心模块实现等关键环节,展示了如何通过智能对话系统破解传统客服业务中的人力资源与服务质量矛盾。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 361
上一篇: 7.23计划
下一篇: MATLAB神经网络工具箱函数
Walker Zhang
博客等级 码龄14年 144粉丝 60原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值