人眼中负责彩色感知的细胞中约有65%对红色敏感,33%对绿色敏感,而只有2%对蓝色敏感。正是人眼的这些吸收特性决定了被看到的彩色是通常所谓的三原色(红、绿、蓝)的组合。国际照明委员会(CIE)规定以蓝(波长=435.8nm)、绿(波长=546.1nm)、红(波长=700nm)作为主原色,红、绿、蓝也因此被称为3原色。
在计算机中,显示器的任何颜色(色彩全域)都可以由3种颜色红、绿、蓝组成,成为三基色。每种基色的取值范围是0~255。
- 计算机中任何颜色都可以由3种颜色按不同比例混合而成;而每种颜色都可以分解成三种基本颜色。
- 三原色之间是相互独立的,任何一种颜色都不能由其余两种颜色来组成。
- 混合的的饱和度由3种颜色的比例来决定。混合色的亮度是3种颜色的亮度之和。
如今使用的大部分彩色模型都是面向应用的或是面向硬件的,比如针对彩色监视器的RGB(红、绿、蓝)模型、面向彩色打印机的CMY(青、深红或品红、黄)和CMYK(情、深红或品红、黄、黑)模型。HSI(色调、饱和度、亮度)模型非常符合人眼描述和解释颜色的方式,除此之外,目前广泛使用的彩色模型还有:HSV模型、YUV模型、YIQ模型、Lab模型等。
常见的3 个基本色彩模型是RGB,CMYK和YUV,分别应用于电视机和计算器的颜色显示系统、印刷、通过压缩色度信息以有效地播送彩色电视图像。
一、RGB
- 青=蓝+绿;
- 黄=绿+红;
- 深红(品红)=蓝+红;
- 黑=0;
- 白=红+绿+蓝;
如图所示:(图中已归一化至[0,1])
RGB模型除了应用于显示器外,扫描仪也是通过吸收原稿反射或透射而发送出来的光线中的R、G、B成分,并用它来表示原稿的颜色。
显示器和扫描仪使用的RGB模型与CIE标准中的RGB真是三原色彩色系统空间是不同的,后者是与设备无关的彩色空间。
二、CMY与CMYK
CMY模型以青、品红、黄三种颜色作为基本原色表示其他颜色。由于彩色的显示不是直接来自于光线的色彩,而是光线照射物体后被物体吸收掉一部分之后反射来的剩余光线产生的,因此CMY又称为减色法混色模型。当光线都被吸收(没有反射光)时是黑色,当光线都被反射(都没有被吸收)时是白色。
对于像彩色打印机这类需要在纸上沉淀彩色颜料的设备,颜料不是如显示器一样主动发出光线,而是反射光线,因此当白光照射到纸上,颜料吸收相应颜色(如青色颜料会吸收红色儿反射青色),反射白光中剩余的光。
理论上,等量的青、品红、黄混合可以产生黑色。实际上,这种混合产生的黑色是不纯的。因此,为了产生真正的黑色,专门在CMY模型中加入了第4种颜色——黑色,从而得到了CMYK模型。
RGB -> CMY转换
根据CMY模型的原理易知:
其中,假设RGB空间已归一化至[0,1],若没有归一化,只要将1改成255即可。
三、HSI
HSI模型是从人的视觉系统出发,直接使用颜色三要素的——色调(Hue)、饱和度(saturation)、亮度(Intensity)来描述颜色的。
- 亮度是指人眼感觉光的明暗程度。光的能量越大,亮度越大。
- 色调是彩色最重要的属性,决定颜色的本质,由物体反射光线中占优势的波长来决定,不同的波长产生不同的颜色感觉。
- 饱和度是指颜色的深浅和浓淡程度,饱和度越高,颜色越深。饱和度的深浅和白色的比例有关,白色的比例越多,饱和度越低。
HSI模型可以用一个圆锥空间模型来描述,如图所示,通常把色调和饱和度统称为色度,途中圆锥空间中间的横截面就是色度圆(详细地可以理解为:由圆心向圆周方向延申表示饱和度,以圆心角[0,2]区分色调,0为红色,为绿色,为蓝色),而圆锥向上或向下延申的是亮度分量。
RGB -> HSI
,其中
MATLB可以使用rgb2hsi()函数直接将RGB图像转换至HSI图像。
HSI -> RGB
----------------------------------------------------------------------------------
当时:
----------------------------------------------------------------------------------
当时,即令,然后:
----------------------------------------------------------------------------------
当时,即令,然后:
----------------------------------------------------------------------------------
MATLAB可以使用hsi2rgb()函数直接将HSI图像转换至RGB图像。
四、HSV
HSV(色调、饱和度、Value(值))模型是人们用来从调色板或颜色轮中挑选颜色(如颜料、墨水等)所采用的彩色系统之一。相比于RGB,HSV更接近于人们对彩色的经验和感知。在绘画术语中,色调、饱和度、值分别使用色泽、明暗、调色来表达。
HSV模型可以用一个倒立的六棱锥来描述,如图所示。六边形的六个角分别表示R、G、B、C、M、Y六种颜色,每种颜色相隔,由中心向六边形外边方向延申表示饱和度,沿六棱锥高的方向延申表示V。
RGB -> HSV
假设将R、G、B均归一化到[0,1],MAX表示R、GB
其中,,,。如果MAX=MIN,则H不存在,即纯灰色;若H<0,则;若MAX=0,则S=0,没有色彩;若V=0,则是黑色。
MATLAB可以使用rgb2hsv()直接将RGB图像转换为HSV图像。
HSV -> RGB
假设:,,:
若,则
;
若,则
令,,,,
MATLAB可以使用hsv2rgb()函数直接将HSV图像转换为RGB图像。
YUV、YIQ是电视系统采用的颜色编码方式,YCbCr最多应用于计算机显示器系统。YUV是欧洲电视系统PAL和SECAM模拟彩色电视制式采用的颜色空间;YIQ是北美NTSC彩色制式,主要用于美国的电视系统;YCbCr常用于影片中的影像连续处理,或是数字摄影系统中。
五、YUV
YUV是被欧洲电视系统所采用的一种颜色编码方式,是PAL和SECAM模拟彩色电视制式采用的颜色空间。Y表示亮度,U、V表示色差。如果只有Y信号分量而没有U、V分量,那么就是黑白灰度图。
亮度公式:,而U、V是由B-Y、R-Y按不同比例压缩而成的。
RGB -> YUV
MATLAB可以使用rgb2yuv()函数直接将RGB图像转换为YUV图像。
YUV -> RGB
MATLAB可以使用yuv2rgb()函数直接将YUV图像转换为RGB图像。
六、YIQ
YIQ(亮度、色调、饱和度)是北美NTSC彩色制式,主要用于美国的电视系统。这种形式与YUV模型有相同的优势:灰度信息与彩色信息是分离的。亮度表示灰度,色调和饱和度存储彩色信息。