2.4 彩色图像
2.4.1 彩色基础
人类和某些动物感知一个物体的颜色是由物体反射光的性质决定的。光的特性是彩色科学的核心。如果光是无色的(缺乏颜色),那么它的属性仅仅只是亮度或数值。无色光是观察者在黑白电视上看到的光,而灰度仅提供了一个亮度的标量度量,它的范围是从黑色到灰色最终到白色。
对于一个物体反射的光,如果在所有可见光波长范围内是平衡的,那么对观察者来说,这个物体显示为白色。然而,如果一个物体反射有限的可见光谱,那么这个物体将呈现某种颜色。例如,绿色物体主要反射波长范围为500~570nm的光,吸收其他波长光的多数能量。
人眼中的锥状细胞是负责彩色视觉的传感器,可分为3类,分别对应红色、绿色和蓝色。大约65%的锥状细胞对红色光敏感,33%对绿色光敏感,只有2%对蓝色光敏感。图2-16所示为人眼中红色、绿色和蓝色锥状细胞对可见光的吸收曲线。
图2-16 人眼中红色、绿色、蓝色锥状细胞对可见光的吸收曲线
根据人眼对光的吸收特性,人们所看到的彩色就是红(R)、绿(G)、蓝(B)三原色的各种组合。国际照明委员会于1931年对三原色波长值进行了标准化,即红色光波长为700nm,绿色光波长为546.1nm,蓝色光波长为435.8nm。应该注意的是,原色并不意味着3个固定的标准化R、G、B分量单独作用就能产生所有光谱,3个固定标准原色以各种强度比混合在一起时可以产生所有可见彩色的这一说法是错误的,只有波长允许变化,才能产生所有可见彩色,而在这种情况下将不再有3个固定的标准原色。
原色相加可以产生二次色,如红色加蓝色产生深红色,绿色加蓝色产生青色,红色加绿色产生黄色,如图2-17所示。需要注意的是,颜料的原色与光的原色有所区别,颜料的原色定义为减去或吸收光的一种原色,并反射或传输另外两种原色,因此,颜料的原色和二次色与光相反。
图2-17 光和颜料的原色与二次色
通常用于区别不同颜色特性的是亮度、色调和饱和度。亮度表示无色的强度概念。色调指的是光波混合中与主波长有关的属性,表示观察者感知的主要颜色。当我们说一个物体为橙色时,指的是其色调。饱和度指的是相对纯净度,或者说一种颜色混合白光的数量。纯谱色是全饱和的,但是,如深红色(红色加蓝色)和淡紫色(紫色加白色)这样的彩色是欠饱和的。饱和度与所混合白光的数量成反比。色调和饱和度一起称为色度,因此,颜色可用其亮度和色度来表征。形成任何特殊彩色的红色、绿色、蓝色的数量称为三色值,并分别表示为R、G、B。这样,一种颜色可由其三色值定义为
(2-10)
由式(2-10)可得
r+g+b=1
(2-11)
2.4.2 RGB彩色模型
RGB彩色模型(彩色空间或彩色系统)是指在某些标准下用通常可以接受的方式方便地对彩色加以说明。本质上,RGB彩色模型是坐标系统和彩色子空间的说明,其中,位于坐标系统中的每种颜色都由单个点来表示。
在RGB彩色模型中,每种颜色出现在红色、绿色、蓝色的原色光谱中。该模型基于笛卡儿坐标系,所考虑的彩色子空间是图2-18所示的RGB彩色立方体,图中RGB原色值位于3个角上,二次色青色、深红色和黄色位于另外3个角上,黑色位于原点处,白色位于离原点最远的角上。在该模型中,灰度(R=G=B的点)沿着连接这两点的直线从黑色延伸到白色。在此模型中的不同颜色是位于立方体上或立方体内部的点,且由自原点延伸的向量来定义。为方便起见,假定所有颜色值都归一化,则此立方体是一个单位立方体,即R、G、B的所有值都假定在范围[0,1]内,而在计算机中实际用来产生颜色的像素值范围是[0,255]。
图2-18 RGB彩色立方体
在RGB彩色模型中表示的图像由3个分量图像组成,每个原色对应一幅分量图像。这3幅分量图像混合生成一幅彩色图像。在RGB彩色子空间中,用于表示每个像素的比特数称为像素深度。考虑一幅RGB彩色图像,其中,每幅红色、绿色、蓝色图像都是一幅8bit图像,在这种条件下,每个RGB彩色像素(RGB值的三元组)的深度为24bit。一幅24bit的RGB彩色图像通常称为全彩色图像。在24bit的RGB彩色图像中,颜色总数是(28)3=16777216。其中,000000表示黑色,FFFFFF表示白色,FF0000表示红色,这3种颜色也可分别表示为(0,0,0)、(255,255,255)、(255,0,0),表2-4所示为常见颜色的RGB值。
表2-4 常见颜色的RGB值
续表
RGB彩色图像的像素点矩阵对应3个颜色向量矩阵,分别是R矩阵、G矩阵、B矩阵。如果每个矩阵的第一行第一列的值分别为R=240、G=223、B=204,则RGB彩色图像左上角第一个像素点的颜色是(240,223,204)。
2.4.3 灰度图像
在计算机领域,灰度图像(Gray Image)是每个像素只有一种采样颜色的图像。这类图像通常显示为从最暗的黑色到最亮的白色的灰度。灰度图像与黑白图像不同,在计算机图像领域,黑白图像只有黑色和白色两种颜色,但灰度图像在黑色与白色之间还有许多级的颜色深度。但是,在计算机图像领域之外,黑白图像也表示灰度图像,如灰度的图片通常叫作黑白图片。在一些书中,将单色图像等同于灰度图像,也等同于黑白图像。
灰度即没有色彩,RGB彩色分量相等。图像的灰度化就是让像素点矩阵中的每个元素都满足R=G=B,并称其为灰度值,如(100,100,100) 代表灰度值为100,(50,50,50) 代表灰度值为50。灰度图像的灰度值范围为0~255。
将RGB彩色图像转换为灰度图像一般有以下几种方法。
(1)浮点法:gray=0.3R+0.59G+0.11B。
(2)整数法:gray=(30R+59G+11B)/100。
(3)移位法:gray=(28R+151G+77B)>>8。
(4)平均值法:gray=(R+G+B)/3。
(5)仅取绿色法:gray=G。
通过上述任意一种方法求得灰度值后,将R、G、B值统一用灰度值替换,形成新的颜色,即灰度图像。