两个图像之间的相关性

5
我正在尝试在两个大小为PXP的图像f1和f2之间找到以下相关性。
我已经编写了一个for循环程序,但我认为内置函数会更快。
Matlab中哪个函数可以帮助我计算这个? 如果两个图像的大小都是MXN,有人能告诉我这个公式会如何改变或者这个函数是否能够处理它。
编辑:
是否有比xcorr2更快的函数可以帮助我看到它仅需要具有未移位图像的相关值时需要太长时间。

如果你需要相关性,那么它只是两个数组 f(:) 居中(均值和方差)后的 点积。这非常快速,并且可以通过 corr2 来完成:输入 edit corr2 查看如何操作。如果你需要交叉相关性,则有 xcorr2imfilter,但由于计算量大,它们无法快速处理。 - Serg
3个回答

9

这是用于计算两个图像(矩阵)之间相关性(系数)的函数:

r = corr2(A,B) 计算A和B之间的相关系数,其中A和B是大小相同的矩阵或向量。

而xcorr2(A,B)则解决了交叉相关问题。


显然这是原帖的要求,所以给你加一分。 - Eitan T

7

MATLAB为此提供了xcorr2函数。我猜你的代码看起来会像这样:

r = xcorr2(f1, f2) / (P .^ 2)

其中f1f2是两个图像。得到的矩阵r是一个(2P-1)×(2P-1)矩阵,其每个元素反映了f1和f2之间的相似度量,当两个图像沿着与该元素偏移量对应的中心偏移时。

请注意,如果您只对两个未移位图像之间的相关性感兴趣,则应保存执行时间并使用corr2,就像@TheByzantine在他的回答中建议的那样。


对于 M X N 的图像,它应该给我一个矩阵而不是一个单一的数字吗? - user671805
但是它应该是一个单一的数字,因为这个度量已经被用作两个图像之间的相似度量。或者它会是sum(sum(r))吗? - user671805
@user671805 不是的,r 应该是一个矩阵,其中每个元素反映了 f1f2 之间的相似度测量,以及该元素与中心的相应偏移(相位)。例如,元素 (0, 0) 显示了图像之间的相关性,如果一个相对于另一个在每个轴上移动 P 个像素。这意味着,如果您想要一个告诉您没有任何移位的图片有多相似的数字,那么就是在 (P, P) 位置的元素。 - Eitan T
@Eitan,您提到的链接讨论了将一个矩阵滑动到另一个矩阵上面...只是为了确认,当两个矩阵完全重合时,获取相关性的方法是否等同于在xcorr2中找到(M,N)位置? - user671805
嘿,有没有更快的方法,因为我只想要未移位的值?计算时间太长了... - user671805
显示剩余2条评论

6

使用xcorr2函数。例如:

 C=xcorr2(A,B)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接