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 (系数匹配法):
- 原理:计算模板与图像的协方差。
- 概念:协方差表示两个变量之间的关联程度,正值表示正相关,负值表示负相关。
- 适用:适用于模板和图像中存在明显对比度差异的情况。
协方差具体计算公式:
在实际操作中,可以使用矩阵运算来高效地计算协方差矩阵。如果 X 和 Y 分别是 m×n 和 m×p 的矩阵,这将产生一个 n×p 的协方差矩阵,
2.TM_CCOEFF_NORMED (归一化系数匹配法):
- 原理:计算模板与图像的归一化协方差。
- 概念:通过标准化协方差,将匹配结果归一化到范围 [-1, 1]。
- 适用:适用于处理不同尺度和对比度的图像。
3.TM_CCORR (相关性匹配法):
- 原理:计算模板与图像的相关性。
- 概念:相关性表示两个信号之间的相似性程度,值越大表示匹配越好。
- 适用:适用于处理模板和图像灰度变化较小的情况。
R(x,y)= [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博客