![]() |
ACloudViewer
3.9.4
A Modern Library for 3D Data Processing
|
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. More... | |
| 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. More... | |
| enum | NORMALS_MATCHING { NO_NORMAL = 0 , OPPOSITE_NORMALS = 1 , SAME_SIDE_NORMALS = 2 , DOUBLE_SIDED_NORMALS = 3 } |
| Normals matching method. More... | |
Public Types inherited from cloudViewer::RegistrationTools | |
| 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. More... | |
| using | ScaledTransformation = PointProjectionTools::Transformation |
| Shortcut to PointProjectionTools::ScaledTransformation. More... | |
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 Public Member Functions inherited from cloudViewer::RegistrationTools | |
| static void | FilterTransformation (const ScaledTransformation &inTrans, int transformationFilters, const CCVector3 &toBeAlignedGravityCenter, const CCVector3 &referenceGravityCenter, ScaledTransformation &outTrans) |
Additional Inherited Members | |
Static Protected Member Functions inherited from cloudViewer::RegistrationTools | |
| static bool | RegistrationProcedure (GenericCloud *P, GenericCloud *X, ScaledTransformation &trans, bool adjustScale=false, ScalarField *coupleWeights=nullptr, PointCoordinateType aPrioriScale=1.0f, CCVector3 *Gp=nullptr, CCVector3 *Gx=nullptr) |
| ICP Registration procedure with optional scale estimation. More... | |
ICP point cloud registration algorithm (Besl et al.).
Definition at line 122 of file RegistrationTools.h.
Convergence control method.
| Enumerator | |
|---|---|
| MAX_ERROR_CONVERGENCE | |
| MAX_ITER_CONVERGENCE | |
Definition at line 125 of file RegistrationTools.h.
Normals matching method.
| Enumerator | |
|---|---|
| NO_NORMAL | |
| OPPOSITE_NORMALS | |
| SAME_SIDE_NORMALS | |
| DOUBLE_SIDED_NORMALS | |
Definition at line 144 of file RegistrationTools.h.
Errors.
| Enumerator | |
|---|---|
| ICP_NOTHING_TO_DO | |
| ICP_APPLY_TRANSFO | |
| ICP_ERROR | |
| ICP_ERROR_REGISTRATION_STEP | |
| ICP_ERROR_DIST_COMPUTATION | |
| ICP_ERROR_NOT_ENOUGH_MEMORY | |
| ICP_ERROR_CANCELED_BY_USER | |
| ICP_ERROR_INVALID_INPUT | |
Definition at line 131 of file RegistrationTools.h.
|
static |
Registers two clouds or a cloud and a mesh.
This method implements the ICP algorithm (Besl et al.).
| 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) |
Definition at line 145 of file RegistrationTools.cpp.
References abs(), Garbage< C >::add(), cloudViewer::ScalarField::addElement(), cloudViewer::PointCloudTpl< T >::addPoint(), cloudViewer::ReferenceCloud::addPointIndex(), cloudViewer::PointProjectionTools::Transformation::apply(), cloudViewer::PointProjectionTools::applyTransformation(), cloudViewer::DgmOctree::build(), cloudViewer::ReferenceCloud::clear(), ModelCloud::cloud, DataCloud::cloud, cloudViewer::DistanceComputationTools::computeCloud2CloudDistances(), cloudViewer::DistanceComputationTools::computeCloud2MeshDistances(), cloudViewer::ScalarField::computeMinAndMax(), cloudViewer::NormalDistribution::computeParameters(), count, cloudViewer::DistanceComputationTools::Cloud2CloudDistancesComputationParams::CPSet, cloudViewer::DistanceComputationTools::Cloud2MeshDistancesComputationParams::CPSet, DataCloud::CPSetPlain, DataCloud::CPSetRef, cloudViewer::ScalarField::currentSize(), Garbage< C >::destroy(), cloudViewer::ReferenceCloud::enableScalarField(), cloudViewer::RegistrationTools::FilterTransformation(), cloudViewer::DgmOctree::findBestLevelForComparisonWithOctree(), cloudViewer::ReferenceCloud::getAssociatedCloud(), cloudViewer::NormalDistribution::getParameters(), cloudViewer::PointCloudTpl< T >::getPoint(), cloudViewer::ReferenceCloud::getPointGlobalIndex(), cloudViewer::ReferenceCloud::getPointScalarValue(), cloudViewer::ScalarField::getValue(), ICP_APPLY_TRANSFO, ICP_ERROR, ICP_ERROR_CANCELED_BY_USER, ICP_ERROR_DIST_COMPUTATION, ICP_ERROR_INVALID_INPUT, ICP_ERROR_NOT_ENOUGH_MEMORY, ICP_ERROR_REGISTRATION_STEP, ICP_NOTHING_TO_DO, cloudViewer::PointCloudTpl< T >::invalidateBoundingBox(), cloudViewer::ReferenceCloud::invalidateBoundingBox(), cloudViewer::GenericProgressCallback::isCancelRequested(), cloudViewer::GenericDistribution::isValid(), cloudViewer::SquareMatrixTpl< Scalar >::isValid(), cloudViewer::LessThanEpsilon(), MAX_ERROR_CONVERGENCE, MAX_ITER_CONVERGENCE, cloudViewer::DistanceComputationTools::Cloud2CloudDistancesComputationParams::maxThreadCount, cloudViewer::DistanceComputationTools::Cloud2MeshDistancesComputationParams::maxThreadCount, cloudViewer::DistanceComputationTools::Cloud2MeshDistancesComputationParams::octreeLevel, ParallelSort, params, PC_ONE, cloudViewer::PointProjectionTools::Transformation::R, cloudViewer::RegistrationTools::RegistrationProcedure(), cloudViewer::ReferenceCloud::reserve(), cloudViewer::PointCloudTpl< T >::reserve(), cloudViewer::ScalarField::reserveSafe(), cloudViewer::ReferenceCloud::resize(), cloudViewer::PointCloud::resize(), cloudViewer::ScalarField::resizeSafe(), result, DataCloud::rotatedCloud, cloudViewer::PointProjectionTools::Transformation::s, cloudViewer::ReferenceCloud::setAssociatedCloud(), cloudViewer::GenericProgressCallback::setInfo(), cloudViewer::GenericProgressCallback::setMethodTitle(), cloudViewer::ScalarField::setValue(), cloudViewer::GenericCloud::size(), cloudViewer::PointCloudTpl< T >::size(), cloudViewer::ReferenceCloud::size(), cloudViewer::RegistrationTools::SKIP_NONE, cloudViewer::GenericProgressCallback::start(), cloudViewer::GenericProgressCallback::stop(), cloudViewer::CloudSamplingTools::subsampleCloudRandomly(), cloudViewer::PointProjectionTools::Transformation::T, cloudViewer::GenericProgressCallback::textCanBeEdited(), cloudViewer::GenericProgressCallback::update(), cloudViewer::ScalarField::ValidValue(), ModelCloud::weights, and DataCloud::weights.
Referenced by define_RegistrationTools(), and ccRegistrationTools::ICP().