这篇文章来源于前两天看到的一篇关于颜色和显示的基础科普文章
https://mp.weixin.qq.com/s/-fbADEVR7BCtZg48oMlwDg
本想抱着“现在摄影师们都在关注色彩管理的哪个阶段”的心态进去看看,然后发现其实是一篇科普文章。那么作为一个老民工,当然就想看看这里面的说法到底如何。结果看完果然就血压飙升了,粗略看好像说的很对,但是很多地方是经不起仔细考究的,甚至出现了令人笑话的最基本的错误。
当然我们并没有否认原作者的辛苦调研工作和撰写,我们只是本着对读者负责的态度,对原文解释的一些有问题的地方进行勘误或者补充说明。我们对原作者在推动色彩科学领域所做的科普贡献表示认可和赞美!
进入捉虫时刻
早期的显示器是阴极射线管显示器(CRT),也就是早期我们家里电视或电脑的大背头显示器。这种显示器的最高亮度为100尼特,所以如何用这么窄的亮度范围去显示这个世界0-100,000尼特这么巨大的亮度范围,成了早期工程师需要解决的问题。
为了应对这一限制,我们需要通过“压缩”或“映射”亮度来在有限亮度范围中再现高对比度的场景。在如此低的亮度范围内还原自然界的高动态范围场景,于是工程师便发明了一种“Gamma校正”曲线来调整显示器的亮度显示方式。伽马校正利用人眼对低亮度较为敏感、对高亮度不太敏感的特性,将高亮度区域进行过渡压缩,而在中低亮度区域增加细节。
错误1:gamma校正发明出来的原因完全不是因为“将大亮度范围映射到小亮度范围”,而是因为一个CRT显示器固有的显示特性。初期,可以大规模应用的显示器件只有显像管(CRT,阴极射线管),而显像管的原生电-光转换特性(EOTF,Electro-Optical Transfer Function)是非线性的。为了正确地再现图像对比度(反差),需要使显示亮度与场景亮度呈现线性的关系。因此,必须在摄像机中对成像器件输出的线性信号进行“灰度预失真”的非线性处理,使其与显像管的灰度失真相反,以补偿显像管的非线性,使场景光与显示光的光-光转换特性(OOTF,Opto-Optical Transfer Function)是线性的,这就是“伽玛校正”。

也就是说,Gamma校正根本与压缩亮度无关,而是为了让我们看到和真实世界相对亮度关系一致的画面。比如原有亮度状态是 4,8,12,16,而在CRT下就是1,2,4,8,而我们的目的就是获得2,4,6,8这样跟原始场景相对亮度关系一致的画面。
如今gamma校正已经不仅限于上述图里面的“电视摄像机Gamma”,而是广泛存在于我们任何的图像数据中,比如电脑操作系统输出给显示器的就是已经经过Gamma校正的图像,而显示器的光电响应依然按照当年类似CRT的非线性特性来制造。两者一抵消,因此我们能够看到正常的图像。
错误2:上述“伽马校正利用人眼对低亮度较为敏感、对高亮度不太敏感的特性,将高亮度区域进行过渡压缩,而在中低亮度区域增加细节。”这也只是Gamma校正恰好且巧妙地满足人眼特性的结果,而非其设计目的。
不妨假设一下,如果显像管的电-光转换特性也像成像器件一样是线性的,当初电视可能也会采用与声音一样的线性表达方式。
至于那些映射和压缩所用的Mapping算法,我们可以之后在未来的文章中讨论
常见的伽马值如下:
伽马2.2:这是许多计算机显示器的默认伽马值,适用于大多数普通显示环境,能均衡暗部和亮部细节。
伽马2.4:通常用于视频制作和广播系统,例如Rec.709标准,这是一个适合在控制环境下观看(如较暗的房间)的伽马值,增强了暗部细节。
伽马2.6:用于专业级别的影院放映环境,在黑暗的环境中观看时能提供更高的对比度效果。
错误1:
计算机显示器的默认gamma从原则上来说应该是sRGB,sRGB虽然近似于Gamma2.2,但实则是一个两段式的函数设计,最暗区域采用线性设计,以避免一些幂函数斜率过大的导致噪声,而在线性段之上采用Gamma2.4函数,最终形成了一个近似于Gamma2.2函数的“复合体”,但在处理的时候,并不能和Gamma2.2这样的纯幂混淆,否则就会出现显示结果不一样的问题。如果你对此有兴趣,可以去wiki上看看sRGB的完整定义 https://en.wikipedia.org/wiki/SRGB
错误2,这也是本文出现的最荒唐可笑的错误之一:
“例如Rec.709标准,这是一个适合在控制环境下观看(如较暗的房间)的伽马值”。
这句话的错误在于,Rec.709根本不是一个显示Gamma!!Rec.709全文并没有提出任何对显示Gamma的规范。真正提出Gamma2.4的显示gamma的白皮书是BT.1886。(所以你才会看到在达芬奇的色彩管理中,Rec709伽马和Gamma2.4伽马是两个分开的选项)。
如果你好奇Rec.709的这个名字来源,不妨继续往后看。
人眼是一件非常精密的仪器,而且,这个世界上没有任何图像设备能够捕捉和显示人眼可见的全光谱颜色。因此,图像设备记录、编辑、显示或输出这些颜色的子集,这种可再现的颜色范围被称为设备的色域。此外,设备捕获、处理和显示图像最亮和最暗部分之间的不同比例,从纯黑色到最亮的白色。这个亮度范围被称为动态范围。这些属性共同定义了图像或设备的色彩空间。
错误1:
“此外,设备捕获、处理和显示图像最亮和最暗部分之间的不同比例,从纯黑色到最亮的白色。这个亮度范围被称为动态范围。”
在一句话内实际上包含了矛盾的关系。【比例】实际上是gamma,或者是我们行业所称的OETF、EOTF、OOTF转换函数,而只有最黑和最白之间的这个范围才能叫做动态范围。而动态范围也有绝对和相对,比如自然界亮度范围大约在0.01-10000nit之间,这一个绝对动态范围,而处理图像时候所涉及的0-255,或者色彩空间转换涉及的归一化处理,都是在相对动态范围中工作。
错误2:
这些属性共同定义了图像或设备的色彩空间。
色彩空间由gamma和gamut定义,即伽马和色域共同构成。动态范围并不直接于色彩空间大小对应。也就是说,即便使用小的色彩空间,也可以表示非常大的动态范围,只需要声明在相对的色彩空间范围中(0-1),两个端点分别于与绝对动态范围之间的关系。
传统的计算机显示器和高清电视支持有限的色彩空间,该色彩空间基于一个名为Rec的几十年前的行业标准——Rec.709。Rec.709设备(以及为在它们上显示而创建的视频内容)具有标准色域颜色,即每次观看广播电视节目、DVD或蓝光光盘时,你都会看到的受限色彩空间。
错误1:
如今观看一些超高清规格的广播电视节目的时候,我们已经能够看到广色域的节目了,例如Rec.2100 HLG的HDR节目,而蓝光光盘也有不少按照HDR规格制作的节目。而刚刚我们也提到过,Rec.709并没有规范显示设备的色域和伽马。只是被平时大家俗称为Rec.709,但严格意义上我们在说的实际上是Rec.709色域,BT.1886伽马(Gamma2.4)所构成的那个显示色彩空间。
错误2,也是非常荒唐搞笑的错误:
该色彩空间基于一个名为Rec的几十年前的行业标准——Rec.709
这句话直接指明了写这篇文章的作者对这些行业标准毫无了解,基本都是现抄过来加入自己的理解。
这句错误的话可以翻译为,小明在日记本的页面15写下了对未来的规划,并把它命名为《页面15规划》,所以根据这位作者的意思,这个规划也基于一个名为“页面”的日记记录。是不是很荒唐。
这句话的正确翻译是,该色彩空间基于一个名为ITU(国际电信联盟)提出的建议书(Recommendation),编号为709中所提出的色彩空间。即ITU-R BT.709,这里的R就是指建议书,所以我们平时才简称为Rec.709(即ITU建议书709),而这里的BT意为Broadcasting service (television),广播电视标准。
有兴趣也可以阅读709原文,https://www.itu.int/dms_pubrec/itu-r/rec/bt/R-REC-BT.709-6-201506-I!!PDF-E.pdf,包括那个真正提出了Gamma2.4的BT.1886标准https://www.itu.int/rec/recommendation.asp?lang=en&parent=R-REC-BT.1886
常见的色域有Rec.2020,Adobe RGB,DCI-P3,sRGB等。不同的色域运用场景也不尽相同。
补充说明,P3色域并不一定是为电影设计的,因为P3中包含了多种定义,例如P3-DCI,P3-D65,P3-D60,P3-D55,这些后缀都是指色域的白点,即显示器所定义的白。所以下次当你看到自己的显示器上出现了P3的时候,不妨仔细问一下制造商,这个P3到底是DCI的P3,还是适用于电脑显示器的P3-D65,风羽酱的显示器中的P3就明确指出了这是用于电影项目调色的DCI-P3格式。如果这个选择不对,很可能出现图像发绿或者发紫的可能。因为DCI白点实际上要比D65要更“绿”一些。当然在色彩管理中我们也会对白点进行管理,比如我们可以在D65的屏幕上完成调色,再转换到DCI的白点,这样我们的节目也可以在DCI白点的屏幕上正常的播放。