伽马值、灰度系数
数码图片记录和呈现的过程¶
-
cmos通电曝光,产生模拟电信号
-
经过模数转换,产生raw数据
- raw并非图片的编码
- raw记录的亮度信息是线性的
- raw没有位深度,没有伽马编码,没有色彩空间
-
raw信息ISP处理
- 用插值算法算出拜尔阵列中每个像素的RGB值
- 将计算好的RGB值映射到一个色彩空间中
- 对线性变化的RGB值应用伽马曲线,
输出 = 输入^(1/2.2)。将线性的光线数据转换位非线性的图像数据,以匹配人眼视觉和显示设备的特性
-
压缩为JPG储存
为何应用伽马曲线编码¶
参考文献Understanding Gamma Correction
人眼的特性¶
人眼对光强度的感知不是线性的。人眼对暗部区域的亮度变化更敏感,对亮部区域的亮度变化更迟钝。而对于数码相机,两倍数量的光子击中传感器时,它接收到两倍的信号(“线性”关系)
线性色域的50%亮度与人眼认为的中间灰
韦伯-费希纳定律认为刺激强度与刺激引起的感觉幅度,呈对数函数的关系。
史蒂文斯则用幂律描述了更广泛的感觉比较范围,直至零强度。
| Text Only | |
|---|---|
1 | |
图像处理中gamma值通常取2.2,k值作为一个可选的缩放系数,通常为1
| Text Only | |
|---|---|
1 | |
位深度的限制¶
位深度规定了每个颜色通道可用的亮度级别数量
一个8bit(位)深度的图像,每个通道只有256个亮度级别
若我们将仅有的256个亮度级别,平均地分配给线性的raw数据。0代表纯黑,1,2,3,...均匀增加亮度,而255代表最亮
那么对于人眼来说,5到6变亮了20%,而200到201只增加了0.5%
暗部区域将会出现明显的色阶断裂 。而亮部的变化则过于细微,难以分辨。大量数据位被浪费在了亮部区域
因此,位深度低的图像更依赖伽马曲线,通过一个非线性的转换过程,重新分配这256个数值等级
线性的raw数据
使用32级(5位)进行线性编码
应用伽马曲线编码
伽马曲线的编码和矫正¶
- 图像伽马
- raw转换为JPEG或TIFF等格式时,应用伽马曲线重新分配亮度等级
- 以更有效地利用位深度
- 伽马曲线压缩了亮部的信息,图像伽马也可以被视为伽马压缩,显示伽马可以被视为伽马扩展
- 显示伽马
- 补偿图像伽马,使得图像回到正确的颜色上,否则图像会比正确的颜色更亮
- 业界大部分已采用2.2的标准伽马值
- 显示器具有一个原生伽马值。在CRT显示器上是2.5,显卡只需要对其应用1.1的,就可以实现2.2的整体显示伽马。而液晶显示器的数据并不一致,需要更多的校正
- 除了显示器,伽马值还可以以类似的方法作用在打印机上
- 系统伽马
- 应用于图像的所有伽马曲线的净值,包含了图像伽马和显示伽马的综合作用
- 为了忠实地表现正确的图片,应当使得系统伽马接近一条直线,也就是使得gamma=1.0
- 如果系统伽马校准不足,会使得画面偏亮,对比度偏低。反之,如果过度补偿了,画面会变暗,对比度更大
非必须和不适用情况¶
- 伽马曲线不是必须的。如果线性的raw图像在线性的显示器上展示,我们仍会看到正确的图像
- sRGB色彩空间在非常低的亮度呈线性,在较高亮度的指数则为2.4。伽马值为2.2的简单幂函数只是整体近似sRGB的曲线
灰度系数¶
PhotoShop的色阶工具中
中间滑块下方对应的数值1.00,是当前图像的灰度系数
也就是当前图像的系统伽马值
中间滑块永远对应50%亮度
调节色阶,实际上是通过调节50%亮度对应的位置,来可视化的调节系统伽马值
