Radiance HDR (.hdr)
Standard StandardRadiance RGBE (HDR) är det grundläggande formatet för högt dynamiskt omfång som utvecklades för Radiance-systemet för syntetisk bildgenerering, och lagrar fotometriskt exakta luminansvärden med en delad 8-bitars exponent.
Granska och metadata
Operativsystem och filanalysverktyg identifierar HDR-filer genom att granska den inledande sekvensen av binära byte:
Signatur i filhuvudet på bytenivå (magiska byte)
Operativsystem och filanalysverktyg identifierar HDR-filer genom att granska den inledande sekvensen av binära byte:
HEX-SIGNATUR (OFFSET 0):
23 3F 52 41 44 49 41 4E 43 45 0AASCII-REPRESENTATION: #?RADIANCE\n
Standardisering: Standard för Radiance Synthetic Imaging System
Tekniska specifikationer
| Containerarkitektur | ASCII-header som avslutas med en tom rad, följd av en upplösningssträng och binära RLE-skanningslinjer |
| Komprimering | Adaptiv körlängdskodning (RLE) per kanalskanningsrad |
| Byteordning | Big-endian / nätverksbyteordning |
| Färgrymder | Linjär Rec.709 RGB med CIE-kromaticitetskoordinater |
| Kanaler och struktur | RGBE: rött, grönt och blått (8-bitars mantissor) samt gemensam 8-bitars exponent |
| Maximala dimensioner | I praktiken obegränsad (upplösningssträngar med 32-bitars osignerade heltal) |
| Transparens | Ingen (fysiska mätvärden för utstrålad luminans) |
| Strömning och progressiv visning | Sekventiell strömning av skanningsrader vid uppspelning |
Teknisk jämförelsematris: HDR jämfört med konkurrenter
| Tekniskt attribut | HDR (Aktuell) | EXR | TIFF | JPEG |
|---|---|---|---|---|
| Pixelkodning | 32-bitars RGBE (delad 8-bitars exponent) | 16-bit half / 32-bit float per kanal | Heltal 8/16-bit eller 32-bit float | 8-bitars gammakodat heltal |
| Primärt användningsområde | 360-graders miljöbelysning (IBL) | VFX-kompositering med flera pass | Fotografi och prepress | Vanlig webb grafik |
| Dynamiskt omfång | 76 tiopotenser (10^-38 till 10^38) | Praktiskt taget oändligt flyttalsomfång | Varierar beroende på bitdjup | Begränsat 8-bitars SDR-omfång |
| Antal kanaler som stöds | Endast RGB | Obegränsade godtyckliga kanaler | Flera godtyckliga kanaler | RGB / CMYK |
Vanliga skadeorsaker och hex-återställningsguide
Bilden får horisontella ränder över hela bredden.
Grundorsak: Byte som anger RLE-kodade skanningslinjers längd är skadat.
Återställning: Återskapa skadade skanningslinjemarkörer med File2File.app HDR Repair eller konvertera till EXR.
Säkerhetsanalys och attackvektorer för tolkar
Radiance HDR-avkodare tolkar ofta ASCII-header-rader med strängrutiner utan längdgränser, vilket kan leda till stackbuffertspill.
Kända attackvektorer
- Anrop till sprintf/sscanf utan längdgräns vid läsning av upplösningssträngar (”-Y %d +X %d”).
- Heap-skrivning utanför tilldelat minne vid dekomprimering av felaktigt kodade RLE-skanningslinjer.
- Heltalsspill när destinationsbuffertar med 32-bitars flyttal allokeras.
Rekommenderade skyddsåtgärder: Kontrollera ASCII-headerns längd och skanningslinjernas mått innan bildbuffertar allokeras.
Historiskt ursprung och milstolpar
Viktiga fördelar
- Kompakt minnesanvändning på 32 bitar per pixel samtidigt som det spänner över 76 storleksordningar av fysisk ljusluminans.
- Stöds av många 3D-renderingsprogram för miljökartor, men stödet beror på programmet.
- En förhållandevis kompakt filstruktur som kan implementeras i programvara med stöd för Radiance HDR.
Tekniska begränsningar
- Kvantiseringsbandning kan uppstå i extrema mörka områden på grund av kodning med delad 8-bitars exponent.
- RGB-kanaler kan inte lagra negativa tal eller godtyckliga flerskiktslager.
- Till stor del ersatt av OpenEXR för produktion av visuella effekter med flera pass.
Intressant teknisk kuriosa
- Varje Radiance HDR-fil börjar med textrubriken '#?RADIANCE' eller '#?RGBE'.
- Formatet skapades för att simulera fysisk arkitektonisk belysning vid byggnadsutformning innan strukturerna byggdes.
- Paul Debevecs ikoniska SIGGRAPH-uppsats från 1997, 'Recovering High Dynamic Range Radiance Maps from Photographs', använde detta format för att revolutionera CGI-belysning.
Vanliga tekniska frågor
Vad används en HDRI-fil till inom 3D?
HDRI-filer (.hdr) används som 360-graders panoramiska miljökartor för att ge 3D-objekt fotorealistisk belysning, skuggor och reflektioner från verkliga miljöer.
Hur fungerar RGBE 32-bitars kodning?
I stället för tre separata flyttal använder RGBE 8 bitar för vardera rött, grönt och blått, plus en gemensam 8-bitars exponent. På så sätt ryms hela HDR-omfånget på bara 4 byte per pixel.
Kan jag konvertera HDR till JPG?
Ja. File2File.app kan tonomvandla och konvertera 32-bitars Radiance HDR-filer till vanliga JPG- eller PNG-bilder direkt i din webbläsare.