Skip to content

Latest commit

 

History

History
249 lines (244 loc) · 34.3 KB

第18章 颜色.md

File metadata and controls

249 lines (244 loc) · 34.3 KB

边学边翻译,督促自己不能落下,同时也留点记忆

第十八章 颜色

    光子是光信息的载体。它们通过具有与波相关特性的介质传播。在表面边界,它们与物质相互作用,表现得更像粒子。它们也可以被视网膜吸收,在视网膜上,它们所携带的信息被转换成电信号,然后由大脑进行处理。只有在那里,颜色的感觉才会产生。     因此,对各种颜色的研究涉及到几个不同的领域:光在空间中的传播的物理学,与物质相互作用的化学,与颜色的感知和认知有关的神经科学和心理学(Reinhard et al., 2008)。     在计算机图形学中,我们通常采用一种简化的观点来看待光如何在空间中传播。光子沿着直线运动,直到它们到达表面边界,然后根据某种反射函数被反射。单个光子将携带一定量的能量,这由它的波长表示。因此,光子只有一个波长。给出了其波长A与其携带的能量(AE)之间的关系 $$ \lambda \Delta E = 1239.9 $$ 其中声发射以电子伏(eV)为单位进行测量。     在计算机图形学中,模拟单个光子的效率不是很高;相反,它们的大量集合被同时模拟。如果我们有大量的光子,每个光子携带的能量可能不同,然后它们一起代表一个光谱。光谱可以被认为是一个图,其中光子的数量与波长的关系。因为两个相同波长的光子所携带的能量是同一波长的单个光子的两倍,所以这张图也可以看作是能量与波长的关系图。 频谱的一个例子如图18.1所示。人类敏感的波长范围大约在380到800纳米之间。     因此,在模拟光的时候,可以追踪每一种带有光谱的射线。完成此任务的渲染器通常称为光谱渲染器。从前面的章节可以清楚地看到,我们通常不会花费大量的时间来构建光谱渲染器。相反,我们用通常使用红、绿、蓝成分的表示来代替光谱。这一切可能的原因与人类的视觉有关,我们将在18.1节中讨论。     通过追踪光线来模拟光可以照顾到光的物理特性,尽管应该注意到光的一些特性,例如偏振、衍射和干涉,并不是用这种方式来建模的。     在表面边界处,我们通常用反射率函数来模拟光的作用。这些函数可以通过角反射计直接测量,因此有大量的表格数据,可以用各种不同的函数更紧凑地表示。尽管如此,这些反射率函数本质上是经验的,也就是说,它们抽象了光子被电子吸收和重新发射时发生的化学反应。因此,反射率函数在计算机图形学建模中是有用的,但不是解释为什么某些波长的光被吸收,而另一些波长的光被反射。因此,我们不能用反射率函数来解释为什么从香蕉上反射的光的光谱组成在我们看来是黄色的。为此,我们将不得不研究分子轨道理论,这一主题超出了本书的范围。     最后,当光线到达视网膜时,它被转换成电信号,并传播到大脑。大脑的很大一部分用于处理视觉信号,其中一部分产生了色觉。因此,即使我们知道香蕉反射的光谱,我们也不知道为什么人类会把“黄色”这个词和它联系在一起。此外,我们将在本章的其余部分中发现,我们对颜色的感知远比乍一看要复杂得多。它随光照变化,在不同观测者之间变化,在不同观测者内部随时间变化。     换句话说,从香蕉上发出的光谱可以在特定的环境中被感知。要预测观察者如何感知“香蕉光谱”,需要了解包含香蕉的环境以及观察者所处的环境。在许多情况下,这两种环境是相同的。然而,当我们在显示器上显示香蕉的照片时,这两种环境将是不同的。由于人类的视觉感知取决于观察者所处的环境,它对照片中的香蕉的感知可能与直接看着香蕉的观察者对它的感知不同。这对我们应该如何处理颜色有重大影响,并说明了与颜色相关的复杂性。     为了强调人类视觉所起的关键作用,我们只需要看一下颜色的定义:“颜色是视觉感知的一个方面,通过它,观察者可以区分两个相同大小和形状的无结构视野之间的差异,例如可能由观察中所涉及的辐射能的光谱组成的差异所引起的差异”(Wyszecki & Stiles, 2000)。从本质上说,没有人的观察就没有颜色。     幸运的是,我们对颜色的大部分了解都是可以量化的,这样我们就可以进行计算,以纠正人类视觉的特质,从而显示图像,在观察者看来,这些图像的设计者想要的样子。本章包含了所需的理论和数学这样做。


18.1比色法

    比色学是测量和描述颜色的科学。因为颜色最终是人类的反应,所以颜色测量应该从人类开始观察。人类视网膜上的感光细胞由视杆细胞和视锥细胞组成。 该杆是高度敏感的,在低光条件下发挥作用。在正常的照明条件下,视锥细胞是有效的,调节人类的视觉。 锥体有三种类型,它们共同负责颜色的视觉。     虽然有可能直接记录视锥细胞的电输出,但这样的过程将是侵入性的,同时忽略了观察者之间有时的重大差异。此外,在这种直接记录技术出现之前,许多颜色测量技术就已经开发出来了。     另一种方法是通过测量人类对颜色斑块的反应来测量颜色。这导致了颜色匹配实验,这将在本节后面描述。进行这些实验已经产生了几个标准化的观察者,可以认为它们是实际人类观察者的统计近似值。然而,首先,我们需要描述一些基于颜色匹配可能性的假设,这些假设由格拉斯曼定律总结出来。

18.1.1 Grassmann定律

    鉴于人类有三种不同的锥体类型,颜色匹配的实验定律可以总结为三色概化(Wyszecki & Stiles, 2000),即任何颜色刺激都可以与三种适当调制的颜色源的相加混合完全匹配。这种颜色的特性在实践中经常被使用,例如电视和显示器,它们通过为每个像素添加红、绿、蓝的混合光来再现许多不同的颜色。这也是为什么渲染器可以只用三个值来描述每种颜色的原因。     三色泛化使我们能够在任何给定的刺激和其他三种颜色刺激的相加混合之间进行颜色匹配。赫尔曼·格拉斯曼是第一个描述颜色匹配所遵循的代数规则的人。它们被称为格拉斯曼加色匹配定律(格拉斯曼,1853),具体如下:

  • 对称的法律。如果刺激物A的颜色与刺激物B的颜色相匹配,那么B就与刺激物A的颜色相匹配。
  • 传递法。如果A匹配B, B匹配C,那么A匹配C。
  • 比例法。如果A匹配B,那么aA匹配aB,其中A是正的比例因子。
  • 可加性。如果A匹配B, C匹配D,并且A+ C匹配BI D,那么可以推断A+ D匹配B + C。

加性律是色彩匹配和比色法的基础整体。

18.1.2锥反应

    每一种锥体类型都对一定波长范围敏感,跨越了整个可见范围的大部分。然而,对波长的灵敏度不是均匀分布的,而是包含一个灵敏度最大的峰值波长。这种峰值波长的位置对于不同的锥型是不同的。三种锥类型被分为S、M和L锥,其中字母代表短、中、长,表明峰值灵敏度在可见光谱中的位置。     给定锥体的响应是它输出的电信号的大小,是入射到锥体上的波长光谱的函数。每种锥类型的锥响应函数作为波长a的函数分别由L(a), M(a)和S(a)给出。如图18.2所示。     对具有给定光谱组成的刺激的实际响应Φ(a),然后给出每种锥类型由 $$ \begin{aligned} L &= \int_{\lambda}\phi(\lambda)L(\lambda)d\lambda \ M &= \int_{\lambda}\phi(\lambda)M(\lambda)d\lambda \ S &= \int_{\lambda}\phi(\lambda)S(\lambda)d\lambda \ \end{aligned} $$ 这三种综合反应称为三刺激值。

18.1.3配色实验

    考虑到三刺激值是通过在可见范围内对两个函数的乘积进行积分而产生的,很明显,人类的视觉系统并不是一个简单的波长探测器。相反,我们的光感受器起着近似线性积分器的作用。因此,有可能找到两个不同的光谱组成,例如Φi(a)和Φ2(a),在积分后产生相同的响应(L, M, S)。这种现象被称为同聚现象,如图18.3所示。     异色现象是人类视觉的关键特征,它允许构建彩色复制设备,包括本书中的彩色人物和任何在打印机、电视和显示器上复制的东西。     颜色匹配实验也依赖于异色原理。假设我们有三个不同颜色的光源,每个光源都有一个表盘来改变其强度。我们称这三种光源为初级光源。我们现在应该能够调整每种光的强度,当混合在一起时,产生的光谱集成到一个三刺激值,与第四个未知光源的感知颜色相匹配。当我们进行这样的实验时,我们基本上已经将我们的三原色与一种未知的颜色匹配了。我们的三个刻度盘的位置就是第四个光源的颜色。 在这样的实验中,我们利用格拉斯曼定律对初等的三个光谱进行了相加。我们也使用了同偶异现象,因为我们三个初等分子的组合光谱几乎肯定不同于第四个光源。然而,从这两个光谱计算的三刺激值将是相同的,产生了颜色匹配。     请注意,我们实际上不必知道进行这样一个实验的锥响应函数。只要我们在相同的条件下使用相同的观察者,我们就能够匹配颜色,并记录每一种颜色的表盘位置。然而,每次我们要测量颜色的时候都要进行这样的实验是非常不方便的。因此,我们确实想知道谱锥响应函数,并对一组不同观测者的谱锥响应函数求平均值,以消除观测者间的可变性。

18.1.4标准观察者

    如果我们对大范围的颜色进行颜色匹配实验,由一组不同的观察者执行,就有可能生成一个平均颜色匹配数据集。如果我们专门使用单色光源来匹配我们的主光源,我们就可以对所有可见波长重复这个实验。由此得到的三刺激值称为光谱三刺激值,可以根据波长A绘制,如图18.4所示。     通过使用一组定义明确的主光源,光谱三刺激值导致三种颜色匹配函数。国际烘焙委员会(CIE)已经定义了三个这样的初级光源分别为435.8、546.1和700纳米的单色光源。用这三张单色的自动光源,所有其他可见波长都可以通过添加不同数量的每种光源来匹配。匹配给定波长所需的每种光的数量编码在颜色匹配函数中,由(a), (a)和b(a)给出,并绘制在图18.4中。与这些颜色匹配函数相关的三刺激值被称为R、G和B。     假设我们正在添加光,而光不可能是负的,您可能会注意到图18.4中的一个异常:为了创建某些波长的匹配,需要减去光。虽然没有负光这种东西,但我们可以再次使用格拉斯曼定律,而不是从三原色的混合物中减去光,我们可以在被匹配的颜色中添加等量的光。     CIE F(A), (A)和6(A)配色函数允许我们通过简单地比较与这些配色函数积分得到的三刺激值,来确定光谱分布Φ1是否与第二个光谱分布42匹配: $$ \int_{\lambda}\phi_1(\lambda) \bar{r}(\lambda)= \int_{\lambda}\phi_2(\lambda) \bar{r}(\lambda),\ \int_{\lambda}\phi_1(\lambda) \bar{g}(\lambda)= \int_{\lambda}\phi_2(\lambda) \bar{g}(\lambda),\ \int_{\lambda}\phi_1(\lambda) \bar{b}(\lambda)= \int_{\lambda}\phi_2(\lambda) \bar{b}(\lambda). $$     当然,只有在三个三刺激值都匹配的情况下,才能保证颜色匹配。     这些颜色匹配功能的重要性在于,我们现在能够通过三刺激值来紧凑地交流和描述颜色。对于给定的光谱函数,CIE颜色匹配函数提供了计算三刺激值的精确方法。只要每个人都使用相同的颜色匹配函数,就应该总是能够生成匹配。     如果无法使用相同的颜色匹配函数,则可以将一组三刺激值转换为一组适合于相应的原色集的不同三刺激值。CIE定义这样的转换有两个具体原因。首先,在20世纪30年代,数值积分很难进行,对于既可为正又可为负的函数更是如此。其次,CIE已经开发了光亮度响应函数CIE V(A)。我们希望有三个积分函数,其中V(A)是1,并且在可见范围内三个函数都是正的。     要创建一组正颜色匹配函数,必须定义虚主色。换句话说,为了再现可见光谱中的任何颜色,我们需要物理上无法实现的光源。颜色匹配由CIE确定的函数被命名为(A), g(A)和(A),如图18.5所示。注意g(A)等于光亮度响应函数V(A),并且这些函数都是正的。他们被称为CIE 1931标准观察员。     对应的三刺激值被命名为X、Y和Z,以避免与R、G和B三刺激值混淆,这些三刺激值通常与可实现的初级相关联。从(R, G, B)三刺激值到(X, Y, 2)三刺激值的转换由一个简单的3x3变换定义: $$ \begin{bmatrix} X\ Y\ Z\\end{bmatrix}=\frac{1}{0.17697} \begin{bmatrix} 0.4900~~~0.3100~~~0.2000\ 0.1769770.812400.01063\ 0.0000~~~0.0100~~~0.9900 \end{bmatrix}\cdot \begin{bmatrix} R\ G\ B\\end{bmatrix} $$     为了计算三刺激值,我们通常直接将标准观测器颜色匹配函数与感兴趣的光谱(A)集成,而不是先通过CIE F(A), (A)和b(A)颜色匹配函数,然后进行上述转换。它允许我们计算一致的颜色测量,也可以确定两种颜色何时匹配。

18.1.5色度坐标

    每种颜色都可以用一组三刺激值(X, Y, Z)表示。我们可以定义一个具有X, Y, Z轴的正交坐标系,并在结果的3D空间中绘制每种颜色。这叫做颜色空间。颜色所在体积的空间范围称为色域。     在3D色彩空间中可视化色彩是相当困难的。此外,由于(A)等于V(A),任何颜色的y值对应于它的亮度。因此,我们可以将三刺激值投射到近似于颜色信息的二维空间中,即与亮度无关的信息。这个投影被称为色度图,是通过归一化得到的,同时去除亮度信息: $$ x=\frac{X}{X+Y+Z},\ y=\frac{Y}{X+Y+Z},\ z=\frac{Z}{X+Y+Z}. $$     假设z + y + 2 = 1, z值是多余的,允许我们在色度图中绘制r和y的色度图。虽然和y本身不足以完全描述一种颜色,但我们可以使用这两个色度坐标和三个三刺激值中的一个,传统的y,来恢复其他两个三刺激值: $$ \begin{aligned} X &=\frac{x}{y}Y,\ Z &=\frac{1-x-y}{y}Y. \end{aligned} $$     通过在色度图中绘制所有单色(光谱)颜色,我们得到了一个马蹄形曲线。这条曲线上的点叫做频谱轨迹。所有其他颜色的点都在这条曲线内。1931年标准观测仪的频谱轨迹如图18.6所示。紫色的线马蹄铁两端之间的颜色不是单色的,而是短波长和长波长刺激的组合。     一个(非单色)初波可以在所有可见波长上积分,得到(X, Y, Z)三刺激值,然后得到(r, Y)色度坐标,即色度图上的一个点。对两个或两个以上的主色重复此操作,可以得到色度图上的一组点,这些点可以用直线连接起来。以这种方式跨出的体积表示这些基色的相加混合所能再现的颜色的范围。 三主系统的例子如图18.7所示。     色度图提供了对添加色混合物的洞察。然而,它们应该小心使用。首先,马蹄铁的内部不应该着色,因为任何颜色复制系统都有自己的原色,只能复制色度图的一部分。其次,由于CIE颜色匹配函数不代表人类锥体敏感度,色度图上任意两点之间的距离并不能很好地指示这些颜色将被感知到的差异。     一个更均匀的色度图被开发出来,至少部分地解决了第二个问题。CIE u'u'色度图在感知上提供了更均匀的间距,因此通常比(x, y)色度图更受青睐。它是由(X, Y, Z)三刺激值通过应用不同的归一化计算出来的, $$ \begin{aligned} u' &=\frac{4X}{X+15Y+3Z},\ v' &=\frac{9Y}{X+15Y+3Z}. \end{aligned} $$     也可以直接从(z, y)色度坐标4z计算 $$ \begin{aligned} u' &=\frac{4x}{-2x+12y+3},\ v' &=\frac{9y}{-2x+12y+3}. \end{aligned} $$     CIE $u'v'$色度图如图18.8所示。


18.2颜色空间

    如上所述,每种颜色可以由三个数字表示,例如由(X, Y, Z)三刺激值定义。然而,它的三原色是虚构的,这意味着不可能构建一个有三个光源(都是正的)的设备,可以再现可见光谱中的所有颜色。     出于同样的原因,图像编码和图像计算可能并不实际。例如,有大量不对应任何物理颜色的可能的XY - Z值。这将导致对可用比特的低效使用,并对比特深度提出了更高的要求,以保持图像处理后的视觉完整性。虽然有可能建立一个捕获设备,有接近CIE XY Z颜色匹配功能的主色调,但硬件和图像处理的成本使这是一个没有吸引力的选择。不可能建立一个与CIE XYZ对应的显示。基于这些原因,有必要设计其他颜色空间:物理可实现性、高效编码、感知一致性和直观的颜色规范。     CIE XY Z颜色空间仍然在积极使用,主要用于其他颜色空间之间的转换。它可以被看作是一个与设备无关的颜色空间。然后可以根据它们与CIE XYZ的关系定义其他颜色空间,CIE XYZ通常由特定的转换指定。例如,线性和相加三色显示设备可以通过一个简单的3 x 3矩阵转换到CIE XYZ。还可以指定一些非线性附加变换,例如,当数据以有限位深度存储时,最小化感知误差,或者在输入信号和发出的光量之间具有非线性关系的设备上直接显示。

18.2.1构造矩阵变换

    对于有三种基色的显示设备,比如红色、绿色和蓝色,我们可以通过发送颜色向量(1,0,0)、(0,1,0)和(0,0,1)来测量发射光的光谱组成。这些向量表示三种情况,即其中一个基色是完全打开的,其他两个是关闭的。从测量的光谱输出,我们可以计算相应的色度坐标$(x_R,y_R),(x_G, y_G),(x_B,y_B)$。     显示器的白点定义为颜色向量(1,1,1)发送到显示器时发出的光谱。其对应的色度坐标为(zw, yw)。三个主色点和白点表征显示器,每个都需要构建显示器颜色空间和CIE XYZ之间的转换矩阵。     这四个色度坐标可以扩展为从2 = 1-z-y重构z坐标的色度三元组,进而得到三元组(TR,VR,ZR), (TG, yG, ZG), (TB, yB,2B), (zw, yw, zw)。如果我们知道白点的最大亮度,我们可以计算出它对应的三刺激值(Xw, Yw, Zw),然后求解亮度比标量SR, SG, SB的如下方程组: $$ X_W = x_R S_R + x_G S_G + x_B S_B,\ Y_W = y_R S_R + y_G S_G + y_B S_B,\ Z_W = z_R S_R + z_G S_G + z_B S_B. $$ RGB和XYZ之间的转换由 $$ \begin{bmatrix} X\ Y\ Z\\end{bmatrix}= \begin{bmatrix} x_R S_R & x_G S_G & x_B S_B \ y_R S_R & y_G S_G & y_B S_B \ z_R S_R & z_G S_G & z_B S_B \end{bmatrix} \cdot \begin{bmatrix} R\ G\ B\\end{bmatrix} $$     任何给定颜色的亮度都可以通过计算一个矩阵的中间行来计算: $$ Y = y_R S_R R + y_G S_G G + y_B S_B B $$     为了在给定设备的XYZ和RGB之间转换,上面的矩阵可以简单地颠倒。     如果图像是在一个RGB颜色空间中表示的,而基色和白点是未知的,那么下一个最好的方法是假设图像是在一个标准RGB颜色空间中编码的。一个合理的选择是假设图像是根据ITU-R BT.709规定的,这是用于HDTV编码和广播的规范。其初级和白点见表18.1。注意,相同的基色和白点用于定义众所周知的sRGB颜色空间。这个RGB颜色空间和CIE XYZ之间的转换是,反之亦然 $$ \begin{bmatrix} X\ Y\ Z\\end{bmatrix}= \begin{bmatrix} 0.4124~~~0.3567~~~0.1805\ 0.21260.71520.0722\ 0.0193~~~0.1192~~~0.9505 \end{bmatrix}\cdot \begin{bmatrix} R\ G\ B\\end{bmatrix}\ \begin{bmatrix} R\ G\ B\\end{bmatrix}= \begin{bmatrix} 3.2405~~~-1.5371~~~-0.4985\ -0.9693~1.8706 ~0.0416\ 0.0556~~~-0.2040~~~1.0572 \end{bmatrix}\cdot \begin{bmatrix} X\ Y\ Z\\end{bmatrix} $$     通过代入设备的最大RGB值,我们可以计算出白点。对于ITU-R BT.709,最大值为(Rw,Gw, Bw) =(100, 100, 100),导致白点为(Xw。Yw, 2w) =(95.05, 100.00, 108.90)。     除了线性变换,sRGB颜色空间的特征是后续的非线性变换。非线性编码由 $$ R_{sRGB}= \begin{cases} 1.055R^{1/2.4}-0.05&R>0.0031308;\ 12.92R &R\leq0.0031308;\end{cases}\ G_{sRGB}= \begin{cases} 1.055G^{1/2.4}-0.05&G>0.0031308;\ 12.92G &G\leq0.0031308;\end{cases}\ G_{sRGB}= \begin{cases} 1.055B^{1/2.4}-0.05&B>0.0031308;\ 12.92B &B\leq0.0031308;\end{cases} $$     这种非线性编码有助于最小化数字应用中由于量化误差造成的感知误差。

18.2.2与设备相关的RGB空间

    由于每个设备通常都有自己的一组主色和白点,我们称相关的RGB颜色空间与设备相关。需要注意的是,即使所有这些设备都在RGB空间中运行,它们也可能有非常不同的主点和白点。因此,如果我们在某个RGB空间中指定了一个图像,它对我们来说可能非常不同,这取决于我们显示它的设备。     这显然是一个不受欢迎的情况,由于缺乏色彩管理。但是,如果图像是在一个已知的RGB颜色空间中指定的,那么它首先可以被转换为XYZ,这是与设备无关的,然后它可以被转换为将在其上显示的设备的RGB空间。     还有一些其他的RGB颜色空间也定义得很好。它们由一个线性矩阵变换和一个非线性变换组成,类似于前面提到的sRGB颜色空间。非线性变换可以参数化如下: $$ R_{nonlinear}= \begin{cases} (1+f)R^{\gamma}&t<R\leq 1,\ sR &0\leq R \leq t;\end{cases}\ G_{nonlinear}= \begin{cases} (1+f)G^{\gamma}&t<G\leq 1,\ sR &0\leq G \leq t;\end{cases}\ R_{nonlinear}= \begin{cases} (1+f)B^{\gamma}&t<B\leq 1,\ sB &0\leq B \leq t;\end{cases} $$     参数s, f, t和y,加上初级和白点,指定了一类用于各种行业的RGB颜色空间。表18.2列出了几种常见的转换。

18.2.3 LMS锥空间

上述圆锥信号可以用CIE XYZ颜色空间表示。给出了从XY到Z计算LMS信号的矩阵变换,反之亦然 $$ \begin{bmatrix} L\ M\ S\\end{bmatrix}= \begin{bmatrix} 0.389710.68898-0.07868\ -0.229811.183400.04641\ 0.0000~~~0.0000~~~0.0000 \end{bmatrix}\cdot \begin{bmatrix} X\ Y\ Z\\end{bmatrix}\ \begin{bmatrix} X\ Y\ Z\\end{bmatrix}= \begin{bmatrix} 1.91019~~~-1.11214~~~-0.20195\ -0.37095~0.62905 ~0.0000\ 0.0000~~~0.0000~~~0.0000 \end{bmatrix}\cdot \begin{bmatrix} L\ M\ S\ \end{bmatrix} $$     这种变换被称为Hunt- pointer - estevez变换(Hunt, 2004),被用于颜色适应变换以及颜色外观建模。

18.2.4 CIE 1976 Lab*

    颜色对立空间的特征是一个表示消色差通道(亮度)的通道,以及两个编码颜色对立的通道。它们通常是红绿和黄蓝通道。这些颜色对手channel因此沿着一个轴编码两个色度,可以有正的和负的值。例如,红绿通道将红色编码为正值,绿色编码为负值。值0编码了一个特殊情况:中性,它既不是红色也不是绿色。黄蓝通道的工作原理与此大致相同。     由于在两个色轴上至少编码了两种颜色,因此不可能编码红色和绿色的混合。同时对黄色和蓝色进行编码也是不可能的。虽然这似乎是一个缺点,但众所周知,人类的视觉系统在视觉通路早期就计算类似的属性。因此,人类无法同时感知红绿或黄蓝两种颜色。我们没有看到任何类似红绿色或黄蓝色的东西。然而,我们能够感知颜色的混合,如黄-红(橙)或绿-蓝,因为这些被编码在彩色通道上。     与计算机图形学最相关的颜色对抗系统是CIE 1976年的L'ab颜色模型。它是一个感知上或多或少一致的颜色空间,对于计算颜色差异非常有用。它也被称为CIELAB。     CIELAB的输入是刺激(X, Y, 2)三刺激值以及被已知光源(X, Ya, Zn)照亮的漫反射白色表面的三刺激值。因此,CIELAB不仅仅是一个普通的颜色空间,因为它考虑了已知照明背景下的颜色斑块。因此,它可以被看作是一个基本的颜色外观空间。     CIELAB中定义的三个通道是L*、a和b。L通道编码颜色的明度,即具有三刺激值(X, Y, Z)的贴片的感知反射率。a和b为彩色对立通道。XYZ和CIELAB之间的变换由 $$ \begin{bmatrix} L^\ M^\ S^\\end{bmatrix}= \begin{bmatrix}0 &116 &0 &-16\ 500 &-500 &0 &0\0 &200 &-200 &0\ \end{bmatrix}\cdot \begin{bmatrix} f(X/X_n)\ f(Y/Y_n)\ f(Z/Z_n)\ 1\end{bmatrix} $$     函数f被定义为 $$ f(r)=\begin{cases}\sqrt[3]{r} & for r>0.008856,\ 7.787r+\frac{16}{116}& forr|eq0.008856. \end{cases} $$     从这个公式可以看出,色度通道确实依赖于亮度y。尽管这在感知上是准确的,但这意味着我们不能在色度图中绘制a和b的值。亮度L归一化黑色和白色在0到100之间。虽然a和b通道没有显式约束,但它们通常在[- 128,128]的范围内。     由于CIELAB是近似感知线性的,因此可以取两种颜色,将其转换为CIELAB,然后通过计算两者之间的欧氏距离来估计感知色差。这就得到了下面的色差公式: $$ \Delta E_{ab}^ = [(\Delta L^)^2+(\Delta a^)^2+(\Delta b^)^2]^{1/2}. $$ 字母E代表感觉的差异(在德语中为Empfindung) (Judd,1932).     最后,给出CIELAB与XYZ之间的反变换为 $$ X=X_n\begin{cases}(\frac{L^}{116}+\frac{a^}{500}+\frac{16}{116})^3 &if~L^>7.9996\\frac{1}{7.787}(\frac{L^}{116}+\frac{a^}{500}) &ifL^\leq 7.9996 \ \end{cases} $$ $$ Y=Y_n\begin{cases}(\frac{L^}{116} +\frac{16}{116})^3 &ifL^>7.9996\\frac{1}{7.787}\frac{L^}{116} &ifL^\leq 7.9996 \ \end{cases} $$ $$ X=X_n\begin{cases}(\frac{L^}{116}-\frac{b^*}{200}+\frac{16}{116})^3 &ifL^>7.9996\\frac{1}{7.787}(\frac{L^}{116}-\frac{b^}{200}) &if~L^\leq 7.9996 \ \end{cases} $$


18.3 彩色适应

    刚才描述的CIELAB颜色空间将刺激的三刺激值和从白色漫反射斑块反射的光的三刺激值作为输入。因此,它形成了一个系统的开始,在这个系统中,观看环境被考虑在内。     我们观察物体和图像的环境对我们如何感知这些物体有很大的影响。我们在日常生活中遇到的观看环境的范围是非常大的,从sünlight到星光,从烛光到荧光灯。照明条件不仅在光的数量上有很大的差异,而且在发射光的颜色上也有很大的差异。     人类的视觉系统通过一个叫做适应的过程来适应环境中的这些变化。三种不同类型的适应可以区分,即光适应,暗适应和彩色适应。光适应指的是当我们从一个非常黑暗的环境到一个非常光明的环境时所发生的变化。当这种情况发生时,一开始我们会被光线弄得眼花缭乱,但很快我们就会适应新的情况,并开始分辨周围的物体。黑暗适应指的是相反的——当我们从一个光明的环境到一个黑暗的环境。一开始,我们看到的很少,但经过一定的时间后,细节就会开始显现。适应黑暗环境所需的时间通常比适应光照环境所需的时间长得多。     色彩适应指的是我们适应并在很大程度上忽略光照颜色变化的能力。色彩适应,本质上是生物学上的白平衡操作,在大多数现代相机上都可以使用。人类的视觉系统有效地规范了观看条件,以呈现相当一致的视觉体验。因此,我们展示了一定数量的颜色恒定:物体的反射率似乎相对恒定,尽管照明变化。     虽然我们能够在很大程度上忽略观看环境的变化,但我们不能完全这样做。例如,在晴天,颜色比在阴天要鲜艳得多。虽然表面发生了变化,但我们并不认为物体的反射率本身实际上改变了它们的物理性质。因此,我们理解照明条件影响了整体的颜色外观。     尽管如此,色恒性确实适用于彩色内容。彩色调整允许白色物体在大量的照明条件下呈现白色,如图18.9所示。     色度适应的计算模型往往集中于视锥细胞的增益控制机制。其中一个最简单的模型假设每个锥体都能独立适应它所吸收的能量。这意味着不同类型的锥体根据被吸收光的光谱适应不同。这样的适应可以被建模为锥信号的自适应和独立缩放: $$ L_a = \alpha L,\ M_a = \beta M,\ s_a = \gamma S. $$     其中(La, Ma, Sa)是色彩适应的锥信号,a, B, y是由观看环境决定的独立增益控制。这种类型的独立适应也被称为von-Kries适应。示例如图18.10所示。     自适应照度可以在场景中的白色表面上测量。理想情况下,这是朗伯曲面。在数字图像中,自适应照度也可以近似为场景的最大三刺激值。用这种方法测量或计算的光是自适应白,由(Le, Mw, Sw)给出。冯·克里斯的适应是简单的倒数缩放.在圆锥响应空间中进行的适应性白色: $$ \begin{bmatrix} L_a\ M_a\ S_a\\end{bmatrix}= \begin{bmatrix}\frac{1}{L_w} &0 &0 \0 &\frac{1}{M_w} &\0 &0 &\frac{1}{S_w} \end{bmatrix} \begin{bmatrix} L\ M\ S\end{bmatrix} $$     在许多情况下,我们感兴趣的是在一种光照下应该产生什么刺激来匹配不同光照下的给定颜色。例如,如果我们有一个彩色的补丁被日光照亮,我们可能会问自己应该产生什么三刺激值来创建一个匹配的颜色补丁将被白炽灯照亮。     因此,我们对计算对应的颜色感兴趣,这可以通过级联两个颜色适应计算来实现。从本质上说,前面提到的冯·克里斯变换划分出了适应的光源——在我们的例子中,日光照明。如果我们随后乘上白炽光源,我们就计算出了相应的颜色。如果两个光源分别为(Lw,1, Mw.1, Sw,1)和(Lw,2, Mw,2, Sw.2),则对应的颜色(Le, Me, Se)为 $$ \begin{bmatrix} L_c\ M_c\ S_c\ \end{bmatrix} = \begin{bmatrix} L_{w,2} &0 &0 \0 &M_{w,2} &0 \0 &0 &S_{w,2} \end{bmatrix} \begin{bmatrix}\frac{1}{L_w,1} &0 &0 \0 &\frac{1}{M_w,1} &\0 &0 &\frac{1}{S_w,1} \end{bmatrix} \begin{bmatrix} L\ M\ S\end{bmatrix} $$     现有的颜色适应变换有几种更复杂,因此也更精确(Reinhard et al., 2008)。然而,简单的von Kries模型在建模颜色适应方面仍然非常有效,因此可以用于实现数字图像的白平衡。     色彩适应在渲染环境中的重要性在于,我们已经更进一步地考虑到观察者的观看环境,而不必通过调整场景和重新渲染我们的图像来纠正它。相反,我们可以建模和渲染我们的场景,然后,作为图像后处理,校正观看环境的照明。但是,为了确保白平衡不引入工件,必须确保图像呈现为浮点格式。如果渲染成传统的8位图像格式,彩色自适应变换可能放大量化误差。


18.4 颜色外观

    虽然测色法允许我们以一种与设备无关的方式精确地指定和交流颜色,颜色适应允许我们预测光照变化中的颜色匹配,但这些工具仍然不足以描述颜色的实际样子。     为了预测对一个物体的实际感知,我们需要了解更多关于环境的信息,并将这些信息考虑进去。人类的视觉系统是不断适应环境的,这意味着对颜色的感知会受到这种变化的强烈影响。颜色外观模型考虑了刺激本身的测量,以及观看环境。这意味着最终的颜色描述与观看条件无关。     从下面的例子可以看出颜色外观建模的重要性。考虑在LCD屏幕上显示的图像。当打印相同的图像,并在不同的背景下观看它时,通常情况下,图像看起来会明显不同。颜色外观模型可以用来预测生成精确的跨媒体颜色再现所需的变化(Fairchild, 2005)。     虽然颜色外观建模为颜色再现提供了重要的工具,但实际实现在实际使用中往往比较复杂和繁琐。可以预见,这种情况可能随着时间的推移而改变。然而,在此之前,我们把它们的描述留给更专业的教科书(Fairchild, 2005)。


笔记

    在所有关于颜色理论的书籍中,Reinhard et al.的工作(Reinhard et al., 2008)是最直接面向工程学科的,包括计算机图形学、计算机视觉和图像处理。Berns (Berns, 2000)和Stone (Stone, 2003)给出了颜色理论的其他一般介绍。Wyszecki和Stiles提供了大量的数据和公式,形成了不可或缺的参考著作(Wyszecki & Stiles, 2000)。对于颜色复制,我们推荐亨特的书(亨特,2004)。彩色外观模型在仙童的书中有全面的描述(仙童,2005)。对于与视频和高清电视相关的颜色问题,Poynton的书是必不可少的(Poynton, 2003)。