116、Gamma校正与色调映射:人眼视觉特性、动态范围压缩与对比度增强的实战

发布时间:2026/7/22 16:20:32
116、Gamma校正与色调映射:人眼视觉特性、动态范围压缩与对比度增强的实战 116、Gamma校正与色调映射:人眼视觉特性、动态范围压缩与对比度增强的实战一、一个让我半夜被叫醒的bug2018年某款旗舰机,夜景模式拍出来的照片,暗部细节全黑,高光区域却像被漂白过。用户投诉说“还不如三年前的老机型”。我盯着log看了三个小时,发现ISP输出的raw数据明明有12bit动态范围,但经过Gamma校正后,暗部被压缩到了几乎不可分辨的区间。问题出在Gamma曲线本身——我们用了标准的sRGB Gamma,但sRGB是为8bit显示设计的,对12bit sensor的暗部细节简直是屠杀。后来我换了一种做法:在Gamma之前先做一次色调映射(Tone Mapping),把高动态范围先压缩到人眼可感知的区间,再套Gamma。效果立竿见影。这个教训让我明白:Gamma校正不是简单的幂律曲线,它必须和人眼视觉特性、显示设备特性、以及场景的动态范围一起考虑。二、人眼视觉特性:为什么Gamma曲线长这样人眼对亮度的感知不是线性的。你从0到1增加10个单位的亮度,人眼感觉到的变化幅度,远小于从100到110的变化。这就是韦伯-费希纳定律(Weber-Fechner Law)的简化版:人眼对亮度的响应近似对数关系。Gamma校正的数学形式是 ( L_{out} = L_{in}^\gamma ),其中 (\gamma) 通常取2.2。这个曲线模拟了人眼的非线性响应:暗部被拉伸(因为人眼对暗部更敏感),亮部被压缩(因为人眼对亮部不敏感)。但注意,这个曲线是显示设备的特性——CRT显示器的亮度响应本身就是Gamma 2.2左右的幂律