使用python中得image库将原始图片转为黑白图像,加入高斯噪声,最后编写均值、中值滤波进行去噪
时间: 2024-05-11 09:14:10 浏览: 96
Python实现图像去噪方式(中值去噪和均值去噪)
以下是使用Python中的PIL库(Python Imaging Library)将原始图片转为黑白图像,然后添加高斯噪声,并编写均值和中值滤波进行去噪的示例代码:
```python
from PIL import Image, ImageFilter
import numpy as np
import random
# 打开原始图片
img = Image.open('original_image.jpg')
# 转为黑白图像
img = img.convert('L')
# 转为numpy数组
img_array = np.array(img)
# 添加高斯噪声
mean = 0
var = 100
sigma = var ** 0.5
height, width = img_array.shape
gaussian = np.random.normal(mean, sigma, (height, width))
gaussian = gaussian.reshape(height, width)
img_array_noise = img_array + gaussian
# 转为Image对象
img_noise = Image.fromarray(img_array_noise.astype('uint8'))
# 均值滤波
img_mean = img_noise.filter(ImageFilter.Kernel((3, 3), [1/9]*9))
# 中值滤波
img_median = img_noise.filter(ImageFilter.MedianFilter(size=3))
# 显示图片
img.show()
img_noise.show()
img_mean.show()
img_median.show()
# 保存图片
img_noise.save('noisy_image.jpg')
img_mean.save('mean_filtered_image.jpg')
img_median.save('median_filtered_image.jpg')
```
在这个示例代码中,我们首先打开原始图片并将其转为黑白图像,然后使用numpy库生成高斯噪声,并将其添加到黑白图像上。接着,我们将numpy数组转为PIL库中的Image对象,并使用ImageFilter模块中的Kernel和MedianFilter类分别进行均值和中值滤波。最后,我们显示了所有的图片,并将它们保存在硬盘上。
请注意,这只是一个简单的示例,实际上你可以根据需要对滤波器的大小和参数进行调整,以获得更好的去噪效果。
阅读全文