Introduction: HDR Photos With the GIMP

A tutorial on making High Dynamic Range photos using the GIMP or similar software.

This instructable is aimed at a range of people, so you can skip to the bits relevant to you with the information below. I apologise for the verbosity of the main instructions, but I figure you can skip parts you already understand, and I may as well put in the detail for people who don't.

If you don't know what High Dynamic Range (HDR) is or how it works, read on.
If you are comfortable with the concept of HDR and want to know how to do it in photo editing software, go to step 3
If you are familiar with the process of making HDR images and just want details of how to do it in the GIMP, go to step 4
If you are familiar with the interface of the GIMP and just want a quick set of instructions on how to make HDR (for instance if the theory bores you and you just want to make some HDR images), go to the recap stage in step 10. The details of each step are in... the relevant step.

If you know the theory, how to make HDR images and are familiar with using the GIMP.. I'm not sure why you are reading this, but hello anyway. My pitiful attempts (I'm relatively new to HDR and the GIMP) are in the later steps, perhaps you could give me some pointers? :D

Lastly, if you find this instructable helpful (or even not particularly) and have constructive suggestions for how I could improve it, let me know and I'll edit it.

Step 1: Theory- Photographic

What is dynamic range?

A camera, like the human eye, has a light sensor that captures the image. The sensor has a limited sensitivity to light, so under any given conditions there is a range of light levels that the camera can differentiate between. It doesn't matter if you are looking at the sun or two suns, your camera will throw up its little electronic hands and say "that is white". Similarly, unless you have a very flash camera or night vision, looking a dark grey bat in some slightly darker grey surroundings at night time, your camera will say "that is black". The difference in light level between the darkest levels your camera can distinguish between and the lightest it can distinguish is called the dynamic range- for a regular digital camera it is about 100 to 1, for the human eye it is in the range of millions to one.

The "dynamic" part is because the range can be altered, by opening or closing the camera iris (aperture), opening the shutter for a longer or shorter period (exposure), and how much the camera amplifies the signal on the light sensor (ISO). The ability to change the camera's range of light sensitivity is what we will exploit to create HDR images.

Why HDR?

The dynamic range of a camera is not great, and not a patch on human vision. Things that you would see as dark, the camera will tend to see as a black silhouette. Things that you see as bright, the camera will tend to "wash out" and see as white. This means that taking photos of subjects with a high range of light levels, for instance a nice sunset, is very difficult with a regular camera and a single exposure. In making HDR photos, we exploit the ability to move the camera's dynamic range over the entire range of light levels.

By taking a shorter exposure or closing the aperture, the camera will underexpose. This means that the dark parts of the scene will silhouette and the light parts will be recorded well. Taking a longer exposure or opening the aperture, the camera will overexpose, meaning the light parts of the scene will wash out to white, but the shadows of the scene (that were black in the underexposed photo) will come out well. Composite HDR refers to a range of techniques to take the best parts of both of these photos and combine them in a photo that captures more of the range of light levels in the scene.

Step 2: Theory- Layered Image Editing

How do we do it?

HDR is where layered image editing programs such as GIMP or Photoshop are very useful. Using a technique called layer masks, we stack the photos with different exposures, rather like a stack of acetate sheets, and make the parts we don't want transparent so the best parts show through the stack. Photoshop/GIMP are doubly useful for this because we can make them do the hard work of actually making the layer masks.

Layer masks?

When stacking layers in an image editing program, it is necessary to specify how transparent you want each part of the image to be. Rather than have to do this by hand, image editing software lets you do this by providing a second greyscale image that specifies how transparent each part should be. White parts of the layer mask make the corresponding part of that layer opaque, so they show up on the finished image, and black parts make that part transparent so the lower layers show up. A couple of clever tricks in the software let you generate the layer mask from the original in a few clicks, rather than laboriously paint the entire layer mask by hand.

Step 3: Take Your Stock Photos

For this step you will need:
- A digital camera with the ability to set aperture/shutter speed, to control the exposure
- A good sturdy tripod- this will save you a lot of trouble later

For the image editing, you will just need access to a computer with the GIMP, Photoshop or a similar layered image editing program. The specifics of this instructable will focus on the GIMP- Photoshop is very similar, but I can't speak for other software.

Find your subject- ideally it will have a high range of lighting, and not be moving too quickly- if the photos don't match up your finished image will look a little odd. Keeping this in mind, I took my photos of some trees that were blowing in the wind.

Compose your shot, and take several photos at a range of different exposures. The basic requirements for this process are one exposed as best you can, one about 1 stop overexposed (+1EV) and one about 1 stop underexposed (-1EV). If your camera has an EV meter, you can experiment with what works best, but if it doesn't just take enough to get one where the shadows expose properly and one where the highlights expose properly. Ideally, take the photos with a remote shutter release to avoid jogging the tripod- if you do this you shouldn't have to line the photos up at all later.

Step 4: Open the "middle" Image

Unsurprisingly, this usually involves File -> Open... and selecting your middle image. I suggest renaming your photos from the usual "P100327.jpg" your camera may call them to "middle", "dark", "light" etc. or something similar before you start.

Step 5: Add Dark Layer

Open the dark image in a new window. Copy the contents, then go back to your original image (from now I will refer to this as the composite, and the other photos as the stock). Create a new layer, with Layer -> New Layer, rename it something sensible like "Dark layer"- the initial colour settings are unimportant. Paste the dark stock into it, and hit Anchor. You should now have the middle image on the background layer, and a new layer with the dark stock in it above that- the window holding the composite image will now show just the dark layer.

Step 6: Make the Dark Layer Mask

Now go back to the dark stock image. Desaturate the image (convert to greyscale) with Layer -> Colors -> Desaturate. This forms the basis of your layer mask- the white parts will be opaque in the composite, and the dark parts transparent, meaning the composite will just take the correctly exposed parts of the dark stock image.

If the image is mostly black and dark grey like this one, you will want to brighten it up a little. Go to Layers -> Colors -> Curves... and you should see a histogram with a diagonal line across it. The "lump" in the middle of the histogram shows the brightness levels of the grey parts in the layer mask image. Drag the middle of the curve upwards so the part above the spike on the histogram is near the top of the window. Your image should now be a lot brighter. This part is not an exact science- the more you raise the curve, the more the composite will draw from the dark stock image, so the more pronounced the HDR effect will be. Experiment to find the best values for your photos.

Step 7: Apply the Dark Layer Mask

Copy the contents of the dark layer mask image. Go back to the composite, and open the layers window (Ctrl-L or Dialogs -> Layers). Right-click on the dark layer, and select Add Layer Mask- the initial settings are unimportant. Now everything that you do to the dark layer will happen to the layer mask. Grab the paintbrush, select white or black and paint a little on the image- you should see where you paint show one or other of the photos in the composite. Now paste the layer mask onto the dark layer (select the dark layer and Edit -> Paste). Anchor the pasted layer down.

The composite image should now have less silhouette in it and appear a little more "vibrant". To see the effect the layer is having, check and uncheck the visibility eye next to the layer- you should see the dark parts of the image change, but the lighter parts be unchanged. If the effect is too pronounced or too subtle, go back to the dark stock image, undo the curves operation and redo it to a different extent, and repaste the layer mask until you are satisfied with the result.

Step 8: The Light Layer

This process is almost exactly the same as adding the dark layer but with a few notable exceptions. Open the light stock image, paste it into a new layer in the composite and desaturate the stock image as before.

Now, the desaturated image is not quite ready for being used as a layer mask. Remember the white parts make the image opaque, and black makes it transparent. If you used this as a layer mask, it would use the bright parts of the bright image and the dark parts of the dark image- the exact opposite of what we want. To rectify this, invert the greyscale image (Layer -> Colors -> Invert). If your image needs brightening, do the curves operation as before- mine didn't, so I skipped this step.

Copy the bright layer mask image, create a layer mask on the light layer and paste the bright layer mask image into it as before. This should make the brighter parts of the composite image mroe vibrant- it usually has the effect of making daytime sky more vivid blue, increasing the colour gradient and decreasing wash-out.

Step 9: Your First HDR Image!

You now have your first complete composite HDR image! Save the image (preferably a layered copy as well as a flattened JPEG), and compare it against the original "middle" stock image- it should have less silhouette and wash-out, and more vivid colours. Often subtle HDR images look like paintings, because the painter's eyes have a much higher dynamic range than the camera so they will paint more like a HDR image. More extreme images often have a slightly dreamlike or "hyper-real" quality.

Experiment with different settings, taking a wider range of exposures for your stock photos, or using more than three layers. All the techniques described here can be extended to five or more images- just remember to invert the layer masks for layers brighter than the middle image, and use the curves tool to normalise your layer masks.

Step 10: Recap- Steps for Creating Brightness-mapped HDR

- Take stock photos- one exposed normally, one 1 stop underexposed, one 1 stop overexposed, from a tripod.

- Open middle image as background
- Open dark image, copy, paste into new layer in composite image, rename layer "Dark"
- Desaturate dark image
- Adjust curves on dark image to set levels
- Create a layer mask on Dark layer, copy monochrome dark stock image, paste in to layer mask and anchor
- Do the same for the light image- open, copy, paste into new layer, rename layer "Light", desaturate original stock image
- Invert colours in stock image, adjust curves if necessary
- Create layer mask on Light layer, paste inverted greyscale light image into it, anchor
- Save image

Step 11: Hold On.. "brightness Mapped"?

Astute readers may have noticed the previous step was labeled "for brightness-mapped HDR". There are other techniques for achieving a similar effect, which I will outline, but the process is broadly the same other than creating the layer mask image.

Tone mapping refers to another method for creating layer masks. While the previous instructions used the brightness of the stock image to create the layer mask, another school of thought says that the interesting parts of a stock image are those with the greatest local contrast. To make a tone-mapped HDR image, once you have desaturated the stock image, choose Filters -> Edge-detect -> Edge... and select Sobel. This will create a new image where the edges in the stock photo are highlighted in white, the uniform areas are filled in black.

This image is again not yet suitable for use as a layer mask- the edge-detected mask has too much "ripple" in it, and if used for a layer mask will create a very patchy image. To smooth out the edge map, go to Filters -> Blur -> Gaussian Blur. Now you will need to put in the rough width of the ripples in the edge-detected mask. This will vary depending on the size of your stock photo- I shrunk mine to 572*428 (because I was editing them on a 500MHz PIII over a remote desktop connection.. it was traumatic), so 5 pixels was fine, but full-res 6 megapixel shots may require a larger radius. You are aiming for the ripply areas to be blurred to a more-or-less uniform grey, but not to smear the white areas out too much- again, experiment.

Once you are satisfied, copy the edge-detect map to use as a layer mask as before. Note that as this picks out areas of high detail, you don't need to invert the maps from your bright layers before using them as layer masks.

Brightness mapping tends to create a subtler effect, slightly increasing the colour in the image for a natural feel, whereas pure tone-mapping often gives a more dreamlike or psychedelic quality. Once I figure out how to combine a brightness map with a tone map to get a little of both, I'll edit it in here.

Step 12: Man, That Was a Lot of Text

Paste the bright and dark stock images into the composite as separate layers. After desaturating the stock images, perform an edge detect (Filters -> Edge-detect -> Edge... -> Sobel), then a Gaussian blur to remove the rippliness of the edge-detect (Filters -> Blur -> Gaussian Blur). Use this image as your layer mask as before.