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

2023-12-20 07:10:06

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博客

文章来源:https://blog.csdn.net/newxiaoou/article/details/135086969
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。