Skip to content

In this repository, we deal with the task of Visual Odometry using Nister’s five point algorithm and eight point algorithm for essential matrix estimation. We develop our own implementations for these methods. We implement RANSAC along with these methods for outlier rejection.

License

Notifications You must be signed in to change notification settings

vineeths96/Visual-Odometry

Repository files navigation

Language Contributors Forks Stargazers Issues MIT License LinkedIn


Visual Odometry

5-point algorithm and 8-point algorithm method
Explore the repository»

View Problem Statement View Report

tags : visual odometry, 5-point algorithm, 8-point algorithm, fast, sift essential matrix, digital video

About The Project

This project deals with the task of Visual Odometry using Nister’s five point algorithm and eight point algorithm for essential matrix estimation. We develop our own implementations for these methods. We implement RANSAC along with these methods for outlier rejection. We test our implementations and OpenCV implementations on a couple of sequences from KITTI dataset. We specifically use Sequences 03 and 10, since they are of relatively smaller size. We use FAST feature detection algorithm to detect the keypoint locations and keep track of at least 2000 keypoints in every frame at any time. A detailed description and analysis of the results are available in the Report.

Built With

This project was built with

  • python v3.8
  • The environment used for developing this project is available at environment.yml.

Getting Started

Clone the repository into a local machine using

git clone https://github.com/vineeths96/Visual-Odometry

Prerequisites

Create a new conda environment and install all the libraries by running the following command

conda env create -f environment.yml

The KITTI dataset used in this project should to be downloaded to the input/ folder.

Instructions to run

To plot the visual odometry of the video sequence, run the following command. Set the parameters for odometry estimation and camera parameters in the parameters file. This will estimate the trajectory, plots it along with true trajectory, and store the plots in this folder.

python visual_odometry.py

Results

Note that the GIFs below might not be in sync depending on the network quality. Clone the repository to your local machine and open them locally to see them in sync.

A detailed description of methods and analysis of the results are available in the Report.

As one would expect, the OpenCV implementations are much more accurate and much faster than the implementations we develop. Especially, we find our implementations to be time consuming due to the naive sampling and implementation of RANSAC. We can trade off the accuracy and time by reducing the number of iterations for RANSAC. However, due to the cumulative nature of odometry, an error at one step adversely affects the estimate at all the successive steps.

OpenCV Nister's 5 Point Method OpenCV Nister's 5 Point Method
1 2
Own implementation of 8 Point Method Own implementation of 8 Point Method
!1 1
OpenCV implementation of 8 Point Method OpenCV implementation of 8 Point Method
1 1
Trajectory 1 Trajectory 2

License

Distributed under the MIT License. See LICENSE for more information.

Contact

Vineeth S - [email protected]

Project Link: https://github.com/vineeths96/Visual-Odometry

Acknowledgements

About

In this repository, we deal with the task of Visual Odometry using Nister’s five point algorithm and eight point algorithm for essential matrix estimation. We develop our own implementations for these methods. We implement RANSAC along with these methods for outlier rejection.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages