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

这篇具有很好参考价值的文章主要介绍了基于OpenCV的模板匹配算法探索与实践。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、模板匹配能够做什么?

二、六种模板匹配算法解析

1、平方差匹配法method=TM_SQDIFF

2、归一化平方差匹配法method=TM_SQDIFF_NORMED

3、相关匹配法method=TM_CCORR

4、归一化相关匹配法method=TM_ CCORR_NORMED

5、系数匹配法method=TM_CCOEFF

6、化相关系数匹配法 method=TM_CCOEFF_NORMED

三、模板匹配案例应用

四、总结


一、模板匹配能够做什么?

模板匹配算法能够用于在图像或数据中查找与给定模板相匹配的部分。这种算法通过比较模板和图像或数据中的各个部分,寻找最相似的匹配项。在计算机视觉领域,模板匹配算法被广泛用于目标定位、跟踪和识别等任务。例如,在人脸识别中,可以使用模板匹配算法来比较一个人脸模板和一组候选人脸,以确定最相似的匹配项。除此之外,模板匹配算法还可以用于文本分析、物体识别等领域。

二、六种模板匹配算法解析

模板匹配函数如下:

cv2.matchTemplate(img, tpl, method) 

其中,各参数含义如下:

  • img:原始图像,即需要在其中查找模板的图像。
  • tpl:模板图像,即需要查找的图像模式。
  • method:指定模板匹配的方法,可以是以下几种方法之一。
1、平方差匹配法method=TM_SQDIFF

首先,其公式如下:

opencv模板匹配6种方法,opencv,人工智能,计算机视觉

T为模板图像,I为匹配图像;在匹配图像的(x,y)位置,向右x’,向下y’ 框定识别区域。通过计算模板与图像区域的平方差来进行匹配,最好的匹配值为0,匹配越差,匹配值越大。

2、归一化平方差匹配法method=TM_SQDIFF_NORMED

公式如下:

opencv模板匹配6种方法,opencv,人工智能,计算机视觉

其中,R(x,y)表示原始图像中以(x,y)为中心的区域与模板的归一化平方差匹配程度。分母部分是对原始图像区域和模板图像的像素值进行归一化处理,使得匹配结果不受图像亮度和对比度的影响。

这种方法通过计算归一化的平方差来衡量原始图像与模板图像的相似性。最佳匹配结果为0,表示两个图像完全匹配。匹配越差,匹配值越大,但最大不会超过1。

3、相关匹配法method=TM_CCORR

公式如下:

opencv模板匹配6种方法,opencv,人工智能,计算机视觉

其中,R(x,y)表示原始图像中以(x,y)为中心的区域与模板的相关性。x'y'遍历模板图像的所有像素坐标。T(x',y')表示模板图像在(x',y')位置的像素值,I(x+x',y+y')表示原始图像在(x+x',y+y')位置的像素值。

这种方法通过计算模板和图像区域的内积来衡量它们的相似性。较大的值表示较好的匹配,而较小的值表示较差的匹配。最佳匹配位置在值最大的地方。

4、归一化相关匹配法method=TM_ CCORR_NORMED

公式如下:

opencv模板匹配6种方法,opencv,人工智能,计算机视觉

其中,R(x,y)表示原始图像中以(x,y)为中心的区域与模板的归一化相关性。分母部分对模板图像和原始图像区域的像素值进行归一化处理。

这种方法通过计算归一化的相关性来衡量模板和图像的相似性。最佳匹配结果为1,表示两个图像完全匹配。匹配越差,匹配值越小,但不会小于-1。

5、系数匹配法method=TM_CCOEFF

公式如下:

opencv模板匹配6种方法,opencv,人工智能,计算机视觉

其中:

opencv模板匹配6种方法,opencv,人工智能,计算机视觉

opencv模板匹配6种方法,opencv,人工智能,计算机视觉

这种方法通过计算源图像与模板的归一化相关性来衡量它们的相似性。最佳匹配结果在值等于1处,表示完全匹配。匹配越差,匹配值越小,但不会小于-1。

6、化相关系数匹配法 method=TM_CCOEFF_NORMED

公式如下:

opencv模板匹配6种方法,opencv,人工智能,计算机视觉

这种方法是相关系数匹配法的归一化版本。它使用源图像与其均值的差、模板与其均值的差二者之间的相关性进行匹配,并将结果归一化。通过计算归一化的相关性系数来衡量源图像与模板的相似性。最佳匹配结果为1,表示完美匹配。匹配越差,匹配值越小,但不会小于-1。

三、模板匹配案例应用

在日常生活中,可乐瓶是随处可见的,可以通过截取瓶上的包装名,通过模式匹配判断是否是同一品牌的可乐。

代码展示:

kele = cv2.imread('kele.png')
template = cv2.imread('template.png')

h,w = template.shape[:2]
res = cv2.matchTemplate(kele,template,cv2.TM_CCOEFF_NORMED) #cv2.minMoxLoc可以获歌妇阵中的及小值和最人值,以及盘小值的索引号和及人值的索引号
min_val,max_val,min_loc,max_loc = cv2.minMaxLoc(res)#最小值,最大值,最小值位置,最大值位置
top_left = max_loc
bottom_right = (top_left[1]+w,top_left[0]+h)
kele_template = cv2.rectangle(kele,top_left,bottom_right,(0,255,0),2)#绘制矩形
cv2.imshow('kelee',kele_template)
cv2.waitKey(10000)

本案例使用归一化相关匹配法进行模板匹配。

案例图像展示:

opencv模板匹配6种方法,opencv,人工智能,计算机视觉

模板图像:

opencv模板匹配6种方法,opencv,人工智能,计算机视觉

模板匹配结果展示:

opencv模板匹配6种方法,opencv,人工智能,计算机视觉

四、总结

随着从简单的测量(平方差)到更复杂的测量(相关系数),我们可获得越来越准确的匹配(同时也意味着越来越大的计算代价)。文章来源地址https://www.toymoban.com/news/detail-850358.html

到了这里,关于基于OpenCV的模板匹配算法探索与实践的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【OpenCV-Python】——单/多模板匹配&分水岭算法图像分割&图像金字塔&交互式前景提取

    目录 前言: 1、模板匹配 1.1 单目标匹配 1.2 多目标匹配 2、图像分割

    2024年02月07日
    浏览(35)
  • OpenCV笔记:模板匹配 cv2.matchTemplate()、cv2.minMaxLoc() 与 绘制矩形 cv2.rectangle() 方法介绍

            模板匹配是用来在一副大图中搜寻查找模版图像位置的方法。绘制矩形是用来将模版图像的匹配结果展示出来的方法。         模板匹配实现简单(2~3行代码),计算效率高,不需要执行阈值化、边缘检测等操作来生成二值化图像。 但是: 如果输入图像中存

    2024年02月04日
    浏览(31)
  • OpenCV 模板匹配 matchTemplate

    模板匹配是一项在一副图像中寻找与另一幅模板图像最匹配(相似)部分的技术。模板匹配不是基于直方图的,而是通过在输入图像上滑动图像块(模板)同时对比相似度,来对模板和输入图像进行匹配的一种方法。 应用: (1)目标查找定位 (2)运动物体跟踪 image:待搜

    2024年02月04日
    浏览(49)
  • OpenCV(十九):模板匹配

    1.模板匹配:      OpenCV提供了一个模板匹配函数,用于在图像中寻找给定模板的匹配位置。 2.图像模板匹配函数matchTemplate  void matchTemplate( InputArray image, InputArray templ, OutputArray result, int method, InputArray mask = noArray() ); image:待模板匹配的原图像,图像数据类型为CV 8U和CV 32F两者中

    2024年02月09日
    浏览(30)
  • OpenCV中的模板匹配

    OpenCV中的模板匹配 模板匹配是一项常见的计算机视觉任务,其目的是从输入图像中找到与给定模板最相似的部分。在OpenCV中,我们可以使用模板匹配算法来识别某个图案或对象在另一个图像中的位置。本文将介绍如何使用OpenCV进行模板匹配,并提供相应的源代码。 1.读取图像

    2024年02月06日
    浏览(32)
  • Opencv——图像模板匹配

    什么是模板匹配呢? 看到这里大家是否会觉得很熟悉的感觉涌上心头!在人脸识别是不是也会看见 等等。 模板匹配可以看作是对象检测的一种非常基本的形式。使用模板匹配,我们可以使用包含要检测对象的“模板”来检测输入图像中的对象。 参数:(img: 原始图像、

    2024年02月16日
    浏览(29)
  • opencv#27模板匹配

         例如给定一张图片,如上图大矩阵所示,然后给定一张模板图像,如上图小矩阵。      我们在大图像中去搜索与小图像中相同的部分或者是最为相似的内容。比如我们在图像中以灰色区域给出一个与模板图像尺寸大小一致的区域,通过比较灰色区域中的内容与模板中

    2024年01月23日
    浏览(31)
  • 用OpenCV进行模板匹配

    今天我们来研究一种传统图像处理领域中对象检测和跟踪不可或缺的方法——模板匹配,其主要目的是为了在图像上找到我们需要的图案,这听起来十分令人兴奋。 所以,事不宜迟,让我们直接开始吧! 模板匹配的算法的核心十分简单:它将模板与源图像中的每个部分进行

    2024年02月10日
    浏览(33)
  • opencv 多角度模板匹配

    总结一下实现多角度模板匹配踩的坑 一 、多角度匹配涉及到要使用mask,首先opencv matchTemplateMask自带的源码如下: 可以看到使用用了四次dft来计算卷积,目标图像要与mask卷三次,来计算目标图像在模板区域内的和,平方和。其中最后一次CCorr(I, mask2)可以省略掉,它跟CCorr(I

    2024年02月07日
    浏览(34)
  • 008 OpenCV matchTemplate 模板匹配

    目录 一、环境 二、模板匹配算法原理 三、代码演示 本文使用环境为: Windows10 Python 3.9.17 opencv-python 4.8.0.74 cv.matchTemplate 是OpenCV库中的一个函数,用于在图像中查找与模板匹配的特征。它的主要应用场景是在图像处理、计算机视觉和模式识别等领域。 算法原理: cv.matchTempl

    2024年02月05日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包