HSV(HSL)颜色空间及其应用

from:http://nkwavelet.blog.163.com/blog/static/22775603820147851726816/
【摘要】
本文首先阐述HSV 和 HSL颜色模式的基本特性,然后介绍RGB和HSV / HSL颜色空间互相转换的算法,并给出算法核心代码和效果图,最后将HSV颜色空间应用到图像增强,得到几个增强之后的效果图。
【参考资料】 

1. HSV和HSL颜色空间简介
    HSV(也叫做 HSB)和  HSL  是对RGB 色彩空间中点的两种有关系的表示,它们尝试描述比 RGB 更准确的感知颜色联系,并仍保持在计算上简单。HSL 表示 hue(色相)、saturation(饱和度)、lightness(亮度),HSV 表示 hue、saturation、value(色调) 而 HSB 表示 hue、saturation、brightness(明度)。

    HSV和HSL颜色模式特点 :
    a)  HSV颜色空间的模型对应于圆柱坐标系中的一个圆锥形子集,圆锥的顶面对应于V=1。它包含RGB模型中的 R=1,G=1,B=1三个面,所代表的颜色较亮。色彩H由绕V轴的旋转角给定。红色对应于角度0°,绿色对应于角度120°,蓝色对应于角度240°。在HSV颜色模型中,每一种颜色和它的补色相差180°。
    b)  饱和度S取值从0到1,所以圆锥顶面的半径为1。HSV颜色模型所代表的颜色域是CIE色度图的一个子集,这个模型中饱和度为百分之百的颜色,其纯度一般小于百分之百。
    c)  在圆锥的顶点(即原点)处,V=0,H和S无定义,代表黑色。圆锥的顶面中心处 S=0,V=1,H无定义,代表白色。从该点到原点代表亮度渐暗的灰色,即具有不同灰度的灰色。对于这些点,S=0,H的值无定义。可以说,HSV模型中的V轴对应于RGB颜色空间中的主对角线。在圆锥顶面的圆周上的颜色,V=1,S=1,这种颜色是纯色。

    HSV 颜色空间可以用一个圆锥空间模型来描述 。
      HSV(HSL)颜色空间及其应用 - nkwavelet - 小波的世界 HSV(HSL)颜色空间及其应用 - nkwavelet - 小波的世界

  2.  RGB 到 HSL 或 HSV 的转换
       设 (r, g, b) 分别是一个颜色的红、绿和蓝坐标,它们的值是在 0 到 1 之间的实数。设 max 等价于 r, g 和 b 中的最大者。设 min 等于这些值中的最小者。要找到在 HSL 空间中的 (h, s, l) 值,这里的 h ∈ [0, 360)是角度的色相角,而 s, l ∈ [0,1] 是饱和度和亮度,计算为:
HSV(HSL)颜色空间及其应用 - nkwavelet - 小波的世界
 h 的值通常规范化到位于 0 到 360°之间。而 h = 0 用于 max = min 的(就是灰色)时候而不是留下 h 未定义。
 HSL 和 HSV 有同样的色相定义,但是其他分量不同。HSV 颜色的 s 和 v 的值定义如下:
HSV(HSL)颜色空间及其应用 - nkwavelet - 小波的世界
3. HSL 到 RGB 的转换
     给定 HSL 空间中的 (h, s, l) 值定义的一个颜色,带有 h 在指示色相角度的值域 [0, 360)中,分别表示饱和度和亮度的s 和 l 在值域 [0, 1] 中,相应在 RGB 空间中的 (r, g, b) 三原色,带有分别对应于红色、绿色和蓝色的 r, g 和 b 也在值域 [0, 1] 中,它们可计算为:
       如果 s = 0,则此时颜色是非彩色的、或灰色的。在这种情况下,r, g 和 b 都等于 l。注意 此时h 的值是未定义的。
       如果 s ≠ 0 ,则可以使用下列过程:
HSV(HSL)颜色空间及其应用 - nkwavelet - 小波的世界

4.  HSV 到 RGB 的转换
     类似的,给定在 HSV 中 (h, s, v) 值定义的一个颜色,带有如上的 h,和分别表示饱和度和明度的 s 和 v 变化于 0 到 1 之间,在 RGB 空间中对应的 (r, g, b) 三原色可以计算为:
    HSV(HSL)颜色空间及其应用 - nkwavelet - 小波的世界
对于每个颜色向量 (r, g, b),
HSV(HSL)颜色空间及其应用 - nkwavelet - 小波的世界
 
5. HSL和HSV比较
    HSL类似于HSV。对于一些人,HSL更好的反映了“饱和度”和“亮度”作为两个独立参数的直觉观念,但是对于另一些人,它的饱和度定义是错误的,因为非常柔和的几乎白色的颜色在HSL可以被定义为是完全饱和的。对于HSV还是HSL更适合于人类用户界面是有争议的。
    W3C的CSS3规定声称“HSL的优点是它对称于亮与暗(HSV就不是这样)…”,这意味着:
    a)  在HSL中,饱和度分量总是从完全饱和色变化到等价的灰色(在HSV中,在极大值V的时候,饱和度从全饱和色变化到白色,这可以被认为是反直觉的)。
    b)  在HSL中,亮度跨越从黑色过选择的色相到白色的完整范围(在HSV中,V分量只走一半行程,从黑到选择的色相)。
HSV(HSL)颜色空间及其应用 - nkwavelet - 小波的世界
 
HSV(HSL)颜色空间及其应用 - nkwavelet - 小波的世界
 
6.  RGB与HSV互转代码
     此处我们用C语言实现RGB与HSV之间的互相转换并给出效果图。

7. HSV颜色空间小应用
     将RGB转换到HSV空间,通过V变量可以调整图像的亮度和对比度,以下是几个效果图:
         
                             HSV(HSL)颜色空间及其应用 - nkwavelet - 小波的世界                      HSV(HSL)颜色空间及其应用 - nkwavelet - 小波的世界
                                             (原始图片)                                                                (亮度V + 0.1) 
                            HSV(HSL)颜色空间及其应用 - nkwavelet - 小波的世界                      HSV(HSL)颜色空间及其应用 - nkwavelet - 小波的世界
                                            (亮度V - 0.1)                                                                     (对比度1.2)  
  
                           HSV(HSL)颜色空间及其应用 - nkwavelet - 小波的世界                      HSV(HSL)颜色空间及其应用 - nkwavelet - 小波的世界
                                               对比度1.5)                                                           (对比度1.5 + V0.2)
当我们谈论颜色时,常常会涉及到RGB、HSVHSL这三种颜色空间。它们是用来描述和表示颜色的不同模型,每个模型都有其独特的特点和用途。 1. RGB(红绿蓝)颜色空间: RGB是一种加法混色模型,它将红、绿和蓝三原色的不同强度组合以创建各种颜色。在RGB颜色空间中,每个颜色由一个红色(R)、绿色(G)和蓝色(B)的强度值组成。这些强度值通常在0到255之间,表示了每种原色的相对强度。通过调整这三种原色的强度,我们可以混合出各种不同的颜色。 2. HSV(色调、饱和度、亮度)颜色空间HSV是一种将颜色描述为色调(H)、饱和度(S)和亮度(V)的模型。色调表示颜色在色轮上的位置,取值范围为0到360度。饱和度表示颜色的纯度或者灰度的量度,取值范围为0到1。亮度表示颜色的明亮程度,取值范围为0到1。HSV颜色空间常用于调整颜色的色调、饱和度和亮度,使得对颜色的控制更加直观。 3. HSL(色调、饱和度、亮度)颜色空间HSL是一种将颜色描述为色调(H)、饱和度(S)和亮度(L)的模型。色调表示颜色在色轮上的位置,取值范围为0到360度。饱和度表示颜色的纯度或者灰度的量度,取值范围为0到1。亮度表示颜色的明亮程度,取值范围为0到1。与HSV相比,HSL颜色空间更加注重描述颜色的亮度。 这三种颜色空间各有其优势和适用场景。RGB常用于计算机图形学和显示器等领域,HSVHSL则常用于图像处理、调色板设计和艺术创作等领域。通过在不同的颜色空间之间转换,我们可以更好地控制和表达各种不同的颜色。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值