2、HDR成像原理:多帧HDR合成、单帧HDR(DOL/DCG)、HDR与SDR的映射关系、HDR元数据
各位同学,欢迎来到第二章。
上一章我们聊了RAW是什么,以及噪声从哪来。这一章,咱们正式进入HDR的世界。
HDR,高动态范围。说白了,就是让相机既能看清亮处的云彩纹理,又能同时保留暗部台阶的细节。这不是魔法,是工程。
我个人习惯把HDR成像拆成两条技术路线来讲:多帧合成和单帧原生。这两条路,最终都要面对同一个问题——怎么把拍到的宽动态信息,塞进我们日常看到的SDR屏幕里。
2.1 多帧HDR合成:用时间换动态
这是最经典的方法。手机相机里所谓的“HDR模式”,多半就是它。
原理很简单:
- 按不同曝光时间,连拍几张RAW。
- 一张欠曝(保留高光),一张正常,一张过曝(提亮暗部)。
- 然后通过算法,把三张里最好的部分拼到一起。
我在项目中遇到过一个问题:拍摄城市夜景时,霓虹灯牌和路面阴影的动态范围超过了12档。单帧RAW根本拉不回来。后来用了三帧合成,才把灯牌里的字和路面的纹理同时保留住。
- 对齐(Registration):手持拍摄必有位移,先做特征点匹配或光流对齐。
- 去鬼影(De-ghosting):画面里有行人、车辆?不处理就会出“半透明幽灵”。
- 融合(Fusion):按权重图把各帧的亮部、暗部像素加权合并。
- Tone Mapping:把合成后的高动态数据映射到8bit或10bit输出。
2.2 单帧HDR:DOL与DCG
多帧合成有个硬伤——运动场景。你拍三帧,中间隔了几十毫秒,画面里的车已经跑出去老远了。去鬼影算法再强,也扛不住剧烈运动。
所以,工业界和高端手机开始转向单帧HDR。一次曝光,同时拿到长短曝光信息。
2.2.1 DOL(Digital Overlap)
DOL是索尼推的一种技术。它在一个曝光周期内,连续读出两帧:一帧短曝光,一帧长曝光。
- 短曝光:读出速度快,保留高光细节。
- 长曝光:积累更多光子,提亮暗部。
- 两帧在像素级做融合,输出一帧HDR RAW。
嗯,这里要注意:DOL本质上还是“多帧”,只不过两帧之间的时间差极短(微秒级),运动伪影几乎不可见。
2.2.2 DCG(Dual Conversion Gain)
DCG是另一种思路。它不改变曝光时间,而是改变像素的转换增益。
- 高转换增益(HCG):对弱信号敏感,适合暗部。
- 低转换增益(LCG):饱和容量大,适合亮部。
- 同一个像素,在单次曝光内,同时读出HCG和LCG两路信号。
| 特性 | DOL | DCG |
|---|---|---|
| 实现方式 | 时间域:两次读出 | 电压域:双增益路径 |
| 运动伪影 | 极低(微秒级间隔) | 无(单次读出) |
| 动态范围提升 | 约2~3档 | 约1~2档 |
| 噪声表现 | HCG段噪声低 | LCG段读出噪声略高 |
| 典型应用 | 手机主摄、安防 | 车载、工业相机 |
2.3 HDR与SDR的映射关系
你拍到了14档动态范围的RAW,但你的显示器只有8bit(约6~7档)。怎么办?
这就引出了Tone Mapping(色调映射)。说白了,就是把一个宽动态范围的图像,压缩到一个窄动态范围的显示设备上,同时尽量保留视觉上的对比度和细节。
我常用的映射策略分两类:
- 全局映射:整张图用同一个映射曲线。简单,但容易丢失局部对比度。
- 局部映射:根据像素周围区域的亮度,动态调整映射曲线。效果好,但计算量大,容易产生光晕伪影。
// Reinhard 全局映射
L_display = L_world / (1 + L_world)
// 其中 L_world 是归一化后的场景亮度
// L_display 是映射后的显示亮度
这个公式简单,但效果偏“平”。实际工程中,我更喜欢用 Filmic Curve 或 ACES 的映射曲线,它们对高光的滚降更自然。
为什么会这样?因为人眼对亮度的感知不是线性的,而是接近对数。所以映射曲线通常要模拟人眼的“S形”响应:暗部提亮,亮部压缩,中间调保持线性。
2.4 HDR元数据
最后,聊聊元数据。你拍了一张HDR照片,怎么让播放器知道它是HDR?怎么让显示器知道该用多大亮度来显示?
答案就是元数据。
常见的HDR元数据标准:
- Static Metadata(静态元数据):如SMPTE ST 2086,包含最大亮度(MaxCLL)、最大帧平均亮度(MaxFALL)、色域主坐标。整段视频只用一组参数。
- Dynamic Metadata(动态元数据):如Dolby Vision的RPU、HDR10+。每帧或每个场景可以单独指定亮度映射参数,精度更高。
| 元数据项 | 含义 | 典型值 |
|---|---|---|
| MaxCLL | 内容中单个像素的最大亮度 | 1000 cd/m² |
| MaxFALL | 内容中单帧的平均亮度上限 | 400 cd/m² |
| Mastering Display Primaries | 母版监视器的色域坐标 | DCI-P3 或 BT.2020 |
| Luminance Mapping (动态) | 每帧的亮度映射曲线参数 | Dolby Vision RPU |
本章知识结构图
下面这张图,把HDR成像的核心路径串起来了。你可以看到多帧和单帧两条路线,最终都汇聚到Tone Mapping和元数据输出。
好了,这一章的内容就是这些。多帧合成和单帧DCG/DOL各有各的适用场景,没有的好坏。Tone Mapping是HDR落地的关键一步,元数据则是HDR生态的“通用语言”。