scipy.signal.

wiener#

scipy.signal.wiener(im, mysize=None, noise=None)[源代码]#

对 N 维数组执行维纳滤波。

将维纳滤波器应用于 N 维数组 im

参数:
imndarray

一个 N 维数组。

mysizeint 或 array_like, 可选

一个标量或一个 N 长度的列表,给出每个维度中维纳滤波器窗口的大小。mysize 的元素应该是奇数。如果 mysize 是标量,则此标量用作每个维度的大小。

noisefloat, 可选

要使用的噪声功率。如果为 None,则噪声估计为输入局部方差的平均值。

返回:
outndarray

维纳滤波后的结果,其形状与 im 相同。

注释

此实现类似于 Matlab/Octave 中的 wiener2。更多详细信息请参见 [1]

参考文献

[1]

Lim, Jae S., Two-Dimensional Signal and Image Processing, Englewood Cliffs, NJ, Prentice Hall, 1990, p. 548.

示例

>>> from scipy.datasets import face
>>> from scipy.signal import wiener
>>> import matplotlib.pyplot as plt
>>> import numpy as np
>>> rng = np.random.default_rng()
>>> img = rng.random((40, 40))    #Create a random image
>>> filtered_img = wiener(img, (5, 5))  #Filter the image
>>> f, (plot1, plot2) = plt.subplots(1, 2)
>>> plot1.imshow(img)
>>> plot2.imshow(filtered_img)
>>> plt.show()
../../_images/scipy-signal-wiener-1.png