从文件夹读入图像1,将图像1转成灰度图像2。给灰度图像2人为地加上椒盐噪声和高斯噪声得到带噪声的图像3,用低通滤波法对图像3进行去噪得到图像4。在同一个界面上分别显示图像1,图像2,图像3和图像4。
时间: 2024-10-11 19:15:25 浏览: 4
在Python中,你可以使用PIL(Python Imaging Library)库来处理图像,OpenCV库来添加噪声和进行滤波操作,以及matplotlib库来显示图像。下面是一个简单的步骤说明:
1. 首先,你需要安装必要的库,如果你还没有安装,可以使用`pip install pillow opencv-python matplotlib`命令。
```python
from PIL import Image
import cv2
import numpy as np
import matplotlib.pyplot as plt
# 读取图像1
img1 = Image.open('image1.jpg') # 替换为你的图片路径
```
2. 将图像转换为灰度图像2:
```python
img2_gray = img1.convert('L')
```
3. 添加噪声:
- 椒盐噪声:
```python
salt_noisy = img2_gray.copy()
num_salt = np.ceil(img2_gray.size * 0.05) # 5%的比例
coords = [np.random.randint(0, i - 1, int(num_salt)) for i in img2_gray.shape]
salt_noisy.putcoords(coords, 255)
```
- 高斯噪声:
```python
gauss_noisy = cv2.GaussianBlur(img2_gray, (5, 5), 0)
```
4. 低通滤波去噪:
```python
blurred_image = cv2.medianBlur(gauss_noisy, 5) # 使用中值滤波去除椒盐噪声效果更好
```
5. 显示原始图像和处理后的图像:
```python
fig, axs = plt.subplots(nrows=2, ncols=2)
axs[0, 0].imshow(img1, cmap='gray')
axs[0, 0].set_title('Original Image 1')
axs[0, 1].imshow(img2_gray, cmap='gray')
axs[0, 1].set_title('Grayscale Image 2')
axs[1, 0].imshow(salt_noisy, cmap='gray')
axs[1, 0].set_title('Image with Salt Noise')
axs[1, 1].imshow(blurred_image, cmap='gray')
axs[1, 1].set_title('De-noised Image 4')
for ax in axs.flat:
ax.set(xticks=[], yticks=[])
plt.show()
```
记得替换上述代码中的图片路径和噪声参数,以满足你的需求。