2、色彩科学基础:人眼视觉特性、亮度感知与非线性、Gamma曲线的物理意义

在显示工程中,Gamma 校正并非数学游戏,而是对人眼视觉特性的精确补偿。理解这一基础,是调试龙芯 HDMI 显示输出的前提。

2.1 人眼视觉特性:对数感知与韦伯定律

人眼对亮度的响应并非线性,而是近似对数关系。这一特性最早由韦伯(Weber)和费希纳(Fechner)总结为 韦伯-费希纳定律:人眼能感知的亮度变化比例是恒定的,而非绝对差值。

  • 韦伯比:ΔL / L ≈ 常数(在中等亮度范围约为 0.01~0.02)。
  • 物理含义:在暗区,人眼对微小亮度变化敏感;在亮区,需要更大的亮度变化才能产生相同的视觉差异。
  • 工程影响:若显示系统线性编码,暗部量化步长过大,亮部量化步长过小,导致暗部出现明显色阶(banding),亮部细节浪费。
关键结论:人眼是“非线性传感器”,显示系统必须使用非线性编码来匹配人眼特性。
记忆口诀:人眼看亮度,比例定差异;暗处更敏感,亮处需大力。

2.2 亮度感知与非线性:从物理光到视觉响应

物理世界的亮度(Luminance,单位 cd/m²)与视觉感知的明度(Lightness)之间存在明确的非线性映射。CIE 标准推荐了 L* 函数 作为均匀感知空间:

L* = 116 * (Y/Yn)^(1/3) - 16   (当 Y/Yn > 0.008856)
L* = 903.3 * (Y/Yn)            (当 Y/Yn ≤ 0.008856)

其中 Y 为物理亮度,Yn 为参考白亮度。L* 每变化 1 个单位,人眼感知的明度变化大致相等。

物理亮度比例 (Y/Yn) 感知明度 L* 视觉特性
0.01 (1%) ≈ 10.0 暗部细节敏感
0.18 (18% 灰) ≈ 50.0 中间调视觉中心
0.50 (50%) ≈ 76.0 亮部感知压缩
1.00 (100% 白) 100.0 最大亮度
工程陷阱:若直接线性输出物理亮度,人眼在暗部会看到明显的“阶梯”,而在亮部则感觉细节模糊。这就是为什么所有消费级显示设备都必须进行 Gamma 校正。

2.3 Gamma 曲线的物理意义

Gamma 曲线描述了 输入数字信号(编码值) 与 输出物理亮度 之间的幂律关系:

L_out = (V_in / V_max)^γ × L_max

其中:

  • V_in:输入电压或数字编码值(0~1 归一化)
  • γ (Gamma):幂指数,标准显示系统通常 γ ≈ 2.2
  • L_out:输出物理亮度
  • L_max:最大亮度

Gamma 曲线的物理意义体现在三个层面:

  1. 视觉匹配层:γ ≈ 2.2 的曲线恰好补偿人眼的倒数对数响应,使编码值均匀对应感知明度。
  2. 信号传输层:在模拟时代,CRT 显像管天然具有 γ ≈ 2.5 的响应,预校正(Gamma 校正)使系统整体线性化。
  3. 量化效率层:非线性分配量化步长,暗部步长小、亮部步长大,最大化 8bit/10bit 编码的视觉利用率。
核心公式:显示系统总 Gamma = 编码 Gamma × 显示设备 Gamma = 1.0(理想线性系统)。
实际中,总 Gamma ≈ 1.1~1.2 更符合观看环境(暗室 vs 亮室)。

2.4 标准 Gamma 曲线对比

标准 Gamma 值 应用场景 特点
sRGB / BT.709 ≈ 2.2(分段近似) PC 显示器、互联网、高清电视 暗部线性段避免噪声放大
BT.1886 (Rec.709 显示) ≈ 2.4 专业监视器、广播级 暗部更深,对比度更高
DCI-P3 (数字影院) 2.6 数字电影放映 适应全黑环境,暗部细节丰富
Apple Display P3 ≈ 2.2 苹果设备 与 sRGB Gamma 兼容
龙芯调试要点:HDMI 输出默认遵循 BT.709/sRGB Gamma 曲线(γ ≈ 2.2)。若连接专业监视器,需确认是否切换至 BT.1886 曲线,否则画面会偏灰或偏暗。

2.5 人眼视觉与 Gamma 曲线关系图

下图展示了从物理亮度到人眼感知的完整映射链路,以及 Gamma 曲线在其中扮演的“桥梁”角色。

人眼视觉特性与 Gamma 曲线映射关系 物理亮度 L = 0 ~ 100 cd/m² Gamma 编码 (γ ≈ 2.2) V_out = V_in^γ 人眼感知明度 L* ≈ 116·Y^(1/3) 非线性补偿核心 物理亮度线性变化 → Gamma 非线性映射 → 人眼感知均匀变化 量化步长分配(8bit 编码) 暗部步长小 中间调适中 亮部步长大

2.6 龙芯 HDMI Gamma 调试中的物理意义

在龙芯平台调试 HDMI 输出时,Gamma 曲线的物理意义直接转化为以下工程参数:

  • 查找表(LUT)校正:通过 256 级或 1024 级 LUT 将线性 RGB 数据映射为 Gamma 编码数据。
  • 暗部噪声抑制:Gamma 曲线在暗部斜率较大,量化步长小,但也会放大传感器噪声。需在驱动中设置去噪阈值。
  • 亮部细节保留:亮部斜率平缓,需确保 ADC/DAC 精度足够,避免亮部细节丢失。
  • 色温一致性:Gamma 曲线需与白点校正(D65/D50)联合调试,否则不同亮度下色温会漂移。
调试口诀:
暗部看噪声,亮部看细节;
Gamma 选 2.2,色温 D65;
LUT 分段校,视觉才舒适。

2.7 本章小结

概念 核心要点 对龙芯调试的影响
人眼对数感知 亮度感知与物理亮度呈对数关系 必须使用非线性编码
Gamma 曲线 V_out = V_in^γ,γ ≈ 2.2 HDMI 输出默认遵循 sRGB Gamma
量化效率 暗部步长小,亮部步长大 8bit 编码即可覆盖人眼分辨极限
标准选择 sRGB 2.2 / BT.1886 2.4 / DCI 2.6 根据目标显示设备选择对应曲线