RGBE文件的擴展名爲.hdr,RGBE正式名稱爲RadianceRGBE格式。這個本來是BR、FR等作爲radiance材質的一種格式,也叫做radiancemap,後來成爲流行的一種HDR格式。所謂E,就是指數。RadianceRGBE文件每個通道爲8bitBYTE數據類型,4個通道一共是32bit。RGBE可以使用RLE壓縮編碼壓縮,也可以不壓縮。由文件頭、RGBE數據組成。
文件頭如下:
類型輸出格式
char programtype[16]; //#?Radiance/n#Generated by still/n
float gamma; //1.0
float exposure; //1.0
字符串常量//FORMAT=32-bit_rle_rgbe/n/n
int nWidth, int nHeight //-Y nHeight +X nWidth/n
RGBE數據與HDRFP32(RGB)相互轉換公式如下:
1、rgbe->FP32(RGB) (讀操作)
如果e爲0, R = G= B = 0.0,否則:
R = r * 2^(e – 128 - 8);
G = g * 2^(e – 128 - 8);
B = b * 2^(e – 128 - 8);
2、FP32(RGB)-> rgbe (寫操作)
v = max(R, G, B);
將v用科學計算法表示成v = m * 2 ^ n ( 0 < m < 1):
r = R * m * 256.0/v;
g = G * m * 256.0/v;
b = B * m * 256.0/v;
e = n + 128;
需要注意的是:
我們一般說HDR採用FP32,指的是HDR圖象運算時候的內存數據類型,而RadianceRGBE文件採用8bitBYTE類型存儲HDR數據。也就是說打開RadianceRGBE文件,要使用上面的公式1將RadianceRGBE文件的8bitBYTE文件數據轉換爲FP32的HDR內存數據進行運算;保存爲RadianceRGBE文件時,要使用上面的公式2將HDR的FP32內存數據轉換爲RadianceRGBE的8bitBYTE文件數據進行保存。
下面以一張W*H爲720*480的圖像爲例
0000h-0055h:文件頭,其中0055h地址的0x0A代表ASCII碼的回車符。
0056h-最後:圖像數據,每像素存儲順序爲rgbe,共4個字節。