我们已经完成了对光的定量描述,包括光谱 (Spectral Power Distribution)和辐射量。本章则是对颜色的定量描述,称为色度学 (Colorimetry)。
看到这里,我实在很想吐槽一下国内教材现状。比如说我们对比一下本书第二章和徐海松老师的《颜色信息工程》第二章。
本书 2.1.1 颜色混合定律,介绍了1854年提出的Grassmann的颜色混合定律;颜色信息工程 2.1.3 格拉斯曼颜色混合定律,内容几乎完全一样。
本书 2.1.2 颜色匹配实验,介绍了三基色颜色匹配实验的基本方法;颜色信息工程 2.1.1 颜色匹配实验,连装置的插图都是一模一样的。
这样基础的概念出现的顺序竟然不同;在色度学基础里突然出现色貌这样的词汇并不加解释;一本书里是明度,一本书里却写亮度。给人一种生怕读者学会了的幽默体验。
颜色的混合
混合:颜色的混合分为加色和减色。将各种颜色的光照射在白纸上,能够混合出一个白光,而将各种颜料涂抹在白纸上,则得到黑色。实验中比较常用的是加色混合,显示屏用到的便是加色混合。
匹配 (Matching):一个区域的一半用一种光照亮,另一半用另一种。如果观察者在中间不能观察到分界线,即两边“看起来”是一样的,那么这两个光(或称对应的颜色)对该观察者来说是匹配的。
颜色与光:人感知光,产生颜色的感觉。光是物理量,颜色则是心理物理量。一种光对应一种颜色,一种颜色却不一定对应一种光。
颜色的量:颜色是由光产生的,光的量能够用辐射量衡量,颜色的量也可以相对的用辐射量来衡量。比如辐射量变为两倍,“颜色的量”也变为两倍。
一定条件下,人眼对颜色混合的感知是线性的,包括以下方面:
- 如果两个光匹配,两个光具有相同的颜色,将两个颜色的量改变相同的倍数,他们仍然匹配。
- 如果颜色A和B匹配,颜色C与D匹配,那么颜色A和C的混合与颜色B和D的混合也能匹配。
- 如果颜色A和B的混合匹配颜色C,颜色X和Y的混合匹配颜色B。那么颜色A,X,Y的混合匹配颜色C。
简单来说,颜色的混合和小学里学的加法一样,因为颜色的混合本质上就是光谱的叠加,而辐射量自然是可以线性相加的。另外,匹配完成后,不会随着环境的变化而改变,比如改变一下背景的亮度,冷暖等,不会破坏白纸上两边光的匹配。
虽然颜色的混合是线性的,但并不代表对颜色的感知是线性的。以亮度为例,1单位光叠加1单位光能够和2单位光匹配,不代表人对亮度的感知是线性增长的。
CIE 1931 RGB 颜色匹配函数
CIE:国际照明委员会(Commission Internationale de l’Eclairage)是一个国际性的组织,致力于研究光、颜色和照明等问题。CIE为色彩科学领域制定了一系列标准。之前介绍的光谱视效率函数 $V(\lambda)$ 就是CIE制定的标准之一。在色彩科学的方方面面都能见到它的身影。
$$ C(\lambda) = \bar{r}(\lambda) R + \bar{g}(\lambda) G + \bar{b}(\lambda) B $$有关CIE 1931 RGB及颜色匹配函数的详细内容,请看这篇很好的博客https://yuhaozhu.com/blog/cmf.html
有一些波长的单色光无法取得匹配,需要把三基色中的一种移动到单色光的这一边,此时他的系数为负。
于是,我们能得到一组曲线,称之为颜色匹配函数 (Color Matching Functions),也就是 $\bar{r}(\lambda)$,$\bar{g}(\lambda)$,$\bar{b}(\lambda)$。1920年代,W.D. Wright 和 J. Guild 等人通过实验得到了一些数据,CIE在1931年整理并推荐了一组标准的颜色匹配函数,称为 CIE 1931 RGB 颜色匹配函数。
此处我们忽略了无数细节,比如实验中每个波长的单色光的能量是否相同;Wright 和 Guild 使用的三基色的波长并不相同,与CIE最终推荐的三基色波长也不相同,这些数据是如何被转换的;他们是否归一化,如何归一化,最终颜色匹配函数的单位到底是什么等等。教材们虽然废话连篇,却在这里选择一笔带过,推荐阅读链接中的文章。
此处的函数值我们称之为三刺激值 (Tristimulus Values)。CIE 1931 RGB 颜色匹配函数只包含2°视角的数据,2°视角对应了人眼的中央凹,是视锥细胞分布最密集的区域。Wright 的实验包含10位观察者,Guild的实验则是7位,也就是说,这17个人的实验数据奠定了后来近百年色彩科学的基础,也留下了隐患和问题。
$$ r = \frac{R}{R+G+B} $$
g 和 b 同理。如此得到的 $r + g + b = 1$,称为色品坐标。
在 1931 RGB 系统中,三基色的光亮度(考虑了光谱视效函数的亮度)比例为 $1:4.5907:0.0601$ 时能混合出与等能白光匹配的颜色,且把匹配函数按比例相加后,能得到先前提到的光谱视效函数 $V(\lambda)$,即可以用三刺激值计算光亮度。这应该是 CIE 1931 RGB 归一化时的参考
等能白光:所有波长的辐射能量相等的光,在 1931 RGB 系统中,等能白光的三刺激值为 (0.33, 0.33, 0.33)。
CIE 1931 XYZ 色度系统
CIE 1931 RGB 颜色匹配函数基于真实存在的三原色光,因此其计算结果中包含一些负值,这在当时导致了计算上的困难。为了解决这一问题,CIE 推荐了 CIE 1931 XYZ 标准色度系统,该系统使用了假想的三原色光,不仅确保了三刺激值均为正值,还实现了其他一些目标。
$$ \begin{bmatrix} X \\ Y \\ Z \end{bmatrix} = \begin{bmatrix} 2.7689 & 1.7517 & 1.1302 \\ 1.0000 & 4.5907 & 0.0601 \\ 0.0000 & 0.0565 & 5.5943 \end{bmatrix} \begin{bmatrix} R \\ G \\ B \end{bmatrix} $$
变换矩阵满足了以下条件:
- RGB系统中,560-700 nm为一条直线,因为这段范围内不再需要短波长的光参与匹配,新三原色中,希望有两个处于这条直线上。
- 希望用 XYZ 中的 Y 值来表示亮度,而 X 和 Z 对亮度的贡献为 0,因此 X 和 Z 应位于无亮度直线上,即 $r + 4.5907g + 0.0601b = 0$。
- 最后一条边是在光谱轨迹上与503 nm相切的一条直线。
- 等能白点仍然位于 (0.33, 0.33, 0.33)
变换后的 XYZ 颜色匹配函数均为正,代表了三个虚构的三原色光的亮度。其中,$Y(\lambda)$ 与光谱视效函数 $V(\lambda)$ 相同。Y 值等同于光亮度。
将 XYZ 归一化,得到色度坐标和光亮度 $xyY$,可画出 CIE 1931 xy 色度图。
色度图上的着色是为了美观,色度图上的点只有色度信息,而无亮度信息,比如图上没有灰色等。因为色度图仍然是线性的,因此在上面选两个点对应的色光,可以混合出这两个点之间的线段上的颜色。如果选三个点,可以混合出三角形内的颜色,这也是表示显示屏能够显示的颜色范围的方法。从图中还能看出,不存在三种色光能够混合出人眼能感知的全部颜色。
均匀颜色空间
颜色空间(Colour Space):是颜色的数学表示,用几个量(一般是三个)表示颜色。例如 CIE 1931 XYZ 就是一个用 XYZ 三刺激值表示颜色的颜色空间。颜色空间可以是线性的,即颜色之间可以相加减,也可以是非线性的,不同的颜色空间有不同的功能。色彩科学中,需要在合适的颜色空间中对颜色进行处理。
亮度的非线性
首先,人眼对亮度的感知是非线性的,与匹配实验类似,让被试观察色品坐标相同,但亮度不同的两种颜色。他们的亮度分别是 $L$ 和 $L+\Delta L$,当两个亮度差别很小时, 仍然能够达到视觉上的匹配,当亮度差超出某一阈值,能观察到差异,此时的亮度差称为“恰好可察觉的差”(Just Noticeable Difference, JND)。亮度不同时,JND 也不同,所以 XYZ 色空间中的亮度 Y 是不均匀的,Y 从10变为20,90变为100,在感知亮度上的变化是不同的。为了解决这个问题,提出两个新的概念:明度(Lightness)和视明度(Brightness),视明度是对绝对亮度的感知,也就是一个光“亮”的程度,明度则是视明度的相对值,表示相对同样照明环境下完全漫反射白的物体的“亮”的程度,例如一张白纸,不论在晴朗的室外,还是室内,其明度均为90(相对100),但视明度会变化。明度的目标是相同的明度变化,在亮度上的感知变化也是相同的。
根据不同的实验结果,提出了很多的明度模型。最简单的明度模型仅为一个幂函数,如 Hunter 的明度 $L_H = Y ^ {0.5}$。尽管明度的模型有些简单有些复杂,但他们的基本形状都接近,即暗的时候,人眼对亮度的感知增长较快,亮处则较缓,比如人眼感知的介于黑和白之间的灰色,大约具有 18-25% 的反射率,而非 50%。
色度的非线性
同样的,如果在 CIE 1931 xy 色品图上取比较靠近的两个点,被试可能无法区分他们的颜色,即小于 JND。MacAdam进行了一些实验,让被试对同一个颜色向不同方向进行加色混色(即往不同的方向偏离),记录能辨别差异时的新位置。实验发现,这些新位置可以用一个椭圆较好的拟合,因此称为 MacAdam 椭圆。
从画在 CIE 1931 xy 色品图上的 MacAdam 椭圆可以看出,该色彩空间的色度均匀性比较差,椭圆大小不一。针对色度的均匀性,也有诸多尝试,比如注意到色品图上半部分的椭圆较细长,那就对色品图进行纵向的压缩,但简单的变换都不能得到较满意的结果。比较著名的尝试有 CIE 1960 UCS 和 1976 UCS。通过对 xy 进行简单的变换,转换为新的色坐标 uv 或 u’v’,在均匀性上有一些提升,此处的 UCS 指代 Uniform-Chromaticity-Scale,均匀色品标尺。
均匀颜色空间
明度模型(或称均匀明度标尺)和均匀色品标尺共同组成了三维的颜色空间,称为均匀颜色空间(Uniform Colour Space)。比较著名的有 CIE 1976 \(L^*a^*b^* \),或称 CIELAB。使用表示明度的 \(L^*\) 和表示红-绿,黄-蓝方向上色度的 \(a^*b^*\) 组成,需注意星号也是符号的一部分,应避免使用 Lab 这样的写法,容易与其他色空间中的符号混淆。
CIELAB 是一个相对的颜色空间,需要先确定一个“参考白点”,该照明环境下完全漫射白的三刺激值 $X_n, Y_n, Z_n$。
$$ L^* = 116 f(\frac{Y}{Y_n}) - 16 $$$$ a^* = 500 [f(\frac{X}{X_n}) - f(\frac{Y}{Y_n})] $$$$ b^* = 200 [f(\frac{Y}{Y_n}) - f(\frac{Z}{Z_n})] $$其中,
$$ f(t) = \begin{cases} t^{1/3} & t > (24/116)^{3} \\ (841 / 108)t + 16/116 & t \leq (24/116)^{3} \end{cases} $$CIELAB 至今仍是使用最广泛的均匀颜色空间。
色差
在工业应用中,我们需要定量的衡量颜色之间的差异。例如在质量检测中,生产的一批产品的表面颜色差异小于多少视为合格。
$$ \Delta E_{ab}=\sqrt{(\Delta L^*)^2+(\Delta a^*)^2+(\Delta b^*)^2} $$遗憾的是,CIELAB 的均匀性没有强大到可以直接应用这样的距离公式来衡量色差。后来几十年间又诞生了各种各样在 CIELAB 空间上计算色差的补丁,其中最著名的一个是 M.R.Luo 提出的 CIE 2000 色差公式或 CIEDE 2000,其符号为 $\Delta E_{00}$,如果经常关注数码或显示器,应该经常见到 DE2000 作为衡量显示器色差的常用工具。
CIEDE 2000 虽然计算复杂,但它目前是在所有数据集中性能最好的之一,也是 CIE 推荐的最新的色差公式。
孟塞尔颜色系统
Munsell 是美国的一位画家,早在 1905 年(早于 CIE 1931 XYZ),他就通过总结前人经验并结合自身画家的身份,制定了一套色序系统(Colour Order System)。所谓色序系统,是指从视觉感知开始,将各种颜色样本按一定的顺序分类和排序形成的色彩系统。
牛顿在将白光分出彩虹色光的时候,我们就已经能将颜色分为红橙黄绿蓝青紫等颜色,这实际上就是对颜色的色相(Hue)进行分类。
Munsell将颜色按三个维度,明度(Value),色相(Hue)和色度(Chroma),将颜色排列到一个三维空间中,称为颜色立体。其中的颜色卡片在视觉感知上,在三个维度上都被认为是等间隔的。是目前应用最广泛的颜色系统之一。
因为 Munsell Color System 被认为是感知上均匀的,因此测量其中颜色的三刺激值,并转换到后来的均匀颜色空间中,观察这些点在均匀颜色空间中的分布是否仍然比较“均匀”,就能够一定程度上衡量均匀颜色空间的性能。
M. Li and M. R. Luo, ‘Simple color appearance model (sCAM) based on simple uniform color space (sUCS)’, Opt. Express, vol. 32, no. 3, p. 3100, Jan. 2024, doi: 10.1364/OE.510196.