-
Notifications
You must be signed in to change notification settings - Fork 0
/
README
197 lines (148 loc) · 7.61 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
pfstools 2.1.0 <13.11.2017>
This release adds support for .yuv video files encoded as PQ2020 or
HLG2020 (used by the reference implementation of h265). pfsview was
updated to used Qt5 instead of Qt4. Several compilation issues on
Ubuntu have been resolved.
* Added: pfsinyuv/pfsoutyuv to handle uncompressed video .yuy
* Added: Support for PQ2020 and HLG2020 color spaces (in pfs*yuv)
* Added: pfsview now builds with Qt5 instead of Qt4
* Fixed: pfsglview crashing on OSX (thanks to Michael)
* Fixed: issues with compiling matlab MEX functions on Ubuntu
* Added: installation instruction for Ubuntu (README.Ubuntu)
* Added: experimemtal version of deghosting in pfshdrcalibrate (poor performance)
pfstools - README
-------------------------------------------------------------------
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.
@inproceedings{mantiuk:2007:hvei,
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:
http://pfstools.sourceforge.net/papers/mantiuk07hdr_pipeline.pdf
1. Compilation
-------------------------------------------------------------------
Is is strongly recommended to compile into an out-of-source directory:
cd <pfstools_dir>
mkdir build
cd build
cmake ../
make
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:
https://groups.google.com/forum/#!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
working.
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.
OpenEXR
CMake switch: WITH_OpenEXR
Tools: pfsinexr, pfsoutexr
ImageMagick
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
NetPBM
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.
TIFF
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
Octave
CMake switch: WITH_Octave
Tools: All Octave scripts in src/octave
There are still some unresolved issues running Octave scripts under cygwin.
FFTW
CMake switch: WITH_FFTW
Tools: acceleration in pfstmo_durand02 (the TMO will be *very* slow otherwise)
GSL
CMake switch: WITH_GSL
Tools: pfstmo_mantiuk08
The GSL math library is required for this TMO.
OpenCV
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.
dcraw
CMake switch: none
Tools: pfsindcraw
Download code from: http://www.cybercom.net/~dcoffin/dcraw/
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
./doc/pfs_format_spec.pdf.