Package cz.fidentis.analyst.engines.icp
Interface IcpVisitor
- All Superinterfaces:
MeshVisitor
- All Known Implementing Classes:
IcpVisitorImpl
Visitor applying the Iterative Closest Point (ICP) algorithm to register two meshes.
Inspected mesh facets are transformed (vertices are moved!) and the history
of their transformations (transformation performed in each ICP iteration) is returned.
The main implementation is based on
Ferkova, Z. Comparison and Analysis of Multiple 3D Shapes [online]. Brno, 2016 [cit. 2022-02-08]. Available from: https://is.muni.cz/th/wx40f/. Master's thesis. Masaryk University, Faculty of Informatics.Two ICP minimization objectives are implemented: Traditional asymmetric point-to-point distance metric and a symmetric point-to-plane metric, which should provide wider convergence basin and higher convergence speed. The second approach is used by default.
This visitor is not thread-safe due to efficiency reasons and because of the algorithm principle, when it iterates multiple times through each inspected facet. Therefore, concurrent ICP transformation has to use an individual ICP visitor for each transformed (inspected) mesh facet. Sequential inspection of multiple facets using a single visitor's instance is possible.
-
Method Summary
Modifier and TypeMethodDescriptionReturns the history of transformations (transformation performed in each ICP iteration for each inspected mesh facet).Methods inherited from interface cz.fidentis.analyst.data.mesh.MeshVisitor
dispose, isThreadSafe, visitMeshFacet
-
Method Details
-
getTransformations
Map<MeshFacet,List<IcpTransformation>> getTransformations()Returns the history of transformations (transformation performed in each ICP iteration for each inspected mesh facet). Keys in the map contain mesh facets that were inspected and transformed. For each transformed facet, a list of transformations to the primary mesh is stored. The order of transformations corresponds to the order of ICP iterations, i.e., the i-th value is the transformation applied in the i-th iteration on the visited mesh facet. It also means that the size of the list corresponds to the number of iterations performed for given mesh facet.- Returns:
- The history of transformations (transformation performed in each ICP iteration for each inspected mesh facet).
-