![]() |
ACloudViewer
3.9.4
A Modern Library for 3D Data Processing
|
Common point cloud registration algorithms. More...
#include <RegistrationTools.h>


Public Types | |
| 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 void | FilterTransformation (const ScaledTransformation &inTrans, int transformationFilters, const CCVector3 &toBeAlignedGravityCenter, const CCVector3 &referenceGravityCenter, ScaledTransformation &outTrans) |
Static Protected Member Functions | |
| 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... | |
Common point cloud registration algorithms.
Definition at line 23 of file RegistrationTools.h.
Shortcut to PointProjectionTools::ScaledTransformation.
Definition at line 26 of file RegistrationTools.h.
Transformation constraints.
| Enumerator | |
|---|---|
| SKIP_NONE | |
| SKIP_RXY | |
| SKIP_RYZ | |
| SKIP_RXZ | |
| SKIP_ROTATION | |
| SKIP_TX | |
| SKIP_TY | |
| SKIP_TZ | |
| SKIP_TRANSLATION | |
Definition at line 29 of file RegistrationTools.h.
|
static |
'Filters' a transformation by constraining it about some rotation axes and/or along some translation directions
| inTrans | input transformation |
| transformationFilters | filters to be applied on the resulting transformation at each step (experimental) - see RegistrationTools::TRANSFORMATION_FILTERS flags |
| outTrans | output transformation |
Definition at line 31 of file RegistrationTools.cpp.
References cloudViewer::PointProjectionTools::Transformation::apply(), cloudViewer::SquareMatrixTpl< Scalar >::getValue(), cloudViewer::SquareMatrixTpl< Scalar >::isValid(), cloudViewer::PointProjectionTools::Transformation::R, cloudViewer::SquareMatrixTpl< Scalar >::setValue(), SKIP_ROTATION, SKIP_RXY, SKIP_RXZ, SKIP_RYZ, SKIP_TRANSLATION, SKIP_TX, SKIP_TY, SKIP_TZ, cloudViewer::PointProjectionTools::Transformation::T, Vector3Tpl< Type >::toDouble(), cloudViewer::SquareMatrixTpl< Scalar >::toIdentity(), Tuple3Tpl< Type >::x, Tuple3Tpl< Type >::y, and Tuple3Tpl< Type >::z.
Referenced by ccPointPairRegistrationDlg::callHornRegistration(), define_RegistrationTools(), and cloudViewer::ICPRegistrationTools::Register().
|
staticprotected |
ICP Registration procedure with optional scale estimation.
Determines the best quaternion (a couple qR|qT) and optionally a scale 's' (different from a priori scale Sa) to bring the cloud P closer to the reference cloud X (one step). Refer to the ICP algorithm theory for more details about this procedure, and to "Point Set Registration with Integrated Scale Estimation", Znisser et al, PRIP 2005 for the scale estimation.
X = Sa.s.R.P + T (with Sa = s = 1 by default)
Warning: P and X must have the same size, and must be in the same order (i.e. P[i] is the point equivalent to X[i] for all 'i').
| [in] | P | the cloud to register (data) |
| [in] | X | the reference cloud (model) |
| [in] | trans | the resulting transformation |
| [in] | adjustScale | whether to estimate scale (s) as well (see jschmidt 2005) |
| [in] | coupleWeights | weights for each (Pi,Xi) couple (optional) |
| [in] | aPrioriScale | 'a priori' scale (Sa) between P and X |
| [out] | Gp | optional: gravity center of the P cloud (potentially weighted) |
| [out] | Gx | optional: gravity center of the X cloud (potentially weighted) |
Definition at line 849 of file RegistrationTools.cpp.
References abs(), cloudViewer::PointProjectionTools::Transformation::apply(), cloudViewer::GeometricalAnalysisTools::ComputeCrossCovarianceMatrix(), cloudViewer::GeometricalAnalysisTools::ComputeGravityCenter(), cloudViewer::GeometricalAnalysisTools::ComputeWeightedCrossCovarianceMatrix(), cloudViewer::GeometricalAnalysisTools::ComputeWeightedGravityCenter(), count, Vector3Tpl< Type >::cross(), cross(), Vector3Tpl< Type >::dot(), Jacobi< Scalar >::GetMaxEigenValueAndVector(), cloudViewer::GenericCloud::getNextPoint(), cloudViewer::SquareMatrixTpl< Scalar >::initFromQuaternion(), cloudViewer::SquareMatrixTpl< Scalar >::invalidate(), cloudViewer::SquareMatrixTpl< Scalar >::isValid(), cloudViewer::LessThanEpsilon(), cloudViewer::SquareMatrixTpl< Scalar >::m_values, Vector3Tpl< Type >::norm(), Vector3Tpl< Type >::normd(), PC_ONE, cloudViewer::GenericCloud::placeIteratorAtBeginning(), cloudViewer::PointProjectionTools::Transformation::R, cloudViewer::PointProjectionTools::Transformation::s, cloudViewer::SquareMatrixTpl< Scalar >::scale(), cloudViewer::GenericCloud::size(), cloudViewer::PointProjectionTools::Transformation::T, Vector3Tpl< Type >::toDouble(), cloudViewer::SquareMatrixTpl< Scalar >::toIdentity(), cloudViewer::SquareMatrixTpl< Scalar >::trace(), cloudViewer::SquareMatrixTpl< Scalar >::transposed(), Tuple3Tpl< Type >::x, X, Tuple3Tpl< Type >::y, Tuple3Tpl< Type >::z, and ZERO_TOLERANCE_D.
Referenced by cloudViewer::FPCSRegistrationTools::FilterCandidates(), cloudViewer::HornRegistrationTools::FindAbsoluteOrientation(), and cloudViewer::ICPRegistrationTools::Register().