scipy.ndimage.filters.convolve 究竟如何用于 3D 输入?

How exactly scipy.ndimage.filters.convolve works for 3D input?

我想知道当输入图像的形状为 RxCxD 且滤波器的形状为 rxcxD 时,它如何计算输出 (RxCxD) 的每个元素?

PS。我想得到大小为 RxCx1

的输出

在 2D 中更容易思考,但在 3D 中的工作方式相同。 output[i, j, k] = np.sum(input[i:i+r, j:j+c, k:k+D] * filter) 的单个值输出大小实际上将是 RxCxD,但您可能只想在三维中保留一个切片。即,您可能想要的是 k = (D-1)//2 切片:convolve(input, filter)[..., (D-1)//2] 因为您似乎不想在 k 维度上移动:即,取第三维的中间给您完整的情况重叠(无偏移)。