У меня есть изображение, и я хотел бы вычислить несколько сверток на нем с разными ядрами. Минимальный рабочий пример:
from scipy import signal
import numpy as np
kernels = np.zeros((8,9))
kernels[:,4] = 1
for i in range(len(kernels)):
kernels[i,np.floor(i*5/4).astype(int)] = -1
kernels = kernels.reshape((8,3,3))
A = np.array([[0,0,0,0,0],[0,0,0,0,0],[0,0,1,0,0],[0,0,0,0,0],[0,0,0,0,0]])
np.array([signal.convolve2d(A,kernels[i],'same') for i in range(8)])
, который возвращает массив, содержащий все (в данном случае 8) свертки. Поскольку ни numpy, ни scipy не принимают 3d-ядра для 2-й свертки, я не вижу более приятного способа, кроме описанного выше :(
Поскольку я пытаюсь оптимизировать функцию с помощью numba, я хотел бы свести к минимуму "python" - часть кода, и хотелось бы знать, есть ли numpy -й способ сделать это, предпочтительно в виде как можно меньших вызовов numpy: D
С уважением,
Спасибо