传递函数是啥
传递函数(or gamma)有助于更好的编码bits,从而提高性能。有两个传递函数
- OETF:光电传递函数,通常在相机内讲线性场景光转化为视频信号。(encode)
- EOTF:电光传递函数,将视频信号转化成显示器的线性光输出。(decode)
传递函数在哪个位置
基于ACEScg workflow
ODT,即OETF和EOTF(引自PZZZB对 HDR in Call of Duty 的总结)
其实我个人更倾向于EOTF在ODT之中,而OETF在IDT之中。因为只有在IDT中才需要光电转化
当然,这里ODT并不适只有EOTF,而是还有很多设置诸如:白点、颜色空间属性等
颜色空间属性就是 图像状态和观察状态
例如:sRGB就是PC端常用的,为明亮的办公环境准备
Rec.709就是TV常用的,为昏暗的家庭影院准备
这也是为什么上图有sRGB和Rec.709两条曲线的原因,不同设备用的是不同的传递函数
2.2怎么来的
其实看上面曲线也可以看出来,不一定是2.2,当年老式的CRT显示器内置Gamma为2.35左右。
所以ACES的其中一个牛逼之处就在于上面说的 颜色空间属性即根据不同设备和环境进行调整。
甚至某自研直接用的2也不是不行。
那么回到这个话题,为啥是2.2?是具体实验定下来的,眼睛的感受曲线非常趋近于2.2。包括摄影里的中灰色卡,为20%左右,趋近于pow(0.5,2.2)≈0.218的结果
必要性
总之一句话:灰阶有限的前提下,因为人眼对自然的非线性感知特性,我们才需要Gamma校正。
出自 SubstancePBR
人眼的主要光线感知细胞
视锥细胞在较高的光照水平下是活跃的,能够进行色觉并负责高空间的敏锐度
视杆细胞对于黑暗环境的感光非常敏感,但对颜色并不敏感