RGB、HSL、HSB颜色模式的转化
RGB颜色模式是最常用的颜色模式,电视、电脑、手机等电子屏幕的显示原理都是RGB。RGB分别代表光的三原色红绿蓝,人眼有三种视锥细胞,分别对红光、绿光、蓝光最敏感。RGB模式可以理解为有三盏灯,分别发出红光、绿光、蓝光,三盏灯的光相加得到的颜色就是结果色。
RGB模式对机器很友好,但是不符合人眼的直观感受,所以人们发明了HSL模式。H是色相,代表颜色的红橙黄绿青蓝紫,主要取决于颜色的频率,但不完全取决于颜色的频率,如人眼不能区分纯的黄光和由红光绿光混合而成的黄光。S是饱和度,代表颜色的鲜艳程度,饱和度越高,颜色越鲜艳,饱和度为0,颜色是灰色。L是亮度,代表颜色的深浅程度,亮度越高颜色越浅,亮度越低颜色越深,黑色的充要条件是亮度为0,白色的充要条件是亮度为最大值。RGB转化为HSL模式的公式如下:(max代表RGB的最大值,min代表RGB的最小值)

可以看出,L大致代表了光的量。但是L并不是颜色深浅的绝对标志,红色(#FF0000)、蓝色(#0000FF)比L值相同的黄色(#FFFF00)、绿色(#00FF00)、青色(#00FFFF)更深,这是因为人眼对绿光比较敏感。S可以大致理解为光的纯度,即max-min,更准确的说,S指的是在光的量不改变的条件下光的相对纯度,它受L的限制。max-min值小只能代表光的纯度低,并不代表颜色不鲜艳,因为min提高了对L也做了贡献。所以需要比上2L或2-2L。HSL模式的模型是双圆锥。

而很多软件,像PS,使用的是HSB模式(又叫HSV)。和HSL模式相比,HSB模式不太符合人的直觉,但是更好的描述了颜色的物理属性。RGB转化为HSB的数学公式如下:

从公式中我们可以看出HSB和HSL对于色相H的定义完全相同,但是亮度和饱和度不同。B代表亮度,指的是HSB中的最大值,也就是说合成某一种颜色所需要的最大纯色光的量,饱和度S在这里就代表光的纯度。我们可以推导出H和S共同决定RGB的比例,B决定RGB的最大值。也就是说,H和S决定颜色的质,B决定颜色的量。在HSB模式中,当亮度为最大值,饱和度从最大值调到0,颜色从纯色变为白色,这是反直觉的。亮度B只从黑色到中等深浅的颜色走过一半的距离,这也是反直觉的。但这更符合颜色的物理属性。HSB模式的模型是一个圆锥。

在PS这种软件里,S和B两个分量构成一个如下的正方形:

对于这个正方形,我们做一次坐标变化,把它变成一个等腰直角三角形:

这个等腰直角三角形绕B轴旋转就形成了HSB圆锥体模型。对这个等腰直角三角形再次做一次坐标变换,我们得到一个等腰三角形:

这个等腰三角形绕B轴旋转可以得到HSL双圆锥模型。最终我们得出HSB模式转化为HSL模式的公式:

HSL的优点在于它完美的表达了亮度(颜色的深浅)和饱和度(颜色的鲜艳程度)这两个独立的分量,它明暗对称。HSB的有点在于它完美的展示了RGB三色光的比例和光的最大量。HSL符合人们对颜色的认知,具有对称美。而HSB讲究比例,具有科学美。