9

我的老板和我不同意 matchTemplate() 的 CV_TM_CCORR_NORMED 方法发生了什么;在openCV中。

你能解释一下这里发生了什么,尤其是这个方程的平方根方面。

4

1 回答 1

19

相关性是两个信号、向量等的相似性。假设你有向量

 template=[0 1 0 0 1 0 ]   A=[0 1 1 1 0 0] B =[ 1 0 0 0 0 1]  

如果您在向量和模板之间执行相关性以获得哪个更相似,您将看到A相似于template更多,B因为 1 放置在相应的索引中。这意味着更多的非零元素对应于向量之间的相关性。

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

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

这里很明显和之间A的相关性相同template但大于和。在归一化互相关分母中,公式的一部分正在解决这个问题。如果您检查下面的公式,您可以看到分母 for将比 大得多。BtemplateAtemplateB(x)templateA(x)template

如 opencv 文档中所述的公式: 在此处输入图像描述

在实践中,如果你使用互相关,如果图像的一部分有亮度,那部分和你的模板之间的相关性会更大。但是如果你使用归一化的互相关,你会得到更好的结果。

认为公式是这样的:

在此处输入图像描述

在逐个元素相乘之前,您正在对两个矩阵进行归一化。通过将矩阵中所有元素的平方和除以消除增益;如果所有元素都很大,则除数很大。

认为您正在划分矩阵中所有元素的总和。如果像素值位于较亮的区域,则其相邻像素值将很高。通过划分其邻域的总和,您正在消除照明效果。这是用于像素值的图像处理总是正的。但是对于 2D 矩阵,可能会有一些负值,所以平方会忽略符号。

于 2015-02-16T11:43:43.963 回答