Adobe DNG HDR Format, Part 1

With the launch of Adobe Lightroom CC 2015 / Lightroom 6 and it’s matching version of ACR, we now have the ability to create high dynamic range RAW files via DNG.  It’s pretty impressive that you’ll get all the benefits of RAW such as whitebalance, tint, highlight recovery, etc, in a single file that’s much smaller and significantly more editable than a 32-bit TIFF.

And yet you may have also heard that this new DNG capability is built on a 16-bit technology.  “Wait!”  You think… “doesn’t that mean I have more flexibility with a 32-bit TIFF file??”

Not quite.  As it turns out, the new HDR DNG file is assembling your multiple exposures into a 16bit floating point RAW.  This is significant, because it gives those 16bits much more dynamic range than a traditional file stored as 16 or 32-bit integer data.

Eric Chan, one of the lead developers at Lightroom, offers more details on the dynamic range of a 16-bit floating point image file:

With 32-bit floats, we’d have greater range (say, over a hundred stops vs “only” 30 stops for 16-bit floats).  But photographically speaking, I’m not sure this is useful.  Let’s say you do a rather extreme 5-shot bracket, spaced 3 stops apart … we’d have a spread of 12 stops (+6 to -6), plus the base dynamic range of a camera (at most 14 stops), which means a total dynamic range of 26 stops.  A 16-bit float file is sufficient for even this case.

Eric goes on to discuss precision:

With 32-bit floats, for a given stop of exposure, we’d have many more gradations (or values) to present the tones within that stop.  The more limited precision of the 16-bit float file could be made more visible in practice, if you were to do severe tonal stretching (artifacts such as banding and posterization) — e.g., you took a point curve and you placed two points on that curve very closely together, and yanked them in opposite directions.  However, this is almost always the exact opposite of what a photographer wants to do with an HDR file.  (Put another way:  tonal stretching is typically necessary when dealing with very low contrast (foggy) scenes where you’re trying to increase contrast by stretching the endpoints of the histogram.  But you don’t need to use HDR techniques for foggy scenes!)  So again, I think a 16-bit float file is sufficient.

When asked to expand on the concept of a floating point image file, Eric provided this insight:

In computers, a “floating point” representation of numbers changes how the numeric values are distributed across the range. In mathematics, we would say that the values are distributed evenly on a logarithmic scale, base 2. That sounds rather complicated, but it turns out we photographers are already familiar with that concept. We just have a different name for it: stops, or the exposure scale. We think of photographic exposure in stops, and the tonality of our images in stops as well. For example, it’s often important to have detail in the brightest stops (i.e., the highlights) as well as in the darkest stops (i.e., the shadows). This is why a floating-point representation for images makes a lot of sense for HDR and photography in general: you have an even distribution of values across the tonal scale.

This is quite a different situation from raw files out of cameras.

Personally I’m not a huge fan of the cartoon-ey look that comes from heavy tone mapping, but it may occasionally be nice to have super smooth shadow detail in a high dynamic range scene.

Here’s a quick video of this new HDR DNG in action.

Have you played with this new feature yet?  What do you think?

Edit: Also noteworthy, the Lightroom team recommends two (yes, just two) different exposures for most HDR merges.  I bet you didn’t expect that, did you?

Edit2: Check out Part 2 of this conversation, where Eric Chan explains the 16-bit floating point HDR DNG that Lightroom creates.

Leave a Reply