CCCoreLib 31 May 2022
CloudCompare Core algorithms
Static Public Member Functions | List of all members
CCCoreLib::HornRegistrationTools Class Reference

Horn point cloud registration algorithm. More...

#include <RegistrationTools.h>

Inheritance diagram for CCCoreLib::HornRegistrationTools:
Inheritance graph
[legend]
Collaboration diagram for CCCoreLib::HornRegistrationTools:
Collaboration graph
[legend]

Static Public Member Functions

static bool FindAbsoluteOrientation (GenericCloud *lCloud, GenericCloud *rCloud, ScaledTransformation &trans, bool fixedScale=false)
 Returns "absolute orientation" (scale + transformation) between two set of (unordered) points. More...
 
static double ComputeRMS (GenericCloud *lCloud, GenericCloud *rCloud, const ScaledTransformation &trans)
 Computes RMS between two clouds given a transformation and a scale. More...
 
- Static Public Member Functions inherited from CCCoreLib::RegistrationTools
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

- Public Types inherited from CCCoreLib::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.
 
using ScaledTransformation = PointProjectionTools::Transformation
 Shortcut to PointProjectionTools::ScaledTransformation.
 
- Static Protected Member Functions inherited from CCCoreLib::RegistrationTools
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...
 

Detailed Description

Horn point cloud registration algorithm.

See 'Closed-form solution of absolute orientation using unit quaternions', B.K.P. Horn, 1987.

Member Function Documentation

◆ ComputeRMS()

double HornRegistrationTools::ComputeRMS ( GenericCloud lCloud,
GenericCloud rCloud,
const ScaledTransformation trans 
)
static

Computes RMS between two clouds given a transformation and a scale.

Warning: both clouds must have the same size (and at least 3 points) RMS = Sqrt ( Sum( square_norm( Pr - s*R*Pl+T ) ) / count )

Parameters
lCloudleft cloud {Pl}
rCloudright cloud {Pr}
transtransformation: Pr = s.R.Pl + T
Returns
RMS (or -1.0 if an error occurred)

◆ FindAbsoluteOrientation()

bool HornRegistrationTools::FindAbsoluteOrientation ( GenericCloud lCloud,
GenericCloud rCloud,
ScaledTransformation trans,
bool  fixedScale = false 
)
static

Returns "absolute orientation" (scale + transformation) between two set of (unordered) points.

Warning: both clouds must have the same size (and at least 3 points) Output transformation is from the left (L) to the right (R) coordinate system

Parameters
lCloudleft cloud {Pl}
rCloudright cloud {Pr}
transresulting transformation: Pr = s.R.Pl + T
fixedScaleforce scale parameter to 1.0
Returns
success

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