MeshLib Documentation
Loading...
Searching...
No Matches
MR::MultiwayICP Class Reference

#include <MRMultiwayICP.h>

Public Types

using PairsPerLayer = Vector<ICPPairsGrid, ICPLayer>
 

Public Member Functions

MRMESH_API MultiwayICP (const ICPObjects &objects, const MultiwayICPSamplingParameters &samplingParams)
 
MRMESH_API Vector< AffineXf3f, ObjId > calculateTransformations (ProgressCallback cb={})
 
MRMESH_API Vector< AffineXf3f, ObjId > calculateTransformationsFixFirst (ProgressCallback cb={})
 
MRMESH_API bool resamplePoints (const MultiwayICPSamplingParameters &samplingParams)
 select pairs with origin samples on all objects
 
MRMESH_API bool updateAllPointPairs (ProgressCallback cb={})
 
void setParams (const ICPProperties &prop)
 tune algorithm params before run calculateTransformations()
 
const ICPPropertiesgetParams () const
 
MRMESH_API float getMeanSqDistToPoint (double *value=nullptr) const
 
MRMESH_API float getMeanSqDistToPlane (double *value=nullptr) const
 
MRMESH_API size_t getNumSamples () const
 computes the number of samples able to form pairs
 
MRMESH_API size_t getNumActivePairs () const
 computes the number of active point pairs
 
void setPerIterationCallback (std::function< void(int inter)> callback)
 sets callback that will be called for each iteration
 
bool devIndependentEquationsModeEnabled () const
 
void devEnableIndependentEquationsMode (bool on)
 
MRMESH_API std::string getStatusInfo () const
 returns status info string
 
const PairsPerLayergetPairsPerLayer () const
 returns all pairs of all layers
 
const IICPTreeIndexergetCascadeIndexer () const
 

Detailed Description

This class allows you to register many objects having similar parts and known initial approximations of orientations/locations using Iterative Closest Points (ICP) point-to-point or point-to-plane algorithms

Member Typedef Documentation

◆ PairsPerLayer

Constructor & Destructor Documentation

◆ MultiwayICP()

MRMESH_API MR::MultiwayICP::MultiwayICP ( const ICPObjects & objects,
const MultiwayICPSamplingParameters & samplingParams )

Member Function Documentation

◆ calculateTransformations()

MRMESH_API Vector< AffineXf3f, ObjId > MR::MultiwayICP::calculateTransformations ( ProgressCallback cb = {})
nodiscard

runs ICP algorithm given input objects, transformations, and parameters;

Returns
adjusted transformations of all objects to reach registered state the transformation of the last object is fixed and does not change here

◆ calculateTransformationsFixFirst()

MRMESH_API Vector< AffineXf3f, ObjId > MR::MultiwayICP::calculateTransformationsFixFirst ( ProgressCallback cb = {})
nodiscard

runs ICP algorithm given input objects, transformations, and parameters;

Returns
adjusted transformations of all objects to reach registered state the transformation of the first object is fixed and does not change here

◆ devEnableIndependentEquationsMode()

void MR::MultiwayICP::devEnableIndependentEquationsMode ( bool on)
inline

◆ devIndependentEquationsModeEnabled()

bool MR::MultiwayICP::devIndependentEquationsModeEnabled ( ) const
inline

if in independent equations mode - creates separate equation system for each object otherwise creates single large equation system for all objects

◆ getCascadeIndexer()

const IICPTreeIndexer * MR::MultiwayICP::getCascadeIndexer ( ) const
inline

returns pointer to class that is used to navigate among layers of cascade registration if nullptr - cascade mode is not used

◆ getMeanSqDistToPlane()

MRMESH_API float MR::MultiwayICP::getMeanSqDistToPlane ( double * value = nullptr) const
nodiscard

computes root-mean-square deviation from points to target planes or the standard deviation from given value if present

◆ getMeanSqDistToPoint()

MRMESH_API float MR::MultiwayICP::getMeanSqDistToPoint ( double * value = nullptr) const
nodiscard

computes root-mean-square deviation between points or the standard deviation from given value if present

◆ getNumActivePairs()

MRMESH_API size_t MR::MultiwayICP::getNumActivePairs ( ) const
nodiscard

computes the number of active point pairs

◆ getNumSamples()

MRMESH_API size_t MR::MultiwayICP::getNumSamples ( ) const
nodiscard

computes the number of samples able to form pairs

◆ getPairsPerLayer()

const PairsPerLayer & MR::MultiwayICP::getPairsPerLayer ( ) const
inline

returns all pairs of all layers

◆ getParams()

const ICPProperties & MR::MultiwayICP::getParams ( ) const
inlinenodiscard

◆ getStatusInfo()

MRMESH_API std::string MR::MultiwayICP::getStatusInfo ( ) const
nodiscard

returns status info string

◆ resamplePoints()

MRMESH_API bool MR::MultiwayICP::resamplePoints ( const MultiwayICPSamplingParameters & samplingParams)

select pairs with origin samples on all objects

◆ setParams()

void MR::MultiwayICP::setParams ( const ICPProperties & prop)
inline

tune algorithm params before run calculateTransformations()

◆ setPerIterationCallback()

void MR::MultiwayICP::setPerIterationCallback ( std::function< void(int inter)> callback)
inline

sets callback that will be called for each iteration

◆ updateAllPointPairs()

MRMESH_API bool MR::MultiwayICP::updateAllPointPairs ( ProgressCallback cb = {})

in each pair updates the target data and performs basic filtering (activation) in cascade mode only useful for stats update


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