Skip to main content

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.

matching

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:

  1. Single Radius Search:

    • This implementation uses only r_normal instead of sub-sampling from r_fpfh. There are no particular reasons, just to ease implementation since it seemed non-important.
  2. 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.
  3. 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.
  4. 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.
  5. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kriss_matcher-0.0.1.tar.gz (107.5 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

kriss_matcher-0.0.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.2 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

kriss_matcher-0.0.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.2 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

kriss_matcher-0.0.1-cp312-cp312-manylinux_2_34_x86_64.whl (2.4 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ x86-64

kriss_matcher-0.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

kriss_matcher-0.0.1-cp312-cp312-macosx_11_0_arm64.whl (818.4 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

kriss_matcher-0.0.1-cp311-cp311-manylinux_2_34_x86_64.whl (2.4 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.34+ x86-64

kriss_matcher-0.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

kriss_matcher-0.0.1-cp311-cp311-macosx_11_0_arm64.whl (818.7 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

kriss_matcher-0.0.1-cp310-cp310-manylinux_2_34_x86_64.whl (2.4 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.34+ x86-64

kriss_matcher-0.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

kriss_matcher-0.0.1-cp310-cp310-macosx_11_0_arm64.whl (819.0 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

kriss_matcher-0.0.1-cp39-cp39-manylinux_2_34_x86_64.whl (2.4 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.34+ x86-64

kriss_matcher-0.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

kriss_matcher-0.0.1-cp39-cp39-macosx_11_0_arm64.whl (819.8 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

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

Hashes for kriss_matcher-0.0.1.tar.gz
Algorithm Hash digest
SHA256 bee911c34437055ab5717fed8fd92f54cb05200882cee46061fd7b6c6a6cc614
MD5 5400eb1e2291064c82aa0d06ee0a26c1
BLAKE2b-256 171751cf1bc682f346383efdab2712c5a99e520a762fd70564470462ceda814e

See more details on using hashes here.

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

File hashes

Hashes for kriss_matcher-0.0.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5ab39b45e969e63fe954c3e5f4611ef123a31bce10bec06db2353e4984c5beef
MD5 c01a656ff2d4f0e93b8b1af6bcbe0185
BLAKE2b-256 8a7c499c861f76d0f6aa9d5581b62789cc7448b6afed3a6beac501546d70ce5a

See more details on using hashes here.

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

File hashes

Hashes for kriss_matcher-0.0.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6f4023530646e87d09d11a0665c26ee8e9a0cb13104f8db24712118aa3b852ce
MD5 620fd527fa04fef991e5681dc4d9bcbc
BLAKE2b-256 bc7317fd614cd7ba60b3c8b312dbb847a960a6e75392f238f374433b829bc106

See more details on using hashes here.

File details

Details for the file kriss_matcher-0.0.1-cp312-cp312-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for kriss_matcher-0.0.1-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 8ede103dd715db389deaff148ebf7f7ae004a4e1445c54fa00bd1a0080a488ba
MD5 2ea3999c0af2be81096bdc49c1bc5779
BLAKE2b-256 c58241d4fe0635c0b956b8dc866ef60c0a8b98c3e5aed9ab764d56e7e8e9e9dc

See more details on using hashes here.

File details

Details for the file kriss_matcher-0.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for kriss_matcher-0.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2cc0db3f30a2102d2c8dfb7e48fd446d6d96f50d78cb18924fd81e5710402dea
MD5 ad5e84f33a0bdcd5ea855f1d3081d75e
BLAKE2b-256 cae2b723ce9e203a5b9455c53b5a9c71adedebeec802ba9073291b2e6bf23215

See more details on using hashes here.

File details

Details for the file kriss_matcher-0.0.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for kriss_matcher-0.0.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 067141f2b4468b1b0a777432ba3513969b0e9eee41138d62aaa25cd6b0b27cea
MD5 065abd087a57bd7656957517f66e2add
BLAKE2b-256 2e0b6da603a254d7ffaea927f33d7747488bd55c41487e8cba06251ed859b622

See more details on using hashes here.

File details

Details for the file kriss_matcher-0.0.1-cp311-cp311-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for kriss_matcher-0.0.1-cp311-cp311-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 9e945097a32aa7b1f5089d59bf348d71b6f11b970a1a852d9a96d451e8f713f3
MD5 0f3cd8cb8ee337f2ae0997a8bf92ed1c
BLAKE2b-256 7e56f1ef9dd2136fe55dad967ca8e33df42e430531ac426fa9172b89f00bdd91

See more details on using hashes here.

File details

Details for the file kriss_matcher-0.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for kriss_matcher-0.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b1759f18c9ed65107cb7717e4e8a2fe7658da67172059c5cceaf392032cddb3e
MD5 3e2a71b856b062ee96a869d5a113364e
BLAKE2b-256 862dd22a60a61b1437c0a420c666e0f2b47ba9285fe30f891dc40c6d9bafc90c

See more details on using hashes here.

File details

Details for the file kriss_matcher-0.0.1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for kriss_matcher-0.0.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a48cf01adbf86b560a2c64895eec724a7bac5f1220b8746d9710144ab98b957c
MD5 e11deb385fa2b373b8c56298812eafb6
BLAKE2b-256 e2e4fc0ca062ecd7c7334c95ac4caf9b511eba5f5e9c4dac713fd8cc3994f413

See more details on using hashes here.

File details

Details for the file kriss_matcher-0.0.1-cp310-cp310-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for kriss_matcher-0.0.1-cp310-cp310-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 dffec87d458cd43d59066a4cb788254f750ff030e28c1137a7593b5d4419ed42
MD5 19cd13fcc0f1bad46de30ab891b66614
BLAKE2b-256 ab1d96aeb8ae3b2352c7b792b8d4112cbdf64f7ffb6ddc60c2a4f386ebba5110

See more details on using hashes here.

File details

Details for the file kriss_matcher-0.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for kriss_matcher-0.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3df8c4f8d50afb74d9cd94bbcec9eded60b04d278eb26f1e28225b0d8037654f
MD5 5f1627fa9042680561ef7112da37b2b0
BLAKE2b-256 7b6b4840a96ed04f3b4b391bef689e5e0c24c655d5e856086d0923ffc9d3c7a7

See more details on using hashes here.

File details

Details for the file kriss_matcher-0.0.1-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for kriss_matcher-0.0.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6eeb6e553c7f90f647618bce87b69a52294643ebee1d480d55951f7c03849f6a
MD5 02713da38dc6853163b52506821c8833
BLAKE2b-256 8a0f1b3649df301aeb464174ddbd17b0bc15d475232b3e77c251306d72462acc

See more details on using hashes here.

File details

Details for the file kriss_matcher-0.0.1-cp39-cp39-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for kriss_matcher-0.0.1-cp39-cp39-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 7498074dc4c8097fc00bd004f836c4a5776f4309ed15c05c2825be0e1e5d7731
MD5 b7a00706af14a93b113bda01fd163c94
BLAKE2b-256 bda5164a1c0f1edc37d7f5e42b2e1b7d5d3258914ec7c2c07d21ae91d6dec2fe

See more details on using hashes here.

File details

Details for the file kriss_matcher-0.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for kriss_matcher-0.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f0e479d06e7d23377fbeb91257c28a6e9b07ad7549eab43ced0a09d0257661b3
MD5 f17394e86db139530bb4e4083b194719
BLAKE2b-256 4fa89e8a3ec5dab41a2ce3a632d800b48fe0ff4d5ce660d1e3b6f0338d48d61a

See more details on using hashes here.

File details

Details for the file kriss_matcher-0.0.1-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for kriss_matcher-0.0.1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5779f49f8815e6c31bd387b7f7db5b78b9d594b18d653b83eccf6861fa86d617
MD5 fbd8f375cbe1676ab7ad9ad2a66af027
BLAKE2b-256 3bbce9bd2acd18f7f842958c1cb3d22d519bfa2f570e90a2d47f6647e79da591

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page