模板匹配算法是一种在目标图像中寻找与模板图像相似区域的方法,模板匹配就是拿一个模板图片在一张比模板图像要大的搜索图像上寻找与模板图像相似的区域,以此来得到目标在搜索图像上的位置,其核心是将模板图像在待搜索图像上从左到右、从上到下依次逐像素平移滑动,每次滑动时计算模板图像区域内像素与当前待搜索图像区域内的像素的相似程度,相似度越高,说明匹配的可能性越大。
OpenCV 的模板匹配是一种在较大图像中搜索和查找模板图像位置的方法,通过 cv.matchTemplate() 函数实现。
1、基本原理
- 滑动窗口比较:模板匹配的基本思想是将模板图像在输入图像上滑动(如同二维卷积),逐像素地计算模板和目标图像每个区域之间的相似度。
- 结果矩阵:对于输入图像的每个位置,计算模板与该位置下图像块的匹配度,并将结果存储在一个结果矩阵中。结果矩阵的大小为 (W-w+1, H-h+1),其中 WxH 是输入图像的尺寸,wxh 是模板图像的尺寸。
2、匹配方法
OpenCV 提供了多种匹配方法,每种方法都有其特点和适用场景:
- 平方差(cv.TM_SQDIFF):计算模板与图像区域的像素值差异的平方和。匹配度越低,表示匹配越好。
- 归一化平方差(cv.TM_SQDIFF_NORMED):归一化的平方差,结果范围在 [0,1] 之间。
- 相关性(cv.TM_CCORR):计算模板与图像区域的相关性。
- 归一化相关性(cv.TM_CCORR_NORMED):归一化的相关性ÿ