4. HDR 基础概念:动态范围、过曝与欠曝、人眼视觉特性
各位同学,今天我们聊聊 HDR 的基础。说白了,HDR 要解决的核心问题就一个:让相机看到的东西,更接近人眼看到的样子。
我刚开始做 ISP 的时候,总觉得把 sensor 的位数做高就行了。后来发现,根本不是这么回事。你想想看,真实世界的亮度跨度有多大?从星光下的 0.0001 cd/m² 到正午太阳的 10⁸ cd/m²,差了十几个数量级。而我们的 sensor,哪怕是最好的,也就 12-14 bit 的动态范围。这中间的鸿沟,就是 HDR 要填的。
4.1 动态范围:到底在说啥?
动态范围,英文叫 Dynamic Range,缩写 DR。它的定义很简单:系统能同时记录的最大信号与最小信号之比。在图像领域,就是最亮区域和最暗区域的亮度比值。
通常我们用 dB 或 f-stop(档)来表示。换算关系很简单:
- dB 表示: DR(dB) = 20 × log₁₀(最大亮度 / 最小亮度)
- f-stop 表示: DR(stop) = log₂(最大亮度 / 最小亮度)
举个例子。一个 12-bit 的 sensor,理论上能记录 0-4095 的灰度值。它的理想动态范围是:
DR(stop) = log₂(4095 / 1) ≈ 12 stops
DR(dB) = 20 × log₁₀(4095) ≈ 72 dB
但注意,这是理想值。实际 sensor 有噪声,暗部信号会被噪声淹没。我在项目中遇到过,标称 72dB 的 sensor,实际可用动态范围往往只有 60-65dB。嗯,这里要注意,信噪比(SNR)会吃掉你的动态范围。
| 场景 | 典型亮度范围 (cd/m²) | 所需动态范围 (stop) |
|---|---|---|
| 阴天室内 | 10 ~ 500 | 6-8 |
| 晴天室外 | 100 ~ 100,000 | 10-12 |
| 逆光人像 | 1 ~ 50,000 | 14-16 |
| 夜景霓虹灯 | 0.1 ~ 10,000 | 16-18 |
你看,逆光场景需要 14-16 stops,而普通 sensor 只有 10-12 stops。这就是为什么逆光拍照,人脸总是黑的——sensor 的 DR 不够用。
4.2 过曝与欠曝:两个极端
当场景的动态范围超过 sensor 的 DR 时,就会发生两件事:
- 过曝(Overexposure): 亮部像素达到饱和值(比如 4095),信息全部丢失。在图像上表现为一片死白,没有任何纹理。
- 欠曝(Underexposure): 暗部像素被噪声淹没,信号比噪声还低。在图像上表现为一片死黑,细节全无。
我个人的习惯是,宁可欠曝,不要过曝。为什么?因为过曝的信息是彻底丢失的,你后期拉不回来。而欠曝的区域,只要噪声控制得好,还能通过增益或算法提亮。
这里有个概念要区分:曝光不足 vs. 动态范围不足。曝光不足是整体偏暗,可以通过增加曝光时间或增益来改善。动态范围不足是同时存在过亮和过暗的区域,你无法通过单一曝光参数来兼顾两者。这就是 HDR 要解决的场景。
4.3 人眼视觉特性:HDR 的终极参考
为什么我们要做 HDR?因为人眼本身就是一台超级 HDR 相机。我简单列几个关键特性:
- 瞬时动态范围: 人眼在固定瞳孔和适应状态下,能同时分辨约 10-14 stops 的亮度范围。这已经超过大多数 sensor 了。
- 适应动态范围: 人眼通过瞳孔调节和视网膜感光细胞的化学适应,能覆盖约 20-24 stops 的总范围。从星光到正午阳光,人眼都能适应。
- 局部自适应: 人眼对不同区域的亮度敏感度不同。在暗区,感光细胞会提高增益;在亮区,会降低增益。这就是局部色调映射(Local Tone Mapping)的生物原型。
- 对比度敏感度: 人眼对相对亮度变化敏感,而不是亮度。韦伯定律说:ΔL / L ≈ 常数。也就是说,在暗区,人眼能分辨很小的亮度差;在亮区,需要更大的亮度差才能感知。
你想想看,这给我们的 HDR 算法什么启示?
- 不需要追求的亮度值,而是保持相对对比度。
- 暗部需要更精细的量化(更多 bit),亮部可以粗一些。
- 局部处理比全局处理更符合人眼感知。
4.4 知识结构图:HDR 基础概念
下面这张图,把动态范围、过曝/欠曝、人眼视觉特性之间的关系串起来了。建议你保存下来,后面讲多帧融合和色调映射时,会反复用到这些概念。
4.5 小结:HDR 到底在做什么?
讲到这里,你应该明白了。HDR 不是凭空创造细节,而是在 sensor 的物理限制和人眼的感知需求之间,搭一座桥。
- 动态范围是客观存在的物理量,它决定了 sensor 能“看到”多少亮度信息。
- 过曝与欠曝是动态范围不足时的两种表现,过曝更致命。
- 人眼视觉特性是 HDR 算法的终极参考,它告诉我们:什么该保留,什么可以压缩。
我个人觉得,理解这三者的关系,比背公式更重要。公式是工具,而这三者的关系是设计思想。后面讲多帧融合、色调映射、局部对比度增强时,你会发现,所有算法都在围绕这三个概念打转。