关于关联:在Matlab中解释corr2函数

Explaining corr2 function in Matlab

有人可以向我解释MATLAB中的相关函数corr2吗?我知道这是用于2D比较对象的相似性,但是在等式enter image description here中,我怀疑它是AB(可能是用于比较的矩阵),还有AmnBmn的原因。铅>

我不确定MATLAB如何执行此功能,因为我发现在几种情况下,并不是针对整个图像(矩阵)执行关联,而是将图像分为多个块,然后比较一张图片的块带有另一张图片的块。

在MATLAB的文档中,像在MATLAB的文档中的其他函数中一样(例如,参考所用的书),并未将corr2方程式作为计算方程式本身的方式的参考点从何处进行解释。


相关系数是表示两个图像之间相对于它们各自的像素强度的相似性的数字。

如您所指出的,此函数用于计算该系数:

enter image description here

此处A和B是您要比较的图像,而下标索引m和n表示图像中的像素位置。 Matab基本上是针对两个图像中的每个像素位置计算该像素处的强度值与整个图像的平均强度之间的差,该强度值用字母表示,上面带有一条直线。

正如Kostya指出的那样,在命令窗口中键入edit corr2将向您显示Matlab用于计算相关系数的代码。公式基本上是这样的:

1
2
3
a = a - mean2(a);
b = b - mean2(b);
r = sum(sum(a.*b))/sqrt(sum(sum(a.*a))*sum(sum(b.*b)));

其中:
a是输入图像,b是您要与a比较的图像。

如果我们分解公式,则会看到a - mean2(a)b-mean2(b)是上述公式的分子中的元素。 mean2(a)等效于mean(mean(a))mean(a(:)),即整个图像的平均强度。仅计算一次。

代码的第三行计算系数。在此,sum(sum(a.*b))计算元素公式中存在的两倍和,即分别考虑每个像素位置。请注意,使用sum(a)会分别计算每列中的总和,因此,要获得一个值,您需要两次应用sum

在分母中发生的情况几乎相同,但是对a-mean2(a)^2b-mean2(b)^2执行计算。您可以看到这是一种标准化过程,其中您考虑了每个单独图像之间的像素强度差异。

关于您的最后评论,您可以将图像分解成小块,然后计算它们之间的相关系数;这样可以为非常大的图像节省一些时间,但是由于所有内容都是矢量化的,因此计算速度非常快。我猜这在分布式处理中可能很有用。当然,两个图像块之间的相关系数不一定与整个图像的相关系数相同。

出于好奇,您可以看一下这篇文章,该篇文章突出了在使用相关系数进行图像比较时的一些注意事项。

希望事情变得更加清晰!