从文件夹读入图像1,将图像1转成灰度图像2。给灰度图像2人为地加上高斯噪声得到带噪声的图像3,用邻域平均法对图像3进行去噪得到图像4。在同一个界面上分别显示图像1,图像2,图像3和图像4。pytchon完整代码
时间: 2024-10-11 18:12:16 浏览: 29
在Python中,我们可以使用PIL(Pillow库)处理图像,NumPy处理数值计算,以及OpenCV进行图像处理。以下是一个简单的例子,展示了如何完成这个流程:
```python
from PIL import Image
import numpy as np
import cv2
# 1. 从文件夹读取图像
img_path = 'path_to_your_image.jpg' # 替换为你的图片路径
image1 = Image.open(img_path)
# 2. 转换为灰度图
image2 = image1.convert('L') # 使用convert函数转换为灰度
# 3. 添加高斯噪声
sigma = 50 # 高斯噪声的标准差
gaussian_noise = np.random.normal(0, sigma, image2.size).astype(np.uint8)
image3 = image2 + gaussian_noise
# 由于图像处理需要处理数组,所以需要转化为numpy数组
image3 = np.array(image3)
# 4. 应用邻域平均法去噪
kernel_size = 5 # 邻域大小
blurred_img = cv2.GaussianBlur(image3, (kernel_size, kernel_size), 0) # 使用OpenCV的GaussianBlur函数
denoised_img = cv2.medianBlur(blurred_img, kernel_size) # 使用medianBlur进一步去噪
# 5. 显示原始图像和处理后的图像
import matplotlib.pyplot as plt
fig, axs = plt.subplots(nrows=2, ncols=2, figsize=(10, 10))
axs[0, 0].imshow(image1, cmap='gray')
axs[0, 0].set_title('Original Image')
axs[0, 1].imshow(image2, cmap='gray')
axs[0, 1].set_title('Grayscale Image')
axs[1, 0].imshow(image3, cmap='gray')
axs[1, 0].set_title('Noisy Image')
axs[1, 1].imshow(denoised_img, cmap='gray')
axs[1, 1].set_title('Denoised Image')
for ax in axs.flat:
ax.set(xticks=[], yticks=[])
plt.show()
```
注意替换`path_to_your_image.jpg`为你实际的图像路径,并根据需求调整噪声生成的参数。
阅读全文