从文件夹读入图像1,将图像1转成灰度图像2。给灰度图像2人为地加上高斯噪声得到带噪声的图像3,用邻域平均法对图像3进行去噪得到图像4。在同一个界面上分别显示图像1,图像2,图像3和图像4。
时间: 2024-10-10 17:13:24 浏览: 72
在Python中,我们可以使用如PIL (Python Imaging Library) 或者 OpenCV 等库来进行图像处理。以下是一个简单的步骤概述:
1. **加载图像**:
使用`PIL`库的`Image.open()`函数打开文件夹中的图像1,例如:
```python
from PIL import Image
img1 = Image.open('folder/image1.jpg')
```
2. **转换为灰度图像**:
调用`convert()`方法将其转换为灰度图,例如:
```python
img2 = img1.convert('L')
```
3. **添加高斯噪声**:
可以使用`scikit-image`库的`gaussian_noise`函数,先读取灰度图像数据,然后添加噪声,比如:
```python
from skimage.util import random_noise
noise = random_noise(img2, var=0.1) # 设置噪声方差
img3 = Image.fromarray(noise.astype('uint8'))
```
4. **去噪处理**:
邻域平均法通常涉及计算像素周围像素值的平均,OpenCV有`cv2.boxFilter()`可以实现这个功能,不过它需要先转化为numpy数组:
```python
import cv2
img3_array = np.array(img3)
denoised_img = cv2.fastNlMeansDenoisingColored(img3_array, None, 10, 10, 7, 21)
denoised_img = Image.fromarray(denoised_img)
```
5. **显示图像**:
使用`PIL`的`show()`函数或`cv2.imshow()`函数展示这四张图像,注意关闭前一张图像以便显示新图像:
```python
img1.show()
img2.show()
img3.show()
denoised_img.show()
# 如果使用cv2,可以替换为:
# cv2.imshow("Image1", img1)
# cv2.imshow("Image2", img2)
# cv2.imshow("Noisy Image", img3)
# cv2.imshow("Denoised Image", denoised_img)
cv2.waitKey(0) # 等待用户按键,0表示立即关闭
```
阅读全文