Warning

I set up this page mainly to explain the modification to hdrprep to the script's author, i.e. Axel Jacobs and the pfs*/hugin community.
Therefore this a very bare webpage, developer-oriented.
This software is published, as hdrprep, under the GNU General Public License.
Furthermore this software is to be intended as alpha/unstable, and a work in progress; in other words USE IT AT YOUR OWN RISK, and make a backup of your picture set beforehand.


What it is

I have been hacking the hdrprep perl script ( http://www.luxal.eu/resources/hdr/hdrprep/index.shtml ) in order to take in consideration also small rotation in the image set.

This feature is useful in thoses cases when you don't have a tripod and/or a remote shutter control.

I changed the command line interface in order to make it possible to use two "alignment engines", the first one is the original hdrprep one, i.e. "ale", while the second one makes use of the sift features and therefore depends on a different software package, i.e. autopano-sift and hugin. (only the autooptimiser executable from the hugin package is used). See the usage section below for more details.

In my tests the ale engine performs better, and you need to satisfy the hugin/autopano-sift dependencies only if you want to use the sift engine.

Usage

running "hdrprep_modified -h" now gives the following output:
 hdrprep : Align digicam images and fix EXIF information.

Prerequisites : ALE, Anti-Lamenessing Engine (only for ale engine),
hugin and autopano-sift (for sift engine),
Perl::Image::ExifTool

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

-h|--help : print this help message and exit
-v|--verbose : verbose output
-a|--align ale|sift : align images
-r|--redo ale|sift : re-create aligned images, requires -a to be run first
-e|--exif : fix exposure tags in EXIF header
-k|--keep : don't remove intermediate ALE output
-d|--directory : directory for storing the aligned images in (default: aligned)
-q|--quality : quality setting for aligned images (default: 80)
-n|--noorder : do not order my exposure (default: order)

Mainly my modifications include the specification of a "aligning engine", i.e. you have to specify on the command line either "-a sift" or "-a ale". Another small modification: I also made the "sorting by exposure" step optional: default choice if you do not specify anything is to be backward compatible, i.e. to sort by exposure.
WARNING!!!!
I am not a perl coder (I guess "monger" is the word I should use) at all. Actually I had to learn just a little bit of perl only to modify hdrprep, therefore I had to code a piece of the algorithm in octave. A consequence is that, for now, you need to have the find_offset.m file in the "present working directory" so that hdrprep can find it. Usually you can accomplish this by giving the command:
~$ ln -s path/to/find_offset.m .
Hopefully someone else more skilled can fix this problem.

Download

My modifications comprise of the modified hdrprep perl script and the exectuable octave script "find_offset.m".
You can find them here:
octave script: find_offset.m
modified hdrprep: hdrprep_modified


How it works.

Firstly the script gets the horizontal/vertical shifts and rotations from either ale or sift (absolute values, i.e. relative to base image), then we call an octave script to find the cropping values, i.e. the values that enable us to crop out the region common to all the images. This octave step makes use of affine matrices to map the four corner points of each image to the "base image's space", then it uses a pretty naive algorithm to maximize the common area.
Details in the sourcecode ;-)

Contact

My name is Giuseppe Rota, and I guess that for this project all interested parties can contact me via the pfs*/hugin google groups.