No project description provided
Project description
KRISS-Matcher: Rust/Python implementation of KISS-Matcher
The implementation of the paper KISS-Matcher: Fast and Robust Point Cloud Registration Revisited.
Disclaimer
This project is my first complete implementation in Rust, created out of curiosity and a desire to learn the language while implementing the concepts from the paper. It was developed over a weekend, so it may not be production-ready. Feedback and contributions are welcome!
Differences from the Original Paper
This implementation has some differences:
-
Single Radius Search:
- This implementation uses only
r_normalinstead of sub-sampling fromr_fpfh. There are no particular reasons, just to ease implementation since it seemed non-important.
- This implementation uses only
-
Histogram Bin Size:
- The paper does not specify the histogram bin size (
H) used in the calculation of FPFH (Fast Point Feature Histogram). More information on my choice is here.
- The paper does not specify the histogram bin size (
-
GNC Solver for Rotation and Translation Estimation:
- The paper does not provide details on the specific GNC (Graduated Non-Convexity) solver used.
- My implementation adapts the GNC-TLS (Truncated Least Squares) solver from the TEASER++ library.
- Residual calculation function adapts methods from Least-Squares Rigid Motion Using SVD.
-
Normal Estimation Using SVD Instead of PCA:
- The implementation uses Singular Value Decomposition (SVD) instead of Principal Component Analysis (PCA) for normal estimation.
- Since the matrices are small, performance is not a significant concern, and SVD provides more stable results.
-
Graph Representation in Correspondence Pruning:
- While the paper suggests using Compressed Sparse Row (CSR) representation for efficiency, this implementation uses a standard adjacency list graph (CSR can be easily integrated, tho).
Code Structure and Correspondence to Paper Sections
Section III.C. Faster-PFH: Boosting FPFH Speed
Also covers "Appendix.I. Detailed Explanation of Faster-PFH".
- Normal Estimation and filtering:
normal_estimation.rs - Point Feature Histogram Calculation:
point_feature_histograms.rs - Feature Matching:
feature_matching.rs
Section III.D. k-Core-Based Graph-Theoretic Outlier Pruning
- Correspondence Graph Pruning:
graph_pruning.rs
Section III.E. Graduated Non-Convexity-Based Non-Minimal Solver
- Optimal Rotation and Translation Estimation:
gnc_solver.rs
Usage
To add library to your rust project use:
$ cargo add kriss_matcher
To use in Python use any package managers such as pip or uv.
$ pip install kriss_matcher
or
$ uv add kriss_matcher
To run the example you can use:
uv run --no-project --python=3.11 examples/example.py
it will install all required dependencies.
Contributing
Feel free to open issues or submit pull requests if you find bugs or have suggestions for improvements.
License
This project is open-sourced under the Apache Version 2.0 License.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file kriss_matcher-0.0.1.tar.gz.
File metadata
- Download URL: kriss_matcher-0.0.1.tar.gz
- Upload date:
- Size: 107.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.7.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bee911c34437055ab5717fed8fd92f54cb05200882cee46061fd7b6c6a6cc614
|
|
| MD5 |
5400eb1e2291064c82aa0d06ee0a26c1
|
|
| BLAKE2b-256 |
171751cf1bc682f346383efdab2712c5a99e520a762fd70564470462ceda814e
|
File details
Details for the file kriss_matcher-0.0.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: kriss_matcher-0.0.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 2.2 MB
- Tags: PyPy, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.7.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5ab39b45e969e63fe954c3e5f4611ef123a31bce10bec06db2353e4984c5beef
|
|
| MD5 |
c01a656ff2d4f0e93b8b1af6bcbe0185
|
|
| BLAKE2b-256 |
8a7c499c861f76d0f6aa9d5581b62789cc7448b6afed3a6beac501546d70ce5a
|
File details
Details for the file kriss_matcher-0.0.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: kriss_matcher-0.0.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 2.2 MB
- Tags: PyPy, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.7.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6f4023530646e87d09d11a0665c26ee8e9a0cb13104f8db24712118aa3b852ce
|
|
| MD5 |
620fd527fa04fef991e5681dc4d9bcbc
|
|
| BLAKE2b-256 |
bc7317fd614cd7ba60b3c8b312dbb847a960a6e75392f238f374433b829bc106
|
File details
Details for the file kriss_matcher-0.0.1-cp312-cp312-manylinux_2_34_x86_64.whl.
File metadata
- Download URL: kriss_matcher-0.0.1-cp312-cp312-manylinux_2_34_x86_64.whl
- Upload date:
- Size: 2.4 MB
- Tags: CPython 3.12, manylinux: glibc 2.34+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.7.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8ede103dd715db389deaff148ebf7f7ae004a4e1445c54fa00bd1a0080a488ba
|
|
| MD5 |
2ea3999c0af2be81096bdc49c1bc5779
|
|
| BLAKE2b-256 |
c58241d4fe0635c0b956b8dc866ef60c0a8b98c3e5aed9ab764d56e7e8e9e9dc
|
File details
Details for the file kriss_matcher-0.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: kriss_matcher-0.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 2.2 MB
- Tags: CPython 3.12, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.7.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2cc0db3f30a2102d2c8dfb7e48fd446d6d96f50d78cb18924fd81e5710402dea
|
|
| MD5 |
ad5e84f33a0bdcd5ea855f1d3081d75e
|
|
| BLAKE2b-256 |
cae2b723ce9e203a5b9455c53b5a9c71adedebeec802ba9073291b2e6bf23215
|
File details
Details for the file kriss_matcher-0.0.1-cp312-cp312-macosx_11_0_arm64.whl.
File metadata
- Download URL: kriss_matcher-0.0.1-cp312-cp312-macosx_11_0_arm64.whl
- Upload date:
- Size: 818.4 kB
- Tags: CPython 3.12, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
067141f2b4468b1b0a777432ba3513969b0e9eee41138d62aaa25cd6b0b27cea
|
|
| MD5 |
065abd087a57bd7656957517f66e2add
|
|
| BLAKE2b-256 |
2e0b6da603a254d7ffaea927f33d7747488bd55c41487e8cba06251ed859b622
|
File details
Details for the file kriss_matcher-0.0.1-cp311-cp311-manylinux_2_34_x86_64.whl.
File metadata
- Download URL: kriss_matcher-0.0.1-cp311-cp311-manylinux_2_34_x86_64.whl
- Upload date:
- Size: 2.4 MB
- Tags: CPython 3.11, manylinux: glibc 2.34+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.7.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9e945097a32aa7b1f5089d59bf348d71b6f11b970a1a852d9a96d451e8f713f3
|
|
| MD5 |
0f3cd8cb8ee337f2ae0997a8bf92ed1c
|
|
| BLAKE2b-256 |
7e56f1ef9dd2136fe55dad967ca8e33df42e430531ac426fa9172b89f00bdd91
|
File details
Details for the file kriss_matcher-0.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: kriss_matcher-0.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 2.2 MB
- Tags: CPython 3.11, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.7.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b1759f18c9ed65107cb7717e4e8a2fe7658da67172059c5cceaf392032cddb3e
|
|
| MD5 |
3e2a71b856b062ee96a869d5a113364e
|
|
| BLAKE2b-256 |
862dd22a60a61b1437c0a420c666e0f2b47ba9285fe30f891dc40c6d9bafc90c
|
File details
Details for the file kriss_matcher-0.0.1-cp311-cp311-macosx_11_0_arm64.whl.
File metadata
- Download URL: kriss_matcher-0.0.1-cp311-cp311-macosx_11_0_arm64.whl
- Upload date:
- Size: 818.7 kB
- Tags: CPython 3.11, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a48cf01adbf86b560a2c64895eec724a7bac5f1220b8746d9710144ab98b957c
|
|
| MD5 |
e11deb385fa2b373b8c56298812eafb6
|
|
| BLAKE2b-256 |
e2e4fc0ca062ecd7c7334c95ac4caf9b511eba5f5e9c4dac713fd8cc3994f413
|
File details
Details for the file kriss_matcher-0.0.1-cp310-cp310-manylinux_2_34_x86_64.whl.
File metadata
- Download URL: kriss_matcher-0.0.1-cp310-cp310-manylinux_2_34_x86_64.whl
- Upload date:
- Size: 2.4 MB
- Tags: CPython 3.10, manylinux: glibc 2.34+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.7.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dffec87d458cd43d59066a4cb788254f750ff030e28c1137a7593b5d4419ed42
|
|
| MD5 |
19cd13fcc0f1bad46de30ab891b66614
|
|
| BLAKE2b-256 |
ab1d96aeb8ae3b2352c7b792b8d4112cbdf64f7ffb6ddc60c2a4f386ebba5110
|
File details
Details for the file kriss_matcher-0.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: kriss_matcher-0.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 2.2 MB
- Tags: CPython 3.10, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.7.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3df8c4f8d50afb74d9cd94bbcec9eded60b04d278eb26f1e28225b0d8037654f
|
|
| MD5 |
5f1627fa9042680561ef7112da37b2b0
|
|
| BLAKE2b-256 |
7b6b4840a96ed04f3b4b391bef689e5e0c24c655d5e856086d0923ffc9d3c7a7
|
File details
Details for the file kriss_matcher-0.0.1-cp310-cp310-macosx_11_0_arm64.whl.
File metadata
- Download URL: kriss_matcher-0.0.1-cp310-cp310-macosx_11_0_arm64.whl
- Upload date:
- Size: 819.0 kB
- Tags: CPython 3.10, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.7.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6eeb6e553c7f90f647618bce87b69a52294643ebee1d480d55951f7c03849f6a
|
|
| MD5 |
02713da38dc6853163b52506821c8833
|
|
| BLAKE2b-256 |
8a0f1b3649df301aeb464174ddbd17b0bc15d475232b3e77c251306d72462acc
|
File details
Details for the file kriss_matcher-0.0.1-cp39-cp39-manylinux_2_34_x86_64.whl.
File metadata
- Download URL: kriss_matcher-0.0.1-cp39-cp39-manylinux_2_34_x86_64.whl
- Upload date:
- Size: 2.4 MB
- Tags: CPython 3.9, manylinux: glibc 2.34+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7498074dc4c8097fc00bd004f836c4a5776f4309ed15c05c2825be0e1e5d7731
|
|
| MD5 |
b7a00706af14a93b113bda01fd163c94
|
|
| BLAKE2b-256 |
bda5164a1c0f1edc37d7f5e42b2e1b7d5d3258914ec7c2c07d21ae91d6dec2fe
|
File details
Details for the file kriss_matcher-0.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: kriss_matcher-0.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 2.2 MB
- Tags: CPython 3.9, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.7.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f0e479d06e7d23377fbeb91257c28a6e9b07ad7549eab43ced0a09d0257661b3
|
|
| MD5 |
f17394e86db139530bb4e4083b194719
|
|
| BLAKE2b-256 |
4fa89e8a3ec5dab41a2ce3a632d800b48fe0ff4d5ce660d1e3b6f0338d48d61a
|
File details
Details for the file kriss_matcher-0.0.1-cp39-cp39-macosx_11_0_arm64.whl.
File metadata
- Download URL: kriss_matcher-0.0.1-cp39-cp39-macosx_11_0_arm64.whl
- Upload date:
- Size: 819.8 kB
- Tags: CPython 3.9, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5779f49f8815e6c31bd387b7f7db5b78b9d594b18d653b83eccf6861fa86d617
|
|
| MD5 |
fbd8f375cbe1676ab7ad9ad2a66af027
|
|
| BLAKE2b-256 |
3bbce9bd2acd18f7f842958c1cb3d22d519bfa2f570e90a2d47f6647e79da591
|