Structure-and-motion (SfM) software
Structure-and-motion software for image collections performing feature
extraction, pairwise image matching and geometric verification, and
(sparse) 3D model generation
is
available. A demonstration
data set is also available
for
download. For more
information on the dependencies and requirements, how to compile the
software, and how to run it please read the
accompanying
README.
Some remarks:
- This software is provided under the terms of the GNU Lesser General Public License (LGPL) version 3.
- The current version is 1.1 (December 12th, 2011).
Simple Sparse Bundle Adjustment (SSBA)
A version of a sparse bundle adjustment implementation with adjustable intrinsics
and distortion parameters (either shared by all views or varying for each view) is
available
here. The
README
gives some information about file formats etc. There are two medium sized datasets included
in the distribution.
Some remarks:
- This software is provided under the terms of the GNU Lesser General Public License.
- It uses parts of the SuiteSparse matrix library,
in particular the LDL factorization and the COLAMD column reordering.
The required parts of SuiteSparse are available under the LGPL as well.
Users of the major Linux distribution should have these already installed.
- We have successfully run this code on datasets with more than 1700 images.
The optimization finished in less than 20 minutes on a 2.2 GHz Core 2 processor (about 15sec per iteration).
- The current version is 3.0 (December 12th, 2011).
News for SSBA-3.0:
- Added a sparse LM implementation (struct NLSQ_LM_Optimizer and
friends) for non-bipartite problems. This can be e.g. useful when
3D lines are added to the sparse reconstruction, or when (soft)
constraints between unknowns or priors for latent variables need
to be incorporated. Several least-squares terms in the cost
functions are also allowed.
News for SSBA-2.0:
- Added a sparse LM implementation (struct ExtSparseLevenbergOptimizer)
handling several least-squares terms in the cost function. This is useful
when several types of measurements (e.g. image feature locations and GPS
positions) are available. See Apps/bundle_ext_LM.cpp for a simple demo.
- Changed the default update rule for the damping parameter lambda to a
simpler one (multiply and divide lambda by 10, depending on the cost
function improvement). This seems to work better that the more complicated
rule used before.
- Fixed a trivial, but important bug in cost evaluation after the parameter
update.
Gain-Adaptive KLT Tracking and TV-L1 optical flow on the GPU
You can download the current version of the GPU-KLT+FLOW
here.
Technical descriptions of the utilized approaches can be found
here (KLT)
and
here (optical flow)..
A few notes:
- This software is provided under the terms of the GNU Lesser General Public License.
- Right now, only NVidia GPUs (Geforce 6 or better) are supported. In theory it should be possible to
make the tracker work for ATI cards. At some points the GPU tracker uses pack/unpack instructions to save
memory bandwidth, which are currently only available on NVidia GPUs.
- The precompiled version of OpenCV in the Ubuntu repositories does not provide support for video codecs.
You will get weird framebuffer incomplete errors if the codec is not supported (since the frame width
and height is zero). Please compile OpenCV from the sources (which should be quite simple, at least on a Linux
box).
- The current version is 1.0 for GPU-KLT+FLOW (as of Jan. 10th, 2010).
- Fixed a small bug in the non-maximum suppression step (thanks to Markus Moll for the bug report and fix).
- Fixed a problem with OpenGL 3.x drivers; automatically generated mipmaps do not work with
uninitialized pixel data anymore.