颜色空间允许用户和软件使用数字表示来明确表达颜色。
三个数一组的代码值(例如 [0.506, 0.266, 0.266])本身不足以指定颜色。必须针对特定的颜色空间对这些代码值进行解释。由这三个数表示的颜色在不同的颜色空间中也不相同。
若要将三个数一组的代码值与特定颜色完全匹配,与设备无关的颜色空间必须定义以下特性:
与设备无关的颜色空间示例包括 ACES 和 ICC 配置文件连接空间。
主颜色值可看作是用于定义颜色空间中颜色“点”的坐标轴。与设备无关的颜色空间通过引用 CIE 色度值定义其主颜色;从这方面来说,CIE 色度提供了一种通用参考帧或“世界”坐标系,以用于颜色空间之间的转化。对于一般的人类观察者来说,在给定的查看环境中,色度相同的两种颜色看起来相同。
以下是几种不同的主颜色系统示例:
若要解释数字代码值,需要了解数字的数据类型,例如,它们是 8 位、10 位、12 位还是 16 位,是整数值还是浮点值。此外,还需要了解值的编码,即代码值表示线性比例强度还是对数比例强度,以及是否应用了 Gamma。
“图像状态”的概念是一个标准框架 (ISO 22028-1),用于对共享类似特性和需要类似处理的颜色空间进行分组。有三种主要的图像状态。
有关如何在 CG 渲染和合成的“线性工作流”环境中的图像状态之间转化,存在一些不太明确的地方。大部分的不明确来自单词“线性”,实际上存在不同种类的线性编码:场景相关和输出相关。了解场景线性图像和输出线性图像(也称为“线性化输出相关”)之间的差异非常重要。
在这两种情况下,编码与亮度成比例;换句话说,未应用任何 Gamma 编码。但是,在场景线性图像中,值与场景亮度成比例;而在输出线性图像中,值与显示亮度成比例。用于渲染计算机图形的数学采用线性颜色空间,这通常指的是场景线性颜色空间而非输出线性颜色空间。
若要准备场景线性图像进行显示,仅应用 Gamma 编码是远远不够的。由于场景线性图像具有较高的动态范围并且将在不同查看环境中具有有限动态范围的设备上进行查看,因此您需要在 Gamma 编码之前先应用色调贴图,这样才能使生成的图像看起来正确无误。
反过来,将视频图像转化为场景线性时,仅移除 Gamma 编码也是不够的。您还需要应用反向色调贴图以还原原始场景的亮度值。
存在一个明显的例外:如果输出相关图像用作控制漫反射或类似特性的纹理,则可能不适合应用反向色调贴图。请参见管理纹理和贴图的颜色。
更加令人容易混淆的是,视频图像有时也称为“线性”(而不是“对数”)。视频图像实际上是带有 Gamma 的输出相关图像,因此必须将其 Gamma 编码移除才能使其成为输出线性图像,然后必须取消色调贴图才能成为场景线性图像。
人类视觉是自适应的,因此颜色外观刺激取决于查看环境。例如,一张纸在明亮的日光下和较为暗淡的钨丝灯泡下都将显示为“白色”,尽管照明环境中光的量和色调不同。
典型的室外日光场景与电影或电视查看环境之间绝对亮度级别和周围的巨大差异是色调贴图必须包括场景线性颜色对比度增强才能在投影仪或显示器上正常显示的原因之一。
可通过以下几种方法之一指定自适应白点。一种方法是引用标准照明体的色度,如照明体 A 或全部都由 CIE 指定的 D 系列(D50、D55、D65 和 D75)。另一种方法是引用相关颜色温度 (CCT),以开氏度 (K) 表示。第三种方法是指定色度坐标,例如,数字影院的 DCI/SMPTE 校准白色是 CIE {x = 0.314, y = 0.351}。
若要补偿两个环境之间的自适应白点差异,需要使用色度调整变换来保留颜色外观。例如,将用于 D65 显示的颜色转化为用于 9300K 显示的等效颜色的色度调整必须增加红色饱和度。
与设备相关的颜色空间依赖于特定摄影机、显示器、投影仪、打印机或其他设备的特性。将相同的数字颜色代码值发送到数字电影投影仪和电影胶片记录器将产生不同的颜色。
但是,可将设备角色化。角色化包括精确测量其绝对色度响应。在此方法中,角色化提供了一种在与设备相关的颜色空间和与设备无关的颜色空间之间进行转化的方式。sRGB 和 AdobeRGB 本质上是与设备相关的虚拟空间,这些空间已充分角色化,使用时基本上可以视为与设备无关。
为了使角色化保持有效,必须对设备进行校准。校准包括调整设备以满足该角色化对应的“目标”(即,预期的主颜色、白点和 Gamma)。必须定期重复此过程,因为使用过程中设备的响应会随着时间的推移而发生变化。有关详细信息,请参见校准显示器。