opencv函数解读之模板匹配函数

阅读: 评论:0

opencv函数解读之模板匹配函数

opencv函数解读之模板匹配函数

模板匹配,顾名思义是利用给定的已知模板与待匹配的图像或数组计算匹配度,以达到寻找目标的目的。模板可以是矩形块也可以是一维数组,如果模板是一个矩阵,一般待匹配的数据也矩阵,如果模板是一个一维数据,那么待匹配的数据也最好是一维数据。模板匹配在图像处理中应用较为广泛,如通过设置匹配度的阈值用在异常检测中,通过阈值设定寻找给定的目标等等。

目录

函数说明

执行原理:


函数说明

先看opencv3中定义的模板匹配的函数:

@param image Image where the search is running. It must be 8-bit or 32-bit floating-point.
@param templ Searched template. It must be not greater than the source image and have the same
data type.
@param result Map of comparison results. It must be single-channel 32-bit floating-point. If image
is f$W times Hf$ and templ is f$w times hf$ , then result is f$(W-w+1) times (H-h+1)f$ .
@param method Parameter specifying the comparison method, see #TemplateMatchModes
@param mask Mask of searched template. It must have the same datatype and size with templ. It is
not set by default. Currently, only the #TM_SQDIFF and #TM_CCORR_NORMED methods are supported.void matchTemplate( InputArray image, InputArray templ, OutputArray result, int method);

翻译下:

image是输入图像,一般是Mat类数组;

templ是模板数据,一般也是Mat类数组,长宽必须小于输入图像image的长宽;

result是输出结果,大小为(w1-w2+1,h1-h2+1),其中w1为输入图像image的宽,w2为模板的宽,h1为输入图像image的高,h2为模板的高。

method是模板匹配的匹配计算方式,可设置的参数有:

TM_SQDIFF:平均差匹配法

TM_SQDIFF_NORMED:归一化平均差匹配法

TM_CCORR:相关匹配法

TM_CCORR_NORMED:归一化相关匹配法

TM_CCOEFF:系数匹配法

TM_CCOEFF_NORMED:归一化系数匹配法

执行原理:

这里仅拿归一化相关匹配展开说明,定义如下:

x',y'为模板数据的坐标,T(x',y')为所在坐标的值,同理I(x'+x,y'+y)为图像在(x+x',y+y')处的坐标值,为求和符号,举例说明:

///初始化两个一维数组,使用Mat类
Mat mat_A = (Mat_<uchar>(1, 10) << 1, 2, 3, 4, 5, 6, 7, 8, 9, 10);///待匹配的数组,
这里注意,函数的Mat数据类型只支持8位字符型或32为浮点型,所以类型定义了uchar
Mat mat_B = (Mat_<uchar>(1, 3) << 1, 2, 3);//模板

 第一组数据计算的是 1 2 3与1 2 3的匹配度,第二组数据计算的是 1 2 3与2 3 4的匹配度,最后一组计算的是1 2 3与8 9 10的匹配度。一共计算了8次,最好的结果应该是一个一维长度为8的数组,符合w1-w2+1,即10-3+1=8;

通过代码输出运算结果:

Mat mat_A = (Mat_<uchar>(1, 10) << 1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
Mat mat_B = (Mat_<uchar>(1, 3) << 1, 2, 3);
Mat res_C(1, 8, CV_8UC1);
Mat res_D(1, 8, CV_8UC1);
matchTemplate(mat_A, mat_B, res_C, TM_CCORR);
matchTemplate(mat_A, mat_B, res_D, TM_CCORR_NORMED);
cout << res_C << endl<< res_D << endl;

本文发布于:2024-01-30 04:52:16,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170656154019351.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:函数   模板   opencv
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23