用Python写1.读取彩色输入图像,可视化; 2.基于直方图均衡化的彩色图像对比度增强: 将输入图像由RGB空间映射至HSV空间,保持H与S通道不变,对亮度通道V进行直方图均衡化,映射回RGB空间,保存并可视化图像; 3. 直方图均衡化+饱和度增强:将输入图像映射至HSV空间,固定H不变;对亮度通道V直方图均衡化;对各像素的S通道增加一个小正数(如0.1, 0.3),并确保增加后不超过1。最后由HSV空间映射回RGB空间,保存并可视化结果。 比较原始输入图像,以及两种处理结果,理解对比度增强以及饱和度增强。
时间: 2024-02-13 07:04:33 浏览: 87
基于python的对比度增强(线性变换、直方图正规化、直方图均衡化、CLAHE)
好的,以下是Python代码实现:
```python
import cv2
import numpy as np
# 读取彩色输入图像并可视化
input_img = cv2.imread("input_img.jpg")
cv2.imshow("input_img", input_img)
cv2.waitKey(0)
# 直方图均衡化的彩色图像对比度增强
hsv_img = cv2.cvtColor(input_img, cv2.COLOR_BGR2HSV)
h, s, v = cv2.split(hsv_img)
v_equalized = cv2.equalizeHist(v)
hsv_equalized = cv2.merge([h, s, v_equalized])
equalized_img = cv2.cvtColor(hsv_equalized, cv2.COLOR_HSV2BGR)
cv2.imshow("equalized_img", equalized_img)
cv2.waitKey(0)
# 直方图均衡化+饱和度增强
saturated_img = cv2.cvtColor(input_img, cv2.COLOR_BGR2HSV)
h, s, v = cv2.split(saturated_img)
v_equalized = cv2.equalizeHist(v)
s += 0.3
s[s > 1] = 1
saturated_img = cv2.merge([h, s, v_equalized])
saturated_img = cv2.cvtColor(saturated_img, cv2.COLOR_HSV2BGR)
cv2.imshow("saturated_img", saturated_img)
cv2.waitKey(0)
# 释放窗口
cv2.destroyAllWindows()
```
需要注意的是,上述代码中的`input_img.jpg`需要替换成实际的图像路径。此外,第三步中增加的饱和度系数可以根据实际情况自行调整,以达到更好的效果。
阅读全文