Javier Civera
1-Point RANSAC Inverse Depth EKF Monocular SLAM
Matlab Code. Version 1.01
This code performs EKF Structure from Motion / SLAM from a monocular sequence. That is, taking as the only input an image sequence with known camera calibration, it estimates the 6 degrees-of-freedom camera motion and a sparse 3D map of point features using the Extended Kalman Filter.

Point features are coded using inverse depth. Spurious rejection is efficiently solved by a novel 1-point RANSAC algorithm. Find all the details here.
This code is released as free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation. Read http://www.gnu.org/copyleft/gpl.html.
If you use this code for academic work, please reference [1]
[1] Javier Civera, Óscar G. Grasa, Andrew J. Davison, J. M. M. Montiel
1-Point RANSAC for EKF Filtering: Application to Real-Time Structure from Motion and Visual Odometry (draft) (video: monocular+odometry)
Journal of Field Robotics, vol. 27(5), pp. 609-631, October 2010.
Click here. (Version 1.01)
IMPORTANT: In this Matlab code, we are using a camera model that unfortunately does not match the one in the popular Matlab Calibration Toolbox. Check the details in the appendix of our TRO2008.
For using our code, you might need to convert from the Matlab Calibration Toolbox to the model we use. You can download a quick-and-dirty Matlab code to do that here. It has been written and used by people in our lab (Oscar G. Grasa, J. M. M. Montiel and me basically). I do not have much time to clean it, I hope it is of use in its raw state.
1)  Download and unzip.
2)  Go to matlab_code directory. The directory sequences contains an example sequence.
3)  In Matlab, run mono_slam.m. The code will run using the example sequence. It should show something like this.
Questions, comments, suggestions, discussion and bug reports are welcomed.
Please, mail to jcivera@unizar.es
22/February/2013. Version 1.01 released. Fixes a bug, in the previous version the function ransac_hypotheses was trying more hypotheses than the strictly necessary. Thanks to Joakim Hugmark for reporting the bug.