parameters of ICP algorithm More...
#include <MRICP.h>
Public Attributes | |
| ICPMethod | method = ICPMethod::PointToPlane |
| The method how to update transformation from point pairs, see description of each option in ICPMethod. | |
| float | p2plAngleLimit = PI_F / 6.0f |
| float | p2plScaleLimit = 2 |
| float | cosThreshold = 0.7f |
| float | distThresholdSq = 1.f |
| float | farDistFactor = 3.f |
| ICPMode | icpMode = ICPMode::AnyRigidXf |
| Vector3f | fixedRotationAxis |
| Additional parameter for ICPMode::OrthogonalAxis and ICPMode::FixedAxis transformation groups. | |
| int | iterLimit = 10 |
| int | badIterStopCount = 3 |
| float | exitVal = 0 |
| bool | mutualClosest = false |
parameters of ICP algorithm
| int MR::ICPProperties::badIterStopCount = 3 |
The algorithm will stop before making all (iterLimit) iterations, if there were consecutive (badIterStopCount) iterations, during which the average distance between points in active pairs did not diminish.
| float MR::ICPProperties::cosThreshold = 0.7f |
If source and target points in a pair both have normals, then dot-product of normals must be not smaller than (cosThreshold), otherwise such point pair will be deactivated (ignored) during transformation computation. This is to get rid of erroneous pairs on unrelated parts of objects, which are close only by chance.
| float MR::ICPProperties::distThresholdSq = 1.f |
The squared distance between source and target points in a pair must be not greater than (distThresholdSq), otherwise such point pair will be deactivated (ignored) during transformation computation. This is to get rid of outliers in input objects.
| float MR::ICPProperties::exitVal = 0 |
The algorithm will stop before making all (iterLimit) iterations, if the average distance between points in active pairs became smaller than this value.
| float MR::ICPProperties::farDistFactor = 3.f |
First, root-mean-square distance between points in all active pairs is computed as D. Then, the distance between source and target points in a pair must be not greater than (farDistFactor * D), otherwise such point pair will be deactivated (ignored) during transformation computation. This is to progressively reduce the distance threshold as the algorithm converge to a solution.
| Vector3f MR::ICPProperties::fixedRotationAxis |
Additional parameter for ICPMode::OrthogonalAxis and ICPMode::FixedAxis transformation groups.
| ICPMode MR::ICPProperties::icpMode = ICPMode::AnyRigidXf |
Selects the group of transformations, where to find a solution (e.g. with scaling or without, with rotation or without, ...). See the description of each option in ICPMode.
| int MR::ICPProperties::iterLimit = 10 |
The maximum number of iterations that the algorithm can perform. Increase this parameter if you need a higher precision or if initial approximation is not very precise.
| ICPMethod MR::ICPProperties::method = ICPMethod::PointToPlane |
The method how to update transformation from point pairs, see description of each option in ICPMethod.
| bool MR::ICPProperties::mutualClosest = false |
A pair of points is activated only if both points in the pair are mutually closest (reciprocity test passed), some papers recommend this mode for filtering out wrong pairs, but it can be too aggressive and deactivate (almost) all pairs.
| float MR::ICPProperties::p2plAngleLimit = PI_F / 6.0f |
Rotation angle during one iteration of ICPMethod::PointToPlane will be limited by this value. This is to reduce possible instability.
| float MR::ICPProperties::p2plScaleLimit = 2 |
Scaling during one iteration of ICPMethod::PointToPlane will be limited by this value. This is to reduce possible instability.