LIBVISO2 (Library for Visual Odometry 2) is a very fast cross-platfrom (Linux, Windows) C++ library with MATLAB wrappers for computing the 6 DOF motion of a moving mono/stereo
camera. The stereo version is based on minimizing the reprojection error of sparse feature matches and is rather general (no motion model or setup restrictions except that the input images must be rectified and calibration parameters are known). The monocular version is still very experimental and uses the 8-point algorithm for fundamental matrix estimation. It further assumes that the camera is moving at a known and fixed height over ground (for estimating the scale). Due to the 8 correspondences needed for the 8-point algorithm, many more RANSAC samples need to be drawn, which makes the monocular algorithm slower than the stereo algorithm, for which 3 correspondences are sufficent to estimate parameters. The most significant differences to LIBVISO1 are as follows:
No dependencies on external libraries anymore
Higher feature density (up to 15.000 feature matches)
Feature matching speed-up of factor 10 (1.000 features take ~35 ms)
Visual odometry speed-up of factor 100 (4 ms at 1.000 features)
Also supports monocular egomotion estimation now
Monocular scale estimated by assuming a fixed camera height over ground
Features can be tracked over a short period of time
06.09.2015: Released the source of the stereomapping application with dense depth map fusion (undocumented) with the libviso2.zip file.
15.09.2014: Fixed a bug in reconstruction.cpp, thanks to Jae-Hak Kim for reporting.
11.06.2014: Fixed a memory leak in viso_stereo.cpp, thanks to Daniel Carlton Smith for reporting.
07.11.2013: Fixed a bug in the triangulation code that occurs on 64-bit systems with more than 4GB memory, thanks to Marko Markovic for reporting.
03.10.2013: Fixed the clipping bug when reprojecting points with small disparities. Added an active feature search option for stereo visual odometry, which gives quite some boost on KITTI.
19.03.2013: Fixed a bug in the Jacobian of the reprojection error, which had only a minor impact on the result.
20.04.2012: Fixed a bug in the gain estimation utility function (doesn't affect visual odometry computation). Thanks to Alan Sambol for reporting.
20.03.2012: Updated the monocular demonstration file for MATLAB, which now also handles small motions by waiting for larger ones (via replace=true).
01.03.2012: Solved a couple of bugs and a memory violation: Now the Windows version should run properly also for the monocular case. The non-windows headers have been removed for compilation using Visual Studio. The bug when directly passing matches into the odometry mechanism has been resolved. The odometry class now also supports returning the inlier indices. Thanks to Bernd Kitt and Alan Sambol for reporting these issues!
13.02.2012: For usability reasons LIBVISO2 has been completely refactored. Now, images or matches can be passed to the library, resulting directly in differential motion estimates. A weighting scheme for the stereo part has been added to make the algorithm more robust to slight miscalibrations. Since I got many requests for a c++ usage sample, I wrote a commented c++ demo program, which takes one of the Karlsruhe dataset sequences as input and outputs motion estimates to the command line. I am looking forward to your feedback!
15.04.2011: First version of LIBVISO2 is available for download. Please note that this version is still very beta-ish, e.g., it has not been tested under Windows/MacOS or 32 bit systems. Your bugreports are highly appreciated. Also note that the 3d fusion part is not included yet. We will probably upload this part in a couple of weeks.
06.03.2011: Added -msse2 flag which is needed by some compilers, thanks to Abhijit Kundu for reporting
01.10.2010: Added new test video sequences at full resolution with ground truth odometry (datasets)
22.09.2010: Bugfix: Crashes in the presence of only few correspondences, thanks to Bob Mottram for reporting
20.09.2010: Increased matching speed, Added outlier removal option based on triangulation
02.09.2010: Added missing MATLAB function 'project.m', thanks to Diego Cheda for reporting
The datasets used in our paper are available for download here.
Figure 7a: 2009_09_08_drive_0010
Figure 7b: 2009_09_08_drive_0016
Figure 7c: 2009_09_08_drive_0021
Citation
LIBVISO2:
@inproceedings{Geiger2011IV,
author = {Andreas Geiger and Julius Ziegler and Christoph Stiller},
title = {StereoScan: Dense 3D Reconstruction in Real-time}, booktitle = {Intelligent Vehicles Symposium (IV)},
year = {2011}
}
LIBVISO1:
@inproceedings{Kitt2010IV,
author = {Bernd Kitt and Andreas Geiger and Henning Lategahn},
title = {Visual Odometry based on Stereo Image Sequences with RANSAC-based Outlier Rejection Scheme}, booktitle = {Intelligent Vehicles Symposium (IV)},
year = {2010}
}