Radiance RGBE 圖片 (.hdr)
Radiance 標準Radiance RGBE(HDR)是為 Radiance 合成成像系統開發的基礎高動態範圍格式,使用共用的 8 位元指數來儲存具備光度學精確度的亮度值。
檢查與中繼資料
作業系統與檔案分析工具透過檢查開頭的二進位位元組序列來識別 HDR 檔案:
位元組層級標頭簽章(檔案簽章)
作業系統與檔案分析工具透過檢查開頭的二進位位元組序列來識別 HDR 檔案:
十六進位簽章(偏移量 0):
23 3F 52 41 44 49 41 4E 43 45 0AASCII 表示法: #?RADIANCE\n
標準化: Radiance 合成成像系統標準
技術規格
| 容器架構 | ASCII 標頭結尾為空行,後接解析度字串與二進位 RLE 掃描線 |
| 壓縮 | 套用於每個通道掃描線的調適性遊程編碼(RLE) |
| 位元組序 | 大端序(Big-Endian) / 網路位元組順序 |
| 色彩空間 | 具備 CIE 色度座標的線性 Rec.709 RGB |
| 色版與結構 | RGBE:紅、綠、藍(8 位元尾數) + 共用 8 位元指數 |
| 最大尺寸 | 實際上無限(32 位元無號解析度字串) |
| 透明度 | 無(實體輻射亮度測量值) |
| 串流與漸進式 | 循序掃描線逐行串流播放 |
技術比較矩陣:HDR 對比競爭格式
| 技術屬性 | HDR (目前) | EXR | TIFF | JPEG |
|---|---|---|---|---|
| 像素編碼 | 32 位元 RGBE(共用 8 位元指數) | 每通道 16 位元 half / 32 位元浮點數 | 整數 8/16 位元或 32 位元浮點數 | 8 位元 gamma 編碼整數 |
| 主要使用情境 | 360 度環境光源(IBL) | VFX 多圖層合成 | 攝影與印前 | 標準網路圖形 |
| 動態範圍涵蓋範圍 | 76 個數量級(10^-38 至 10^38) | 實質無限的浮點數範圍 | 視位元深度而定 | 有限的 8 位元 SDR 範圍 |
| 支援的通道 | 僅限 RGB | 無限制的任意通道 | 多個任意通道 | RGB / CMYK |
常見損壞模式與十六進位修復指南
圖片在整個畫面寬度上顯示水平條紋帶。
根本原因: 掃描線 RLE 解壓縮中的遊程長度計數位元組損毀。
修復: 使用 File2File.app HDR 修復功能重建受損的掃描線標記,或是轉換為 EXR。
安全性分析與解析器攻擊向量
Radiance HDR 解碼器經常使用未受限制的字串常式來剖析 ASCII 標頭行,這可能會觸發堆疊緩衝區溢位。
已知攻擊向量
- 讀取解析度字串標頭('-Y %d +X %d')時發生未受限制的 sprintf/sscanf 呼叫。
- 在解碼格式錯誤的 RLE 掃描線期間發生堆積越界寫入。
- 配置目標 32 位元浮點數緩衝區時發生整數溢位。
防禦最佳實務: 在配置圖片緩衝區之前,先驗證 ASCII 標頭長度與掃描線尺寸。
歷史起源與里程碑
2000Paul Debevec 在電腦圖學中使用 Radiance .hdr 檔案普及了 HDR 圖片為基礎的打光(IBL)。
1997將調適性掃描線遊程編碼標準化以縮減檔案大小。
1989Greg Ward 在勞倫斯柏克萊國家實驗室發明了 RGBE 32 位元像素編碼與 .hdr 格式。
主要優勢與優點
- 精簡的每個像素 32 位元記憶體佔用空間,同時橫跨 76 個數量級的實體光線亮度。
- 許多用於環境貼圖的 3D 算繪套件皆有支援,不過支援情形取決於應用程式。
- 具備相對精簡的檔案結構,可由支援 Radiance HDR 的軟體來實作。
技術限制與缺點
- 由於共用 8 位元指數編碼,極暗區域可能會產生量化色帶(banding)。
- RGB 通道無法儲存負數或任意多道次圖層。
- 在多道次視覺特效製作中,大部分已被 OpenEXR 取代。
有趣的技術冷知識
- 每一個 Radiance HDR 檔案皆以文字標頭 '#?RADIANCE' 或 '#?RGBE' 開頭。
- 此格式的建立是為了在建築結構建造之前,模擬建築設計中的實體建築照明。
- Paul Debevec 於 1997 年發表的經典 SIGGRAPH 論文《Recovering High Dynamic Range Radiance Maps from Photographs》使用此格式徹底革新了 CGI 打光技術。
常見技術問題
3D 中會使用 HDRI 檔案做什麼?
HDRI (.hdr) 檔案用作 360 度全景環境貼圖,以為 3D 物件提供具備相片真實感的現實世界光源、陰影與反射。
RGBE 32 位元編碼是如何運作的?
RGBE 沒有儲存三個獨立的浮點數,而是分別為紅、綠、藍使用 8 位元,再加上一個共用的 8 位元指數,將完整的 HDR 動態範圍塞進每個像素僅 4 個位元組的大小中。
我可以將 HDR 轉換為 JPG 嗎?
可以。File2File.app 可以在您的瀏覽器中直接進行色調對應,並將 32 位元 Radiance HDR 檔案轉換為標準的 JPG 或 PNG 圖片。