一:什么是模板匹配?
在opencv教程中这样解释模板匹配:
模板匹配是一项在一幅图像中寻找与另一幅模板图像最匹配(相似)部分的技术.
这里说的模板是我们已知的小图像,模板匹配就是在一副大图像中搜寻目标。模板就是我们已知的在图中要找的目标,且该目标同模板有相同的尺寸、方向和图像,通过一定的算法可以在图中找到目标,确定其坐标位置。
二:模板匹配的原理
用通俗的语言来解释模板的匹配原理:
在要检测的图像上,从左到右,从上到下遍历这一幅图像,从上到下计算模板与重叠子图像的像素匹配度,如果匹配的程度越大,这说明相同的可能性越大。
实现过程:
①:准备两幅图像:
图像 (i): 在这幅图像里,我们希望找到一块和模板匹配的区域 模板 (t): 将和原图像比照的图像块 ②:为了确定匹配区域, 我们滑动模板图像和原图像进行比较
③:使用模板遍历图像
通过滑动, 从左往右,从上往下. 在每一个位置, 都进行一次度量计算来表明模板和原图像的特定区域的相似性。
对于 t 覆盖在 i 上的每个位置,你把度量值保存到结果图像矩阵(r) 中. 在r中的每个位置 (x,y) 都包含匹配度量值:
上图是使用标准相关匹配方法处理后的结果图像 r . 最白的位置代表最高的匹配. 红色椭圆框住的位置很可能是结果图像矩阵中的最大数值, 所以这个区域被认为是匹配的.
三:使用opencv实现
我们调用opencv中的函数 matchtemplate 实现了模板匹配算法:
①:平方差匹配 method=cv_tm_sqdiff
这类方法利用平方差来进行匹配,最好匹配为0.匹配越差,匹配值越大.
②:标准平方差匹配 method=cv_tm_sqdiff_normed
③:相关匹配 method=cv_tm_ccorr
这类方法采用模板和图像间的乘法操作,所以较大的数表示匹配程度较高,0标识最坏的匹配效果.
④:标准相关匹配 method=cv_tm_ccorr_normed
⑤:相关匹配 method=cv_tm_ccoeff
这类方法将模版对其均值的相对值与图像对其均值的相关值进行匹配,1表示完美匹配,-1表示匹配很差,0表示没有任何相关性(随机序列).
在这里
⑥:标准相关匹配 method=cv_tm_ccoeff_normed
代码实现:
在这次匹配中我们主要使用了matchtemplate和minmaxloc这两个函数:
matchtemplate:函数的完整表达:
matchtemplate(image, templ, method[, result[, mask]])
image:参数表示待搜索源图像,必须是8位整数或32位浮点。
templ:参数表示模板图像,必须不大于源图像并具有相同的数据类型。
method:参数表示计算匹配程度的方法。
result:参数表示匹配结果图像,必须是单通道32位浮点。如果image的尺寸为w x h,templ的尺寸为w x h,则result的尺寸为(w-w+1)x(h-h+1)。
minmaxloc函数的完整表达:
minmaxloc(src[, mask],minval, maxval, minloc, maxloc)
src参数表示输入单通道图像。
mask参数表示用于选择子数组的可选掩码。
minval参数表示返回的最小值,如果不需要,则使用null。
maxval参数表示返回的最大值,如果不需要,则使用null。
minloc参数表示返回的最小位置的指针(在2d情况下); 如果不需要,则使用null。
maxloc参数表示返回的最大位置的指针(在2d情况下); 如果不需要,则使用null。
4-20mA转RJ45,16路模拟量采集模块4-20mA转网口Modbus
8通道16位SAR模数转换器GAD7689(替代AD7689)用于工业CPU主板
AI换脸的真正问题,在生物识别信息收集
MICROCHIP发布2024财年第二季度财报
先进封装增速远超传统封装 中国应加快虚拟IDM生态链建设
什么是模板匹配?模板匹配的原理讲解 图像处理与模板匹配算法
半导体放电管的选择
美国人工智能国安委员会建议遏制中国半导体发展
一种用于短波户外通联的简易双线天线
基于MRAN的 nvNITRO NVMe 存储加速器卡,可实现1.46百万I/O速度
物联网网关在智慧农业行业的应用案例
抓住年轻人的消费习惯!海尔冰箱用食材拼出“国潮”建筑
CES展会上各地供应商展示自己最新最尖端技术
python安装第三方包的八种方法
TDD模式下Rx对Tx的严重影响怎么解决
细数未来“阳光产业”视频监控九大走向
eda怎么封装 eda封装元器件怎么弄 eda的ip核封装
下欧姆龙PLC中断程序的编写
如何保护非放大器
安森美向海拉交付第10亿颗感应传感器IC