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., 二维信号和图像处理,恩格伍德悬崖,新泽西州,Prentice Hall,1990 年,第 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()