Awesome Open Source
Awesome Open Source

Efficient adaptive non-maximal suppression algorithms for homogeneous spatial keypoint distribution

This is the implementation of the paper "Efficient adaptive non-maximal suppression algorithms for homogeneous spatial keypoint distribution" that is published in Pattern Recognition Letters (PRL). Alternatively, see TL;DR version.

Algorithm Overview

While competing ANMS methods have similar performance in terms of spatial keypoints distribution, the proposed method SSC is substantially faster and scales better:

Retrieve 10% Retrieve 40% Retrieve 70%

Here is how proposed ANMS method visually compares to traditional methods: TopM | Bucketing | SSC (proposed)

TopM Bucketing SSC

Related algorithms that are implemented in this repository are:

  • "Visual Odometry based on Stereo Image Sequences with RANSAC-based Outlier Rejection Scheme" - bucketing
  • "Multi-Image Matching using Multi-Scale Oriented Patches" - original ANMS
  • "Efficiently selecting spatially distributed keypoints for visual tracking" - more efficient ANMS

For more details about the algorithm, experiments as well as the importance of homogeneously distributed keypoints for SLAM please refer to the paper.

How to run

  1. Clone this repository: git clone See codebase visualization to better understand code repository structure.

  2. Choose your language:

  3. Make sure the path to test image is set correctly

  4. Run produced executable ./ANMS_Codes for C++ or relevant script for other languages

Codes have been tested with OpenCV 2.4.8, OpenCV 3.3.1, OpenCV 4.2.0 and Ubuntu 14.04, 16.04, 20.04.


Follow instructions in docs/contributing.


If you use these codes in your research, please cite:

  title={Efficient adaptive non-maximal suppression algorithms for homogeneous spatial keypoint distribution},
  author={Bailo, Oleksandr and Rameau, Francois and Joo, Kyungdon and Park, Jinsun and Bogdan, Oleksandr and Kweon, In So},
  journal={Pattern Recognition Letters},
Alternatives To Anms Codes
Select To Compare

Alternative Project Comparisons
Related Awesome Lists
Top Programming Languages
Top Projects

Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
Python (807,639
Java (388,606
C Plus Plus (238,896
Algorithms (37,445
Matlab (31,164
Paper (18,800
Cmake (15,604
Opencv (13,314
Qt (12,285
Computer Vision (8,799
Robotics (5,171
Spatial Analysis (4,084
Nms (66
Non Maximum Suppression (15
Anm (5