iterative closest points
CEV ICP algorithm library
|
icp::ICP::from_method("vanilla")
. Matching Step: match closest points.
Sources:
SVD
We compute the SVD of this magical matrix. A proof that this yields the optimal transform R is in the source below.
Sources:
Reflection Handling
SVD may return a reflection instead of a rotation if it's equally good or better. This is exceedingly rare with real data but may happen in very high noise environment with sparse point cloud.
In the 2D case, we can always recover a reasonable rotation by negating the last column of V. I do not know if this is the optimal rotation among rotations, but we can probably get an answer to that question with more effort.
Sources:
Transformation Step: determine optimal transformation.
The translation vector is determined by the displacement between the centroids of both point clouds. The rotation matrix is calculated via singular value decomposition.
Sources:
Read ICP Sources for a list of all resources used in this project. This page was automatically generated from vanilla.cpp with icp_doc_builder.py.