Friday, February 17, 2006
High Dynamic Range Photography with Linux
f/8 @ 1/640
f/8 @ 1/40
The bottom image, the resulting HDR image, was generated from 5 images, each one f-stop apart. The top two images show the shortest and longest exposures. The first shows the details of the foreground snow and the distant reflections of the trees in the water. But to capture this, the details of the trees at the water's edge are lost. The second image shows to capture the details of said trees, the exposure is so long that all reflections are lost and most of the snow is blocked.
To combine the 5 images, I used CinePaint. In particular, Hartmut Sbosny's Bracketed exposures to HDR plugin. The plugin solves for the luminosity response function, a method presented in the Debevec and Malik SIGGRAPH article Recovering High Dynamic Range Radiance Maps from Photographs. The result of this is an HDR image that can be saved in the OpenEXR format.
I was not happy with CinePaint's ability to adjust the exposure and gamma of the resulting image. After saving, I used pfstools' pv viewer. I used logarithmic scaling and selected the fit to range option. Then by saving, the HDR is converted to standard 8 bit per channel image. In my case, I saved as PNG. From there, Gimp allowed me to fine-tune the distribution of luminosity, along with the color balance.
f/8 @ 1/800
f/8 @ 1/100
My collection of HDR images at flickr.
[Update] Since writing this entry, I have developed a GUI for using pfstools's tone mapping operators. Please read qpfstmo: HDR Tone Mapping GUI for Linux for details.
THe greatest challeng I face is creating an image with full tonal range presented, with enough contrast such that it dosnt look flat or grey...
HDR is better explained with a picture of windows taken from inside a church for example...