(C) 2008-2014
Program of Computer Graphics,
Cornell University.
(C) 2014-2020
Edgar Velázquez-Armendáriz
Distributed under the OSI-approved MIT License.
Primary author: Edgar Velázquez-Armendáriz
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.
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.
- 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.
The options are documented in CMake, use the GUI or ncurses version to see their description. However the defaults should be decent enough.
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.)