3D局部平均值并使用3D卷积

时间:2018-11-12 22:49:15

标签: python convolution

我是python的新手,对Matlab熟悉得多。如果我的问题不适合该论坛,请随时指出。

我正试图以非常快的速度得出本地平均值。就像我试图通过为每个新像素取多个像素的平均值来减少图像中的像素数量一样,只是我是在3D模式下进行。

想象一个1000x1000x6的数组。我将此数组划分为10x10x3的多个小数组。然后,我想计算所有这些微小数组的平均值,然后将它们放回一起以构建我的数组。

我在Matlab上的实现方式是使用convn(array,seed,'valid'),它是一个多维卷积函数。

在python中最简单的方法是什么? 谢谢 RMT

1 个答案:

答案 0 :(得分:0)

我认为您可以找到最接近convn的事物是SciPy的convolve。下面是示例

import numpy as np
from scipy.ndimage import convolve
M = np.random.random((1000, 1000, 6))
seed = np.ones((3, 3, 3)) * 0.1 / 27.
N = convolve(M, seed, mode='constant', cval=0)

mode='constant', cval=0只是零填充。

不确定这是否是您所需要的,但这只是一个开始

文档:https://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.ndimage.filters.convolve.html