【问题标题】:Autocorrelation with cupy与 cupy 的自相关
【发布时间】:2020-04-27 23:35:26
【问题描述】:

我想在 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()

CPU result

GPU result

【问题讨论】:

  • 如果 CPU 计算使用 scipy.ndimage.correlate 而不是 scipy.signal.correlate2d,差异是否仍然存在?
  • yes scipy.signal.correlate 给出与 correlate2d 相同的结果

标签: python gpu cupy autocorrelation


【解决方案1】:

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

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

【讨论】:

  • 顺便说一句:scipy.ndimage.correlate 也使用 mode='reflect' 作为默认值...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多