hdrprep - Align sequences of exposure-bracketed digital photographs and fix EXIF header.


[-h|--help] [-v|--verbose] [-a|--align] [-r|--redo] [-e|--exif] [-d|--directory dir] [-k|--keep] [-m|--mc percent] [-q|--quality qual] images


Most HDR software currently available is not capable of automatically registering the frames of a hand-held image sequence and assumes instead that a heavy-duty tripod is used. Software that is capable of auto-alignment might fail if the exposures encountered are too extreme, i.e. some frame are too much over- or under-exposed.

Another potential problem with HDR generation is that the software can not always retrieve the exposure information from the images' EXIF header, as is required for response curve calibration. This is usually caused by incorrect implementation of the EXIF standard and the use of proprietary tags.

hdrprep was written to resolve those problems. The process involves three steps:

  1. Run ALE to compute the transformation necessary to register the frames;
  2. Run ImageMagick to shift and crop the frames using the ALE results;
  3. Optionally fix the EXIF header.

The Anti-Lamenessing Engine, ALE, was designed to combine images of the same scene and similar exposure in order to increase colour fidelity, reduce aliasing and artifacts, and generally increase the quality of the image. It features sophisticated alignment algorithms which may also be used to prepare exposure-bracketed sequences for HDR generation.

While ALE can not itself save the aligned images, this is done with ImageMagick commands.

Optionally, the Perl module Image::ExifTool is used to fix corrupted EXIF tags.


The principal options are -a, -r and -e, of which at least one must be given on the command line. While -a and -r are mutually exclusive, both may be run in combination with -e, which may also be run separately.

Run ALE to compute the required transformations, then call ImageMagick to shift, crop and re-save the images. Currently, the only supported transformation is translation in x and y direction. This corresponds to steps 1 and 2.

Do not run ALE, only call ImageMagick. This requires a previous run with -a to the same directory. See -d option below. Corresponds to step 2.

Fix EXIF headers with ExifTool. May be run in combination with -a and -r or by itself. Either way, it only operates on copies and never on the originals of your images. Step 3 from Description.

-d|--directory dir
Save results to directory dir. Defaults to ./aligned if not qualified.

-k|--keep dir
Don't remove intermediate images created by ALE.

-q|--quality qual
Save newly created images with quality setting qual. The default is set to 80.

-m|--mc percent
Sample percent of pixels for image alignment. Default is 10%.

Display help and usage information and exit.

Print additional output.


To register files dscn602?.jpg. The resulting JPEG images will be saved in directory ./test1 with a quality setting of 90. The directory is created if it doesn't exist.

hdrprep --quality 90 --dir test1 --align dscn602?.jpg

Same as above, but results are saved with a lower quality. The transformation files are re-used, so ALE not run. This requires a previous run with -a using the same directory.

hdrprep -q 60 -d test1 --redo dscn602?.jpg

Same as above, but this time also fix the EXIF headers and sample more pixels for alignment.

hdrprep -q 60 -d test1 --redo --exif --mc 20 dscn602?.jpg

Only fix the EXIF headers. If ./test2 doesn't exist or doesn't contain files with names identical to those provided on the command line, it will be created and the files copied into it.

hdrprep -d test2 --exif dscn60[3|4]?.jpg


Axel Jacobs. Send feedback to <axel at jaloxa dot eu>.



Anti-Lamenessing Engine (ALE)



http://search.cpan.org/dist/PerlMagick/Magick.pm, http://www.imagemagick.org/script/perl-magick.php