C++ source code and datasets from my PhD research are now online

License - Download - Browse Source - Pre-requisites - Features - Install - Binaries - Datasets - Parameter documentation - Coming Soon - Known issues - Associated publications

License

License: my code is free for any use. 5-point essential matrix code is for academic use only (based on MATLAB and C code from from Henrik Stewenius), also includes code based on Edward Rosten's FAST code with BSD license. Please email ( Warning: include(../../tom_email.php): failed to open stream: No such file or directory in /customers/d/f/7/hilandtom.com/httpd.www/photos/tombotterill/code/index.php on line 15 Warning: include(): Failed opening '../../tom_email.php' for inclusion (include_path='.:/usr/share/php') in /customers/d/f/7/hilandtom.com/httpd.www/photos/tombotterill/code/index.php on line 15 ) and let me know if you find it useful or find any bugs or can't get something working.

Download

Works in Windows and Linux. You need svn to get the latest version (or TortoiseSVN in Windows). svn might need to be told if you use a proxy.

BoWSLAM only works in Linux at the moment (wouldn't be too hard to port). Additional instructions here.

Linux: Use this command to check out a copy into a folder called workspace. Hit enter if asked for a password.

svn co https://open.grcnz.com/svn/point-stereo/trunk/workspace workspace

Windows: Right-click in explorer, select SVN Checkout... Enter the following url and hit ok:

https://open.grcnz.com/svn/point-stereo/trunk/workspace

Try the latest revision first, revision 1069 may work on older systems (with boost 1.39.0 or earlier).

Browse Source

https://open.grcnz.com/svn/point-stereo/trunk/workspace/

Or download revision 958 including all code, libraries and binaries (gcc 4.4, some bugs in BaySAC fixed since then)

Pre-requisites:

gcc 4.5 or later, boost (version 1.42 or later, compiled), Eigen (matrix library--version 3.x). Some functions require OpenCV (preferably version 2.2)

Features

(more details here)

BaySAC (and RANSAC and PROSAC and SimSAC and WaldSAC) for Essential Matrix estimation and Homography estimation. Topdown refinement of solution. Gold-standard refinement of E (experimental).

Fast 5-point Essential Matrix estimation and Levenberg-Marquardt refinement.

Estimate Homography and decompose into translation, rotation, plane-normal (Levenberg-Marquardt)

Bag-of-Words library: Real-time performance and dynamic retraining. Supports 10k+ images. Fast pairwise correspondences.

K-medoids clustering.

Real-time mosaicing (generates a locally accurate seamless mosaic in real-time. Does not generate a globally accurate mosaic.)

Install

See License_and_Installation_Readme.txt. To use one simple function just copy the relevent code. To build libraries:

Install in Linux

Make sure include files and libraries for boost, Eigen, and OpenCV (if needed) are visible to gcc. If Eigen is not visible then make a symlink to it in your checkout dir: ln -s PATH_TO_YOUR_EIGEN_DIR Eigen

Either:

Open in Netbeans 7.0.

or

The makefiles supplied are generated by Netbeans. E.g. cd util; make will build libutil.a with debugging info, etc. Building BoWSLAM (cd BoWSLAM; make) will also build all libraries. Use make CONF=Release for optimised build.

It may also work in the latest Eclipse CDT (use Import Existing Project function, or create a new workspace.)

Install in Windows

Visual Studio 2008 (open ransac_bow_vision_lib.sln)
Visual Studio 2005 (open ransac_bow_vision_lib_VC2005.sln)

Make sure OpenCV, boost, Eigen header and library paths are set in the VC++ Directories

Binaries

The repository is not stable as I keep fixing bugs--it is easiest to get bug fixes using svn.
Download revision 958 including all code, libraries and binaries (gcc 4.4) **now out of date**

You can use the Bag-of-Words code from any programming language under Windows

Datasets

Four datasets are available via my google docs account (too large to put here). To download them please email me ( ) and I will provide access. Most are low framerate, fairly high resolution and from a single camera, and some have GPS ground truth (as NMEA data or in an openoffice spreadsheet) and camera calibration data.

  • Aerial images for mosaicing: A sequence of 1610 aerial colour images sized 800x533 captured from a Canon SLR camera on a microlight over Motueka, NZ. Includes farmland, roads, shoreline, forest and urban areas. No GPS. Sample...
  • Suburban dataset for Single Camera SLAM: 3864 greyscale images captured at 640x426 from a Canon 400D SLR camera, at 2.8Hz. 2.5km looping trajectory around suburban Christchurch, including pedestrians and vehicles. Sample...
  • Helmetcam dataset for Single Camera SLAM: 2996 greyscale images sized 640x320 from a mountin bike helmet cam. Features poor light, motion blur, low-grade (low cost) optics, rapid, erratic 6DOF motion. Sample...
  • Aerial images for mosaicing: A sequence of 1115 640x480 colour images captured at 2Hz from a Canon SLR camera on a UAV over Antarctic ice sheets. No GPS, few strong features. Sample...

Parameter documentation

Documentation for all parameters is online here. Some headers are documented, e.g. ransac.h for BaySAC, E estimation, H estimation.

Coming soon

1) Seperate out clustering functionality (CLARA k-medoids)

2) More examples and documentation :-)

Known issues

BoWSLAM has additional requirements (and does not work reliably with gcc versions 4.4 or earlier, or early versions of boost)

K-medoids has hard-coded limit of 450 data-points in Windows, and stack allocation will fail with more than about 1000 in Linux.

 

Warning: include(../../footer.php): failed to open stream: No such file or directory in /customers/d/f/7/hilandtom.com/httpd.www/photos/tombotterill/code/index.php on line 78 Warning: include(): Failed opening '../../footer.php' for inclusion (include_path='.:/usr/share/php') in /customers/d/f/7/hilandtom.com/httpd.www/photos/tombotterill/code/index.php on line 78