计算机视觉技术应用项目化教程 课件 项目11 图像模板匹配_第1页
计算机视觉技术应用项目化教程 课件 项目11 图像模板匹配_第2页
计算机视觉技术应用项目化教程 课件 项目11 图像模板匹配_第3页
计算机视觉技术应用项目化教程 课件 项目11 图像模板匹配_第4页
计算机视觉技术应用项目化教程 课件 项目11 图像模板匹配_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PART11项目十一:图像模板匹配在图像中寻找已知的“它”COMPUTERVISION·计算机视觉系列课程任务导入:我们身边的“找相同”01/安防监控在大型商场的监控视频中,如何让计算机自动、快速地找到目标人物?02/工业质检在生产线上,如何让机器视觉系统自动识别出缺少关键部件的不合格产品?03/医学影像分析在复杂的CT扫描图中,如何利用算法辅助医生快速、准确地找到病灶?💡核心问题以上所有场景都有一个共同需求——在一幅大图像中,寻找一个已知的小图像(模板)的位置。

这就是我们今天要学习的核心技术——图像模板匹配。本项目学习目标知识目标Knowledge•理解模板匹配原理:深刻理解图像模板匹配的基本概念和工作原理。•掌握核心函数:掌握OpenCV中cv2.matchTemplate()函数的核心参数及其含义。•了解匹配方法:了解六种不同的模板匹配方法的数学原理和适用场景。能力目标Skills•实现单对象匹配:独立编写代码,使用cv2.matchTemplate()成功实现单对象模板匹配。•实现多对象匹配:基于单对象匹配基础,通过阈值化等方法,实现多对象模板匹配。•分析与选择:根据不同的应用场景,选择合适的匹配方法并分析其结果优劣。素质目标Competence•培养问题解决能力:培养将实际视觉问题抽象为模板匹配问题,并设计算法加以解决的能力。•提升工程实践能力:在项目中提升代码调试、运行结果分析和算法优化的工程实践能力。什么是模板匹配?定义Definition模板匹配是一种在源图像(SourceImage)中寻找与模板图像(TemplateImage)最相似区域的技术。它本质上是一种滑动窗口(SlidingWindow)的匹配方法,广泛应用于目标检测与识别任务中。01准备阶段拥有一张待搜索的源图像I和一张包含目标对象特征的模板图像T。02滑动窗口将模板图像T像窗口一样,在源图像I的全部像素范围内进行滑动遍历。03相似度计算在每一个滑动位置,计算当前模板与对应图像块的相似度或误差。04结果记录将每一步的匹配结果存储在一个二维的结果矩阵R中,矩阵数值代表匹配度。05目标定位分析结果矩阵R,找到相似度最高或差异度最低的值,其位置即为目标在原图中的位置。OpenCV中的核心函数:cv2.matchTemplate()result=cv2.matchTemplate(image,templ,method[,result[,mask]])image:源图像待搜索的输入图像,必须为8位或32位浮点型。templ:模板图像用于搜索的模板,尺寸必须小于或等于源图像。method:匹配方法决定相似度计算方式的核心算法,共六种选择。1.平方差匹配(SQDIFF)原理:计算像素差值的平方和。

特点:数值越小,代表匹配度越高。2.相关性匹配(CCORR)原理:计算模板与图像块的点积。

特点:数值越大,代表匹配度越高。3.相关系数匹配(CCOEFF)原理:衡量两者的相对模式,对光照不敏感。

特点:数值越接近1,代表匹配度越高。💡最佳实践:建议优先尝试TM_CCOEFF_NORMED或TM_SQDIFF_NORMED,它们归一化处理后不受图像亮度缩放影响。从结果矩阵中定位目标核心问题我们已经通过匹配算法得到了一个二维的结果矩阵`R`,下一步如何快速在矩阵中找到最佳匹配的像素坐标位置?解决方案:`cv2.minMaxLoc()`OpenCV内置的极值定位函数。输入结果矩阵,直接返回矩阵的最小值、最大值及其对应的坐标点。函数原型(Python)minVal,maxVal,minLoc,maxLoc=cv2.minMaxLoc(result)📉场景一:差值匹配法适用方法:`TM_SQDIFF`/`TM_SQDIFF_NORMED`

•规律:匹配度越高→计算出的数值越小

•结论:取`minLoc`作为最佳匹配点坐标📈场景二:相关性匹配法适用方法:其余四种方法(如TM_CCOEFF,TM_CCORR等)

•规律:匹配度越高→计算出的数值越大

•结论:取`maxLoc`作为最佳匹配点坐标任务11.1:查找单张人脸任务目标在一张包含梅西的照片中,利用他的脸部特写照片作为“模板”,在全身照中精准找到匹配区域,并使用矩形框将其脸部位置框选出来,完成定位任务。👀匹配定位效果示意核心实现步骤01.读取图像|ReadImage使用`cv2.imread()`分别读取待检测的源图像和用于匹配的人脸模板图像。02.获取尺寸|GetSize通过`template.shape`获取模板的高度(th)和宽度(tw),为后续绘图做准备。03.执行匹配|Match调用`cv2.matchTemplate()`函数,在源图像上滑动模板,计算相似度并生成匹配结果矩阵。04.最佳定位|Locate利用`cv2.minMaxLoc()`分析结果,找到相似度最高的区域,获取其左上角坐标。05.绘制框选|Draw根据坐标与模板尺寸,调用`cv2.rectangle()`在源图上绘制矩形,框选出人脸位置。06.显示结果|Show最后使用`cv2.imshow()`展示处理后的最终图像,确认人脸是否被成功框选。单对象模板匹配代码实现#1.导入库与读取图像

importcv2

importnumpyasnp

img=cv2.imread('messi.jpg');template=cv2.imread('messi_face.jpg')#2.获取尺寸并执行匹配

th,tw=template.shape[:2]

res=cv2.matchTemplate(img,template,cv2.TM_SQDIFF_NORMED)#3.寻找最佳匹配点(SQDIFF方法取最小值点)

_,_,topLeft,_=cv2.minMaxLoc(res)

bottomRight=(topLeft[0]+tw,topLeft[1]+th)#4.绘制矩形框并显示结果

cv2.rectangle(img,topLeft,bottomRight,(0,255,0),2)#绿色框线

cv2.imshow('Result',img);cv2.waitKey(0);cv2.destroyAllWindows()任务11.2:查找多个物体任务目标在包含大量重复元素的图像(如一堆硬币、棋子)中,精准定位并标记出所有目标物体,而非仅仅是相似度最高的那一个。面临挑战标准的单对象模板匹配算法仅返回匹配度最高的单一位置,无法满足多物体场景下“一网打尽”的需求。核心方案:阈值化策略1.计算全图匹配矩阵→2.设定阈值筛选合格匹配→3.定位所有候选坐标→4.非极大值抑制消除重叠框。💡原理图解说明上图是多目标匹配算法的运行结果,所有硬币都被矩形框准确地框选了出来。这正是通过设定一个合理的“匹配度门槛”(阈值),并配合非极大值抑制去除重复检测框后得到的最终效果。多对象模板匹配代码实现importcv2

importnumpyasnp

#1.读取图像(以灰度模式)

img_rgb=cv2.imread('coins.png')

img_gray=cv2.cvtColor(img_rgb,cv2.COLOR_BGR2GRAY)

template=cv2.imread('coin_template.png',0)

#2.获取模板尺寸

w,h=template.shape[::-1]

#3.执行模板匹配

res=cv2.matchTemplate(img_gray,template,cv2.TM_CCOEFF_NORMED)

#4.设置阈值并寻找匹配位置

threshold=0.8

loc=np.where(res>=threshold)

#5.遍历所有匹配位置并绘制矩形

forptinzip(*loc[::-1]):

cv2.rectangle(img_rgb,pt,(pt[0]+w,pt[1]+h),(0,0,255),2)

#6.显示结果

cv2.imshow('MultipleObjectsDetection',img_rgb)

cv2.waitKey(0)

cv2.destroyAllWindows()多对象匹配的优化:非极大值抑制问题所在检测算法运行后,在同一个目标物体上,往往会被错误地绘制出多个重叠的矩形框,导致画面混乱,干扰结果判断。背后原因同一个物体在特征图上通常不是单一的点,而是对应一个连续的高响应区域。滑动窗口或锚框机制会触发该区域内多个位置,从而产生重复的预测框。解决方案:NMS核心思想:在局部邻域内,仅保留置信度(响应值)最大的框,抑制并剔除所有其他重叠的非最大值框。代码实现:OpenCV`dnn`模块提供高效API:

`cv2.dnn.NMSBoxes()`关键价值消除重复标注,确保画面中每个物体仅被标记一次,大幅提升目标检测的定位精度和结果的整洁度,使最终的检测输出可直接投入应用。项目小结:模板匹配技术核心优势•原理简单:算法逻辑清晰,易于理解和快速上手实现。•实现高效:OpenCV库提供了成熟的API函数,大幅降低开发门槛与时间成本。•效果直观:在特定、简单的场景下,匹配结果直接、精准且稳定。主要局限❌缺乏尺度/旋转不变性:目标物体缩放或旋转后,匹配精度会急剧下降。❌光照敏感:环境光照的明显变化会严重干扰匹配结果。❌计算成本高:基于滑动窗口的逐像素计算方式,运算效率较低。❌抗遮挡性差:目标部分被遮挡时,难以完成有效匹配。适用场景适合用于目标尺寸固定、角度不变、光照条件稳定的受控场景。例如:工业流水线上的零件检测、特定位置的简单图像检索等。习题与思考01/选择题在OpenCV的模板匹配中,对于方法`cv2.TM_CCOEFF_NORMED`,最佳匹配位置由哪个返回值决定?A.minValB.maxVal

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论