1、HDR基础概念:什么是HDR、HDR与SDR的区别、HDR的应用场景
各位同学好,我是你们这门课的主讲。在图像处理这行摸爬滚打了十几年,HDR 算是我最常打交道的话题之一了。今天咱们先不急着写代码,把地基打牢。
说白了,HDR 就是「高动态范围」的缩写。动态范围是什么?就是一张图里最亮和最暗部分的亮度比值。这个比值越大,你能看到的细节就越多。
我刚开始做这行时,总觉得 SDR 也挺好,直到有一次在项目里处理一个逆光人像——人脸黑成一片,背景却过曝。那时候我才意识到,SDR 的「桶」太小了,装不下真实世界的亮度跨度。
1.1 什么是 HDR?
HDR(High Dynamic Range),高动态范围。它不是一个具体的文件格式,而是一种记录和呈现更广亮度范围的技术方案。
你想想看,人眼能感知的亮度范围大约是 10^14:1,从星光到正午太阳都能适应。但传统的 SDR 图像只能记录大约 100:1 的对比度。这中间的差距,就是 HDR 要填补的。
HDR 图像通常使用浮点数来存储像素值,而不是 SDR 的 8-bit 整数。这意味着它能记录的光强信息范围更广、精度更高。常见的 HDR 格式有 OpenEXR、Radiance HDR(.hdr)、以及消费电子领域的 Dolby Vision 和 HDR10。
1.2 HDR 与 SDR 的区别
这个区别,我习惯从三个维度来看:亮度范围、色彩深度、以及编码方式。咱们直接上表格,一目了然。
| 对比维度 | SDR(标准动态范围) | HDR(高动态范围) |
|---|---|---|
| 亮度范围 | 0.1 ~ 100 cd/m²(尼特) | 0.0005 ~ 10,000+ cd/m² |
| 位深 | 8-bit(256 级灰度) | 10-bit 或 12-bit(1024~4096 级) |
| 色彩空间 | Rec.709 / sRGB | Rec.2020 / DCI-P3(色域更广) |
| 存储格式 | JPEG、PNG(整数编码) | OpenEXR、HDR10、Dolby Vision(浮点或 PQ 编码) |
| 典型场景 | 普通显示器、网络图片 | 高端电视、电影后期、游戏 HDR 模式 |
嗯,这里要注意一个常见的误区:很多人以为 HDR 就是「更鲜艳」。其实不是。HDR 的核心是亮度层次的还原。比如一个夕阳场景,SDR 可能把天空压成一片橙黄,而 HDR 能同时保留太阳附近的耀眼和云层阴影里的纹理。
1.3 HDR 的应用场景
HDR 不是实验室里的玩具,它已经渗透到我们日常的视觉体验里了。我按领域分了三块来讲。
摄影领域
这是 HDR 最早落地的场景之一。你拍一张逆光人像,天空正常了人脸就黑,人脸正常了天空就白。怎么办?
传统做法是包围曝光:拍三张(欠曝、正常、过曝),然后合成。这就是最朴素的 HDR 合成。我在早期做手机相机算法时,天天跟这个流程打交道。
- 包围曝光合成: 多帧融合,保留各帧的最佳细节。
- 单帧 HDR: 利用 RAW 格式的高位深,通过色调映射(Tone Mapping)压缩动态范围。
- 实时 HDR: 手机计算摄影,按下快门瞬间完成多帧对齐与融合。
影视领域
电影行业对 HDR 的拥抱比摄影更彻底。Dolby Vision 和 HDR10 已经成为高端影院的标配。
我记得有一次参与一个电影后期项目,调色师在 HDR 监视器上调整一个暗部场景——SDR 下看起来全黑的地方,HDR 里竟然能看到演员衣服的纹理。那种震撼,让我彻底服了。
- 后期调色: HDR 素材保留更多调色空间,避免 banding(色带)和 clipping(裁切)。
- 分发标准: Netflix、Apple TV+ 等平台要求 HDR 母版制作。
- 显示设备: 高端电视、投影仪支持 HDR 解码与映射。
游戏领域
游戏 HDR 和影视 HDR 不太一样。游戏是实时渲染的,它需要在渲染管线里就考虑 HDR 的亮度范围。
说白了,游戏引擎里如果不用 HDR,光照计算就会失真——亮部容易过曝,暗部细节丢失。现在主流引擎(Unreal、Unity)都内置了 HDR 渲染管线。
- HDR 渲染: 使用浮点帧缓冲,保留光照计算的中间结果。
- 色调映射: 将 HDR 场景映射到 SDR 显示器(或 HDR 显示器)上。
- HDR 显示: 支持 HDR10 的显示器/电视,能直接呈现更真实的游戏光影。
1.4 HDR 的核心流程框架
为了让你对 HDR 有个整体认知,我画了一张流程图。这张图会贯穿我们整个课程,后面每一章都会对应其中的一个环节。
这张图就是咱们这门课的骨架。从多帧输入开始,经过对齐、融合、色调映射,最终输出 HDR 结果。每一章都会深入其中一个环节。