Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/bailool/anms-codes
Efficient adaptive non-maximal suppression algorithms for homogeneous spatial keypoint distribution
https://github.com/bailool/anms-codes
adaptive-non-maximal-suppression algorithm algorithm-overview anms cmake computer-vision cpp11 java matlab maximal-suppression-algorithms nms non-maximum-suppression opencv paper point-detection python qt robotics slam spatial-keypoints-distribution
Last synced: about 3 hours ago
JSON representation
Efficient adaptive non-maximal suppression algorithms for homogeneous spatial keypoint distribution
- Host: GitHub
- URL: https://github.com/bailool/anms-codes
- Owner: BAILOOL
- License: mit
- Created: 2017-02-21T03:41:52.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2022-01-30T21:05:05.000Z (almost 3 years ago)
- Last Synced: 2025-01-21T21:02:13.305Z (about 3 hours ago)
- Topics: adaptive-non-maximal-suppression, algorithm, algorithm-overview, anms, cmake, computer-vision, cpp11, java, matlab, maximal-suppression-algorithms, nms, non-maximum-suppression, opencv, paper, point-detection, python, qt, robotics, slam, spatial-keypoints-distribution
- Language: C++
- Homepage: https://www.researchgate.net/publication/323388062_Efficient_adaptive_non-maximal_suppression_algorithms_for_homogeneous_spatial_keypoint_distribution
- Size: 6.04 MB
- Stars: 335
- Watchers: 14
- Forks: 71
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: docs/contributing.rst
- License: LICENSE
Awesome Lists containing this project
README
# Efficient adaptive non-maximal suppression algorithms for homogeneous spatial keypoint distribution
This is the implementation of the [paper](https://www.researchgate.net/publication/323388062_Efficient_adaptive_non-maximal_suppression_algorithms_for_homogeneous_spatial_keypoint_distribution) *"Efficient adaptive non-maximal suppression algorithms for homogeneous spatial keypoint distribution"* that is published in Pattern Recognition Letters (PRL). Alternatively, see [TL;DR version](https://www.shortscience.org/paper?bibtexKey=journals/prl/BailoRJPBK18&a=ukrdailo).
![Algorithm Overview](https://github.com/BAILOOL/ANMS-Codes/blob/master/Images/algorithm_overview.png?raw=true?raw=true "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%](https://github.com/BAILOOL/ANMS-Codes/blob/master/Images/Time10.png?raw=true "Retrieve 10%") | ![Retrieve 40%](https://github.com/BAILOOL/ANMS-Codes/blob/master/Images/Time40.png?raw=true "Retrieve 40%") | ![Retrieve 70%](https://github.com/BAILOOL/ANMS-Codes/blob/master/Images/Time70.png?raw=true "Retrieve 70%") |
|:----:|:---:|:---:|Here is how proposed ANMS method visually compares to traditional methods: TopM | Bucketing | SSC (proposed)
| ![TopM](https://github.com/BAILOOL/ANMS-Codes/blob/master/Images/TopM.png?raw=true "TopM") | ![Bucketing](https://github.com/BAILOOL/ANMS-Codes/blob/master/Images/Bucketing.png?raw=true "Bucketing") | ![SSC](https://github.com/BAILOOL/ANMS-Codes/blob/master/Images/SSC.png?raw=true "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 ANMSFor more details about the algorithm, experiments as well as the importance of homogeneously distributed keypoints for SLAM please refer to the [paper](https://www.researchgate.net/publication/323388062_Efficient_adaptive_non-maximal_suppression_algorithms_for_homogeneous_spatial_keypoint_distribution).
## How to run
1. Clone this repository: `git clone https://github.com/BAILOOL/ANMS-Codes.git`. See [codebase visualization](https://octo-repo-visualization.vercel.app/?repo=BAILOOL%2FANMS-Codes) to better understand code repository structure.
2. Choose your language:
- [C++](https://github.com/BAILOOL/ANMS-Codes/tree/master/C++)
- [Python](https://github.com/BAILOOL/ANMS-Codes/tree/master/Python)
- [Matlab](https://github.com/BAILOOL/ANMS-Codes/tree/master/Matlab) [![View ANMS-Codes on File Exchange](https://www.mathworks.com/matlabcentral/images/matlab-file-exchange.svg)](https://uk.mathworks.com/matlabcentral/fileexchange/88723-anms-codes)
- [Java](https://github.com/BAILOOL/ANMS-Codes/tree/master/Java)3. Make sure the [path to test image](C++/CmakeProject/main.cpp#L8) 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`.
## Contributing
Follow instructions in [docs/contributing](https://github.com/BAILOOL/ANMS-Codes/blob/master/docs/contributing.rst).## Citation
If you use these codes in your research, please cite:
```text
@article{bailo2018efficient,
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},
volume={106},
pages={53--60},
year={2018},
publisher={Elsevier}
}
```