How is HDR data stored?

1.9k views Asked by At

I am wondering what the data structure is behind storing images with HDR data. I understand how regular images (rgba) and cubemaps are stored. I doubt its as simple as storing multiple images at different exposures inside the same file.

5

There are 5 answers

0
Tony Delroy On

It's generally a matter of increasing the range of values (in an HSV sense) representable, so you can use e.g. RGB[A] where each element is a 16-bit int, 32-bit int, float, double etc. instead of a JPEG-type-quality 8-bit int. There's a trade-off between increasing the range represented, retaining fine gradations within that range, and whether some particular intensity levels are given priority via some non-linearity in the mapping (e.g. storing a log of the value).

1
Martin Beckett On

The raw file from the camera normally stores the 12-14bit values from the Bayer mask - so effectively a greeyscale. These are sometimes compressed losslessly (in Canon or Nikon) or as 16bit values (Olympus). The header also contains the white balance and gain calibrations for the red,green,blue masked pixels so you can generate a color image.

Once you have a color image you can store it however you want, normally 16bit RGB is the easiest.

0
kindall On

Here is some information on the Radiance file format, used for HDR images. It uses 32-bit floating-point numbers.

0
Andy On

You've probably moved on long ago, but I thought it worth posting references for anyone else who happened upon this question.

Here is an old reference for the Radiance .pic (now .hdr) file format. The useful info starts at the bottom of page 29. http://radsite.lbl.gov/radiance/refer/filefmts.pdf

excerpt:

The basic idea is to store a 1-byte mantissa for each of three primaries, and a common 1-byte exponent. The accuracy of these values will be on the order of 1% (+/-1 in 200) over a dynamic range from 10^-38 to 10^38.

And here is a more recent reference for JPEG HDR format: http://www.anyhere.com/gward/papers/cic05.pdf

0
Drake Guan On

First, I am not sure if there is a public format for storing multiple images at different exposures inside cause the usage is rare. Those multiple images are used as one sort of HDR sources, but they are not HDR, they are just normal LDR (L for low) or SDR (S for standard?) images encoded like JPEG from digital cameras.

It is more common to store resulting in HDR format and the point is just like everyone mentioned, in floating point.

There are some HDR formats:

  • OpenEXR
  • TIF
  • Radiance
  • ...

You can get more info from wiki