Dense RGB-D Visual Odometry using Inverse Depth

Daniel Gutierrez-Gomez, Walterio Mayol-Cuevas, Josechu Guerrero

Research output: Contribution to journalArticle (Academic Journal)peer-review

27 Citations (Scopus)
711 Downloads (Pure)


In this paper we present a dense visual odometry system for RGB-D cameras performing both photometric and geometric error minimisation to estimate the camera motion between frames. Contrary to most works in the literature, we parametrise the geometric error by the inverse depth instead of the depth, which translates into a better fit of the distribution of the geometric error to the used robust cost functions. To improve the accuracy we propose to use a keyframe switching strategy based on a visibility criteria between frames. For the comparison of our approach with state-of-the-art approaches we use the popular datasets from the TUM for RGB-D benchmarking as well as two synthetic datasets. Our approach shows to be competitive with state-of-the-art methods in terms of drift in meters per second, even compared to methods performing loop closure too. When comparing to approaches performing pure odometry like ours, our method outperforms them in the majority of the tested datasets. Additionally we show that our approach is able to work in real time and we
provide a qualitative evaluation on our own sequences showing a low drift in the 3D reconstructions. We have implemented this method within the scope of PCL
(Point Cloud Library) as a branch of the code for large scale KinectFusion, where the original ICP system for odometry estimation has been completely substituted by our method. A PCL fork including the modified method is available for download .
Original languageEnglish
Pages (from-to)571-583
Number of pages13
JournalRobotics and Autonomous Systems
Issue numberB
Early online date24 Oct 2015
Publication statusPublished - Jan 2016


  • RGB-D
  • Visual odometry


Dive into the research topics of 'Dense RGB-D Visual Odometry using Inverse Depth'. Together they form a unique fingerprint.

Cite this