2.2 颜色的表示和三基色
正如前面所说,颜色的表示方法有很多,其中采用基色表示颜色的方法平时最为流行。
2.2.1 RGB三基色和二次色
自然界中常见的各种色光都可以由红(R)、绿(G)、蓝(B)三种色光按不同比例相配而成,同样绝大多数颜色也可以分解成红、绿、蓝三种色光,这就是色度学中最基本的原理——三基色原理。这三种光叫三原色,或三基色。
可以作为基色的颜色并不唯一,是不是任意的几种颜色都可以作为基色呢?要判断某三种颜色是否可以作为基色,首先这三种颜色必须是相互独立的,即任何一种颜色都不能由另外其他两种颜色合成,这样才可以配出更多的颜色。再者,要选用人眼最为敏感的颜色。由于人眼对红、绿、蓝三种色光最敏感,因此由这三种颜色相配所得的彩色范围也最广,所以一般情况选这三种颜色作为基色,也就是任何颜色由这三种颜色按一定比例混合表示。
在发射光系统中,把三种基色光按不同比例相混,得到新的颜色,称之为相加混色。由红、绿、蓝三基色进行相加混色的情况如图2-3所示。
图2-3 三基色
从图2-3中可以看出:
红色+绿色=黄色
红色+蓝色=品红
绿色+蓝色=青色
红色+绿色+蓝色=白色
由于黄、品红和青色是两种基色相混所得的,故称为相加二次色。
此外还可以看出,红色+青色=绿色+品红=蓝色+黄色=白色。人们将红色和青色称为互补色,同理,绿色和品红为互补色,蓝色和黄色为互补色。有关互补色的概念请看下文。
以上公式的条件是参与相混的各种颜色均饱和,即饱和度为100%,也就是参与相混的颜色均纯色的情况。如果改变三基色各自的饱和度,颜色相叠加后的效果也将随之发生改变,从而形成新的叠加颜色。
2.2.2 互补色
在图像处理软件中会提到互补色,什么是互补色呢?从名字可以看出,两种颜色互为补色,不能说某一颜色是补色。
牛顿用实验证明白光包含所有可见光,并用棱镜演示了这个事实。如果两种色光以适当的比例混合能产生白色感觉,这两种颜色就称为“互为补色”。从图2-3中可知以下三对互补色光:黄光与蓝光、红光与青光、绿光与品红光。饱和的互补色以一定的比例混合便产生白光。但应注意,严格来讲,不能简单说红与绿是互补色,而应该说什么波长的色光与什么波长的色光互补。因为每种色光只要其波长不同,严格来讲都呈现不同的颜色,只是我们肉眼分辨不出而已。例如,波长为656 nm的红色光和492 nm的青色光互为补色光。
色环就是彩色光谱中的可见光,按照波长从大到小排序是红色、橙色、黄色、绿色、蓝色、紫色,如图2-4所示。将这些颜色首尾连接,构成一个色环,如图2-4所示。通常将标准红光的色相定义为0°参考值,标准绿光色相为120°,标准蓝色光为240°。从这个色环中不难看出,相差最远的两色互为补色,其在色环中的角度值相差180°。
图2-4 色环
在处理图像时,如希望更鲜明地突出某些颜色,选择对比大的互补色是常见办法之一。另外,胶卷相机也用到互补色。彩色负片胶卷经过冲洗后,负片(底片)上的颜色是原物体颜色的互补色。
2.2.3 媒体中颜色的表示
在数字媒体中,每一种颜色由一个或者多个分量表示(通常称为颜色分量,或者颜色通道,如在Photoshop中称为颜色通道)。人们分别用R表示红色分量,G表示绿色分量,B表示蓝色分量。每种颜色分量分成若干等级,表示其颜色的深浅不一。例如,每种颜色分量分为256个等级,可以用一个字节来存储,因为一个字节8位,正好可以描述256种状态(28=256),每种状态描述一种颜色,一个字节正好可以描述256种颜色。这样用R、G、B三个颜色分量表示某一颜色,一共有28×28×28=224种颜色。
由于一个字节是8位,正好存256个数(0~255),所以256色也称为8位色。同理,用24位(3个字节)存颜色,一共可表示224种颜色,也称为24位色。
在计算机语言中,如VC、JavaScript 等,一般用十六进制数描述颜色。例如,0xff0000,0x 表示十六进制数,这样写起来比二进制方便。0x后边是6个十六进制数,每两个为一组,每一组描述一个颜色分量。比较常见的是第一组描述红色分量,第二组描述绿色分量,第三组描述蓝色分量。一组就是一个颜色分量,其值的范围是0~255,代表有256个等级,表示这个颜色分量有256种不同颜色。例如,纯红色R值为255(255是十进制的数,若写成十六进制数则是0xFF),G值为0,B值为0,写成十六进制数就是0xff0000(f大写、小写均可)。再如纯黄色,R值为255,G值为255,B值为0,则纯黄色的颜色值用十六进制数表示就是0xffff00。
在高级语言中,颜色有时还可以写成另一种十进制形式,形如RGB(a,b,c)。其中a,b,c是0到255的十进制数。例如,RGB(0,0,0)为黑色(亮度最低),RGB(255,255,255)为白色(亮度最高),RGB(255,0,0)为纯红色。
对于灰度图像,就是我们日常所说的黑白图像,并不是指只有白色和黑色两种颜色,而是由从黑到白渐变的各种等级灰色组成的。对于这种颜色,可以使用一个颜色分量表示。通常用一个字节,即8位来存灰度图像,也就是灰度图像可以有28=256种不同等级的灰色。当然,一幅灰度图也可以采用三个字节存储图像每个像素的颜色,每个字节分别存红、绿、蓝三个颜色分量。此时三个颜色分量的值相等,表示的即为灰色。不过用三个字节描述灰度图像的颜色显然比采用一个字节描述灰度图像的颜色更占空间,所以灰度图像采用8位色是明智之举。