用python实现对彩色图像 Image1 进行平滑、锐化、直方图均衡化,查看结果,并将 Image1 转换到 HIS 空间进行直方图均衡化查看效果;
时间: 2024-02-13 22:00:33 浏览: 22
好的,这是一道图像处理的问题,需要使用 Python 的图像处理库来实现。这里我将使用 OpenCV 和 Matplotlib 进行图像处理和显示。下面是代码实现:
```python
import cv2
import numpy as np
from matplotlib import pyplot as plt
# 读取彩色图像
img = cv2.imread('Image1.jpg')
# 平滑
blur = cv2.GaussianBlur(img, (5, 5), 0)
# 锐化
kernel = np.array([[-1,-1,-1],[-1,9,-1],[-1,-1,-1]])
sharp = cv2.filter2D(img, -1, kernel)
# 直方图均衡化
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
eq_gray = cv2.equalizeHist(gray)
# 转换到 HIS 空间进行直方图均衡化
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
hsv[..., 2] = cv2.equalizeHist(hsv[..., 2])
eq_hsv = cv2.cvtColor(hsv, cv2.COLOR_HSV2BGR)
# 显示结果
plt.subplot(2, 3, 1), plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB)), plt.title('Original')
plt.xticks([]), plt.yticks([])
plt.subplot(2, 3, 2), plt.imshow(cv2.cvtColor(blur, cv2.COLOR_BGR2RGB)), plt.title('Blurred')
plt.xticks([]), plt.yticks([])
plt.subplot(2, 3, 3), plt.imshow(cv2.cvtColor(sharp, cv2.COLOR_BGR2RGB)), plt.title('Sharpened')
plt.xticks([]), plt.yticks([])
plt.subplot(2, 3, 4), plt.imshow(gray, cmap='gray'), plt.title('Grayscale')
plt.xticks([]), plt.yticks([])
plt.subplot(2, 3, 5), plt.imshow(eq_gray, cmap='gray'), plt.title('Equalized Grayscale')
plt.xticks([]), plt.yticks([])
plt.subplot(2, 3, 6), plt.imshow(cv2.cvtColor(eq_hsv, cv2.COLOR_BGR2RGB)), plt.title('Equalized HSV')
plt.xticks([]), plt.yticks([])
plt.show()
```
其中,`cv2.imread` 用于读取图像,`cv2.GaussianBlur` 用于进行高斯平滑,`cv2.filter2D` 用于进行锐化,`cv2.cvtColor` 用于颜色空间转换,`cv2.equalizeHist` 用于直方图均衡化。最后使用 Matplotlib 中的 `plt.subplot` 和 `plt.imshow` 显示结果。
这里我假设图像文件名为 `Image1.jpg`,你需要将代码中的文件名替换成你自己的文件名。运行代码后,会显示原图、平滑图、锐化图、灰度图、灰度图直方图均衡化图和 HSV 直方图均衡化图。
注意,由于 `cv2.imshow` 在某些环境下可能会出现窗口无法关闭的问题,这里我使用了 Matplotlib 进行显示。如果你使用 `cv2.imshow`,则需要在最后加上 `cv2.waitKey(0)` 和 `cv2.destroyAllWindows()` 来等待键盘输入和关闭窗口。
希望能够帮到你!