Increasing The Dynamic Range Of Your Pictures With Enfuse

Posted by Miguel Grinberg under Photography.

Lately I have been playing a lot with a little open source tool called Enfuse, which allowed me to obtain the following picture (click to enlarge):

It is unlikely that any amount of post processing for a regular shot, even in raw format, can bring all the detail in the sky and the trees, since the dynamic range in this scene is simply too large for the current generation of camera sensors. If you expose the sky correctly then the trees will come out heavily underexposed, and if you expose for the trees then the sky will blow out to white.

Here is an attempt at getting this shot in camera:

Not good, right?

For these types of pictures Enfuse can do marvels. Instead of taking one shot, you take a few, at different exposures. Enfuse then looks at all the pictures and combines the best exposed parts of each into a single picture.

For this example I took three bracketed pictures, at 0EV (the picture above), and shown below, one at -3EV and another one at +3EV:

So as you can see, every part of the shot is well exposed in at least one of the pictures. This is the key to get a good "enfused" shot.

A little inconvenience in my case was that I took these three shots handheld, so before I could enfuse them I had to align them.

To align the pictures I put the three images in a directory and applied the align_image_stack tool on them. The command is as follows:

align_image_stack -e -f 170 -a TMP_ IMG_*

The -e option specifies that I'm using a full frame fisheye lens. When using rectilinear lenses the -e option should not be used. The -f option indicates the approximate horizontal field of view of my lens. This is only necessary when the exif data in the pictures doesn't have this information. This is the case for my fisheye lens, because it is a manual lens that does not communicate electronically with the camera. When the exif contains accurate information the -f option is unnecessary. The -a option provides a prefix for the aligned pictures, which in this case will be written as TMP_0000.tif, TMP_0001.tif and TMP_0002.tif. The last argument specifies the files to be aligned.

Okay, so after I aligned the pictures I was ready to enfuse them:

enfuse --output final.tif TMP_*

It's that simple! The enfused image can then be imported into Lightroom, Photoshop or the postprocessing tool of your choice for minor adjustments.

Here is the final shot one more time:

The enfuse and align_image_stack tools are both free and open source, and versions of them exist for the three major operating systems (Windows, Mac OS X and Linux). Both are included in the Hugin panorama stitching tool, so the easiest way to obtain them is by installing Hugin. These tools must be executed from the command line, so you just need to find the folder where the Hugin installer put them and add that folder to your system path. On Windows and Linux you will find them in the bin folder inside the installation directory. On OS X you will find them in the HuginTools folder.

I hope this tutorial was useful. For any questions or comments feel free to leave a comment below!



  • #1 alan greeley said 2014-01-02T18:40:18Z

    I'm not computer literate but I'm impressed by your work with Enfuse. It may sound daft to you but can I use this software with the CS2 I have and how do I get it into it? Just one other question - is there a tutorial (really simple!) giving step by step instructions describing using Enfuse in CS2? Your help would be very gratefully appreciated! Alan

  • #2 Miguel Grinberg said 2014-01-02T19:11:18Z

    @alan: to my knowledge nobody has integrated Enfuse with Photoshop, this is a command line application.

Leave a Comment