Library for Ordering and Alignment of Rigid Pointclouds.
This library provides tools for rigid alignment and vertex reordering in order to configure two pointclouds. These pointclouds can be, as above, from the same source mesh, with transformations applied (allowing for a perfect fit), or any two pointclouds, demonstrated below, in which case a best-fit alignment and reordering will be found.
To run the either of the examples demonstrated in the images above, run either:
- Transformed pointcloud ordering and alignment:
python examples/rigid_pointclouds.py
- Dissimilar pointcloud ordering and alignment:
python examples/gaussian_pointclouds.py
All implementations are in numpy and scipy.
Alignment is completed via Principal Component Analysis (PCA) and Iterative Closest Point (ICP).
PCA provides an initial estimate for the rigid transformation between two pointclouds (highly accurate if these are from the same source), and ICP iteratively refines this estimate.
Ordering is provided either by scipy.optimize.linear_sum_assignment
, or by the Auction Algorithm provided in sslap. The Auction Algorithm will work faster on larger pointclouds.
To install sslap, use pip:
pip install sslap