Obraz Radiance HDR (.hdr)
Standard StandardRadiance RGBE (HDR) to fundamentalny format o wysokiej rozpiętości tonalnej opracowany dla systemu obrazowania syntetycznego Radiance, przechowujący fotometrycznie dokładne wartości luminancji przy użyciu współdzielonego 8-bitowego wykładnika.
Inspekcja i metadane
Systemy operacyjne i analizatory plików identyfikują pliki HDR, sprawdzając początkową sekwencję bajtów binarnych:
Podpis nagłówka na poziomie bajtów (Magic Bytes)
Systemy operacyjne i analizatory plików identyfikują pliki HDR, sprawdzając początkową sekwencję bajtów binarnych:
PODPIS HEX (OFFSET 0):
23 3F 52 41 44 49 41 4E 43 45 0AREPREZENTACJA ASCII: #?RADIANCE\n
Normalizacja: Standard systemu obrazowania syntetycznego Radiance
Specyfikacja techniczna
| Architektura kontenera | Nagłówek ASCII zakończony pustą linią, po której następuje ciąg rozdzielczości i binarne linie skanowania RLE |
| Kompresja | Adaptacyjne kodowanie RLE stosowane w wierszach każdego kanału |
| Kolejność bajtów (Endianness) | Big-Endian / Kolejność bajtów sieciowych |
| Przestrzenie kolorów | Liniowy RGB Rec.709 ze współrzędnymi chromatyczności CIE |
| Kanały i struktura | RGBE: Czerwony, Zielony, Niebieski (8-bitowe mantysy) + współdzielony 8-bitowy wykładnik |
| Maks. wymiary | Praktycznie nieograniczone (32-bitowe, bez znaku wartości określające rozdzielczość) |
| Przezroczystość | Brak (fizyczne pomiary luminancji promienistej) |
| Streaming i progresywne ładowanie | Sekwencyjne strumieniowanie linia po linii |
Techniczna macierz porównawcza: HDR a konkurencja
| Atrybut techniczny | HDR (Bieżący) | EXR | TIFF | JPEG |
|---|---|---|---|---|
| Kodowanie pikseli | 32-bit RGBE (współdzielony 8-bitowy wykładnik) | 16-bit half / 32-bit float na kanał | Liczba całkowita 8/16-bitowa lub 32-bitowa zmiennoprzecinkowa | 8-bitowa liczba całkowita kodowana gammą |
| Główne zastosowanie | Oświetlenie środowiskowe 360 stopni (IBL) | Kompozycja wieloprzebiegowa VFX | Fotografia i prepress | Standardowa grafika internetowa |
| Zakres rozpiętości tonalnej | 76 rzędów wielkości (10^-38 do 10^38) | Praktycznie nieskończony zakres zmiennoprzecinkowy | Zmienia się w zależności od głębi bitowej | Ograniczony zakres SDR 8-bit |
| Obsługiwane kanały | Tylko RGB | Nieograniczone dowolne kanały | Wiele dowolnych kanałów | RGB / CMYK |
Typowe tryby uszkodzeń i przewodnik odzyskiwania szesnastkowego
Obraz wyświetla poziome paski na całej szerokości klatki.
Główna przyczyna: Uszkodzony bajt licznika długości serii w dekompresji RLE linii skanowania.
Odzyskiwanie: Zrekonstruuj uszkodzone znaczniki linii skanowania za pomocą narzędzia File2File.app HDR Repair lub przekonwertuj do formatu EXR.
Analiza bezpieczeństwa i wektory ataku na parser
Dekodery Radiance HDR często analizują linie nagłówka ASCII za pomocą nieograniczonych procedur łańcuchowych, co może wywołać przepełnienie bufora stosu.
Znane wektory ataku
- Nieograniczone wywołania sprintf/sscanf podczas czytania nagłówków ciągów rozdzielczości ('-Y %d +X %d').
- Zapis spoza bufora sterty podczas dekodowania wadliwej linii skanowania RLE.
- Przepełnienie liczbowe podczas alokacji docelowych 32-bitowych buforów zmiennoprzecinkowych.
Najlepsze praktyki obronne: Zweryfikuj długość nagłówka ASCII i wymiary linii skanowania przed alokacją buforów obrazu.
Pochodzenie historyczne i kamienie milowe
Główne zalety
- Kompaktowe zużycie pamięci: 32 bity na piksel, przy zakresie obejmującym 76 rzędów wielkości luminancji światła.
- Obsługa map środowiskowych jest dostępna w wielu pakietach renderujących 3D, ale zależy od aplikacji.
- Stosunkowo kompaktową strukturę pliku mogą obsługiwać programy zgodne z Radiance HDR.
Ograniczenia techniczne i wady
- W skrajnie ciemnych obszarach może występować tzw. bandowanie kwantyzacji z powodu kodowania za pomocą współdzielonego 8-bitowego wykładnika.
- Kanały RGB nie mogą przechowywać liczb ujemnych ani dowolnych warstw wieloprzebiegowych.
- W większości wyparty przez OpenEXR w produkcji efektów wizualnych składających się z wielu warstw.
Ciekawe informacje techniczne
- Każdy plik Radiance HDR zaczyna się od nagłówka tekstowego '#?RADIANCE' lub '#?RGBE'.
- Format został stworzony do symulacji fizycznego oświetlenia architektonicznego w projektowaniu budynków przed ich wzniesieniem.
- Kultowy artykuł Paula Debeveca z 1997 roku na konferencji SIGGRAPH 'Recovering High Dynamic Range Radiance Maps from Photographs' wykorzystał ten format do zrewolucjonizowania oświetlenia CGI.
Często zadawane pytania techniczne
Do czego służy plik HDRI w grafice 3D?
Pliki HDRI (.hdr) są używane jako panoramiczne mapy środowiskowe 360 stopni w celu zapewnienia fotorealistycznego oświetlenia, cieni i odbić w świecie rzeczywistym na obiektach 3D.
Jak działa 32-bitowe kodowanie RGBE?
Zamiast przechowywać trzy oddzielne liczby zmiennoprzecinkowe, RGBE używa po 8 bitów dla koloru czerwonego, zielonego i niebieskiego oraz wspólnego 8-bitowego wykładnika, mieszcząc pełną rozpiętość tonalną HDR w zaledwie 4 bajtach na piksel.
Czy mogę przekonwertować plik HDR do formatu JPG?
Tak. File2File.app umożliwia mapowanie tonów i konwersję 32-bitowych plików Radiance HDR do standardowych obrazów JPG lub PNG bezpośrednio w twojej przeglądarce.