本文最后更新于:2024年5月7日 下午
模板匹配是将模板与重叠的图像区域进行比较,以定位重合区域的图像处理方法,本文记录 OpenCV 相关内容实现方法。
简介
模板匹配任务需要将模板在图像中搜索,以确定模板所在位置的一种技术,Python OpenCV 中封装的函数为 cv2.matchTemplate
函数说明
函数引用形式
1 |
|
参数说明
参数 | 含义 |
---|---|
image | 被搜索的图像,模板需要在图像中网格计算损失函数(需要 int8 或 float32 格式的图像) |
templ | 搜索的模板图像,尺寸不能比 image 大,需要和image有相同的图像数据格式 |
method | 指定损失函数计算方法 |
损失函数
method=CV_TM_SQDIFF
$$ R(x, y)=\sum_{x^{\prime}, y^{\prime}}\left(T\left(x^{\prime}, y^{\prime}\right)-I\left(x+x^{\prime}, y+y^{\prime}\right)\right)^{2} $$直接计算均方误差作为损失函数
method=CV_TM_SQDIFF_NORMED
$$ R(x, y)=\frac{\sum_{x^{\prime}, y^{\prime}}\left(T\left(x^{\prime}, y^{\prime}\right)-I\left(x+x^{\prime}, y+y^{\prime}\right)\right)^{2}}{\sqrt{\sum_{x^{\prime}, y^{\prime}} T\left(x^{\prime}, y^{\prime}\right)^{2} \cdot \sum_{x^{\prime}, y^{\prime}} I\left(x+x^{\prime}, y+y^{\prime}\right)^{2}}} $$按照二者向量模长做归一化后计算均方误差损失函数
method=CV_TM_CCORR
$$ R(x, y)=\sum_{x^{\prime}, y^{\prime}}\left(T\left(x^{\prime}, y^{\prime}\right) \cdot I\left(x+x^{\prime}, y+y^{\prime}\right)\right) $$计算互相关函数结果作为损失函数
method=CV_TM_CCORR_NORMED
$$ R(x, y)=\frac{\sum_{x^{\prime}, y^{\prime}}\left(T\left(x^{\prime}, y^{\prime}\right) \cdot I\left(x+x^{\prime}, y+y^{\prime}\right)\right)}{\sqrt{\sum_{x^{\prime}, y^{\prime}} T\left(x^{\prime}, y^{\prime}\right)^{2} \cdot \sum_{x^{\prime}, y^{\prime}} I\left(x+x^{\prime}, y+y^{\prime}\right)^{2}}} $$计算按照模长归一化后的互相关函数结果作为损失函数,个人比较推荐,效果也较好,如果图像并不适于直接使用该参数可以想办法构造出归一化相关损失函数
method=CV_TM_CCOEFF
$$ R(x, y)=\sum_{x^{\prime}, y^{\prime}}\left(T^{\prime}\left(x^{\prime}, y^{\prime}\right) \cdot I^{\prime}\left(x+x^{\prime}, y+y^{\prime}\right)\right) $$去中心化相关损失函数
- 其中:
method=CV_TM_CCOEFF_NORMED
$$ R(x, y)=\frac{\sum_{x^{\prime}, y^{\prime}}\left(T^{\prime}\left(x^{\prime}, y^{\prime}\right) \cdot I^{\prime}\left(x+x^{\prime}, y+y^{\prime}\right)\right)}{\sqrt{\sum_{x^{\prime}, y^{\prime}} T^{\prime}\left(x^{\prime}, y^{\prime}\right)^{2} \cdot \sum_{x^{\prime}, y^{\prime}} I^{\prime}\left(x+x^{\prime}, y+y^{\prime}\right)^{2}}} $$相关系数损失函数
示例引用
1 |
|
参考资料
- https://docs.opencv.org/2.4.13.7/modules/imgproc/doc/object_detection.html?highlight=matchtemplate#cv2.matchTemplate
- https://baike.baidu.com/item/相关系数/3109424?fr=aladdin
“觉得不错的话,给点打赏吧 ୧(๑•̀⌄•́๑)૭”
微信支付
支付宝支付
OpenCV - 图像模板匹配 matchTemplate
https://www.zywvvd.com/notes/study/image-processing/opencv/opencv-matchTemplate/opencv-matchTemplate/