【问题标题】:Correlation among 2 images2幅图像之间的相关性
【发布时间】:2012-11-18 22:59:32
【问题描述】:

我试图在两个图像 f1 和 f2 之间找到以下相关性,其中图像的大小为 PXP。

我已经为此编写了一个 for 循环程序,但我认为内置函数会更快。

matlab 中的哪个函数可以帮助我计算这个?

另外,如果两个图像的大小都是 M X N,有人可以告诉我这个公式将如何变化,或者函数是否能够处理它。

编辑:

有没有比 xcorr2 更快的函数可以帮助我看到当我只需要关联未移位图像的值时花费太多时间......

【问题讨论】:

  • 如果你需要相关性,它只是两个数组f(:)之间的dot product在居中(均值和方差)之后。这非常快,由corr2 完成:输入edit corr2 以了解如何操作。如果你需要互相关,那么有xcorr2或imfilter,但由于计算量大,它们不能很快。

标签: matlab image-processing matrix correlation


【解决方案1】:

这是用于在两个图像(矩阵)之间进行相关(系数)的函数:

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

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

【讨论】:

  • 显然这就是 OP 想要的,所以为你 +1。
【解决方案2】:

MATLAB 有 xcorr2 就是为了这个目的。我想你的代码看起来像:

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

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

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

【讨论】:

  • 对于两个 M X N 图像是否应该给我一个矩阵而不是一个数字?
  • @user671805 是的,得到的相关矩阵将是 (2P-1)x(2P-1)。
  • 但它应该是一个数字,因为该度量已被用作 2 个图像之间的相似性度量......或者它会是 sum(sum(r)) 吗?
  • @user671805 不,r 应该是一个矩阵,其中每个元素反映了f1 和f2 之间的相似性度量,以及相应的偏移量(相位)从中心的那个元素。例如,元素 (0, 0) 显示图像之间的相关性,如果一个在每个轴上相对于另一个移动了 P 个像素。这意味着如果你想要一个数字来说明图片的相似程度而没有任何偏移,那就是 (P, P) 位置的元素。
  • @Eitan 您提到的链接谈到在另一个矩阵上滑动一个矩阵......只是检查,当两个矩阵正好在彼此之上时,以获得共同关系相当于在 xcorr2 中找到 ( M , N ) 位置?
【解决方案3】:

使用xcorr2 函数。例如:

 C=xcorr2(A,B)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-03
    • 2012-04-16
    • 2014-02-27
    • 1970-01-01
    • 1970-01-01
    • 2016-12-11
    • 2021-11-05
    • 1970-01-01
    相关资源
    最近更新 更多