hdrff Installation


Currently, no standard packages for your favorite distribution are available. But installation is simple, just run:

	$ > su -c"make install"

Depending on your distribution, you might also have to run

	$ > sudo make install

This will install the binary to /usr/local/bin/hdrff and the modules to /usr/local/lib/hdrff. If you prefer a different location (e.g. /usr), you can pass PREFIX=/usr to make.

Installation will also generate the global system-wide configuration file /etc/hdrff.conf. If this file already exists, the installation will create /etc/hdrff.conf.new instead. In this case you have to merge the new configuration-variables into your existing file manually (this might change in the future, although I am not very confident about this issue).


You need the following packages if you want to use all features of hdrff:

Note that you only need all of these packages if you use all features of hdrff. E.g. if you don't create HDR-files but stick to the LDR-file created with enfuse, you don't need the last four packages (although you will certainly need GIMP because of other reasons).

To check for the necessary dependencies, run hdrff -c. If you see no output, all dependencies should be fulfilled.


The configuration-system of hdrff knows four levels of configuration:

  1. program-internal (in $PREFIX/lib/hdrff/hdrff.conf)
  2. system-wide (in /etc/hdrff.conf)
  3. per user (in $HOME/.hdrff/hdrff.conf)
  4. using environment-variables

If the user-specific configuration file does not exist, the first run of hdrff will create it. You can either create the configuration file manually, or run hdrff -h which will show the basic help-text and create the configuration file if it does not yet exist.

The configuration-files use the following syntax to set variables:

: ${varname:=varvalue}

This syntax will only set varname, if it is not already set. Therefore, values set in the environment won't be overridden by values in the configuration-files. Values set at the user-level will override values in the system-wide configuration file and so on. System administrators could prevent users from changing variables by using the syntax


in /etc/hdrff.conf.

hdrff is flexible, so there are a lot of configuration variables. The good news is, that you only have to set a few, since the defaults were carefully choosen. You should start with the following basic configuration:

: ${MEDIA:=/mnt/media}
: ${TARGET_DIR:=/data/images}
: ${IMG_EXT:=nef}
: ${IMG_PREFIX:=dsc_}
: ${IMG_DEPTH:=16}
: ${IMG_FIXCA:=0}
: ${IMG_ALIGN:=1}
: ${MODULES=enfuseModules}
: ${PREVIEW_SIZE=1024}
MEDIA is the mount-point of your memory card. Many Linux-systems mount memory cards automatically, so you might check the mounted devices after inserting your memory card.
TARGET_DIR is the root-directory of files on disk. Original files go to $TARGET_DIR/orig, edited files go to $TARGET_DIR/work. Note that you can configure these locations individually if you need to.
IMG_EXT is the extension of your images (e.g. jpg, nef, cr2). hdrff can currently only process one type of image at a time.
IMG_PREFIX is the prefix of your images. Nikon typically uses dsc_, other typical prefixes include crw_ or img_. IMG_EXT and IMG_PREFIX will be converted to lower-case automatically.
IMG_DEPTH will define the color-depth of the processed images. Note that for jpg-files IMG_DEPTH will be automatically set to 8.
With IMG_FIXCA you control the correction of chromatic aberrations and lens distortions. Since this is a very slow operation, the default sets IMG_FIXCA=0. It is no problem to set IMG_FIXCA=1 in preview-mode.
Align the image-sequences. If you used a tripod and your images are perfectly aligned, you can set this variable to zero.
This variable defines the list of modules or module-groups to run in case no modules are passed to hdrff on the commandline. Use hdrff -H to see a list of available modules and module-groups.
Setting PREVIEW_MODE to one will speed up processing considerably, since all images are reduced to fit to $PREVIEW_SIZE. In a production run you would of course set PREVIEW_MODE=0.
Target size of all images. Only relevant if PREVIEW_MODE=1.

To fully exploit the power of hdrff, you should read the template configuration-file and change other variables as necessary. Also, see the user's guide and the reference.

Getting Started

Once everything is configured, you can just run hdrff and all input images are processed. Original files are copied to $TARGET_DIR/orig. You will find different intermediate files in $TARGET_DIR/work. With MODULES=enfuseModules the final images have the prefix enf_.

At this point, you can run additional modules, e.g.

$ > hdrff makeHDR tmMantiuk tmFattal makeGIMP

To go on, read the hdrff manpage and the user's guide.