HDR圖像文件格式之Radiance RGBE詳細解析

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個字節。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章