Python 2D自相关fft-减去平均值还是否?

Python 2D自相关fft-减去平均值还是否?,python,image,fft,correlation,cross-correlation,Python,Image,Fft,Correlation,Cross Correlation,我试图使用python(scipy.sig.fftconvolve)计算图像的2d自动相关和互相关。就相关性而言,人们通常希望减去平均值。然而协方差方程表明 E[(X-E[X])(Y-E[Y])]==E[XY]-E[X]E[Y] 这意味着,理论上,如果我在做自相关之前减去平均值,或者如果我在相关之后减去均方值,我应该能够得到相同的结果。这适用于峰值或直流分量的情况,但不适用于图像的其余部分。它们看起来不一样,这里有一个例子 及 那么哪条路才是正确的路

我试图使用python(scipy.sig.fftconvolve)计算图像的2d自动相关和互相关。就相关性而言,人们通常希望减去平均值。然而协方差方程表明

E[(X-E[X])(Y-E[Y])]==E[XY]-E[X]E[Y]

这意味着,理论上,如果我在做自相关之前减去平均值,或者如果我在相关之后减去均方值,我应该能够得到相同的结果。这适用于峰值或直流分量的情况,但不适用于图像的其余部分。它们看起来不一样,这里有一个例子


那么哪条路才是正确的路

首先考虑恒定数据的情况,并在边界上用零填充计算自相关。结果将是1D中的三角形或2D中的金字塔。如果你现在对这些数据施加一个小的波动,你仍然会看到三角形或金字塔

但是如果你减去平均值,三角形/金字塔就会消失,剩下的只是波纹的自相关。这可能是你想要的

请注意这两个数字的颜色条比例的差异。你不太可能在第一个图形中看到第二个图形的底层结构,其中金字塔结构占主导地位


因此,简而言之,对于零填充自相关,您可能希望减去平均值作为计算的第一步。

您如何处理边界?如果你把所有超出边界的东西都看成零,那么如果你不减去平均值,你会得到一个大的三角形叠加(或者2D中的金字塔),恒定的平均值消失在零地带。我是零填充,所以是的,我看到了你提到的金字塔结构。有没有更好的方法来处理边界(如果我不希望它包裹在实际图像上的话)?第1部分:有三种边界处理方法,前两种你已经提到过:1)零填充;2) 循环数据;3) 将小样本数据与完整数据集关联,并保持在边界内。如果您正在寻找相对于完整数据集大小较小的功能,那么3可以很好地工作。第二部分:我认为无趣但往往势不可挡的金字塔结构是减去平均数的一个足够好的理由(即,你展示的数学并没有真正考虑到这种影响)。