1.基于颜色加法混色原理的RGB
RGB颜色模型即红绿蓝颜色模型。由模仿生物视网膜三种视锥细胞产生,之后通过三原色叠加来进行彩色图像显示。通过在黑色上不断叠加三原色来显示不同的颜色。在RGB颜色空间中,分别将RGB作为笛卡尔坐标系中XYZ坐标系产生。每一个颜色取值范围为[0,256)
数字图像多采用RGB进行存储和显示,三个通道分别分开存储图像上每个像素的RGB值,单独每个通道显示均为灰度图像,通道为二维矩阵,opencv中存储通道顺序为BGR。三通道及多通道图像表示如下:
2.基于颜色减法混色原理的CMY/CMYK
CMY是青(Cyan)、洋红或品红(Magenta)和黄(Yellow)三种颜色,由于三原色得不到纯黑色,CMYK则是打印时加上墨色(black ink),例如青色可以通过蓝色和绿色光相加得到,则白色通过青色时,没有红色分量。底色为白色进行色彩减法可以得到各种颜色。RGB与CMYK相互转换为:
R = 255*(100-C)*(100-K)/10000;
G = 255*(100-M)*(100-K)/10000;
B = 255*(100-Y)*(100-K)/10000;
3.YUV
YUV(亦称YCrCb)是被欧洲电视系统所采用的一种颜色编码方法。采用YUV色彩空间的重要性是它的亮度信号Y和色度信号U、V是分离的。如果只有Y信号分量而没有U、V信号分量,那么这样表示的图像就是黑白灰度图像。彩色电视采用YUV空间正是为了用亮度信号Y解决彩色电视机与黑白电视机的兼容问题,使黑白电视机也能接收彩色电视信号。其中“Y”表示明亮度(Luminance或Luma),也就是灰阶值;而“U”和“V” 表示的则是色度(Chrominance或Chroma,作用是描述影像色彩及饱和度,用于指定像素的颜色。“亮度”是透过RGB输入信号来建立的,方法是将RGB信号的特定部分叠加到一起。“色度”则定义了颜色的两个方面─色调与饱和度,分别用Cr和Cb来表示。其中,Cr反映了RGB输入信号红色部分与RGB信号亮度值之间的差异。而Cb反映的是RGB输入信号蓝色部分与RGB信号亮度值之同的差异。YUV和RGB互相转换的公式如下:
Y = 0.299R + 0.587G + 0.114B
U = -0.147R - 0.289G + 0.436B
V = 0.615R - 0.515G - 0.100B
R = Y + 1.14V
G = Y - 0.39U - 0.58V
B = Y + 2.03U
4.HSV、HSI
RGB可以方便的进行计算机存储和读取,但对人进行颜色判断十分不友好,因此有了HSV,HSI颜色空间。HSV即色相(Hue)、饱和度(Saturation)、明度(Value),又称HSB(B即Brightness)。
H色相是色彩的基本属性,就是平常说的颜色的名称,如红色、黄色等。饱和度,用角度度量,取值范围为0°~360°,从红色开始按逆时针方向计算,红色为0°,绿色为120°,蓝色为240°。它们的补色是:黄色为60°,青色为180°,品红为300°;
S是指色彩的纯度,越高色彩越纯,低则逐渐变灰,取0-100%的数值。饱和度S表示颜色接近光谱色的程度。一种颜色,可以看成是某种光谱色与白色混合的结果。其中光谱色所占的比例愈大,颜色接近光谱色的程度就愈高,颜色的饱和度也就愈高。饱和度高,颜色则深而艳。光谱色的白光成分为0,饱和度达到最高。通常取值范围为0%~100%,值越大,颜色越饱和。
HSI与HSL使用相同的模型,仅在亮度的描述上不同。
5.Lab
Lab色彩空间(Lab color space)是颜色-对立空间,带有维度L表示亮度,a和b表示颜色对立维度,基于了非线性压缩的CIE XYZ色彩空间。Lab颜色被设计来接近人类视觉。它致力于感知均匀性,它的L分量密切匹配人类亮度感知。因此可以被用来通过修改a和b分量的输出色阶来做精确的颜色平衡,或使用L分量来调整亮度对比。这些变换在RGB或CMYK中是困难或不可能的——它们建模于物理设备的输出,而不是人类的视觉感知。因为Lab空间比电脑萤幕、印表机甚至比人类视觉的色域都要大,表示为Lab的位图比RGB或CMYK位图获得同样的精度要求更多的每像素数据。
Lab颜色空间中的L分量用于表示像素的亮度,取值范围是[0,100],表示从纯黑到纯白;a表示从红色到绿色的范围,取值范围是[127,-128];b表示从黄色到蓝色的范围,取值范围是[127,-128]。
RGB-XYZ-Lab转换
XYZ转lab