本篇参考B站视频 “技术美术百人计划”·霜狼_may ;
《Shader入门精要》·冯乐乐女神著;
https://www.zhihu.com/question/27467127/answer/111973548
https://www.jianshu.com/p/9a91e6ad0d38
本篇主要用于自我复习,如有疑问或发现有什么错误,请多指教~
本篇内容主要包括伽马校正,韦伯定律,CRT,线性工作流,Unity颜色空间。
一.伽马校正
在之前的文章里有具体讲过色彩空间相关的东西,我们先简单回顾下,色彩空间是怎么定义的?
- 至少满足色域,白点和gamma三个指标;
- 色域:三个基色的坐标,由此形成三角形;
- Gamma:如何对三角形内进行切分;
- 白点:色域三角形中心;
下图中的左图是常用的一些色彩空间色域图,其中常用的SRGB是微软和惠普在1996年发布的通用的空间颜色标准,其Gamma值2.2是咋来的呢,是通过实验测试调整并最后确定的,图中可以看到SRGB和Rec.709的色域范围差不多,三个基色坐标是相同的,它们区别在于传递函数不同;
2.传递函数
已知在颜色空间下三原色的值,要显示在电子设备上换成视频信号,就需要用到传递函数;
一个传递函数包含两部分:
- OETF:光转电传递函数,将光信号转为电信号,负责把场景线性光转到非线性视频信号值;
(如在拍照和视频时,需要将场景中线性的光转到一个非线性的视频信号里) - EOTF:电转光传递函数,将电信号转为光信号,负责把非线性视频信号值转换成显示在电子设备上的光信号;
3.伽马校正
Gamma校正是什么?
传递函数其实就是伽马校正所使用的函数,我们一般看到的是被简化的幂函数
Gamma校正简单来讲就是对线性三色值和非线性视频信号间进行编码与解码的操作。
Gamma校正做了啥?
如上面两张图,例如我们在相机捕捉到自然界中一些线性的光信号再转存到电脑中可以为电脑识别的视频信号时,就需要进行编码操作;
而当我们用电脑去展现这个照片或视频时就需要将其从非线性的视频信号欢原为线性的光信号,就需要解码操作,最后变成我们所看到的样子。
下图中是视频中的具体举例,使用的是SRGB色彩空间,它的Gamma值约为2.2。最开始编码操作时的0.45通过1/2.2计算而得;
为啥要搞Gamma校正?
非线性转换目的主要是为了优化存储空间与带宽,传递函数能更好地帮我们利用编码空间,我们现在通用的格式还是8位,等以后如32位时,有足够颜色空间能利用时,或许就不需要伽马编码的工作。之前的文章也有说过,这里就截个图;
二.韦伯定律
人的感觉具有相对性——Weber定律,其公式为ΔI/I=K;
- 其中K为常数称作韦伯率,与感觉器官有关,I为原始刺激值,ΔI为此时的差别阈值;
- 它用来表示感觉的差别阈值随原刺激量的变化而变化,表现有一定的规律性;
- 韦伯定律不仅可以适用于视觉,听觉(2000HZ)K=0.003,触觉(400g)K=0.013,咸味觉(3mol/L)K=0.2,幸福感也适用;
- 所受刺激越大时,需增加的刺激也要足够大才会使人感觉到有明显变化,仅适用于中等强度刺激
上图中,上面的看似是均匀过渡,但其实均匀过渡的是下面的一条,我们可以称上面的为美术中灰,下面的为物理意义上中灰色。上面的更符合我们的视觉习惯;