2-я свертка с помощью Python и numpy

Я пытаюсь выполнить 2-ю свертку в Python с помощью numpy

У меня есть 2-й массив следующим образом с ядром H_r для строк и H_c для столбцов

data = np.zeros((nr, nc), dtype=np.float32)

#fill array with some data here then convolve

for r in range(nr):
    data[r,:] = np.convolve(data[r,:], H_r, 'same')

for c in range(nc):
    data[:,c] = np.convolve(data[:,c], H_c, 'same')

data = data.astype(np.uint8);

Это не производит вывод, который я ожидал, делает этот взгляд кода хорошо, я думаю, что проблема с кастингом от float32 до 8 битов. Что лучший способ состоит в том, чтобы сделать это

Спасибо

14
задан mikip 15 March 2010 в 15:44
поделиться

1 ответ

Поскольку у вас уже есть ядро, вы должны просто использовать функцию sepfir2d из scipy:

from scipy.signal import sepfir2d
convolved = sepfir2d(data, H_r, H_c)

С другой стороны, код, который у вас есть, выглядит нормально ...

4
ответ дан 1 December 2019 в 14:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: