色彩发送器
色彩认知:光源是出生点,光源发射出光线,光线通过直射反射折射等路径最终进入人眼。但是人眼接收到光线后,人眼的细胞产生了一系列化学反应。由此把产生的新号传入大脑,最终大脑对颜色产生了认知感知。
光的要素
如果没有光,我们就无法在黑暗中看到色彩,光的本质就是一种物理现象,光在没有进入我们眼睛前,我们对它的认知是一种波长与能量分布。
光源
光源就是产生光的物体。
波长
光理论上是无限大的,只是我们人眼可见光是局限的。
能量分布
我们讲光线是一种波,那么既然是真实存在的就会有能量,能量单位就是功率,我们认知的光就会有不同的功率。比如一个光是由多个波长组合起来的波形。
那么也就是说我们阐述色彩就用这个波长就可以了,但是这么做实在太反人类了,我们无法保证能简单描述色彩。于是人们发明了一个叫做分光光度计的东西。
分光光度计
分光光度计就是用于描述光线的具体能量强度,例如以前学到的棱镜分光。通过分光之后对区间波长进行了感应与测量,最后得知了光谱的分布,从而得知了光线额能量集中在了550nm附近(图中绿色的地方)。
于此获得了:1.混合波长组成光线,拆分光线,变成光线形成单一波长光
2.测量单一波长光的实际所含能量
光的传播
直射光:光源直射眼睛。
折射光:光源穿过物体进入眼睛。
反射光:官员经过物体表面反射进眼睛。
光线追踪:光线弹来弹去,然后我们根据权重确定光线最后进入眼睛中的颜色。
下图就是光线反射后,再能量上发生的变化,可以很明显看到少了一部分能量,因为这一部分的能量被物体吸收了,也就是说每次光经过反射或者投射都会或多或少对对光的分布产生一些影响。
简单通过能量分布图分析下图得出结论:物体吸收光功率的大部分在600nm左右,也就是说物体吸收的是黄色和绿色的光。
光源的接受者
人眼一些接收色彩特性:
1.相对亮度感知
2.人眼HDR
3.人眼感光细胞分布
4.人眼本质
5.完整微积分公式
相对亮度感知
在某些阴暗的环境下,点亮一盏灯,这时人眼就会觉得非常亮。如果同时点开1000盏灯,反而觉得只是10倍的亮度,对于亮度的认知相当于从0~1再从1~10.
人眼HDR
人眼既可以分辨出高亮度的云彩的不同层次区别,还可以分辨出阴影中不同物体的异同。
但是人眼的能力不能保证这两个功能同时生效。它可能会随着不同的环境,感知到不同的色彩,体验到不同的敏感效果,甚至可能会随着盯着某个点时间流逝而变化颜色。
人眼感光细胞分布
人眼简单可以把感知色彩的细胞分为两大类,杆状细胞和锥状细胞。
杆状细胞:负责感知亮度。对亮度特别敏感,只要有5~14个光子打到杆状细胞上就会产生神经信号,这也可以解释为什么闪光弹能让人致盲,一部分原因就是因为光实在太亮,直接干涉了人眼最敏感的感光细胞。
锥状细胞:负责感知色彩。这种细胞专门用于感知颜色,但他们还被区分为了L细胞,M细胞,S细胞,
这三种细胞负责感知的波长不一,如图所示,L感知红色区间,M感知绿色区间,S感知蓝色区间。
人眼本质
光的接受者,他的作用就是接受外部光线输入,输出神经电信号进入大脑。
完整微积分公式
○C是人眼这个函数输出的神经电信号
○S(λ)表示LMS这三个感官细胞的感知分布
○I(λ)表示光源的功率谱分布
○R(λ)表示反射物体的吸收功率分布
色彩空间的历史
1800色彩的猜想
人们在18xx年有多种猜想,其中有3种:
1人们有100多种感受颜色的细胞
2人们有三种,分别是RGB三种感色细胞
3人们有三种,分别是黑白,红绿,黄蓝感色细胞
其中2和3这两种猜想都成为了我们当下的色彩视觉模型,也称之色彩模型。
1905Munsell色彩系统
美国艺术家Albert Henry Munsell利用自己的艺术特长,最早提出了一个色彩系统,后来在1930年被优化改良。
Munsell通过很多色卡来描述色彩,下面旋转角度是色相,Munsell垂直的是亮度,从圆心到外部是Munsell饱和度。人们凭借自我主观意识认知与区分色彩就是HSL(色相饱和亮度),这套系统没有过多的物理科学在其中,更多的是一种艺术家的理解与归纳总结。
用了这个色彩系统后一个颜色可以通过:H=1.6YR,V=6.3,C=3.9来描述而且也不会有任何的描述有理解偏差。
于是我们为了方便期间就为一些常用色彩制作了色卡,一个个色卡描述色彩就非常方便。
1931 CIE 1931 RGB Color Specification System
一个叫CIE的机构在1031年建立了一套科学的色彩系统,希望完全客观物理的量化色彩。
对照实验,测试光与三基色一样时通过测试
色彩匹配方案
CIE把所有可视波长的光线作为测试光挨个测试了一个遍,最终的到了三条曲线
我们发现435.8~546.1 nm这段波长中的红色基色强度是负数。这虽然物理正确,但是一点也没有科学的美感,于是我们进行了归一化,保证色彩在-1~1之间。
最终通过计算出rgb的基色的强度在当前混色强度的所占比例
这样计算后, r'g'b'都是在-1~1之间, 那么我们发现r'+g'+b'=1,那么就可以通过其中两个已知数计算出另一个的强度。
在对数值归一化之后,两个变量就可以代表色彩了,于是我们就通过r' g'这两个参数画图。
于是画出了一个二维空间,x轴是r',y轴是g' 那么我们就可以成功的在色彩科学上真正科学的描述一个颜色。
我们可以把任何可见光通过图标的一个点的坐标来表示说明。
上文的CIE1931RGB色彩系统已经不错了,但是存在负数,这在计算上非常的麻烦,比如写个乘法,得先计算是正数还是负数。
于是人们就用数学的方式做了一个新的色彩空间。所以XYZ色彩空间就是一个中转站,主要目的就是简化计算。
这里简单描述下如何转换的,因为是空间转换所以我们用矩阵的方式进行。注: 这里的RGB是CIE 1931RGB 不是sRGB中的RGB数值。
这个xyz矩阵也不太美,于是人们为了计算方便有把xyz矩阵进行了归一化。
那么最终效果就是这张大家应该会比较熟悉的图, 人称色域马蹄图。也就是人眼可见范围表示, 但是我们发现图像上面好像没有亮度于是我们就在归一化的基础上,把XYZ中的Y单独拿出来与xy一起组成了Yxy色彩空间 其中的Y表示亮度 xy表示色度。
注:这里提一下 这里是Yxy色彩空间 Yxy是由XYZ色彩空间衍生
不足与补充
上述的XYZ色彩空间也不错,但是也有问题,就是色彩的分布不均匀,他们的分布色彩一些地方紧一些地方又很松,举个例子这个图的偏向绿色部分就非常平滑,然后左下角部分坐标变化小,但是色彩变化就很快。
色彩空间的定义
色彩空间至少需要满足三项重要指标
a色域(三个基色的坐标,由此形成三角形)
b白点(色域三角形中心)
cGamma(如何对三角形进行切分)
色域
白点
Gamma
首先理解下gamma并不是色彩空间,它其实只是如何对色彩进行采样的一种方式。
每次对比顶点切割,就会发现切割的方式不同会导致每次对应的色彩不一样,大家通常理解的gamma=1的情况就是指代上图这样的均匀切分,这样的好处就是方便计算。
而非均匀切割的方式就是gamma≠1。
比如我们有个常用的空间sRGB,那么sRGB的构成:
色域:sRGB首先设定了RGB三个基色的坐标
白点:sRGB也规定的白点的位置
gamma:sRGB的gamma设定≈2.2也就是说从外箱内切,先切得很细,然后逐渐变粗
Gamma详解
大家知道线性的好处也就是gamma=1的时候,可方便计算,计算机效率搞,方便理解,但是计算机存储与显示器硬件因为早期性能问题,采用的基本大部分都是gamma≈2.2的情况,但是我们目前大部分的机器都已经不是远古版本了,所以PC上的大部分游戏都会推荐使用线性空间,包括很多VFX人员都喜欢勇Linear线性空间。
于是我们根据色彩空间的定义确定,它们是由三个指标制作而成,但是它又不是定死的,我们可以自定义色彩空间。
换一个色域,换一个白点位置,换一个gamma值其实就是一个新的色彩空间了。
所以也可以存在sRGB D65 linear这类空间,所以任何色彩空间都是linear线性的,但linear本身并不是一个色彩空间。
常用色彩模型与色彩空间
色彩模型:
使用一定规则魔术(排列)颜色的方法
举例:
RGB、CMYK、LAB
色彩空间:
至少满足三个指标:色域、白点、gamma
举例:
CIE XYZ、Adobe RGB、sRGB、Japan Color 2001 Uncoated、US web Coated(后两个是基于CMYK模型建立的)
色彩空间转换
RGB2HSV:
HSV2RGB: