1. HDR 技术概述

1.1 HDR 定义与核心概念

HDR(High Dynamic Range,高动态范围) 是一种通过多帧曝光融合来扩展图像亮度记录范围的技术。与标准动态范围(SDR)图像相比,HDR 能够同时保留场景中最亮区域(如天空、灯光)和最暗区域(如阴影、暗部)的细节,避免过曝或欠曝。

对比维度 SDR(标准动态范围) HDR(高动态范围)
亮度范围 0~255(8-bit) 0~1023(10-bit)或更高
动态范围 约 6~8 档 12~20 档
暗部细节 易丢失(噪点淹没) 保留完整纹理
亮部细节 易过曝(高光裁切) 保留高光层次
典型场景 室内均匀光照 逆光、日落、夜景
关键指标: 动态范围每增加 1 档,传感器能记录的亮度差异翻倍。HDR 多帧合成通常将动态范围从 8 档扩展到 14~18 档,接近人眼感知能力(约 20 档)。

1.2 多帧合成原理

多帧 HDR 合成的核心思想是:用不同曝光时间的多张图像,分别捕获场景中不同亮度区间的信息,再通过算法融合成一张高动态范围图像。典型流程如下:

  1. 多帧采集: 相机连续拍摄 3~5 帧,曝光时间分别为短(EV-2)、中(EV0)、长(EV+2)。
  2. 对齐与配准: 消除手持抖动或物体运动造成的像素偏移,使用光流或特征匹配。
  3. 权重映射: 根据像素亮度计算每帧的融合权重——短帧贡献高光区域,长帧贡献暗部区域。
  4. 融合合成: 加权平均或拉普拉斯金字塔融合,生成 10-bit 或 12-bit 的 HDR 图像。
  5. 色调映射(Tone Mapping): 将 HDR 宽动态范围压缩到 8-bit 显示设备可呈现的范围,同时保留视觉对比度。
工程注意: 多帧合成的瓶颈通常不在算法,而在 帧间对齐精度 和 运动鬼影消除。HAL 层需要提供精确的帧时间戳和传感器增益参数,才能保证合成质量。
多帧 HDR 合成流程 短帧 EV-2 中帧 EV0 长帧 EV+2 帧对齐 & 配准 权重映射 & 融合 色调映射 HDR 输出 关键参数 • 曝光步长:2 EV • 帧数:3~5 帧 • 对齐精度:亚像素级

1.3 HDR 在移动摄影中的价值

移动设备受限于传感器尺寸和镜头光圈,单帧动态范围通常只有 6~8 档。HDR 多帧合成技术为移动摄影带来了以下核心价值:

  • 逆光场景可用性提升: 人物面部不再死黑,背景天空不过曝,一次拍摄即可获得可用照片。
  • 夜景细节增强: 长帧捕获暗部纹理,短帧抑制高光溢出,合成后噪点更少、细节更丰富。
  • 算法替代硬件: 无需机械光圈或双增益传感器,通过软件即可实现接近专业相机的动态范围。
  • 实时预览与抓拍: 现代 ISP 和 HAL 层支持零快门延迟(ZSL)HDR,用户按下快门的瞬间即可完成多帧合成。
应用场景 无 HDR 效果 有 HDR 效果 提升幅度
逆光人像 面部欠曝,背景过曝 面部清晰,天空有云层细节 动态范围 +6~8 档
室内窗边 窗外一片白,室内偏暗 窗外景物可见,室内纹理保留 高光细节恢复 80%
夜景灯光 路灯过曝成光晕,暗部噪点严重 灯箱文字可读,暗部纹理清晰 信噪比提升 10~15 dB
大光比风景 亮部或暗部必有一方丢失 全亮度区间细节完整 可用照片率提升 60%
HAL 层注意事项: 多帧 HDR 对帧间隔、曝光同步、增益一致性要求极高。如果 HAL 层返回的帧时间戳抖动超过 1ms,或者不同帧的模拟增益不一致,合成结果会出现亮度闪烁或鬼影。建议在 HAL 层实现 帧序列 ID 标记 和 曝光参数锁定 机制。

1.4 HDR 在 Camera HAL 中的位置

在 Android Camera HAL 架构中,HDR 多帧合成涉及以下关键模块:

  • Sensor HAL: 控制曝光时间、模拟/数字增益、帧率,输出 RAW 或 YUV 帧。
  • ISP HAL: 执行 Bayer 去马赛克、白平衡、降噪,输出 YUV 帧供合成。
  • HAL 3.x 框架: 通过 capture_request 下发多帧请求,通过 capture_result 返回多帧数据。
  • 后处理引擎: 通常运行在 CPU/GPU/DSP 上,执行对齐、融合、色调映射。
HDR 在 Camera HAL 架构中的位置 Camera App Camera Framework Camera HAL HDR 多帧请求 多帧采集 & 对齐 融合 & 色调映射 HAL 层职责 • 下发多帧 capture_request • 锁定曝光/增益参数 • 返回帧序列 ID 和时间戳 • 传递 ISP 处理后的 YUV 帧

1.5 本章小结