【发布时间】:2021-02-06 19:27:02
【问题描述】:
我正在尝试编写与 Gimp 中的“颜色增强”相同的效果。这是文档:https://docs.gimp.org/2.8/en/plug-in-color-enhance.html
基本上它是这样说的:它通过将颜色转换为 HSV 空间、测量整个图像的饱和度值范围、然后将该范围拉伸到尽可能大、最后将颜色转换回 RGB 来实现这一点.它类似于拉伸对比度,只是它在 HSV 颜色空间中工作,因此它保留了色调。
我试图以这种方式实现算法:
def enhanced(hsv):
h, s, v = cv2.split(hsv)
s_equ = cv2.equalizeHist(s)
hsv_image = cv2.merge([h, s_equ, v])
out = cv2.cvtColor(hsv_image, cv2.COLOR_HSV2BGR)
cv2.imwrite("out.jpg", out)
img2 = cv2.imread("IMG_0233.jpg")
hsv2 = cv2.cvtColor(img2, cv2.COLOR_BGR2HSV)
enhanced(hsv2)
但我没有和 Gimp 一样的结果:
输入图片:
Gimp 颜色增强的结果:
我的脚本结果:
我有什么遗漏的吗?非常感谢。
【问题讨论】:
-
尝试归一化而不是均衡化。
-
您好,感谢您的帮助。我试图像这样只标准化饱和通道:sat_mod = cv2.normalize(s, None, 0, 255, cv2.NORM_MINMAX) 然后将此通道与 Hue 和 Val 合并。但是当我比较原始饱和通道和sat_mod时,值是一样的!所以对我的新形象没有影响。
-
确实饱和度通道中的最小值和最大值已经是 0 和 255,所以对我的新图像没有影响。所以 Gimp 没有这样做,因为图像有明显的变化。
-
尝试将输入图像、输出图像和 GIMP 输出图像的饱和度直方图以相同的比例并排绘制。