Автокорреляция с Cupy - PullRequest
       17

Автокорреляция с Cupy

1 голос
/ 10 января 2020

Я хочу оценить c автокорреляцию изображения на графическом процессоре. Однако, когда я использую функцию корреляции 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

Результат GPU

1 Ответ

0 голосов
/ 10 января 2020

Хорошо, нашел ответ: cupyx.scipy.ndimage.correlate использует mode = 'refle' по умолчанию, тогда как scipy.correlate использует 'constant'.

Так что 'constant' для cupy теперь дает тот же результат как функция scipy

...