我的老板和我不同意 matchTemplate() 的 CV_TM_CCORR_NORMED 方法发生了什么;在openCV中。
你能解释一下这里发生了什么,尤其是这个方程的平方根方面。
我的老板和我不同意 matchTemplate() 的 CV_TM_CCORR_NORMED 方法发生了什么;在openCV中。
你能解释一下这里发生了什么,尤其是这个方程的平方根方面。
相关性是两个信号、向量等的相似性。假设你有向量
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将比 大得多。B
template
A
template
B(x)template
A(x)template
如 opencv 文档中所述的公式:
在实践中,如果你使用互相关,如果图像的一部分有亮度,那部分和你的模板之间的相关性会更大。但是如果你使用归一化的互相关,你会得到更好的结果。
认为公式是这样的:
在逐个元素相乘之前,您正在对两个矩阵进行归一化。通过将矩阵中所有元素的平方和除以消除增益;如果所有元素都很大,则除数很大。
认为您正在划分矩阵中所有元素的总和。如果像素值位于较亮的区域,则其相邻像素值将很高。通过划分其邻域的总和,您正在消除照明效果。这是用于像素值的图像处理总是正的。但是对于 2D 矩阵,可能会有一些负值,所以平方会忽略符号。