C++ Essential Matrix estimationVarious algorithms for estimating the Essential matrix, E, from five or seven points, are implemented. They can be used alone (see documentation in ransac/hypothesiser.h) or as the hypothesis generators in my RANSAC/BaySAC implementation (e.g. by setting parameter RANSAC.HypothesiseAlg=7PtEFast in your config file). The Levenberg-Marquardt-based fivepoint solvers will be described in "Fast RANSAC hypothesis generation for essential matrix estimation", DICTA 2011.
A MAPLE worksheet for expanding E as a function of a quaternion and a translation vector is available here. Refinement RANSAC/BaySAC only find approximately-correct essential matrices, which should be further refined to minimise some error function on the inlier set. Use the functions in refineEOnRTManifold.h to find the least-squares solution, or to minimise the Blake-Zisserman robust cost function of Sampson's error. Paper: "Refining essential matrix estimates from RANSAC". See example of use here... |
Home - Photos & Trip Reports - Tom's research - Hil's Hydrology research |