{"id":15716360,"url":"https://github.com/bailool/anms-codes","last_synced_at":"2025-04-06T07:15:17.682Z","repository":{"id":40138953,"uuid":"82632866","full_name":"BAILOOL/ANMS-Codes","owner":"BAILOOL","description":"Efficient adaptive non-maximal suppression algorithms for homogeneous spatial keypoint distribution","archived":false,"fork":false,"pushed_at":"2022-01-30T21:05:05.000Z","size":6338,"stargazers_count":340,"open_issues_count":0,"forks_count":71,"subscribers_count":13,"default_branch":"master","last_synced_at":"2025-04-06T07:15:09.916Z","etag":null,"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"],"latest_commit_sha":null,"homepage":"https://www.researchgate.net/publication/323388062_Efficient_adaptive_non-maximal_suppression_algorithms_for_homogeneous_spatial_keypoint_distribution","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/BAILOOL.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/contributing.rst","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-02-21T03:41:52.000Z","updated_at":"2025-03-25T10:10:50.000Z","dependencies_parsed_at":"2022-07-28T06:48:53.066Z","dependency_job_id":null,"html_url":"https://github.com/BAILOOL/ANMS-Codes","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BAILOOL%2FANMS-Codes","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BAILOOL%2FANMS-Codes/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BAILOOL%2FANMS-Codes/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BAILOOL%2FANMS-Codes/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BAILOOL","download_url":"https://codeload.github.com/BAILOOL/ANMS-Codes/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247445682,"owners_count":20939961,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["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"],"created_at":"2024-10-03T21:45:14.939Z","updated_at":"2025-04-06T07:15:17.644Z","avatar_url":"https://github.com/BAILOOL.png","language":"C++","readme":"# Efficient adaptive non-maximal suppression algorithms for homogeneous spatial keypoint distribution\n\nThis 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\u0026a=ukrdailo).\n\n![Algorithm Overview](https://github.com/BAILOOL/ANMS-Codes/blob/master/Images/algorithm_overview.png?raw=true?raw=true \"Algorithm Overview\")\n\nWhile competing ANMS methods have similar performance in terms of spatial keypoints distribution, the proposed method SSC is substantially faster and scales better:\n\n| ![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%\") |\n|:----:|:---:|:---:|\n\nHere is how proposed ANMS method visually compares to traditional methods: TopM | Bucketing | SSC (proposed)\n\n| ![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\") |\n|:---:|:---:|:---:|\n\nRelated algorithms that are implemented in this repository are:\n\n- *\"Visual Odometry based on Stereo Image Sequences with RANSAC-based Outlier Rejection Scheme\"* - bucketing\n- *\"Multi-Image Matching using Multi-Scale Oriented Patches\"* - original ANMS\n- *\"Efficiently selecting spatially distributed keypoints for visual tracking\"* - more efficient ANMS\n\nFor 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).\n\n## How to run\n1. 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.\n2. Choose your language:\n    - [C++](https://github.com/BAILOOL/ANMS-Codes/tree/master/C++)\n    - [Python](https://github.com/BAILOOL/ANMS-Codes/tree/master/Python)\n    - [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)\n    - [Java](https://github.com/BAILOOL/ANMS-Codes/tree/master/Java)\n\n3. Make sure the [path to test image](C++/CmakeProject/main.cpp#L8) is set correctly\n\n4. Run produced executable `./ANMS_Codes` for C++ or relevant script for other languages\n\nCodes have been tested with `OpenCV 2.4.8`, `OpenCV 3.3.1`, `OpenCV 4.2.0` and `Ubuntu 14.04`, `16.04`, `20.04`.\n\n## Contributing\nFollow instructions in [docs/contributing](https://github.com/BAILOOL/ANMS-Codes/blob/master/docs/contributing.rst).\n\n## Citation\nIf you use these codes in your research, please cite:\n```text\n@article{bailo2018efficient,\n  title={Efficient adaptive non-maximal suppression algorithms for homogeneous spatial keypoint distribution},\n  author={Bailo, Oleksandr and Rameau, Francois and Joo, Kyungdon and Park, Jinsun and Bogdan, Oleksandr and Kweon, In So},\n  journal={Pattern Recognition Letters},\n  volume={106},\n  pages={53--60},\n  year={2018},\n  publisher={Elsevier}\n}\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbailool%2Fanms-codes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbailool%2Fanms-codes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbailool%2Fanms-codes/lists"}