02 - 颜色与感知
这篇文章会说说有关图形学中有关颜色的内容.
颜色
颜色是人的一种感知,它不是光的普遍性质。不同波长的光不是“颜色”。
物理基础
牛顿通过三棱镜,发现白光是由多种颜色的光混合出来的。
光谱(Spectrum):光线在不同波长/频率上的分布。
图形学上更关心的是可见光的光谱,波长大约在400~700nm之间.
谱功率密度(SPD,Spectra Power Distribution):光线强度在不同波长的分布。
SPD具有线性性质,例如下面两束光的SPD可以综合起来:
生物基础
人眼睛的结构如下:
和相机类比,瞳孔类似光圈,晶状体类似透镜,视网膜类似感受器。
视网膜上有感光细胞(Retinal Photoreceptor Cell):
- 视杆细胞(Rod):感知光的强度,得到灰度图
- 视锥细胞(Cone):分为S,M,L三种,用来感知不同波长的光,形成颜色
人眼看到的结果,也就是不同视锥细胞感知的 S,M,L 这三个值可通过 色彩三色理论(Tristimulus Theory of Color) 来计算,方法是其光谱响应曲线与光强曲线对应位置相乘再积分起来:
颜色重建与匹配
同色异谱:两种不同的光谱,最终得到的S,M,L值(看到的颜色)却是相同的。
我们可以用这个理论去进行颜色重建与匹配。
首先,需要了解计算机的成像系统——加色系统。定义三种原色
完成颜色的重建后,就能开始颜色的匹配工作了。可以利用 CIE RGB 来进行匹配工作。
CIE组织定义了RGB的系统,和上边的加色系统差不多,它给出RGB三原光和目标测试光,它们都是单波长的,通过测试来测量多少强度的三种原色加起来与测试光相同。
它们的测试结果如下,我们要混合某种单波长的光,只需按下图取不同的r,g,b就行:
当然,现实世界的光线SPD是由很多波长组合而成,所以还要进行积分操作:
颜色空间
标准 RGB
标准RGB系统(sRGB,Standardized RGB), 是一种被广泛运用于各种设备的色彩系统,但是RGB所能形成的色域是有限的。
CIE XYZ 系统
使用X,Y,Z三个值表示颜色。其中,Y也表示亮度(Luminance)。他们的匹配函数跟RGB的不一样:
有人想直观的看X,Y,Z这三个值做可视化,参数是三维的,不好搞。因此,人们将X,Y,Z归一化,引出x,y,z这三个色度(Chromaticity),固定Y,可视化x和y,就能显示出下图:
而这张图也叫做 色域(Gamut) ,即一个颜色空间所有可能表示的颜色。
不同颜色空间显示的颜色范围也不同,如下图所示:
HSV/HSL颜色空间
基于感知的颜色空间(Hue-Saturation-Value),被广泛用于“拾色器”。
CIELAB 空间
L为亮度、a表示红绿、b表示蓝黄,这个空间认为轴的两端都是互补色。
互补色是通过实验得到的,我们可以通过视觉暂留效果验证,比如先看一张反色的图,一段时间后换成空白,就能“看”到互补色。
CMYK 检测系统
用于印刷的颜色空间:
未提到的
HDR,伽马校正。。。
参考资料
GAMES101-现代计算机图形学入门
20 光场、颜色与感知 (yuque.com)