pfstools  2.2.0
About: pfstools are a set of command line programs (and one GUI program) for reading, writing, manipulating, and viewing high-dynamic range (HDR) images and video frames (similar as the netpbm package does for low-dynamic range images).
  Fossies Dox: pfstools-2.2.0.tgz  ("unofficial" and yet experimental doxygen-generated source code documentation)  

pfstools Documentation

Some Fossies usage hints in advance:

  1. To see the Doxygen generated documentation please click on one of the items in the steelblue colored "quick index" bar above or use the side panel at the left which displays a hierarchical tree-like index structure and is adjustable in width.
  2. If you want to search for something by keyword rather than browse for it you can use the client side search facility (using Javascript and DHTML) that provides live searching, i.e. the search results are presented and adapted as you type in the Search input field at the top right.
  3. Doxygen doesn't incorporate all member files but just a definable subset (basically the main project source code files that are written in a supported language). So to search and browse all member files you may visit the Fossies pfstools-2.2.0.tgz contents page and use the Fossies standard member browsing features (also with source code highlighting and additionally with optional code folding).
pfstools 2.2.0 <12.08.2021>

This is mostly a bug-fix release with many fixes allowing to work with newer version of libraries. Several compilation issues have been resolved on Ubuntu 18.04, 20.04 and Cygwin. The HDR merging (pfshdrcalibrate) uses now better, noise-optimal weights, which should reduce noise for darker image parts.

	* Added: v210 format in pfsinyuv
	* Fixed: memleak in pfssize
	* Fixed: Fix format-security errors with Octave 5.1 (thanks to Orion Poplawski)
	* Added: pfs_automerge
	* Fixed: typos in the documentation (thanks to Andreas Metzler)
	* Added: simple deghosting in pfshdrcalibrate (-d option)
	* Fixed: pfsalign now uses free AKAZE feature detector, avoiding issues with missing non-free OpenCV classes
	* Fixed: Updated installation instruction for Ubuntu 18.04
	* Fixed: Fixed a number of compiler warnings from g++ 7.4.0
	* Fixed: Octave interface upgraded to Octave-6 (thanks to Michal)
	* Fixed: pfstmo_durand02 - reversed the old fix that made images over-saturated. Now 99.5th percentile is mapped to white. 
	* Removed: pfsinjpeghdr, pfsoutjpeghdr (discontinued)
	* Fixed: compilation fails with GCC11/std=c++17, duplicate "clamp" definition (thanks to Stefan)
	* Added: pfshdrcalibrate now performs exposure merging in a noise-optimal manner
	* Added: pfsindcraw now calls libraw's dcraw_emu instead of dcraw if the former is available

pfstools - README 

For issues related to Ubuntu installation - see README.Ubuntu

For issues related to Mac OSX installation - see README.OSX

For issues related to Windows installation - see README.Cygwin

For specific notes on Matlab installation - see README.matlab

For compilation with Visual Studio (experimental) - see README.VisualStudio

pfstools is a set of command line (and two GUI) programs for reading,
writing, manipulating and viewing high-dynamic range (HDR) images and
video frames. All programs in the package exchange data using unix
pipes and a simple generic HDR image format (pfs). The concept of the
pfstools is similar to netpbm package for low-dynamic range images.

pfstools offers also a good integration with GNU Octave and
matlab. pfstools can serve as a matlab or Octave toolbox for reading
and writing HDR images.

pfs in not just another format for storing HDR images. It is more an attempt to 
integrate the existing HDR image formats by providing a simple data format that can 
be used to exchange data between applications. 

If you use the software for your research work, please consider citing
the paper:

Rafal Mantiuk, Grzegorz Krawczyk, Radoslaw Mantiuk and Hans-Peter Seidel.
High Dynamic Range Imaging Pipeline: Perception-motivated Representation
of Visual Content.
In: Proc. of Human Vision and Electronic Imaging XII. 649212.

 author = {Mantiuk, Rafa{\l} and Krawczyk, Grzegorz and Mantiuk, Rados{\l}aw and Seidel, Hans-Peter},
 editor = {Rogowitz, Bernice E. and Pappas, Thrasyvoulos N. and Daly, Scott J.},
 title = {High Dynamic Range Imaging Pipeline: Perception-motivated Representation of Visual Content},
 booktitle = {Human Vision and Electronic Imaging XII},
 publisher = {SPIE},
 year = {2007},
 volume = {6492},
 number = {649212},
 series = {Proceedings of SPIE},
 address = {San Jose, USA},
 month = {February},

The paper is an introduction to both pfstools and HDR imaging in
general. It can be downloaded from:
1. Compilation
Is is strongly recommended to compile into an out-of-source directory:

cd <pfstools_dir>
mkdir build
cd build
cmake ../

If the compilation fails because of a missing library, you can disable the offending component by setting WITH_<component_name> to false. For example:

cmake -DWITH_MATLAB=false ../

to disable matlab support. 

If you encounter any problems during compilation, run the make again with the option:

make VERBOSE=1

or, if you use nmake on Windows:

nmake /S

and report the problem with the complete error message to the google discussion group:!forum/pfstools

2. Directory Layout

doc - documentation
src - all sources go there
  pfs          - pfs library (used by all tools)
  fileformat   - readers and writters for various file formats
  filter       - a range of "filters" from resize to changing color space
  octave       - GNU Octave scripts and libraries
  matlab       - matlab mex sources and functions
  pfsview      - qt application for viewing hdr images and other data
                 that can be stored in the pfs stream
  pfsglview    - similar as pfsview, but uses OpenGL & GLUT instead of Qt
  tmo          - contains tone-mapping operators (formerly pfstmo package)
  camera       - contains HDR merging and camera calibration tools
                 (formerly pfscalibration)
  hdrhtml      - makes HTML5 web-pages with viewable HDR images
  getopt       - used on Windows to compile using Visual Studio
  debian       - scripts to create Debian distro package. The scripts has not been updated and currently is not 

3. Dependencies

pfstools relies on a large number of libraries and other dependencies. However, the build script was designed to succeed even if some dependencies are missing. In that case, the tools that rely on those dependencies will not be compiled. If building with a certain dependency causes problems, it is possible to manually switch off that component by passing -DWITH_??=false to cmake.

Note that the development packages must be installed for all dependencies. They usually have '-dev' suffix. 

Below is the list of all dependencies requires for pfstools. They are more or less given on an order of importance.

	CMake switch: WITH_OpenEXR
	Tools: pfsinexr, pfsoutexr	
	CMake switch: WITH_ImageMagick
	Tools: pfsinimgmagick, pfsoutimgmagick
	Used to read/write most LDR files. Required for 16-bit file support. "pfsin"/"pfsout" will use NetPBM if ImageMagick is not available
	CMake switch: WITH_NetPBM
	Tools: pfsinppm, pfsoutppm, (pfsindcraw)
	Alternative method of reading/writing LDR images. Note that this package is also required for pfsindcraw as ImageMagick cannot handle files read from unix pipes.

	CMake switch: WITH_TIFF
	Tools: pfsintiff, pfsouttiff
	TIFF images can also be read with pfsinimgmagick. This is a custom reader/writer, which supports LogLuv TIFF HDR image format.

QT 5
	CMake switch: WITH_QT
	Tools: pfsview
	"pfsview" is a primary HDR image viewer.
	If Qt library is not found, you need to specify the path to its cmake configuration files:

		cmake -D "CMAKE_PREFIX_PATH=~/Qt5location/qt5/5.7/gcc_64/" ../

OpenGL, GLUT (or FreeGLUT)
	CMake switch: WITH_pfsglview
	Tools: pfsglview
	pfsglview is a "backup" or alternative viewer. It is missing some features of pfsview, but offers faster zooming.

Matlab (mex)
	CMake switch: WITH_MATLAB
	Tools: all matlab scripts in src/matlab
	Note that you need to set matlab path to <install_dir>/share/pfstools/matlab

	CMake switch: WITH_Octave
	Tools: All Octave scripts in src/octave
	There are still some unresolved issues running Octave scripts under cygwin. 
	CMake switch: WITH_FFTW
	Tools: acceleration in pfstmo_durand02 (the TMO will be *very* slow otherwise)

	CMake switch: WITH_GSL
	Tools: pfstmo_mantiuk08
	The GSL math library is required for this TMO.

	CMake switch: WITH_OpenCV
	Tools: pfsalign	
	Note that pfsalign requires SURF features, which are available on "nonfree" part of the library. Since part of the library is currently not included in most Linux distributions, so you will need to compile OpenCV from sources.

	CMake switch: none
	Tools: pfsindcraw
	From 2.2.0 libraw is used instead of dcraw, if it is available. libraw has better support for newer cameras. 

        Used in pfsalign.

3. Documentation

First check the list of frequently asked questions in
./doc/faq.txt. Then browse relevant manual pages, which accompany each
program. The documentation for the pfs library API can be generated
with DoxyGen or found in the header files. If you want to include
reading or writing of pfs streams in your applications, refer to