分别显示原图像flower1和给定的高斯,椒盐噪声图像的直方图,去除图像噪声,对去噪后的图像进行直方图均衡化,显示均衡化后的图像和直方图。使用Python代码实现加注释
时间: 2024-05-13 13:16:46 浏览: 82
实验三—李虹.zip_sobel边缘检测_图像 椒盐_椒盐噪声_直方图均衡
以下是使用Python代码实现上述操作的示例:
```python
import cv2
import numpy as np
from matplotlib import pyplot as plt
# 读取原图像
img = cv2.imread('flower1.jpg')
# 显示原图像及其直方图
plt.subplot(221), plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
plt.title('Original Image'), plt.xticks([]), plt.yticks([])
plt.subplot(222), plt.hist(img.ravel(), 256, [0, 256])
plt.title('Original Histogram'), plt.xlim([0, 256])
# 生成高斯噪声图像
gaussian_noise = np.random.normal(0, 30, img.shape)
gaussian_noise = gaussian_noise.astype('uint8')
gaussian_img = cv2.add(img, gaussian_noise)
# 显示高斯噪声图像及其直方图
plt.subplot(223), plt.imshow(cv2.cvtColor(gaussian_img, cv2.COLOR_BGR2RGB))
plt.title('Gaussian Noise Image'), plt.xticks([]), plt.yticks([])
plt.subplot(224), plt.hist(gaussian_img.ravel(), 256, [0, 256])
plt.title('Gaussian Histogram'), plt.xlim([0, 256])
# 去噪
denoised_img = cv2.medianBlur(gaussian_img, 5)
# 显示去噪后的图像及其直方图
plt.figure()
plt.subplot(221), plt.imshow(cv2.cvtColor(denoised_img, cv2.COLOR_BGR2RGB))
plt.title('Denoised Image'), plt.xticks([]), plt.yticks([])
plt.subplot(222), plt.hist(denoised_img.ravel(), 256, [0, 256])
plt.title('Denoised Histogram'), plt.xlim([0, 256])
# 直方图均衡化
equalized_img = cv2.equalizeHist(cv2.cvtColor(denoised_img, cv2.COLOR_BGR2GRAY))
# 显示均衡化后的图像及其直方图
plt.subplot(223), plt.imshow(equalized_img, cmap='gray')
plt.title('Equalized Image'), plt.xticks([]), plt.yticks([])
plt.subplot(224), plt.hist(equalized_img.ravel(), 256, [0, 256])
plt.title('Equalized Histogram'), plt.xlim([0, 256])
plt.show()
```
注释已经写在代码中,运行后会显示原图像及其直方图、高斯噪声图像及其直方图、去噪后的图像及其直方图、均衡化后的图像及其直方图。
阅读全文