一、基本概念
色彩空间(color space)指的是用一种客观的方式叙述颜色在人眼上的感觉,通常需要三色刺激值。首先定义三种主要颜色,再利用颜色叠加模型即可叙述各种颜色。其大致分类为
色域(color gamut)就是图像颜色的区域,色域越大图像所表现的颜色就越多,色彩的饱和度也就越高。
条件等色现象:颜色由其光的波长(或频率)唯一定义,也就是一种波不可能由其他波组合出来,不可能由多种波长合成一种波长。而人的感官细胞会产生一种错觉,即几种波的混合刺激等效于另一种波的单独刺激。
明度:眼睛对光源和物体表面的明暗程度的感觉,主要是由光线强弱决定的一种视觉经验。
色度:色度是不包括亮度在内的颜色的性质,它反映的是色调(Hue)和饱和度(saturation)
二、色彩空间数字化
人的视网膜上布满了感光细胞,当有光线传入人眼时,这些细胞就会将刺激转化为视神经的电信号,最终在大脑得到解释。视网膜上有两类感光细胞:视锥细胞和视杆细胞。视锥细胞包含有一种感光色素,分别对短(s,420nm~440nm)、中(m,530~540nm)、长(L,560~580nm)三种波长敏感,即红、绿、蓝三种光敏感。这类细胞能在较明亮的环境中提供辨别颜色和形成精细视觉的功能。视杆细胞不能感受颜色、分辨精细的空间,但在较弱的光线下可以提供对环境的分辨能力(比如夜里看到物体的黑白轮廓)。
为了将视觉量化,转化为数字值,CIE(国际照明委员会)是位于欧洲的一个国际学术研究机构,1931年,CIE在会议上根据之前的实验成果提出了一个标准——CIE1931-RGB标准色度系统。在颜色匹配中,用于颜色混合以产生任意颜色的三种颜色叫做三原色 。通常加色混色中使用红、绿、蓝三种颜色光为三原色是为了得到最多的混合色。当与待测色达到色匹配时所需要的三原色的数量,称为三刺激值,记作R、G、B。一种颜色与一组R、G、B值相对应,R、G、B值相同的颜色,颜色感觉(外貌)必定相同。CIE-RGB 光谱三刺激值是 CIE 以 317 位正常视觉者,用 CIE 规定的红 、绿 、蓝三原色光,对等能光谱色从 380 ~ 780nm 所进行的专门性颜色混合匹配实验得到的。实验时,与光谱每一波长为 λ的等能光谱色对应的红 、绿 、蓝三原色数量,称为光谱三刺激值,记为 r(λ)、g(λ)、b(λ)。
光谱三刺激值:匹配等能光谱色的三原色数量。用符号r,g,b表示。
因此,匹配波长为 λ的等能光谱色 C(λ)的颜色方程为:
为了更好地理解上述颜色方程,将
。光谱三刺激值的数据及单位量(R )=1 .0000,(G)=4 .5907,(B)=0 .0601代入上式中得到等能光谱色 C(λ)的相对亮度曲线(如图所示)。其中最大值为C(555),即
从图中可以看出等能光谱色的相对亮度曲线与人眼的明视觉光谱光视效率曲线相同 。由于C(λ)的最大值为 C(555),因此 C(λ)可以理解为相对亮度。假设等能光谱色的匹配实验中三原色光的实际亮度为
。则有:
式中
为等能光谱色实际色光的最大亮度 。所以CIE-RGB光谱三刺激值,是匹配光谱每一波长为λ的等能光谱色对应的红 、绿 、蓝三原色的实际数量,经过单位量换并进行归一化处理而得到的数值。
在λ=555nm时等能光谱色的亮度具有最大值,说明等能光谱色中绿色的亮度较高,使用红 、绿 、蓝三种单色光(原色光)混合白光时需要大量的绿光(比例为1 .0000:4.5907:0.060),这说明在等能光谱中绿光波长段上的亮度总和较大,因此绿光在等能光谱中有很强的代表性。
三、色彩域相互转换
颜色空间有设备相关和设备无关之分.
1. 设备相关的颜色空间是指颜色空间指定生成的颜色与生成颜色的设备有关。
- RGB颜色空间是与显示系统相关的颜色空间,计算机色彩显示器和彩色电视机显示色彩的原理一样,都是采用R、G、B相加混色的原理,通过发射出三种不同强度的电子束,使屏幕内侧覆盖的红、绿、蓝磷光材料发光而产生色彩。这种色彩的表示方法称为RGB色彩空间表示。计算机显示器使用RGB来显示颜色,用像素值(例如,R=250,G=123,B=23)生成的颜色将随显示器的亮度和对比度的改变而改变。RGB 颜色空间是图像处理中最基本、最常用、面向硬件的颜色空间,比较容易理解。
RGB 颜色空间利用三个颜色分量的线性组合来表示颜色,任何颜色都与这三个分量有关,而且这三个分量是高度相关的,所以连续变换颜色时并不直观,想对图像的颜色进行调整需要更改这三个分量才行。自然环境下获取的图像容易受自然光照、遮挡和阴影等情况的影响,即对亮度比较敏感。而 RGB 颜色空间的三个分量都与亮度密切相关,即只要亮度改变,三个分量都会随之相应地改变,而没有一种更直观的方式来表达。
- YUV(亦称YCrCb)是被欧洲电视系统所采用的一种颜色编码方法。在现代彩色电视系统中,通常采用三管彩色摄像机或彩色CCD摄影机进行取像,然后把取得的彩色图像信号经分色、分别放大校正后得到RGB,再经过矩阵变换电路得到亮度信号Y和两个色差信号R-Y(即U)、B-Y(即V),最后发送端将亮度和两个色差总共三个信号分别进行编码,用同一信道发送出去。这种色彩的表示方法就是所谓的YUV色彩空间表示。采用YUV色彩空间的重要性是它的亮度信号Y和色度信号U、V是分离的。如果只有Y信号分量而没有U、V信号分量,那么这样表示的图像就是黑白灰度图像。彩色电视采用YUV空间正是为了用亮度信号Y解决彩色电视机与黑白电视机的兼容问题,使黑白电视机也能接收彩色电视信号。YUV主要用于优化彩色视频信号的传输,使其向后相容老式黑白电视。与RGB视频信号传输相比,它最大的优点在于只需占用极少的频宽(RGB要求三个独立的视频信号同时传输)。其中“Y”表示明亮度(Luminance或Luma),也就是灰阶值;而“U”和“V” 表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。“亮度”是透过RGB输入信号来建立的,方法是将RGB信号的特定部分叠加到一起。“色度”则定义了颜色的两个方面─色调与饱和度,分别用Cr和Cb来表示。其中,Cr反映了RGB输入信号红色部分与RGB信号亮度值之间的差异。而Cb反映的是RGB输入信号蓝色部分与RGB信号亮度值之同的差异。YUV和RGB互相转换的公式如下(RGB取值范围均为0-255)︰
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
- 在图像处理中使用较多的是 HSV 颜色空间,它比 RGB 更接近人们对彩色的感知经验。非常直观地表达颜色的色调、鲜艳程度和明暗程度,方便进行颜色的对比。常用于分割指定颜色的物体。HSV 表达彩色图像的方式由三个部分组成:Hue(色调、色相)、Saturation(饱和度、色彩纯净度)、Value(明度)。用下面这个圆柱体来表示 HSV 颜色空间,圆柱体的横截面可以看做是一个极坐标系 ,H 用极坐标的极角表示,S 用极坐标的极轴长度表示,V 用圆柱中轴的高度表示。Hue 用角度度量,取值范围为0~360°,表示色彩信息,即所处的光谱颜色的位置。,表示如下:
颜色圆环上所有的颜色都是光谱上的颜色,从红色开始按逆时针方向旋转,Hue=0 表示红色,Hue=120 表示绿色,Hue=240 表示蓝色等等。在 GRB中 颜色由三个值共同决定,比如黄色为即 (255,255,0);在HSV中,黄色只由一个值决定,Hue=60即可。
HSV 圆柱体的半边横截面(Hue=60):其中水平方向表示饱和度,饱和度表示颜色接近光谱色的程度。饱和度越高,说明颜色越深,越接近光谱色饱和度越低,说明颜色越浅,越接近白色。饱和度为0表示纯白色。取值范围为0~100%,值越大,颜色越饱和。竖直方向表示明度,决定颜色空间中颜色的明暗程度,明度越高,表示颜色越明亮,范围是 0-100%。明度为0表示纯黑色(此时颜色最暗)。
可以通俗理解为:在Hue一定的情况下,饱和度减小,就是往光谱色中添加白色,光谱色所占的比例也在减小,饱和度减为0,表示光谱色所占的比例为零,导致整个颜色呈现白色。明度减小,就是往光谱色中添加黑色,光谱色所占的比例也在减小,明度减为0,表示光谱色所占的比例为零,导致整个颜色呈现黑色。HSV 对用户来说是一种比较直观的颜色模型。我们可以很轻松地得到单一颜色,即指定颜色角H,并让V=S=1,然后通过向其中加入黑色和白色来得到我们需要的颜色。增加黑色可以减小V而S不变,同样增加白色可以减小S而V不变。例如,要得到深蓝色,V=0.4 S=1 H=240度。要得到浅蓝色,V=1 S=0.4 H=240度。HSV 的拉伸对比度增强就是对 S 和 V 两个分量进行归一化(min-max normalize)即可,H 保持不变。
RGB颜色空间更加面向于工业,而HSV更加面向于用户,大多数做图像识别这一块的都会运用HSV颜色空间,因为HSV颜色空间表达起来更加直观!
- HLS 颜色空间。HLS 和 HSV 比较类似,这里一起介绍。HLS 也有三个分量,hue(色相)、saturation(饱和度)、lightness(亮度)。HLS 和 HSV 的区别就是最后一个分量不同,HLS 的是 light(亮度),HSV 的是 value(明度)。可以到这个 网页 尝试一下。HLS 中的 L 分量为亮度,亮度为100,表示白色,亮度为0,表示黑色;HSV 中的 V 分量为明度,明度为100,表示光谱色,明度为0,表示黑色。下面是 HLS 颜色空间圆柱体:
提取白色物体时,使用 HLS 更方便,因为 HSV 中的Hue里没有白色,白色需要由S和V共同决定(S=0, V=100)。而在 HLS 中,白色仅由亮度L一个分量决定。所以检测白色时使用 HSL 颜色空间更准确。
参考博客:三分钟带你快速学习RGB、HSV和HSL颜色空间 - 知乎
- 大多数在纸上沉积彩色颜料的设备,如彩色打印机和复印机,要求输入CMY(Cyan, Magenta,Yellow)数据或在内部进行RGB到CMY的转换。这一转换是使用下面的式子进行的:
注意:上式表明涂有青色颜料的表面所反射的光中不包含红色(C-1-R)。类似的,纯深红色不反射绿色,纯黄色不反射蓝色。其实,RGB值可以很容易通过1减去CMY值得到。在实际图像处理中,这种彩色模型主要用于产生硬拷贝输出,依次从CMY到RGB的反向操作通常没有实际意义。在实际应用中,黑色可以直接获取,不需要从三原色合成,并且合成的黑色也不纯。所以为了生成真正的黑色,加入了黑色——CMYK模型。毕竟黑白打印较多,直接使用黑色原料不仅成本少,而且颜色比较纯。
CMYK(Cyan, Magenta,Yellow, blacK)颜色空间应用于印刷工业,印刷业通过青(C)、品(M)、黄(Y)三原色油墨的不同 网点面积率的叠印来表现丰富多彩的颜色和阶调,这便是三原色的CMY颜色空间。实际印刷中,一般采用青 (C)、品(M)、黄(Y)、黑(BK)四色印刷,在印刷的中间调至暗调增加黑版。当红绿蓝三原色被混合时,会产生 白色,但是当混合蓝绿色、紫红色和黄色三原色时会产生黑色。既然实际用的墨水并不会产生纯正的颜色, 黑色是包括在分开的颜色,而这模型称之为CMYK。CMYK颜色空间是和设备或者是印刷过程相关的,则工艺方法、 油墨的特性、纸张的特性等,不同的条件有不同的印刷结果。所以CMYK颜色空间称为与设备有关的表色空间。 而且,CMYK具有多值性,也就是说对同一种具有相同绝对色度的颜色,在相同的印刷过程前提下,可以用分种 CMYK数字组合来表示和印刷出来。这种特性给颜色管理带来了很多麻烦,同样也给控制带来了很多的灵活性。 在印刷过程中,必然要经过一个分色的过程,所谓分色就是将计算机中使 用的RGB颜色转换成印刷使用的CMYK 颜色。在转换过程中存在着两个复杂的问题,其一是这两个颜色空间在表现颜色的范围上不完全一样,RGB的 色域较大而CMYK则较小,因此就要进行色域压缩;其二是这两个颜色都是和具体的设备相关的,颜色本身没有 绝对性。因此就需要通过一个与设备无关的颜色空间来进行转换,即可以通过以上介绍的XYZ或LAB色空间来 进行转换。
2. 设备无关的颜色空间是指颜色空间指定生成的颜色与生成颜色的设备无关
- CIE L*a*b*颜色空间就是设备无关的颜色空间,它建筑在HSV(hue, saturation and value)颜色空间的基础上,用该空间指定的颜色无论在什么设备上生成的颜色都相同。
同RGB颜色空间相比,Lab(Commission International EclairageLab)是一种不常用的色彩空间。它是在1931年国际照明委员会(Commission International Eclairage, CIE)制定的颜色度量国际标准的基础上建立起来的。1976年,经修改后被正式命名为CIELab。它是一种设备无关的颜色系统,也是一种基于生理特征的颜色系统。这也就意味着,它是用数字化的方法来描述人的视觉感应。Lab颜色空间中的L分量用于表示像素的亮度,取值范围是[0,100],表示从纯黑到纯白;a表示从红色到绿色的范围,取值范围是[127,-128];b表示从黄色到蓝色的范围,取值范围是[127,-128]。下图所示为Lab颜色空间的图示:
Lab颜色空间比计算机显示器、打印机甚至比人类视觉的色域都要大,表示为 Lab 的位图比 RGB 或 CMYK 位图获得同样的精度要求更多的每像素数据。虽然我们在生活中使用RGB颜色空间更多一些,但也并非Lab颜色空间真的一无所有。例如,在 Adobe Photoshop图像处理软件中,TIFF格式文件中,PDF文档中,都可以见到Lab颜色空间的身影。而在计算机视觉中,尤其是颜色识别相关的算法设计中,rgb,hsv,lab颜色空间混用更是常用的方法。
【opencv】颜色空间总结_AI小白龙的博客-CSDN博客
https://blog.csdn.net/tornadofeng/article/details/2047072
数字图像处理(2): 颜色空间/模型—— RGB, CMY/CMYK, HSI, HSV, YUV_TechArtisan6的博客-CSDN博客