HDR多曝光合成RTL设计与硬件验证实战 - 第1节
一、HDR 到底是什么?
说实话,我第一次接触 HDR 这个概念时,也以为是什么玄学。后来做图像处理芯片做多了,才明白——HDR 说白了就是「让亮的地方更亮,暗的地方更暗,同时细节还不丢」。
我们平时看到的普通画面,叫 SDR(标准动态范围)。它就像一个老式窗户,窗外阳光刺眼,屋里暗处却啥也看不清。HDR 呢,相当于把这扇窗户换成了全景落地窗——阳光进来了,阴影里的纹理也看得清清楚楚。
1.1 HDR vs SDR:一张表说清楚
| 对比项 | SDR(标准动态范围) | HDR(高动态范围) |
|---|---|---|
| 峰值亮度 | 约 100 cd/m²(nit) | 1000~10000 nit |
| 色深 | 8-bit(256 级) | 10-bit 或 12-bit(1024~4096 级) |
| 色彩空间 | sRGB / Rec.709 | Rec.2020 / DCI-P3 |
| 动态范围 | 约 6 档光圈 | 10~20 档光圈 |
| 典型应用 | 普通电视、网页、旧手机 | 4K 蓝光、高端显示器、手机 HDR 模式 |
关键点:HDR 不是「更亮」这么简单。它是亮度范围、色深、色彩空间三者的同步升级。缺一个,都不算真 HDR。
二、色彩空间:sRGB/Rec.709 vs Rec.2020
做 RTL 设计时,我经常要处理色彩空间转换。很多同学觉得这是软件的事,其实不然——硬件里做色彩矩阵乘法,延迟和精度都得抠得很细。
2.1 什么是色彩空间?
色彩空间就是「颜色的坐标系」。sRGB 和 Rec.709 基本是同一个东西,覆盖了人眼能看到的约 35% 的颜色。Rec.2020 则覆盖了约 76%。
你想想看,如果摄像头拍的是 Rec.2020 的广色域画面,但显示端只支持 sRGB,那颜色就会被「压缩」——原本鲜艳的红色会变得暗淡,蓝色会偏紫。这就是色彩空间不匹配的问题。
2.2 三个核心色彩空间对比
| 色彩空间 | 色域覆盖 | 典型用途 | 白点 |
|---|---|---|---|
| sRGB | 约 35% CIE 1931 | 网页、普通显示器 | D65 |
| Rec.709 | 与 sRGB 基本相同 | HDTV、蓝光 | D65 |
| Rec.2020 | 约 76% CIE 1931 | UHDTV、HDR 视频 | D65 |
我的经验:在 RTL 里做色彩空间转换时,我习惯用定点数 + 查表法。矩阵系数用 16-bit 精度,查表用 256 项 LUT,这样面积和延迟都能控住。纯浮点乘法在 FPGA 上太贵了。
三、亮度范围与动态范围概念
这两个词经常被混用,但在我做 HDR 合成芯片时,它们是完全不同的两个指标。
3.1 亮度范围
亮度范围就是「最亮处」除以「最暗处」的比值。比如一个场景最亮 1000 nit,最暗 0.1 nit,那亮度范围就是 10000:1。
但注意——人眼对亮度的感知是非线性的。我们觉得「亮一倍」,实际物理亮度可能差了 10 倍。这就是为什么 HDR 要用 PQ(感知量化)曲线或 HLG 曲线来编码。
3.2 动态范围
动态范围通常用「档位(stops)」来表示。1 stop = 亮度翻倍或减半。SDR 大约 6 stops,HDR 可以到 20 stops。
举个例子:
- 一个室内场景,窗外阳光明媚。SDR 拍出来,窗外一片死白,室内一片死黑。
- HDR 拍出来,窗外云朵的纹理、室内桌面的木纹,全都能看清。
避坑指南:我曾经在一个项目中,把「亮度范围」和「动态范围」混为一谈,结果在 tone mapping 模块里用了错误的映射曲线。画面要么过曝,要么欠曝。后来花了整整两周才把参数调回来。记住:亮度范围是物理量,动态范围是感知量。
四、HDR 合成的核心流程
做 HDR 合成 RTL 设计,本质上就是做三件事:
- 多曝光图像输入——通常 3 张:欠曝、正常、过曝
- 对齐与融合——消除运动鬼影,合并成一张高动态图像
- Tone Mapping——把高动态范围压缩到显示设备能支持的范围内
下面这张图是我自己画的 HDR 合成流水线结构,你在做 RTL 架构时可以直接参考。
五、亮度编码:PQ vs HLG
HDR 图像不能直接用线性亮度存,因为人眼对暗部更敏感。所以需要一种「感知量化」的编码方式。
| 编码方式 | 全称 | 特点 | 适用场景 |
|---|---|---|---|
| PQ | Perceptual Quantizer | 亮度映射,最大 10000 nit | 流媒体、蓝光、HDR10 |
| HLG | Hybrid Log-Gamma | 相对亮度,兼容 SDR 显示 | 广播电视、直播 |
我的建议:如果你做的是消费电子芯片(手机、电视),优先支持 PQ。如果是广播级设备,HLG 更实用。我当年做一款机顶盒芯片时,两个都做了,结果 HLG 的兼容性测试反而更麻烦。
六、本章小结
这一章我们聊了:
- HDR 和 SDR 的本质区别——亮度、色深、色域三管齐下
- 色彩空间 sRGB/Rec.709 与 Rec.2020 的差异——做转换时精度要够
- 亮度范围 vs 动态范围——物理量和感知量,别搞混
- HDR 合成流水线——对齐、融合、Tone Mapping 三步走
- PQ 与 HLG 两种编码方式——看场景选