MLPnP – A maximum likelihood solution to the Perspective-N-Point problem
Urban, S.; Leitloff, J.; Hinz, S. (2016): MLPnP - A Real-Time Maximum Likelihood Solution to the Perspective-n-Point Problem. ISPRS Annals of the Photogrammetry, Remote Sensing and Spatial Information Sciences. (pdf)
MLPnP offers the possibility to integrate observation uncertainty into the direct solution of the PnP problem. This is especially useful if an estimate of the observation covariance is available. Given that estimate MLPnP outperforms the given state-of-the-art PnP solutions (see Figure on the right). If equal observation uncertainty is assumed MLPnP still outperforms the best polynomial solvers in terms of speed and accuracy.
The C++ version of MLPnP is integrated in a fork of OpenGV. You can find the link to the fork below. In addition we provide Matlab Code which is slower, but produces the same results. The toolbox provides all PnP solvers in a Matlab toolbox to reproduce the results presented in the paper.