维纳滤波降噪python代码
时间: 2024-09-14 11:00:16 浏览: 51
维纳滤波(Wiener filter)是一种线性滤波器,用于信号处理和图像处理中,以减少噪声的影响,它基于信号和噪声的统计特性。在Python中实现维纳滤波降噪,可以使用如`scipy`这样的科学计算库。下面是一个简单的例子,展示如何使用`scipy`中的`wiener`函数来对图像进行维纳滤波降噪。
首先,确保安装了`scipy`库,如果没有安装,可以使用pip进行安装:
```bash
pip install scipy
```
然后,可以使用以下代码进行维纳滤波:
```python
import numpy as np
from scipy.signal import wiener
from scipy.ndimage import gaussian_filter
from skimage import io # 用于读取和显示图片
def wiener_filter(image, My=5, Mx=None):
"""维纳滤波器降噪函数
参数:
image -- 待降噪的图像
My -- Y方向上的滤波器尺寸
Mx -- X方向上的滤波器尺寸,默认为My
返回:
降噪后的图像
"""
if Mx is None:
Mx = My
# 维纳滤波
filtered_image = np.array(wiener(image, My=My, Mx=Mx))
return filtered_image
# 读取图像
img = io.imread('path/to/your/image.png')
# 假设图像大小为MxN,这里设置滤波器大小为(5,5)
filtered_img = wiener_filter(img, My=5, Mx=5)
# 显示原始图像和降噪后的图像
io.imshow(img, cmap='gray')
io.show()
io.imshow(filtered_img, cmap='gray')
io.show()
```
这段代码首先定义了一个`wiener_filter`函数,接受一个图像和滤波器的尺寸参数。函数内部使用`wiener`函数进行滤波处理,并返回降噪后的图像。然后代码读取一个图像文件,对其进行维纳滤波处理,并显示原图和降噪后的图像。
阅读全文