ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
cloudViewer::RegistrationTools Class Reference

Common point cloud registration algorithms. More...

#include <RegistrationTools.h>

Inheritance diagram for cloudViewer::RegistrationTools:
Collaboration diagram for cloudViewer::RegistrationTools:

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...
 

Detailed Description

Common point cloud registration algorithms.

Definition at line 23 of file RegistrationTools.h.

Member Typedef Documentation

◆ ScaledTransformation

Shortcut to PointProjectionTools::ScaledTransformation.

Definition at line 26 of file RegistrationTools.h.

Member Enumeration Documentation

◆ TRANSFORMATION_FILTERS

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.

Member Function Documentation

◆ FilterTransformation()

void RegistrationTools::FilterTransformation ( const ScaledTransformation inTrans,
int  transformationFilters,
const CCVector3 toBeAlignedGravityCenter,
const CCVector3 referenceGravityCenter,
ScaledTransformation outTrans 
)
static

◆ RegistrationProcedure()

bool RegistrationTools::RegistrationProcedure ( GenericCloud P,
GenericCloud X,
ScaledTransformation trans,
bool  adjustScale = false,
ScalarField coupleWeights = nullptr,
PointCoordinateType  aPrioriScale = 1.0f,
CCVector3 Gp = nullptr,
CCVector3 Gx = nullptr 
)
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').

Parameters
[in]Pthe cloud to register (data)
[in]Xthe reference cloud (model)
[in]transthe resulting transformation
[in]adjustScalewhether to estimate scale (s) as well (see jschmidt 2005)
[in]coupleWeightsweights for each (Pi,Xi) couple (optional)
[in]aPrioriScale'a priori' scale (Sa) between P and X
[out]Gpoptional: gravity center of the P cloud (potentially weighted)
[out]Gxoptional: gravity center of the X cloud (potentially weighted)
Returns
success

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().


The documentation for this class was generated from the following files: