1

我想计算 GPU 上图像的自相关。但是,当我使用 cupy 相关函数时,我得到的结果与 CPU 计算不同。是因为 cupyx.scipy.ndimage.correlate 通过统一图像的自相关自动归一化结果吗?

import numpy as np
import scipy.signal as sc
import cupy as cp
import cupyx.scipy.ndimage as cnd
from matplotlib import pyplot as plt

ones = np.ones((128,128))

corr_cpu = sc.correlate2d(ones,ones)
corr_gpu = cnd.correlate(cp.array(ones),cp.array(ones))

plt.figure()
plt.imshow(corr_cpu)
plt.colorbar()
plt.title('Correlation CPU')

plt.figure()
plt.imshow(cp.asnumpy(corr_gpu))
plt.colorbar()
plt.title('Correlation GPU')
plt.show()

中央处理器结果

GPU结果

4

1 回答 1

1

好的,找到了答案:cupyx.scipy.ndimage.correlate 默认使用 mode='reflect',而 scipy.correlate 使用'constant'。

因此,cupy 的“常量”现在给出与 scipy 函数相同的结果

于 2020-01-10T10:35:38.427 回答