使用 Numpy、SciPy 或 Scikit-image 对 2D 数组进行均值过滤器

问题描述 投票:0回答:1

我正在寻找具有 3x3 窗口的 2D 均值滤波器。我尝试过 NumPy:

a = np.arange(25).reshape(5, 5)
b = np.average(a, axis=(0, 1), weights=np.ones((3, 3)))

但失败了:

TypeError: 1D weights expected when shapes of a and weights differ.

NumPy 支持 2D 均值滤波器吗? SciPy 或 Scikit-image 中有选项吗?

numpy filter scipy mean scikit-image
1个回答
0
投票

np.average
不是您想要的,但也许您正在寻找 scipy.signal.convolve

a = np.arange(25).reshape(5, 5)
b = scipy.signal.convolve(a, np.ones((3,3))/9, mode='valid')

mode='valid'
为您提供一个 3x3 数组(与 3x3 数组进行卷积会丢失每个轴上的两个元素)。

mode='same'
为您提供一个 5x5 数组(第一/最后一列/行中的元素在平均值中包含一个或多个零)。

mode='full'
为您提供一个 7x7 数组(输出的左上元素将是
a
的左上元素与八个零等的平均值)。

© www.soinside.com 2019 - 2024. All rights reserved.