-
Notifications
You must be signed in to change notification settings - Fork 0
/
README.txt
222 lines (156 loc) · 8.15 KB
/
README.txt
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
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
MiddEvalSDK
Software development kit for the Middlebury Stereo Evaluation v.3
Version 1.6
Daniel Scharstein
September 14, 2015
=============================== Contents ==================================
README.txt -- this file
CHANGES.txt -- change log
COPYING_LESSER.txt,
COPYING.txt -- license (GNU Lesser General Public License)
alg-ELAS/ -- sample stereo algorithm: Libelas by A. Geiger,
adpated with permission from
http://www.cvlibs.net/software/libelas/
alg-ELAS/run -- sample run script (adapt this for your algorithm)
code/ -- C++ code used by the scripts
runalg -- script to run algorithm on datasets
runeval -- script to evaluate algorithm results
runevalF -- script to evaluate algorithm results with full-size GT
runviz -- script to visualize .pfm disparities as .png
makezip -- script to create zip archive of results
cleanalg -- script to remove files created by algorithms
In addition to the SDK files, you will also need to download input
data and ground truth data, and unzip at the same level as the SDK
files. This should result in a subset of the following directories:
testF/
testH/
testQ/
trainingF/
trainingH/
trainingQ/
============================= Quick Start =================================
Follow these steps to get started. We'll use the quarter-resolution
files for now.
1. Download and unzip MiddEval3-data-Q.zip and MiddEval3-GT0-Q.zip.
You should have a directory MiddEval3 with the following contents:
COPYING.txt README.txt cleanalg makezip runeval runviz testQ/
COPYING_LESSER.txt alg-ELAS/ code/ runalg runevalF trainingQ/
2. Compile Libelas as follows:
cd alg-ELAS/build
cmake ..
make
cd ../..
3. Compile the tools in code/ as follows:
cd code/imageLib
make
cd ..
make
cd ..
4. Run ELAS:
./runalg -- shows usage
./runalg Q Motorcycle ELAS -- run ELAS on one dataset
./runalg Q Motorcycle ELAS v2 -- run again, save results with suffix 'v2'
./runalg Q training ELAS -- run ELAS on all 15 training sets
5. Evaluate results by ELAS:
./runeval -- shows usage
./runeval Q Motorcycle 1 ELAS -- evaluate ELAS with error thresh t=1.0
./runeval Q Motorcycle 2 ELAS_s -- evaluate "sparse" ELAS results, t=2.0
./runeval Q Motorcycle 1 -- evaluate all results for Motorcycle, t=1.0
./runeval Q training 0.5 ELAS -- evaluate ELAS on all training sets, t=0.5
*** NOTE: For efficiency, the evaluation script 'runeval' uses the
GT file disp0GT.pfm with the SAME resolution as your disparity map.
In contrast, the "official" online evaluation evaluates at FULL
resolution, and upsamples your results if necessary. Error
thresholds need to be converted accordingly, e.g., a threshold of
2.0 at full resolution would correspond to a threshold of 0.5 at
quarter resolution. Even with this conversion, the numbers differ
slightly when evaluating with the GT at full resolution. To get
the official numbers, you can use the script 'runevalF'. You'll
need to download the full-size files MiddEval3-data-F.zip and
MiddEval3-GT0-F.zip in order to use this script. Once you do, try
./runevalF Q Motorcycle 1.0 ELAS -- official numbers using full-res GT
./runeval Q Motorcycle 0.25 ELAS -- approximate numbers using Q-size GT
In the online table for the training sets, the name of each method
links to a zip file of the results. You can download such a zip
file, say results_SGM_Q.zip, unzip it *within* MiddEval3, and
evaluate these results as well:
./runeval Q training 1 ELAS SGM
Finally, to get evaluation output in column format ready to be imported
into other programs such as Excel or gnuplot, use option -b ("brief"):
./runevalF -b Q all 2.0
./runeval -b Q all 0.5
6. Examine disparity maps
We highly recommend to install Heiko Hirschmueller's "cvkit" (link
from webpage), which includes a powerful image viewer "sv". Once
installed, try the following:
sv trainingQ/Motorcycle/disp*pfm
Hit 'h' for help, 'm' to change colormaps, 'k' to keep the colormap
setting, and the arrow keys to switch between files. Most amazing:
hit 'p' to start the 3D viewer 'plyv' and visualize the disparities
in 3D! (plyv reads the camera parameters from the calib.txt files.)
Alternatively, run
./runviz Q
to translate all disp*pfm files into disp*-c.png color encodings,
and view those using any image viewer. On subsequent runs, runviz
will only re-convert any pfm files that have changed.
7. Add your own algorithm:
Create a directory alg-XXX, where XXX is a (short) name for your
method. Then create a "run" script within your alg-XXX directory,
using the one in alg-ELAS as a model. Once done, test your
algorithm. For example, calling the new method "Ours":
./runalg Q Motorcycle Ours
./runeval Q Motorcycle 1 Ours
A few words on the disparity encoding: We use floating-point
disparities in PFM format, with INFINITY representing unknown
values. If your algorithm produces disparities in other formats
(e.g., scaled 16-bit PNG or floating-point TIF), that's ok, and you
can convert the output using the "imgcmd" tool (part of cvkit).
Alternately, you can use the tool code/disp2pfm to convert integer
disparities (e.g. in pgm format) to pfm.
See the alg-ELAS/run script for more detailed information. Note,
however, that many of the half-size datasets and most of the
full-size datasets have disparity ranges that exceed 255. Thus, if
your method produces 8-bit integer disparities, you are limited to
working with the quarter-resolution datasets and won't be able to
achieve accurate results when evaluated at full resolution.
Alternately, you can change your implementation to write PFM
disparities directly. You can use the following code as examples:
alg-ELAS/src/main.cpp
code/imageLib/ImageIO.cpp
8. Submit your results:
Our online web interface supports uploading of zip files of results
on either just the 15 training images or all 30 training and test
images. You can upload the results on just the training set in
order to see a temporary table comparing your results with those
uploaded by others. To do this, run
./makezip Q training Ours
and upload the resulting file resultsQ-Ours.zip using the web
interface. This scripts ensures that all necessary files are
present and that the runtimes files contain numbers.
Once you are ready to submit your results to the permanent table,
you must upload a complete set of results on ALL 30 datasets (15
training, 15 test). All images must have the same resolution (one
of Q, H, or F). You must use constant parameter settings (except
for disaprity ranges), and you cannot "mix and match" resolutions
(e.g., use trainingQ/Piano and trainingH/Teddy). All of this is
ensured if you use "runalg <res> all", e.g.:
./runalg Q all Ours
Then, create a zip file with all results using
./makezip Q all Ours
and upload the resulting file using the web interface. You will
then be able to provide information about your method and request
publication of both training and test results. Anonynous listings
for double-blind review processes are possible. Note that in order
to prevent parameter tuning to the test data, you will have only
one shot at evaluating your results on the test data. In other
words, you may not request publication for two different sets of
results by the same method. Also, your results on the training data
will be available for download by others. So please be sure to
only submit your final set of results for publication. You may of
course upload and evaluate results on the training set as often as
you want.
9. To clean results created by algs (disp*pfm, time*txt, disp*-c.png), use:
./cleanalg -- shows usage
./cleanalg Q ELAS -- removes all results by ELAS
./cleanalg Q ELASv2 -- removes all results by ELASv2
./cleanalg Q ELAS\* -- removes all results by ELAS (all versions)