Software/Datasets


OpenGV



Link: ​https://github.com/laurentkneip/opengv
Documentation: http://laurentkneip.github.io/opengv
License: FreeBSD

Precompiled Windows Matlab mex-library:
Download here!
Precompiled Mac OSX Matlab mex-library:
Download here!

OpenGV is a C++ library for solving geometric computer vision problems. It contains efficient implementations of absolute-pose, relative-pose, triangulation, and point-cloud alignment methods for the calibrated case. All problems can be solved for central or non-central cameras, and embedded into a random sample consensus or nonlinear optimization scheme. The library is relying on the adapter pattern, and thus may easily be included into other projects. It furthermore contains Matlab and Python interfaces, and a full benchmark kit for testing and comparing algorithms against each other. Many of the past geometric computer vision contributions of MPL are contained within this library (including the P3P solver by Prof. Laurent Kneip).



Please cite the following paper if using the library:
L. Kneip, P. Furgale, "OpenGV: A unified and generalized approach to real-time calibrated geometric vision", Proc. of The IEEE International Conference on Robotics and Automation (ICRA), Hong Kong, China. May 2014.

For more references, in particular about the algorithms that are included in OpenGV, please visit our research page on algebraic geometry.


polyjam


Link: ​https://github.com/laurentkneip/polyjam
Documentation: click here
License: GPL





polyjam is a C++ library for setting up algebraic geometry problems and generating efficient C++ code that solves the underlying polynomial systems of equations. It notably does so by applying the theory of Groebner bases. polyjam is the driving force behind OpenGV, and all of MPL's geometric computer vision algorithms that involve the solution of multivariate polynomial equation systems contain solvers generated by this library. Problems of such form may be required in many engineering disciplines, which is why the tools provided through this library are of potentially broad applicability. Please read the documentation for in-depth user instructions.


P3P


Link: ​click here
Documentation: Instructions are now contained in the package
License: FreeBSD

This is the original Matlab/C++ code for the P3P algorithm of Prof. Kneip. It is the state-of-the-art solution to the absolute pose problem, which consists of computing the position and orientation of a camera given 3 image-to-world-point correspondences. Execution time in C++ lies in the order of a microsecond on common machines. The algorithm requires normalized image points, and therefore requires the camera to be intrinsically calibrated. Note that the algorithm is also contained in OpenGV.


RBRIEF


Link: https://github.com/laurentkneip/rbrief
Documentation: See OpenCV-BRIEF interface (click here)
License: FreeBSD

A modification of the BRIEF descriptor permitting an online rotation of the extraction pattern (useful if some knowledge of the orientation around the camera principle axis is given). The interface is OpenCV compatible, and extended by two further functions:

setRotationCase( double rotation ): sets a rotated pattern from the base pattern freezeRotationCase(): transfers the rotated pattern to the base pattern