Skip to content

Python implementation of ORB feature matching algorithm from scratch. (not using openCV)

Notifications You must be signed in to change notification settings

AhmedHisham1/ORB-feature-matching

Repository files navigation

ORB-feature-matching

Python implementation of ORB feature matching algorithm from scratch. (not using openCV)

This is a python implementation of the ORB feature extraction/detection and matching without using OpenCV orb functions. It was done as an exercise of my understanding of the algorithm.

Code Structure

Inside the utils.py file I have created the following functions:

  • FAST(): FAST algorithm [Features from Accelerated Segment Test] for keypoints (corners) detection.

  • corner_orientations(): a function that computes the orientations of each keypoint based on the intensity centroid method.

  • BRIEF(): BRIEF algorithm [Binary Robust Independent Elementary Features] for keypoints (corners) detection. The function can also utilize the keypoints orientations to compute the descriptors accordingly (steered-BRIEF algorithm).

  • match(): Brute force matching of the BRIEF descriptors based on hamming distance, with the option to perform cross-check, and to remove ambiguous matches (confusing matches) using a distance_ratio.

The actual ORB implementation is in the ORB Notebook.ipynb file where I use all the functions of utils.py.

Examples

Multi-Scale Keypoints Detection

keypoints

Scale Test Matching

keypoints

Blur Test Matching

keypoints

TODO:

The performance of this implementation is noticably worse (some incorrect matches & overall very slow) than the OpenCV ORB implementation, further improvements could be made in the future.

About

Python implementation of ORB feature matching algorithm from scratch. (not using openCV)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published