GAMES101课程学习笔记4——Color and Perception

Color Space

Physical Basis of Color(颜色的物理基础)

说道颜色,首先得从光说起,因为光具有真实的物理属性;

  • 光是由不同波长的光照成分组成的,人眼能看到的光的范围称之为可见光谱;
  • Spectral Power Distribution (SPD)为谱功率密度,表示一束光在不同波长下的功率分布;常用来测量真实的光;
  • SPD具有线性叠加性;

说完光,再来说颜色,颜色是光在人眼感知下的结果;并不是光的通用属性,与人眼具有强关联性;

Biological Basis of Color(颜色的生物基础)

人眼球中分布着Rods cell(杆状细胞,用来识别亮度),Cone cells(锥状细胞,用来识别颜色);
锥状细胞分为三种类型:S、M以及L,三种细胞对于不同波长的光,具有不同的反映峰值,各拥有各的spectral response curve;

Tristimulus Theory of Color(颜色的三色理论)

前面已知不同锥状细胞具有不同的反映曲线,人的大脑处理的实际上是三种锥状细胞处理后输出的信号;即输入SPD与三种Response Function积分后得到的三个分量(S,M,L);

Luminosity Function(亮度函数)

锥状细胞感受颜色,杆状细胞感受强度;同样不同的波长,杆状细胞感受出来的强度是不同的,感官亮度可以表示为Luminosity Function亮度随波长变化的函数;

Metamerism(同色异谱)

由于是积分产生的结果,那么不同的输入积分后就有可能产生同样的结果;即人眼看到的同样的颜色,可能是由不同的SPD产生;

Color Reproduction / Matching(颜色匹配)

同色异谱机制使得颜色匹配得以进行;Color Matching首先指定三盏光(每盏拥有固定SPD),调整三盏光的强度,使得混合后的颜色能匹配制定测试光,三盏光得到的强度由RGB组成,即为测试光光强;
有时Color Matching的测试光需要进行补光,此时获取的RGB值可为负值;

CIE RGB Color Matching Experiment(CIE颜色匹配实验)

CIE颜色匹配实验是CIE所推出的颜色匹配标准;

  • CIE使用red=700nm, green=546.1nm, blue=435.8nm三种波长的纯色光来进行匹配;
  • 对可见波长的纯色光进行匹配后,得到了三条颜色匹配曲线,称之为Color Matching Curves或Color Matching Function;
  • 有了颜色匹配曲线后,对于任意的SPD,只需将其与三条曲线进行积分,即可得到CIE rgb值,该值所在的空间,称之为CIE RGB空间;

Color Space(颜色空间)

LMS Space

此处LMS即为前面所说的眼睛内部的三种锥形细胞,以三种细胞的response curve作为积分曲线,积分后得到的颜色值位于LMS 空间;Unity中的白平衡既是在此空间下进行计算;

CIE RGB Space

前面提到将SPD与CIE color matching curves进行积分后即可得到CIE RGB空间下的值;

CIE XYZ Space(1931)

同样CIE RGB Space里的值会存在负值,由于匹配主光设定的限制;
为了避免负值的不变,CIE将RGB color matching curves经过仿射变换为XYZ color matching curves,转换后的curves不含有负值,这样积分得到的值就不会存在负值;积分值所在的空间称之为CIE XYZ Space;

  • XYZ空间使用的Color Matching Curves是经过精心设置的,其中的Y坐标的curve刚好为人眼的Luminosity Function(亮度函数),这样XYZ空间下的Y坐标刚好就代表着亮度;
  • 与CIE RGB空间相比,RGB空间的三个轴(前面所提的单色光)具有实际的物理波长,而XYZ空间的三个轴并没有物理意义,也就没有实际的物理颜色与波长;

CIE LUV and LAB(1976)

CIE 1931 XYZ具有一个很大的缺点,就是其上的颜色并不是均匀显示的,即相同间隔的颜色,在色度图上所显示的距离最多能相差20倍;为了解决这个问题CIE LUV就被提了出来,其将XYZ重新进行变换,能将最大相差倍数缩小为4倍;

xyY Space

由于色度图(下个小标题介绍)的方便性,使用色度图中的xy可以很方便的表示颜色的色相,但却丢失了亮度,因此加上CIE XYZ空间中Y值即可重建原来的颜色;
xyY也因为其方便性而经常使用,所以这里把xyY单独列出来;

sRGB

sRGB是如今实时渲染中使用最广泛的颜色空间,广泛使用在PC以及TV上;值得一提的是,sRGB与Rec. 709使用相同的Primaries lights以及白点,其中白点使用D65;

注意:这里sRGB指的是linear light space,并不考虑Gamma等相关因素的下nonlinear color space;相关知识参考这里还有这里;

LogC

Log Color Space是基于场景的编码颜色空间,我们经常使用的sRGB这种则是基于显示的编码颜色空间;不同的厂商有不同的Log编码方式,LogC是ARRI用来记录颜色的空间;参考Understanding Log and Color Space In Compositing以及LogC
LogC最大的优点是维持更多的动态范围信息,甚至是超过人眼所能感受的范围;由于其通过对数方式编码,存储范围远远大于一般的颜色编码方式;
由于LogC特性,常在LogC空间下进行对比度的计算,对比度的计算可能会导致负数、以及远超1的数,这些都可以在LogC空间下进行保存,使用再从LogC空间解码到原来的空间即可;

HSV

H为色相(Hue)、S为饱和度(Saturation)、V为亮度(Value);HSV也被称作为HSB(Brightness),它是RGB空间的非线性转换,并不是独立的颜色空间,因此没有RGB Primaries以及白点的定义参考这里

CIE chromaticity diagram(CIE色度图)

直接在CIE XYZ空间上工作有众多不便;常用的做法是将XYZ投影到x+y+z=1的平面;即将XYZ进行归一化得到xyz值,这样只需要记录xy值(范围为0-1),z值为1-x-y;xy值所在的空间被称之为CIE色度图(特指CIE 1931 xy chromaticity diagram);

  • 色度图包含了人眼所能看到的所有颜色,当然不包括强度;
  • 实时上在色度图上丢失的是亮度信息Y,而xy决定了所有的颜色;
  • 色度图为马蹄形;马蹄形的边沿代表整个色谱,是单色(单一波长),马蹄内部的颜色是混合色;
  • white point位于色度图的中心某处,具体位置依靠于所使用的光源;
  • 色度图还具有很多很好的性质,色相与饱和度也可以从色度图中找出,具体看一查看这里Colorimetry

Gamut(色域)

色度图包含了了所有的颜色,色度图中任意三点(Color Primaries)所组成的三角形就是一个色域(由于色度图的形式,三点进行插值可以得到三角形内的所有颜色);我们平时使用的sRGB就是其中的一个色域;

  • 色域只包含所能表示的颜色,不能表示颜色的强度;
  • 由于色度图是CIE XYZ空间的投影,所以CIE RGB空间的色域也能在色度图中进行表示,CIE RGB在色度图中所显示的色域同样也为一个三角形;
  • CIE XYZ是由CIE RGB转换而来的的,为了CIE RGB的色域在色度图中反而是三角形,会丢失一些颜色呢?就是因为CIE RGB包含了负数,这些负数在色度图中丢失了;参考这里Why is there a difference between the CIE XYZ colour gamut vs CIE RGB;
  • 各个颜色空间都有自己的色域;

Color Temperature(色温)

谈到色温就要谈到黑体辐射;黑体在物理上被认为是一种物质,它能吸收打到它身上所有的光线,同时会随着自身温度的变化,而释放出固定的光谱;

  • Black Body是一个理想化的物理物体,之所以叫黑体,是以为它会吸收所有的光线;
  • 由于对于黑体来说,温度与黑体所释放出来的光谱是固定的,我们常用色温来指定相应的光谱;
  • 黑体辐射的光谱与自然光是非常相似的,因此常用色温来指定阳光的颜色;
  • 色温有时也被用来指定白点,D65就是一个例子;

White Point(白点)

白点,定义的为一个色度,定义了白色在primaries light下的比值,具有一系列颜色与强度无关;某个光照环境下的白点,定义为白色物体在该环境下的色度;

  • 最常用的是白点是D65,定义为色温为6500K下的daylight光照环境;

Define a Color Space(定义一个颜色空间)

前面所说,色域已经给出了一个颜色空间所能表示的所有颜色,唯独丢失了强度范围,primaries lights给我们提供了矢量的方向信息,却没有没有提供矢量的相对比例关系;white point这时就起到了这个作用,白点确定了primaries lights之间的比例关系,之后再将白点亮度(Y坐标)缩放到1,即可确定给定primaries lights下所有颜色;

  • Three Primaries Lights;
  • White Point;

Transfer Between Color Space(转换颜色空间)

由于每个颜色空间的色域都在XYZ空间上进行了标定(由primaries lights来决定),同时颜色空间下的White Point也已经指定,这样有颜色空间转换到XYZ空间的矩阵就可以确定;
该矩阵具体由White Point在色度图上的xy坐标,primaries lights的xy坐标计算得来;
同理,另外一个颜色空间转换至XYZ空间下的矩阵也可以确定,以XYZ空间为媒介,就可以在不同的颜色空间中进行转换;

注意:实际上真正的物理渲染应该使用SPD来进行光照的计算与积分,即入射光使用SPD,brdf使用Spectral Reflectance Curve()SRC,两者的积分与使用RGB直接计算得到结果会存在差异;但多数情况下,这种差异可以忽略,特别是在实时渲染;
正确的渲染过程应该是光照的整个积分与计算都是用SPD和SRC来进行,只在最后输出的时候才转换成RGB显示;

References

[1] Color FAQ
[2] Colorimetry
[3] brucelindbloom
[4] How to Choose the Right Video Color Space
[5] What Is A Video Color Space?
[6] hitchhikers guide to digital color
[7] COLORIMETRY
[8] HDR in Call of Duty
[9] Colour & Vision Research laboratory
[10] White Point
[11] Black Body
[12] AN IN-DEPTH LOOK AT ASC-CDL BASED COLOR CONTROLS
[13] Cinematic Color
[14] Lift Gamma Gain

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值