Radiance HDR 图像 (.hdr)
Radiance 标准Radiance RGBE (HDR) 是为 Radiance 合成成像系统开发的基础高动态 range 格式,它使用共享的 8 位指数来存储光度学精确的亮度值。
检查与元数据
操作系统和文件分析器通过检查开头的二进制字节序列来识别 HDR 文件:
字节级文件头签名 (Magic Bytes)
操作系统和文件分析器通过检查开头的二进制字节序列来识别 HDR 文件:
十六进制签名 (偏移量 0):
23 3F 52 41 44 49 41 4E 43 45 0AASCII 表示形式: #?RADIANCE\n
标准化: Radiance Synthetic Imaging System Standard
技术规格
| 容器架构 | ASCII header ending with empty line followed by resolution string and binary RLE scanlines |
| 压缩方式 | Adaptive adaptive run-length encoding (RLE) applied per-channel scanline |
| 字节序 | Big-Endian / Network byte order |
| 色彩空间 | Linear Rec.709 RGB with CIE chromaticity coordinates |
| 通道与结构 | RGBE: Red, Green, Blue (8-bit mantissas) + shared 8-bit Exponent |
| 最大尺寸 | Practically unlimited (32-bit unsigned resolution strings) |
| 透明度 | None (physical radiant luminance measurements) |
| 流式传输与渐进式加载 | Sequential scanline-by-scanline streaming playback |
技术对比矩阵:HDR 对比同类产品
| 技术属性 | HDR (当前) | EXR | TIFF | JPEG |
|---|---|---|---|---|
| 像素编码 | 32位 RGBE(共享8位指数) | 每通道 16 位半精度 / 32 位浮点数 | 整数 8/16 位或 32 位浮点数 | 8位伽马编码整数 |
| 主要使用场景 | 360 度环境照明 (IBL) | VFX 多通道合成 | 摄影与印前 | 标准网络图形 |
| 动态 range 范围 | 76 个数量级 (10^-38 到 10^38) | 实际上无限的浮点范围 | 随位深而变化 | 有限的 8 位 SDR 范围 |
| 支持的通道 | 仅 RGB | 无限任意通道 | 多个任意通道 | RGB / CMYK |
常见损坏模式与十六进制恢复指南
图像在整个帧宽度上显示水平条纹带。
根本原因: 扫描行 RLE 解压缩中出现损坏的运行长度计数字节。
恢复方法: 使用 File2File HDR Repair 重建损坏的扫描行标记,或转换为 EXR。
安全分析与解析器攻击向量
Radiance HDR 解码器通常使用无边界字符串例程解析 ASCII 标头行,这可能会触发栈缓冲区溢出。
已知攻击向量
- 读取分辨率字符串标头('-Y %d +X %d')时发生无边界 sprintf/sscanf 调用。
- 在格式错误的 RLE 扫描行解码期间发生堆越界写入。
- 分配目标 32 位浮点缓冲区时发生整数溢出。
防御性最佳实践:
历史渊源与里程碑
2000保罗·德贝韦克(Paul Debevec)使用 Radiance .hdr 文件在计算机图形学中普及了高动态 range 基于图像的照明(IBL)。
1997标准化自适应扫描行运行长度编码,以减小文件大小。
1989格雷格·沃德(Greg Ward)在劳伦斯伯克利国家实验室发明了 RGBE 32 位像素编码和 .hdr 格式。
核心优势与特点
- 每个像素占用紧凑的 32 位内存空间,同时跨越 76 个数量级的物理光亮度。
- 3D 渲染软件包(Blender、Unreal Engine、Unity、Cinema 4D)对 360 度环境贴图提供普遍支持。
- 文件结构简单、稳健,易于在所有软件平台上实现。
技术局限与劣势
- 由于采用了共享的 8 位指数编码,极暗区域可能会出现量化条带。
- RGB 通道无法存储负数或任意多通道图层。
- 在多通道视觉特效制作中,很大程度上已被 OpenEXR 取代。
趣味技术冷知识
- 每个 Radiance HDR 文件都以文本标头 '#?RADIANCE' 或 '#?RGBE' 开头。
- 该格式的创建旨在建筑物建造前,模拟建筑设计中的物理建筑照明。
- 保罗·德贝韦克(Paul Debevec)于 1997 年发表的标志性 SIGGRAPH 论文《从照片中恢复高动态 range 辐射度贴图》使用该格式彻底革新了 CGI 照明。
常见技术问题
在 3D 中 HDRI 文件用于什么?
HDRI (.hdr) 文件用作 360 度全景环境贴图,为 3D 对象提供逼真的现实世界光照、阴影和反射。
RGBE 32 位编码是如何工作的?
RGBE 没有存储三个独立的浮点数,而是为红色、绿色和蓝色分别使用 8 位,外加一个共享的 8 位指数,将完整的 HDR 动态范围压缩到每个像素仅 4 个字节。
我可以将 HDR 转换为 JPG 吗?
可以。File2File.app 可以在浏览器中直接对 32 位 Radiance HDR 文件进行色调映射,并将其转换为标准的 JPG 或 PNG 图像。