Radiance HDR 画像 (.hdr)
Radiance 標準Radiance RGBE (HDR) は、Radiance シンセティック イメージング システム用に開発された基本的なハイダイナミックレンジ フォーマットであり、共有 8-bit 指数を使用してフォトメトリックに正確な輝度値を格納します。
調査とメタデータ
オペレーティングシステムやファイル解析ツールは、先頭のバイナリバイトシーケンスを検査することで HDR ファイルを識別します:
バイトレベルのヘッダーシグネチャ (マジックバイト)
オペレーティングシステムやファイル解析ツールは、先頭のバイナリバイトシーケンスを検査することで HDR ファイルを識別します:
16進数シグネチャ (オフセット 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-bit RGBE (共有 8-bit 指数) | チャンネルあたり 16-bit half / 32-bit float | 整数 8/16-bit または 32-bit float | 8-bit ガンマエンコード済み整数 |
| 主なユースケース | 360 度環境ライティング (IBL) | VFX マルチパスコンポジット | 写真およびプリプレス | 標準 Web グラフィックス |
| ダイナミックレンジの範囲 | 76 桁 (10^-38 から 10^38) | 実質的に無限の浮動小数点範囲 | ビット深度によって異なる | 制限された 8-bit SDR 範囲 |
| サポートされるチャンネル | RGB のみ | 無制限の任意のチャンネル | 複数の任意のチャンネル | RGB / CMYK |
一般的な破損モードと16進数リカバリガイド
画像がフレームの幅全体にわたって水平方向のストリークバンドを表示します。
根本原因: スキャンライン RLE 解凍における、破損したランレングス カウントバイトが原因です。
復旧: File2File HDR 修復ツールを使用して破損したスキャンラインマーカーを再構築するか、EXR に変換してください。
セキュリティ分析とパーサー攻撃ベクトル
Radiance HDR デコーダーは、スタックバッファオーバーフローを引き起こす可能性のある、境界のチェックされていない文字列ルーチンを使用して ASCII ヘッダー行を解析することがよくあります。
既知の攻撃ベクター
- 解像度の文字列ヘッダー (`-Y %d +X %d`) を読み取る際に行われる境界のチェックされていない sprintf/sscanf 呼び出し。
- 不正な形式の RLE スキャンライン デコード中のヒープ領域外書き込み。
- 宛先の 32-bit 浮動小数点バッファを割り当てるときの整数オーバーフロー。
防御的ベストプラクティス:
歴史的背景とマイルストーン
主な利点とメリット
- 物理的な光の輝度の 76 桁にわたる広範さを網羅しながら、ピクセルあたり 32-bit のコンパクトなメモリフットプリントを実現します。
- 360 度環境マップ用の 3D レンダリングパッケージ (Blender、Unreal Engine、Unity、Cinema 4D) 全体で普遍的にサポートされています。
- すべてのソフトウェアプラットフォームで簡単に実装できる、シンプルで堅牢なファイル構造です。
技術的な制限とデメリット
- 共有 8-bit 指数エンコーディングのため、極端に暗い領域で量子化バンディングが発生する可能性があります。
- RGB チャンネルには、負の数値や任意のマルチパス レイヤーを格納できません。
- マルチパスのビジュアルエフェクト制作では、大部分が OpenEXR に取って代わられています。
興味深い技術トリビア
- すべての Radiance HDR ファイルは、テキストヘッダー「#?RADIANCE」または「#?RGBE」で始まります。
- このフォーマットは、建造物が建てられる前に、建築デザインにおける物理的な照明シミュレーションを行うために作成されました。
- Paul Debevec による 1997 年の象徴的な SIGGRAPH の論文「Recovering High Dynamic Range Radiance Maps from Photographs (写真からの高ダイナミックレンジ放射マップの復元)」では、このフォーマットを使用して CGI ライティングに革命を起こしました。
よくある技術的な質問
3DにおいてHDRIファイルは何に使用されますか?
HDRI(.hdr)ファイルは、3Dオブジェクトにフォトリアルな現実世界の照明、影、反射を提供するための360度パノラマ環境マップとして使用されます。
RGBE 32ビットエンコーディングはどのように機能しますか?
RGBEは、3つの独立した浮動小数点数を保存する代わりに、赤、緑、青にそれぞれ8ビットを使用し、さらに共有の8ビット指数を使用することで、完全なHDRダイナミックレンジを1ピクセルあたりわずか4バイトに収めます。
HDRをJPGに変換できますか?
はい。File2File.appを使用すると、ブラウザ内で直接32ビットのRadiance HDRファイルをトーンマッピングし、標準のJPGまたはPNG画像に変換できます。