HDR Image Tools 0.5.0

(C) 2008-2014 Program of Computer Graphics, Cornell University.
(C) 2014-2017 Edgar Velázquez-Armendáriz
Distributed under the OSI-approved MIT License.

Primary author: Edgar Velázquez-Armendáriz - eva5 at cs~cornell~edu


This package provides a set of simple tools to manipulate HDR images in the Radiance (.pic;.rgbe;.hdr), OpenEXR (.exr) and Portable Float Map (.pfm) formats. They include a viewer, a batch tonemapper, and OpenEXR bindings for Java (using JNI) and Matlab (using MEX files.)

The projects use the meta-build system CMake to create the actual build files. To generate the build files using cmake one can just execute, from the directory where the build files will be created:

$ cmake -G "Generator Name" PATH_TO_MODULE

Where Generator Name is the name of the desired generator as shown by executing cmake without arguments. PATH_TO_MODULE is the path (relative or absolute) to the directory where the CMakeLists.txt file at the top of the module is located. More details about how to invoke cmake may be consulted on its online documentation. An easier way might be to use either the ncurses variant ccmake or the Qt based one, cmake-gui instead.

Package contents

The HDRITools package provides the following:

  • OpenEXR-JNI - The Java JNI bindings for OpenEXR.

  • OpenEXR-Matlab - Matlab MEX extensions to read and save OpenEXR files.

  • ImageIO - Parallel C++ library to manipulate HDR files in the Radiance, OpenEXR and Portable Float Map files. It is (allegedly) tuned for speed, using templates and SSE/SSE2/SSE3/AVX intrinsics. It can also write PNGs of integral-type pixels at 8 and 16 bits per pixel.

  • batchToneMapper - a parallel command line utility to tone map HDR files using exposure and gamma correction. It can also read the HDR files contained in a zip file directly. It is based on ImageIO.

  • qt4Image - HDR file viewer to tone map, zoom and compare files, using amenities such as drag-and-drop. This is meant to be a modern replacement of the venerable glimage created by Mahesh Ramasubramanian back in 1998.

Required external components

  • CMake >=2.8.12 - to create the build files.
  • Threading Building Blocks >= 2.2 - used for the parallelization.
  • Qt >= 4.4 - for batchToneMapper and qt4Image.
  • JUnit >= 4 - used for the optional Java unit tests.

Build options

The options are documented in CMake, use the GUI or ncurses version to see their description. However the defaults should be decent enough.

Known issues

When compiling against a static Qt4 in windows, if you receive the error:

error LNK2001: unresolved external symbol IID_ID3DXEffectStateManager

Then you might need to link manually batchToneMapper and qt4Image to a DirectX library contained in the SKD:

  • %DXSDK_DIR%\Lib\x64\dxguid.lib (for Win64 or)
  • %DXSDK_DIR%\Lib\x86\dxguid.lib (for Win32)

Where DXSDK_DIR is the environment variable with the path to the DirectX SDK.


Fabio Pellacini wrote the original version of ImageIO/Image.h. The zip file reading functionality is based on MiniZip. The OpenEXR_Matlab module is originally based on work by Jinwei Gu. Experiments badge icon by David Lanham.

The HDRITools package uses and includes free software:

  • The zlib compression library (Jean-loup Gailly, Mark Adler and team)
  • The MiniZip compression library (Gilles Vollant and team)
  • The libpng graphics library (Glenn Randers-Pehrson and team)
  • The OpenEXR graphics library (Industrial Light & Magic, a division of Lucasfilm Entertainment Company Ltd.)
  • The TCLAP command line parser library (Michael E. Smoot and team)
  • The Simple SSE math functions (Julien Pommier)
  • The Approximate Math Library for SSE / SSE2 library (Intel Corporation)
  • The SIMD oriented Fast Mersenne Twister random number library (Mutsuo Saito, Makoto Matsumoto and Hiroshima University)
  • The Google Test C++ Testing Framework (Google Inc.)