c++ opencv模板匹配后是否需要归一化

matchTemplate执行后是否需要归一化处理取决于所使用的匹配方法。‌

OpenCV的matchTemplate函数提供了多种匹配方法,每种方法对结果的处理方式不同:

  1. ‌平方差匹配(cv2.TM_SQDIFF)‌:此方法通过计算模板与图像区域之间的平方差来进行匹配。平方差越小,匹配程度越高。最佳匹配是在结果矩阵中的最小值处找到的,通常不需要归一化处理‌12。

  2. ‌归一化平方差匹配(cv2.TM_SQDIFF_NORMED)‌:与平方差匹配类似,但结果会被归一化到0(完全不匹配)到1(完美匹配)的范围内。这使得比较不同大小的图像或模板时更为方便。最佳匹配同样是在结果矩阵中的最小值处找到的‌12。

  3. ‌相关匹配(cv2.TM_CCORR)‌:此方法通过计算模板与图像区域之间的互相关来进行匹配。互相关值越大,匹配程度越高。最佳匹配是在结果矩阵中的最大值处找到的‌12。

  4. ‌归一化相关匹配(cv2.TM_CCORR_NORMED)‌:与相关匹配类似,但结果会被归一化。归一化后的值在-1(完全不相关)到1(完全相关)之间。这使得比较更加灵活,特别是当模板和图像之间的亮度差异很大时‌12。

  5. ‌系数匹配(cv2.TM_CCOEFF)‌:此方法通过计算模板与图像区域之间的相关系数来进行匹配。相关系数是归一化的协方差,其值在-1(负相关)到1(正相关)之间。值越接近1,匹配程度越高。最佳匹配是在结果矩阵中的最大值处找到的‌12。

  6. ‌归一化系数匹配(cv2.TM_CCOEFF_NORMED)‌:与系数匹配类似,但结果会被归一化。归一化后的值在-1(完全不相关)到1(完全相关)之间‌12。

归一化的作用和效果

归一化处理可以使结果在一定的范围内,便于比较和评估不同图像或模板之间的相似度

 

不做归一化://normalize(dst2, dst2, 0, 1, NORM_MINMAX, -1, Mat()); //归一化

matchTemplate(src, src_template, dst2, TM_SQDIFF_NORMED);
minMaxLoc(dst2, &min, &max, &minPos, &maxPos, Mat());

归一化平方差匹配效果较好,看min值,越接近0越好,供参考

posted @   txwtech  阅读(23)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
历史上的今天:
2024-01-09 55.system.exit()退出-不执行-所在函数方法后续代码
2024-01-09 54.python filter map lambda list配合使用
2023-01-09 python不能发送中文'ascii' codec can't encode characters in position 0-2: ordinal not in range(128)
2023-01-09 python pycharm快捷键
点击右上角即可分享
微信分享提示