![]() |
CCCoreLib 31 May 2022
CloudCompare Core algorithms
|
ICP point cloud registration algorithm (Besl et al.). More...
#include <RegistrationTools.h>
Classes | |
struct | Parameters |
ICP Parameters. More... | |
Public Types | |
enum | CONVERGENCE_TYPE { MAX_ERROR_CONVERGENCE = 0 , MAX_ITER_CONVERGENCE = 1 } |
Convergence control method. | |
enum | RESULT_TYPE { ICP_NOTHING_TO_DO = 0 , ICP_APPLY_TRANSFO = 1 , ICP_ERROR = 100 , ICP_ERROR_REGISTRATION_STEP = 101 , ICP_ERROR_DIST_COMPUTATION = 102 , ICP_ERROR_NOT_ENOUGH_MEMORY = 103 , ICP_ERROR_CANCELED_BY_USER = 104 , ICP_ERROR_INVALID_INPUT = 105 } |
Errors. | |
enum | NORMALS_MATCHING { NO_NORMAL = 0 , OPPOSITE_NORMALS = 1 , SAME_SIDE_NORMALS = 2 , DOUBLE_SIDED_NORMALS = 3 } |
Normals matching method. | |
![]() | |
enum | TRANSFORMATION_FILTERS { SKIP_NONE = 0 , SKIP_RXY = 1 , SKIP_RYZ = 2 , SKIP_RXZ = 4 , SKIP_ROTATION = 7 , SKIP_TX = 8 , SKIP_TY = 16 , SKIP_TZ = 32 , SKIP_TRANSLATION = 56 } |
Transformation constraints. | |
using | ScaledTransformation = PointProjectionTools::Transformation |
Shortcut to PointProjectionTools::ScaledTransformation. | |
Static Public Member Functions | |
static RESULT_TYPE | Register (GenericIndexedCloudPersist *modelCloud, GenericIndexedMesh *modelMesh, GenericIndexedCloudPersist *dataCloud, const Parameters ¶ms, ScaledTransformation &totalTrans, double &finalRMS, unsigned &finalPointCount, GenericProgressCallback *progressCb=nullptr) |
Registers two clouds or a cloud and a mesh. More... | |
![]() | |
static void | FilterTransformation (const ScaledTransformation &inTrans, int transformationFilters, ScaledTransformation &outTrans) |
'Filters' a transformation by constraining it along certain rotation axes and translation directions More... | |
Additional Inherited Members | |
![]() | |
static bool | RegistrationProcedure (GenericCloud *P, GenericCloud *X, ScaledTransformation &trans, bool adjustScale=false, ScalarField *coupleWeights=nullptr, PointCoordinateType aPrioriScale=1.0f) |
ICP Registration procedure with optional scale estimation. More... | |
ICP point cloud registration algorithm (Besl et al.).
|
static |
Registers two clouds or a cloud and a mesh.
This method implements the ICP algorithm (Besl et al.) with various improvements (random sampling, optional weights, normals matching, etc.).
modelCloud | the reference cloud or the vertices of the reference mesh --> won't move | |
modelMesh | the reference mesh (optional) --> won't move | |
dataCloud | the cloud to register --> will move | |
params | ICP parameters | |
[out] | totalTrans | the resulting transformation (once the algorithm has converged) |
[out] | finalRMS | final error (RMS) |
[out] | finalPointCount | number of points used to compute the final RMS |
progressCb | the client application can get some notification of the process progress through this callback mechanism (see GenericProgressCallback) |