Rok*_*oki 1 matlab correlation
有人可以向我解释Matlab中的相关函数corr2。我知道这是用于2D比较对象的相似性,但是在等式http://prntscr.com/5e5v5c中,我怀疑它是A和B(可能是用于比较的矩阵),还有Amn和Bmn。
我问是因为我不确定Matlab如何执行此功能,因为我发现在几种情况下,并不是针对整个图像(矩阵)执行相关,而是将图像划分为一个块,然后将(一个图片的)块与块(其他图片)。
在具有corr2方程的Matlab部分中,并未像在Matlab中的其他函数一样,将参考点指向方程本身的执行方式(就像在本书中所取的点以及在何处进行解释的点)。
相关系数是一个数字,代表2个图像之间的相似度以及它们各自的像素强度。
如您所指出的,此函数用于计算该系数:
这里的A和B是您要比较的图像,而下标索引m和n表示图像中的像素位置。Matab基本上是针对两个图像中的每个像素位置计算该像素处的强度值与整个图像的平均强度之间的差,该强度表示为在其上带有直线的字母。
正如Kostya指出的那样,edit corr2
在命令窗口中键入将向您显示Matlab用于计算相关系数的代码。公式基本上是这样的:
a = a - mean2(a);
b = b - mean2(b);
r = sum(sum(a.*b))/sqrt(sum(sum(a.*a))*sum(sum(b.*b)));
Run Code Online (Sandbox Code Playgroud)
其中: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)^2
和执行计算b-mean2(b)^2
。您可以看到这是一种标准化过程,其中您考虑了每个单独图像之间的像素强度差异。
至于您的最后评论,您可以将图像分解成小块,然后计算它们的相关系数。这样可以为非常大的图像节省一些时间,但是由于所有内容都是矢量化的,因此计算速度非常快。我猜这在分布式处理中可能很有用。当然,两个图像块之间的相关系数不一定与整个图像的相关系数相同。
为求好奇,您可以看一下这篇文章,它突出了使用相关系数进行图像比较的一些注意事项。
希望这使事情变得更加清晰!