scipy.signal.
维纳#
- scipy.signal.wiener(im, mysize=None, noise=None)[源代码][源代码]#
对一个 N 维数组执行维纳滤波。
对 N 维数组 im 应用维纳滤波器。
- 参数:
- imndarray
一个N维数组。
- mysizeint 或 array_like, 可选
一个标量或一个N长度的列表,给出维纳滤波器窗口在每个维度的大小。mysize 的元素应该是奇数。如果 mysize 是一个标量,那么这个标量将用于每个维度的大小。
- 噪音float, 可选
要使用的噪声功率。如果为 None,则噪声估计为输入局部方差的平均值。
- 返回:
- 出ndarray
维纳滤波结果,形状与 im 相同。
注释
此实现类似于 Matlab/Octave 中的 wiener2。更多详情请参见 [1]。
参考文献
[1]Lim, Jae S., 《二维信号与图像处理》, 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()