我是 Python 新手,但对 Matlab 更加熟悉。如果我的问题不适合这个论坛,请随时指出。
我正在尝试以非常快的速度取得本地平均值。这就像我试图通过为每个新像素计算多个像素的平均值来减少图像中的像素数量,但我是在 3D 中进行的。
想象一个 1000x1000x6 的数组。我将这个数组分成多个 10x10x3 的小数组。然后,我想计算所有这些微小数组的平均值,并将它们重新组合在一起以重建我的数组。
我在 Matlab 上的做法是使用 convn(array,seed,'valid')
,这是一个多维卷积函数。
用 python 实现这一点最简单的方法是什么? 谢谢 远程管理技术
最佳答案
我认为您能找到的与 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
关于python - 3D 局部平均值和使用 3D 卷积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53271222/