从文件夹读入图像1,将图像1转成灰度图像2。给灰度图像2人为地加上椒盐噪声得到带噪声的图像3,用中值滤波法对图像3进行去噪得到图像4。在同一个界面上分别显示图像1,图像2,图像3和图像4。用python写
时间: 2024-10-20 08:02:38 浏览: 17
在Python中,你可以使用PIL库(Python Imaging Library)处理图像,并结合NumPy进行数学操作。以下是一个简单的步骤,展示了如何实现这个过程:
```python
from PIL import Image
import numpy as np
import cv2 # 使用OpenCV来进行中值滤波
# 1. 读取图像1
img1 = Image.open('path_to_your_image1.jpg') # 替换 'path_to_your_image1.jpg' 为你实际的图片路径
# 将Image对象转换为numpy数组
img_array1 = np.array(img1)
# 2. 转换为灰度图像2
gray_img2 = cv2.cvtColor(img_array1, cv2.COLOR_BGR2GRAY) # 如果原始图像是BGR格式,这里需要转换
# 3. 添加椒盐噪声到灰度图像
salt_vs_pepper_noise = 0.05 # 设置噪声比例
noisy_img3 = gray_img2 + salt_vs_pepper_noise * (np.random.rand(*gray_img2.shape) - 0.5)
# 对椒盐噪声图像进行中值滤波去噪
kernel_size = 3 # 过滤核大小,可以调整
denoised_img4 = cv2.medianBlur(noisy_img3, kernel_size)
# 4. 显示原始图像、灰度图像、加噪图像和去噪图像
# 假设imshow函数存在(例如来自matplotlib的imshow)
plt.subplot(2, 2, 1)
plt.imshow(img1)
plt.title('Original Image')
plt.subplot(2, 2, 2)
plt.imshow(gray_img2, cmap='gray')
plt.title('Grayscale Image')
plt.subplot(2, 2, 3)
plt.imshow(cv2.cvtColor(noisy_img3, cv2.COLOR_GRAY2RGB), cmap='gray')
plt.title('Noisy Image')
plt.subplot(2, 2, 4)
plt.imshow(denoised_img4, cmap='gray')
plt.title('Denoised Image')
# 显示所有图像
plt.show()
阅读全文