利用Python从文件夹读入图像1,将图像1转成灰度图像2。给灰度图像2人为地加上高斯噪声得到带噪声的图像3,用邻域平均法对图像3进行去噪得到图像4。在同一个界面上分别显示图像1,图像2,图像3和图像4
时间: 2024-10-10 19:12:53 浏览: 83
在Python中,我们通常会使用`PIL`(Pillow)库来处理图像,并结合`numpy`进行数学计算。以下是一段代码,演示了如何完成上述操作:
```python
from PIL import Image
import numpy as np
from scipy.ndimage import filters
import matplotlib.pyplot as plt
# 1. 读取图像1
img1_path = 'path_to_your_image1.jpg'
img1 = Image.open(img1_path).convert('L') # 将图像转为灰度
# 2. 创建灰度图像2
gray_img2 = np.array(img1) # 将PIL Image转为numpy数组
# 3. 添加高斯噪声到图像2
gaussian_noise = np.random.normal(loc=0, scale=0.1, size=gray_img2.shape)
noisy_img3 = gray_img2 + gaussian_noise # 高斯噪声的标准差可以根据需求调整
# 4. 去噪,这里使用邻域平均法
filtered_img4 = filters.gaussian_filter(noisy_img3, sigma=1) # 可以通过调整sigma参数来控制平滑程度
# 显示所有图像
fig, axs = plt.subplots(nrows=2, ncols=2, figsize=(8, 8))
axs[0, 0].imshow(img1, cmap='gray')
axs[0, 0].set_title('Original Image (Grayscale)')
axs[0, 1].imshow(gray_img2, cmap='gray')
axs[0, 1].set_title('Grayscale Image')
axs[1, 0].imshow(noisy_img3, cmap='gray')
axs[1, 0].set_title('Noisy Image with Gaussian Noise')
axs[1, 1].imshow(filtered_img4, cmap='gray')
axs[1, 1].set_title('Image after Local Average Filtering')
for ax in axs.flat:
ax.axis('off')
plt.tight_layout()
plt.show()
```
注意:在运行这段代码之前,确保已经安装了`matplotlib`库,如果未安装,可以使用`pip install matplotlib`命令安装。
阅读全文