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个字节。

发布了18 篇原创文章 · 获赞 8 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/zengshaoqing/article/details/105106504