从文件夹读入图像1,将图像1转成灰度图像2。给灰度图像2加上高斯噪声得到带噪声的图像3,用邻域平均法对图像3进行去噪得到图像4。在同一个界面上分别显示图像1,图像2,图像3和图像4
时间: 2024-10-10 07:12:28 浏览: 74
在计算机视觉和图像处理中,这个过程通常涉及以下几个步骤:
1. **读取图像1**:你可以使用Python的`PIL`(Python Imaging Library)或`OpenCV`库来加载图像文件。例如,如果使用`OpenCV`,可以这样做:
```python
import cv2
img1 = cv2.imread('image1.jpg')
```
2. **转换为灰度图像2**:`cv2.cvtColor()`函数用于颜色空间转换,这里将彩色图像转换为灰度:
```python
gray_img2 = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY)
```
3. **添加高斯噪声到图像3**:使用`numpy`的随机数生成器结合高斯分布模拟高斯噪声。`cv2.GaussianBlur()`可以实现这一功能:
```python
noise_std = 10 # 设定噪声强度
noisy_img3 = cv2.addWeighted(gray_img2, 1, np.random.normal(0, noise_std, gray_img2.shape), 0.5, 0)
```
4. **去噪处理(邻域平均法)**:通过计算每个像素点周围区域的平均值来减少噪声,`cv2.medianBlur()`或`cv2.fastNlMeansDenoisingColored()`可用于此目的:
```python
denoised_img4 = cv2.medianBlur(noisy_img3, kernel_size=5) # 选择合适的kernel_size
```
5. **显示所有图像**:最后,可以使用`matplotlib`来在一个窗口中显示这四张图:
```python
import matplotlib.pyplot as plt
fig, axs = plt.subplots(nrows=2, ncols=2)
axs[0, 0].imshow(img1)
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(denoised_img4, cmap='gray')
axs[1, 1].set_title('Denoised Image 4')
plt.show()
```
阅读全文