一、Gamma校正
1.颜色空间
图中可以看到,sRGB和Rec.709的色域是差不多的,三原色的位置是相同的,那么它们之间的区别就是:传递函数不同。
2.传递函数
什么是传递函数:
知道了颜色的颜色值之后,想要在电子设备上显示,就需要把它转换为视频信号,传递函数就是用来做转换的。
一个传递函数包括两部分:
- 光转电传递函数(OETF),把场景线性光转到非线性视频信号值
- 电转光传递函数(EOTF),把非线性视频信号值转到显示光亮度
例如:拍照时,将照片存储在内存卡中,就是用视频信号存储的,如果要看这个照片,就把视频信号再转换成光信号。
传递函数其实就是Gamma校正所使用的函数。
3.Gamma校正
Gamma可以简单定义为
- Gamma是指对线性三色值和非线性视频信号之间进行编码和解码的操作。
编码和解码的理解
例如:
- 拍到的照片,存在电脑里,就是把自然界中的光信号编码为视频信号
- 查看照片时,就要把视频信号还原为线性的光信号,进行解码操作
如图:线性空间(相机捕捉到的真实世界光信号) + gamma编码 + 显示器显示 = 结果
用一张图来举例
gamma编码:
- 左图为存在硬盘中,将捕获到的物理数据做一次gamma值约为0.4的映射,这个过程称为gamma编码
- 由图中可以看到,此时图像要比实际物理像素更亮(图不一定是实际的情况,只是亮度提高了的直观表示)
gamma校正:
- 中间为显示图像时,需要为每一个像素做一次gamma值约为2.2的校正,来使的最终结果为正确的物理数据。
可以看到经过gamma校正好,之前偏亮的图像亮度降低了。
为什么不用线性的方式存储,而要来回转换呢?
①和人眼的特性有关:
- 人眼对暗部的变化感应更敏感
②非线性转换为了优化存储空间和带宽
- 我们用于显示图像数据都是8bit,要充分利用带宽,就需要使用更多位置去存储暗部值。也就是 暗部使用高精度保存,亮部使用相对较低精度保存。