关于python:如何使用Numpy查找两个图像之间的相关性

How to find correlation between two images using Numpy

这是受这个问题的启发。

我正在尝试使用 Numpy 查找两个灰度图像之间的相关性。使用 SciPy\\'s correlate2d 我们可以找到这个。我找到了 Numpy 的 corrcoef,但是当我与 correlate2d 进行比较时,结果有所不同。因此这个问题 - Numpy 中是否有 correlate2d 等价物?


据我所知,这会产生与 scipy.correlate2d() 相同的结果,其中 img1img2 是表示灰度(即单通道)图像的二维数组:

1
2
3
4
5
6
7
8
import numpy as np

pad = np.max(img1.shape) // 2
fft1 = np.fft.fft2(np.pad(img1, pad))
fft2 = np.fft.fft2(np.pad(img2, pad))
prod = fft1 * fft2.conj()
result_full = np.fft.fftshift(np.fft.ifft2(prod))
corr = result_full.real[1+pad:-pad+1, 1+pad:-pad+1]

单像素裁剪调整不是很优雅,但对你来说这是 FFT:很繁琐。

我只想说 scipy 非常好用,我强烈推荐它。话虽如此,对于我尝试过的单个案例,这种方法似乎确实要快得多。