Так что я использую функцию scipy.ndimage.filters.convolve
.Я понял, как это работает для 2D матриц из документации .Но когда я применяю это к 3D матрицам, это дает результаты, которые я не могу интерпретировать.Например:
In[80]: a = np.array([[[1,2,3], [1,2,3], [1,2,3]],[[1,2,3], [1,2,3], [1,2,3]],[[1,2,3], [1,2,3], [1,2,3]]])
In[81]: b = np.array([[[1,2,3], [1,2,3], [1,2,3]],[[1,2,3], [1,2,3], [1,2,3]],[[1,2,3], [1,2,3], [1,2,3]]])
In[82]: scimg.convolve(a, b, output = None, mode = 'constant')
Out[83]:
array([[[ 16, 40, 48],
[ 24, 60, 72],
[ 16, 40, 48]],
[[ 24, 60, 72],
[ 36, 90, 108],
[ 24, 60, 72]],
[[ 16, 40, 48],
[ 24, 60, 72],
[ 16, 40, 48]]])
Я понял свертку из этого поста .Таким образом, по мне, индекс (0, 0, 0) должен быть 8. Аналогично (0, 0, 1) должно быть 20. Где я иду неправильно в понимании?
РЕДАКТИРОВАТЬ: Буду признателен, даже если кто-нибудь скажет мне, как работает модуль для изображений nD (или каналов) с фильтрами nD.