接上篇内容。
还是强调一下以下内容来自于ICCV 2023的一个PPT,名称为《Understanding the in-camera rendering pipeline & the role of AI and deep learning》,本章节插入了一些相关的知识作为补充,并以下面这幅图像为例,展示了不同颜色空间各分量的效果。

图22 测试图
1. RGB颜色空间
1.1 原理介绍
RGB颜色空间都在舌形图上,对于RGB色彩空间来说,只要确认了R、G、B三个基底颜色,再定义出白色,从XYZ转到RGB空间的转换矩阵就完全确定了,下图是不同的RGB空间能表示的范围(图来自维基百科)。

图23 不同的色域
图23总共给出了sRGB、SWOP CMYK、Colormatch RGB、Adobe RGB和ProPhoto RGB共5个RGB颜色空间,用Kimi搜索了一下这5种RGB空间的特性,概括如下:
1. sRGB:standard RGB,由微软公司在1996年与HP(惠普)公司以及其他厂商合作开发的色彩空间标准,它基于人类视觉特性定义了一种设备独立的色彩表示,使得在不同的显示设备上能够保持色彩的一致性。这种色彩空间定义出的颜色范围较小,只覆盖了人类视觉可以感知的大部分颜色,但是不包括一些专业领域需要的颜色。sRGB的优点是易于与其他色彩空间转换,这使得它在不同应用和设备之间的兼容性较好。
2. SWOP CMYK:(Specifications for Web Offset Publications)是一种专门用于商业印刷的颜色空间标准,它定义了一套色彩管理规范,以确保在不同的印刷机和印刷条件下获得一致的颜色输出。CMYK代表四种不同的油墨颜色,即青色(Cyan)、品红色(Magenta)、黄色(Yellow)和黑色(Key,即定位或关键色)。与RGB或Adobe RGB等颜色空间相比,CMYK的颜色范围更窄,因为它依赖于实际的油墨混合。因此,某些在屏幕上显示的颜色可能无法在CMYK印刷中精确再现。
3. Colormatch RGB:由HP(惠普)公司开发,为专业打印和图形设计工作而设计,提供了比标准sRGB更广的色彩范围(特别是在青绿色和洋红色区域),确保在不同的显示设备和打印设备上能够实现色彩的一致性和准确性。
4. Adobe RGB:由Adobe Systems Inc.在1998年开发的色彩管理系统。它被设计用来提供一个比标准sRGB更宽广的色彩范围(特别是在蓝色和绿色区域),使得在图像编辑、打印和显示过程中能够更准确地表示颜色。Adobe RGB常用于专业摄影、图形设计和出版领域,它能够提供更丰富的色彩细节,特别是在处理高动态范围(HDR)图像时。它与sRGB基本兼容,这意味着sRGB中的颜色都能在Adobe RGB中准确表示,但反之则不一定。
5. ProPhoto RGB:由Kodak公司开发,主要用于摄影、打印和其他需要高色彩精度的专业图像处理领域。它在1998年被引入,作为Adobe RGB的一个替代方案,提供了一个更加宽广和更加线性化的色彩范围。ProPhoto RGB可覆盖人眼可见颜色的最大范围,其色域远远超出了sRGB和Adobe RGB,能够表示更多的颜色,包括非常明亮和非常暗淡的色调。
RGB颜色空间展示出来就是一个颜色立方体,如图24左边所示,黑色在坐标系原点,黑色的对角线就是白点,红绿相交为黄色,红蓝相交为品红,蓝绿相交为青色,中性色(灰白色)沿着立方体的对角线排列,即R=G=B。

图24 RGB color model
1.2 效果展示
图22的测试图分别显示R、G、B三个分量的效果,如图25所示,从左到右依次是R分量、G分量和B分量,从火焰的位置可以看出来,G分量的细节和层次感都要好一些。

图25 RGB三分量图
图23中的RGB颜色空间都是线性的,它符合显示设备的底层逻辑,但是它不符合人类对颜色认知的顶层感受,因为人对颜色的感知并不是线性的,于是又有了其他的颜色空间。
2. Lab颜色空间
2.1 原理介绍
图26中最外面那一圈标记出了光的波长,可以看见不同波长光分布的疏密程度有差别,蓝光和红光要密一些,绿色最稀疏,这意味着颜色的分布并不均匀。我们知道舌形图是XYZ颜色空间映射到X+Y+Z=1平面上的,而XYZ颜色空间是CIE通过颜色匹配实验测试出来的,它代表的是人眼对颜色的感知特性,这一定程度上说明,人眼对颜色的感知是不均匀的。
在20世纪40年代,麦克亚当(David MacAdam)验证了人眼在色彩方面存在感知阈值,这个结论如图26中舌形图上的椭圆(为了能看的更清楚,图中的椭圆被放大了7倍,实际没有这么大)所示,它直观的展示了CIE XYZ空间在色彩分布上的不均匀。这就是说,在颜色变化的时候,人眼对小椭圆范围内的颜色变化更敏感,对大椭圆范围内的颜色变化更迟钝。

图26 CIE LAB space
人们不喜欢这种色彩的非均匀特性,希望通过一些非线性变换,找到一个“感知均匀性”更好的色彩空间。于是在1976年,CIE把麦克亚当实验和史蒂文幂律结合起来,对CIE XYZ做了个变换推出了Lab颜色空间(图27)。

图27 CIE 1976 LAB
Lab空间的L代表0~100之间的视觉亮度,是CIE XYZ中的Y分量经过非线性(gamma)变换而来,其数值近似为Y的立方根(史蒂文幂律)。a和b的范围都是-50~50之间,二者都是非线性变化的,a值在红色和绿色之间渐变,b值在黄色和蓝色之间渐变,a=b=0的时候代表中性灰色。此外,CIE Lab要求必须指定白点,默认白点是D65。
对比一下Lab和xyY的色度图(图28),Lab的这个平面图相当于是把上图的颜色球从中间切开,排除Y轴的亮度分量,得到的就只是a和b两个色度坐标图,从图上看Lab的红色、黄色、绿色和蓝色都有自己区域,差不多算是均匀四等分(Lab达到了颜色均匀分布的目标),但是在xyY这边,绿色看起来占了一半的位置(如果想把颜色处理到最佳,最好避开XYZ定义出的颜色空间)。

图28 CIE LAB
2.2 RGB和Lab互转公式
RGB颜色空间不能直接转换为Lab颜色空间,需要借助XYZ颜色空间,要先把RGB颜色空间转换到XYZ颜色空间,之后再把XYZ颜色空间转换到Lab颜色空间。目前输入图像是网络下载的,默认为sRGB颜色空间,先用矩阵(1)把输入图像转到XYZ。
(1)
然后用公式(2)和(3)转到Lab颜色空间,为了确认白点,设置Xn、Yn和Zn分别为0.950456、1和1.088754。
(2)
(3)
Lab转XYZ颜色空间:
(4)
(5)
2.3 效果展示
楼主用matlab套公式(1)~(3)对输入的RGB测试图做了一下转换,Lab的效果如下图29所示,从左到右依次为L分量、a分量和b分量。

图29 Lab三分量图
3. HSV颜色空间
3.1 原理介绍
HSV颜色空间是一种用于表示颜色的模型,它基于人类对颜色的感知。HSV颜色空间通过三个维度来描述颜色:色调(Hue)、饱和度(Saturation)和亮度(Value)。

图30 Color model versus color space
图30的中间就是一个HSV颜色模型,是个圆柱形,但是网上查到的一些资料中,HSV颜色模型是一个圆锥,本文使用圆柱的这款,和ICCV保持一致。
色调(Hue):色调表示颜色的基本类型,通常用角度来表示,范围从0°到360°,对应于颜色的可见光谱,如红、橙、黄、绿、青、蓝、紫等。
饱和度(Saturation):饱和度表示颜色的纯度或强度。饱和度越高,颜色越纯,越低则颜色越接近于灰色。在HSV模型中,饱和度通常表示为百分比,范围从0%(灰色)到100%(最纯的颜色)。
亮度(Value或Brightness):亮度表示颜色的明暗程度。亮度越高,颜色越亮;亮度越低,颜色越暗。亮度通常也用百分比表示,范围从0%(黑色)到100%(白色)。
3.2 RGB和HSV互转公式
从RGB转到HSV,设当前像素的值为(r,g,b),值域范围[0,1],max=max(r,g,b),min=min(r,g,b),h的范围为[0,360]度之间,h=0用于max=min的时候,此时是灰色。
(6)
(7)
(8)
从HSV转到RGB,h的范围是[0,360],s的范围是[0,1],v的范围是[0,1],转换到RGB,RGB每个颜色通道的范围是[0,1]。
(9)
(10)
3.3 效果展示
用matlab实现了一下公式(6)~(8),把测试图从RGB颜色空间转到了HSV颜色空间,三分量如图31所示,从左到右依次是H分量、S分量和V分量。

图31 HSV三分量图
4. YUV颜色空间
4.1 原理介绍
YUV也是常用的颜色空间之一,它由一个代表亮度(Luminance)的Y分量和两个代表色度(Chrominance)的U和V组成。由于人类视网膜上的杆细胞要多余锥细胞,所以人眼对亮度的敏感程度要高于色度,也就是说,人眼对于亮暗的分辨能力要高于对颜色变化的分辨能力。基于此原理,在视频传输的时候,可以舍弃一部分UV分量,来减少带宽,同时也不会太影响图像质量。
U和V也合起来称为C分量,有些文档也会用“YC”或“YCbCr”来代指“YUV”,意思是一样的,都是指YUV颜色空间。U分量(也就是Cb分量),通常表示蓝色与黄色的差异。在YUV颜色空间中,U分量的数值范围通常是从-128到+127。正值倾向于表示黄色,而负值倾向于表示蓝色。V分量(也就是Cr分量),通常表示红色与绿色的差异。与U分量类似,V分量的数值范围也是从-128到+127。正值倾向于表示红色,而负值倾向于表示绿色。
4.2 RGB和YUV互转公式
(11)
(12)
4.3 效果展示
用matlab实现了一下公式(11),把测试图从RGB颜色空间转到了YUV颜色空间,三分量如图32所示,从左到右依次是Y分量、U分量和V分量。

图32 YUV三分量图
5. 单独对比做说明
在不同的颜色空间对比颜色说明了不了问题,但是Lab、HSV和YUV都有亮度分量,可以拿出来对比一下亮度分量的差异,图33从左到右分别是Lab的L(Lightness)分量、HSV的V(Value)分量和YUV的Y(Luminance)分量。

图33 亮度分量对比
HSV的V也就是亮度部分应该效果不佳,火焰部分是看不出明显层次的,这说明HSV模型没能很好的区分色调、饱和度和亮度。Lab的L和YUV的Y在火焰和衣服上的细节差不多,看右上角的烟雾部分,Lab完胜,YUV几乎没显示出烟雾,另外在人物的袖口部分,也能看出L的优秀表现。
虽然看起来Lab的表现比较好一些,但是考虑到颜色分量,YUV仍然是目前用的最广泛的颜色空间,在实际应用中,为了节省传输带宽,UV分量通常会被下采样,这个优势是Lab不具备的。