用cv2从文件夹读入图像1,将图像1转成灰度图像2。给灰度图像2人为地加上高斯噪声得到带噪声的图像3,用邻域平均法对图像3进行去噪得到图像4。在同一个界面上分别显示图像1,图像2,图像3和图像4。
时间: 2024-10-10 13:13:41 浏览: 30
使用OpenCV (cv2) 进行上述操作的步骤如下:
1. 导入所需的库:
```python
import cv2
import numpy as np
```
2. 从文件夹读取图像1:
```python
img1_path = 'path_to_your_image1.jpg'
img1 = cv2.imread(img1_path, cv2.IMREAD_COLOR)
```
这里假设图片是以.jpg格式存在,如果不同,请替换相应的文件格式。
3. 将图像1转换为灰度图像2:
```python
gray_img2 = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY)
```
`cv2.COLOR_BGR2GRAY`用于颜色空间转换,从BGR变为灰度。
4. 添加高斯噪声到灰度图像2,生成图像3:
```python
noise_level = 0.05 # 高斯噪声的程度,你可以调整这个值
gaussian_noise = np.random.normal(0, noise_level, gray_img2.shape).astype(gray_img2.dtype)
noisy_img3 = gray_img2 + gaussian_noise
```
5. 应用邻域平均法去除噪声并获取图像4:
```python
kernel_size = 5 # 可以根据需要调整大小,通常越大去噪效果越明显
blurred_img4 = cv2.GaussianBlur(noisy_img3, (kernel_size, kernel_size), 0)
```
`cv2.GaussianBlur`函数应用了高斯滤波,即一种基于均值的低通滤波器。
6. 分别显示原始图像和处理后的图像:
```python
import matplotlib.pyplot as plt
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(gray_img2, cmap='gray')
axs[0, 1].set_title('Grayscale Image 2')
axs[1, 0].imshow(noisy_img3, cmap='gray')
axs[1, 0].set_title('Noisy Image 3')
axs[1, 1].imshow(blurred_img4, cmap='gray')
axs[1, 1].set_title('De-noised Image 4')
for ax in axs.flat:
ax.set(xticks=[], yticks=[])
plt.show()
```
运行此代码会在一个新的窗口中显示四个图像。