解释openCV匹配模板的交叉关联和规范化

Joe*_*ons 7 opencv normalization cross-correlation matchtemplate

对于matchTemplate()的CV_TM_CCORR_NORMED方法,我的老板和我不同意这是怎么回事; 在openCV中.

你能解释一下这里发生了什么,特别是这个等式的平方根方面.

Muh*_*san 15

相关性是两个信号,矢量等的相似性.假设你有矢量

 template=[0 1 0 0 1 0 ]   A=[0 1 1 1 0 0] B =[ 1 0 0 0 0 1]  
Run Code Online (Sandbox Code Playgroud)

如果执行向量和模板来获得哪一个更类似之间的相关性,会看到A类似于template超过B因为1个的被放置在对应indexes.This意味着更多的非零元素对应向量之间的相关性更是.

在灰度图像中,值的范围为0-255.让我们这样做:

template=[10 250 36 30] A=[10 250 36 30] B=[220 251 240 210] .

这里显然A是相同template但是B和之间的相关性template大于Atemplate.在归一化的互相关分析器中,公式的一部分正在解决这个问题.如果你检查下面的公式,你可以看到该计分器B(x)template将大于A(x)template.

opencv文档中声明的公式: 在此输入图像描述

实际上,如果使用互相关,如果图像的某个部分存在亮度,则该部分与模板之间的相关性会更大.但如果使用标准化的互相关,则会得到更好的结果.

认为公式是这样的:

在此输入图像描述

在逐个元素相乘之前,你要对两个矩阵进行归一化.通过划分矩阵中所有元素的平方和的根除去增益;如果所有元素都很大,则除数很大.

认为你正在划分矩阵中所有元素的总和.如果一个像素值在一个更亮的区域,那么它的邻居像素值将会很高.通过划分其邻域的总和,你将消除光照效果.这是用于像素值的图像处理总是正的.但是对于2D矩阵,可能存在一些负值,因此平方忽略符号.