python从文件夹读入图像1,将图像1转成灰度图像2。给灰度图像2人为地加上高斯噪声得到带噪声的图像3,用邻域平均法对图像3进行去噪得到图像4。在同一个界面上分别显示图像1,图像2,图像3和图像4。完整代码
时间: 2024-10-11 18:11:46 浏览: 21
对灰度图像添加高斯噪声和椒盐噪声_使用字典学习和深层字典学习进行图像去噪_python
5星 · 资源好评率100%
在Python中,我们可以使用`PIL`库来处理图像,`scipy`库用于添加高斯噪声,以及`skimage`库来进行去噪。以下是整个步骤的简要代码示例:
```python
from PIL import Image
import numpy as np
from scipy.ndimage import gaussian_filter
from skimage.restoration import denoise_nl_means
import matplotlib.pyplot as plt
# 1. 从文件夹读取图像
img_path = 'path_to_your_image_folder/image1.jpg' # 替换为实际路径
img1 = Image.open(img_path).convert('RGB')
# 2. 转换成灰度图像
img2 = img1.convert('L') # 使用convert函数转换颜色模式
# 3. 添加高斯噪声
sigma = 5 # 高斯噪声的标准差,可以调整
noisy_img3 = img2.copy()
noisy_img3 = noisy_img3.astype(np.float)
noisy_img3 += np.random.normal(0, sigma, noisy_img3.shape) # 加入噪声
# 4. 去噪处理
denoised_img4 = denoise_nl_means(noisy_img3, h=10, patch_size=7, multichannel=True)
# 显示原始图像和处理后的图像
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 1')
axs[0, 1].imshow(img2, cmap='gray')
axs[0, 1].set_title('Grayscale Image 2')
axs[1, 0].imshow(noisy_img3, cmap='gray', interpolation='nearest')
axs[1, 0].set_title('Noisy Image 3')
axs[1, 1].imshow(denoised_img4, cmap='gray', interpolation='nearest')
axs[1, 1].set_title('Denoised Image 4')
for ax in axs.flat:
ax.axis('off')
plt.show()
```
确保已经安装了所需的库(`Pillow`, `scipy`, 和 `scikit-image`),并替换`img_path`为你的图片实际位置。运行此代码后,将会在同一个窗口中展示原始图像、灰度图像、加噪声图像以及去噪后的图像。
阅读全文