计算机图形学入门29:颜色与感知

1.前言

        牛顿通过三棱镜完成了光的色散实验,首次发现白光以适当角度通过三棱镜时可以分解为红、橙、黄、绿、蓝、靛、紫七种单色光。 后来又通过三棱镜把七种色光复合为白色光,揭示了色散现象的本质。不同的基本颜色能够混合出新的颜色,这篇文章就介绍这些话题。

2.颜色的物理学基础

        用一个三棱镜可以将光折射出不同的颜色,因为不同波长的光有不同的折射率。而给定任何一种光它一定有对应的光谱(Spectrum)光谱就是光能量在不同波长上的分布。图形学关心的是可见光的光谱,大概在400nm—700nm之间。如下图所示。

        光谱的更准确定义是谱功率密度SPD(Spectral Power Distribution),也就是光在不同的波长的能量。我们因此就可以用SPD来描述光在任何一个波长的分布。如下图阳光和蓝天的分布。

        如下图所示,不同的光对应各自的SPD。

         同时SPD具有线性的性质,如下图所示,混合后光的SPD等于它们的SPD之和。这也符合我们开的灯越多就越亮的生活常识。

3.颜色的生物学基础

        颜色是人类感知的一种现象,它不是光的物理属性。而不同波长的光不是“颜色”。

        人们对颜色的感知主要来自于视网膜(Retina),视网膜上有感光细胞(Photoreceptor Cells)。感光细胞又分两种类,其中一种是棒状感光细胞(Rod cells),数量比较多,它用来感知光的强度(得到灰度的图)。另一种是锥形感光细胞(Cone cells),它数量比较少,它可以感知颜色,所以接下来重点介绍它。如下图所示。

        锥形感光细胞又分为三种,分别是SML型细胞,对应感知短波中波长波的峰值响应。如下图所示。

        但是,不同人的眼睛,这三种细胞的分布比例和数量差异很大,这也就说明颜色只是人感知的结果。如下图所示为12个色觉正常人三种锥形感光细胞分布情况。

4.颜色的三色理论

        那么三种不同的细胞是如何对颜色进行感知的?我们刚才说过SPD,也就是光对应不同波长上的分布,现在又知道了感知的分布,那么我每种细胞的感知只需要将SPD和对应的感知曲线相乘再做一个积分即可。如下图所示。

         也就是说,人们看到的颜色并不是光谱,而是积分得到的S,M,L三个数。

5.同色异谱

        同色异谱(Metamerism)现象,顾名思义,虽然两种光的光谱并不相同,但是经过积分之后,我们感知到的颜色是相同的。原因也很简单,我们之前说了颜色是光谱和感知曲线乘积之后积分后得到的三个数,那么有些时候很有可能即使光谱不相同,但是被积分之后得到的S,M,L相同,这是有可能的。如下图所示,四种不同SPD被人感知后颜色都相同。

        因此,我们可以根据同色异谱的原理做颜色匹配,也就是说如果我们拍了一幅照片我们想把它复现在显示器上,但是想保持颜色一致,我们并不需要用相同的SPD。

6.颜色复现/匹配

        通过同色异谱我们也就知道,同一种颜色可以通过不同的“颜色”混合来得到。那么如何来混合呢?在计算机中我们的混合称之为加色系统,如RGB,我们把RGB三个数乘上某一个强度然后混合在一起,假如都是255,那么得到是白色,也就是会变强。这和画画调制染料正好相反,染料如果我们都混合在一起它会变黑,这是减色系统

        那么加色系统就允许我们通过线性来组合基本颜色,匹配出任何给定的颜色。如下图所示。

        如下图所示,左边为给定的颜色,右边根据三种颜色不同配比来混合出给定相同的颜色。

        对于任何一种颜色都可以通过类似的方法解决。但是,有一些情况很奇怪,有些颜色怎么调都无法调到正确的颜色。如下图所示。

        然后有人就发现可以在左边需要混合的颜色加一个颜色。这就好像是说如果我左边不加一个颜色,那就相当于右边减掉一个颜色(加色系统无法直接减负数)。如下图所示。

        通过这种方式人们发明了CIE RGB系统,它给定出的颜色永远属于单色的颜色,并用三种不同单色的颜色去混合,如下图所示。

        对于三种基础的颜色SPD不用去管,只需要考虑如何用这三种颜色混合出某一个波长上对应的颜色。对于任何一个波长上的颜色,都可以得到在波长范围内的三条曲线(例如在450nm位置分别需要多少三个基础颜色比例),如下右图所示。这样就可以到RGB的匹配函数,对于不同的波长颜色需要用多少基础颜色组合起来。如下左图所示就是匹配函数。

        综上我们就可以通过匹配函数取匹配任何一种SPD的光,和感知类似的,我们也是做积分就可以得到相应的值。

7.颜色空间

        上面所说的RGB是广泛使用的标准系统,叫做sRGB系统(Standardized RGB)。sRGB就是一种颜色空间(Color Spaces)

        这里我们介绍另一种叫做CIE XYZ颜色空间,当然它也有相应的匹配函数,如下图所示。和sRGB不同的是,XYZ并不是通过实验测量得来的一套色彩空间,它是人为定义的。它的X不会有负值。且因为Y的曲线分布特殊性,它的大小在一定程度上能表示亮度的大小。

        由此,我们可以将三个数用坐标表示,但是三维的坐标可视化起来太难了,我们想到Y可以表示亮度,那么如果我们固定一个亮度,也就是Y值,调整x,y就可以得到一个二维坐标了(x,y是X,Y归一化后得到的值)。我们会得到下面这么一幅图,而这幅图就叫做色域(Gamut)色域,也就是一个颜色空间内所有可能表示的颜色

        色域图我们可以观察到很多特点,比如中心的白点,而白色往往是最不纯的,也就是混合的最多的颜色,纯色往往分布在边界上,越往边界颜色越纯。如下图所示。

        对于不同颜色空间所表示的颜色范围是不一样的,也就是对应的色域图范围也不一样。而之前所说的sRGB颜色空间只能表示很小的三角形内的颜色。如下图所示。

        HSV颜色空间是另外一种颜色空间,如下图所示,它也规定了三个值,H色调(Hue)S饱和度V亮度。色调也就是红黄蓝这种颜色的不同;饱和度的大小决定它是更接近本身的颜色还是接近白色,越饱和说明越是纯色,越不饱和说明越是混合色(趋于白色);亮度自然也就是从黑色到某种颜色。HSV也是一种用的很广泛的颜色空间,它很适合艺术家进行创作。

        CIE LAB颜色空间,有三个轴,L表示黑白灰,亮度,a轴表示红和绿,b轴表示蓝和黄。为什么要这么表示呢?LAB颜色空间它的任何一个轴的两端极限都是互补色,比如白和黑是互补色,蓝和黄是互补色,红和绿是互补色,这些并不是猜的而是根据实验得到的,这是人脑对这些颜色的互补感知决定的。比如我们知道偏黄的绿,但是我们想象不出偏红的绿,因为红和绿差的太远了。

8.颜色只是感知的错觉

        颜色很多都是相对的,颜色本身是感知,看到颜色是自己觉得是什么,可能和实际情况相悖的。如下图例子,问A方格和B方格哪一个更亮?

        可以看出来B方格是浅灰色,而A方格是深灰色。但是真的如此吗?我们把其他部分挡住后如下图所示,可以发现两个方格颜色是一样的。

        另外一个例子,如下图所示,问图里面两个X哪个更亮?

        实际上是一样亮的。如下图所示。

        通过这些例子说明了颜色完全就是人感知的。

9.减色系统

        减色系统我们之前说了是与加色系统相对的一种系统,也就是越混越黑。比较常用的一种减色系统是CMYK系统,C是青色,M是品红色,Y是黄色,K是黑色。如下图所示。

        通过C,M,Y就可以混合出各种颜色,包括黑色,那么为什么还要带K呢?因为它在打印上很常用,打印的时候黑色的墨水比较便宜好造,直接拿来用就行,而不是花大价钱去用三种颜色混合。

  • 8
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YanisWu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值