#nearest-neighbor #knn #kdtree #data-structures #computer-vision

no-std nabo

A fast K Nearest Neighbor (KNN) library for low-dimensional spaces

6 releases (breaking)

0.5.0 Dec 20, 2024
0.4.0 Dec 20, 2024
0.3.0 Jun 28, 2023
0.2.1 Sep 13, 2021
0.1.0 Sep 3, 2021

#142 in Math

Download history 7/week @ 2024-09-15 14/week @ 2024-09-22 19/week @ 2024-09-29 38/week @ 2024-10-06 38/week @ 2024-10-13 22/week @ 2024-10-20 16/week @ 2024-10-27 9/week @ 2024-11-03 29/week @ 2024-11-10 56/week @ 2024-11-17 6/week @ 2024-11-24 46/week @ 2024-12-01 54/week @ 2024-12-08 297/week @ 2024-12-15 48/week @ 2024-12-22 14/week @ 2024-12-29

413 downloads per month
Used in nblast

MIT/Apache

50KB
963 lines

nabo

Crates.io Docs.rs Build Status

Overview

nabo is a fast K Nearest Neighbour (KNN) library for low-dimensional spaces. It is a re-implementation in pure Rust of the C library of the same name by its original author. This work has been sponsored by Enlightware GmbH.

nabo is no_std compatible.

Usage

To use nabo in your project, you need to either:

  • Use nabo::simple_point::SimplePoint as your point type.
  • Implement the nabo::Point trait for your own point type.

If you want to avoid a dependency to rand, disable the rand feature. In that case, the random generation of point clouds for SimplePoint will not be available.

Benchmark

You can benchmark nabo using the following command:

cargo bench

Citing nabo

If you use nabo in the academic context, please cite this paper that evaluates its performances in the context of robotics mapping research:

@article{elsebergcomparison,
	title={Comparison of nearest-neighbor-search strategies and implementations for efficient shape registration},
	author={Elseberg, J. and Magnenat, S. and Siegwart, R. and N{\"u}chter, A.},
	journal={Journal of Software Engineering for Robotics (JOSER)},
	pages={2--12},
	volume={3},
	number={1},
	year={2012},
	issn={2035-3928}
}

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this project by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Dependencies

~1MB
~18K SLoC