Medical Imaging Interaction Toolkit  2026.06.00
Medical Imaging Interaction Toolkit
mitk::CovarianceMatrixCalculator Class Reference

Computes covariance matrices for every vertex of a Surface, for use in the anisotropic ICP (A-ICP) algorithm. More...

#include <mitkCovarianceMatrixCalculator.h>

Inheritance diagram for mitk::CovarianceMatrixCalculator:
Collaboration diagram for mitk::CovarianceMatrixCalculator:

Public Member Functions

 mitkClassMacroItkParent (CovarianceMatrixCalculator, itk::Object)
 
Pointer Clone () const
 
void SetVoronoiScalingFator (const double factor)
 
void EnableNormalization (bool state)
 
double GetMeanVariance () const
 
const CovarianceMatrixList & GetCovarianceMatrices () const
 
void SetInputSurface (Surface *input)
 
void ComputeCovarianceMatrices ()
 

Static Public Member Functions

static Pointer New ()
 

Protected Types

typedef itk::Matrix< double, 3, 3 > CovarianceMatrix
 
typedef std::vector< CovarianceMatrix > CovarianceMatrixList
 
typedef double Vertex[3]
 

Protected Member Functions

void ComputeOrthonormalCoordinateSystem (const int index, Vertex normal, CovarianceMatrix &principalComponents, Vertex variances, Vertex curVertex)
 
 CovarianceMatrixCalculator ()
 
 ~CovarianceMatrixCalculator () override
 

Protected Attributes

CovarianceMatrixList m_CovarianceMatrixList
 

Detailed Description

Computes covariance matrices for every vertex of a Surface, for use in the anisotropic ICP (A-ICP) algorithm.

This class computes a 3x3 covariance matrix for each vertex in a given Surface based on its direct neighbours and stores them in a CovarianceMatrixList. The implementation follows the CM_PCA method presented by L. Maier-Hein et al. in "Convergent Iterative Closest-Point Algorithm to Accommodate Anisotropic and Inhomogenous Localization Error.", IEEE T Pattern Anal 34 (8), 1520-1532, 2012. The algorithm requires a clean Surface without non-manifold edges and without duplicated vertices. Use vtkCleanPolyData to ensure a correct Surface representation.

See also
AnisotropicIterativeClosestPointRegistration
AnisotropicRegistrationCommon
WeightedPointTransform

Definition at line 48 of file mitkCovarianceMatrixCalculator.h.

Member Typedef Documentation

◆ CovarianceMatrix

typedef itk::Matrix<double, 3, 3> mitk::CovarianceMatrixCalculator::CovarianceMatrix
protected

Definition of the covariance matrix.

Definition at line 58 of file mitkCovarianceMatrixCalculator.h.

◆ CovarianceMatrixList

Definition of a list of covariance matrices

Definition at line 60 of file mitkCovarianceMatrixCalculator.h.

◆ Vertex

typedef double mitk::CovarianceMatrixCalculator::Vertex[3]
protected

Definition at line 61 of file mitkCovarianceMatrixCalculator.h.

Constructor & Destructor Documentation

◆ CovarianceMatrixCalculator()

mitk::CovarianceMatrixCalculator::CovarianceMatrixCalculator ( )
protected

◆ ~CovarianceMatrixCalculator()

mitk::CovarianceMatrixCalculator::~CovarianceMatrixCalculator ( )
overrideprotected

Member Function Documentation

◆ Clone()

Pointer mitk::CovarianceMatrixCalculator::Clone ( ) const

◆ ComputeCovarianceMatrices()

void mitk::CovarianceMatrixCalculator::ComputeCovarianceMatrices ( )

Method that computes the covariance matrices for the input surface.

Exceptions
std::exceptionIf the input surface is not set.

◆ ComputeOrthonormalCoordinateSystem()

void mitk::CovarianceMatrixCalculator::ComputeOrthonormalCoordinateSystem ( const int  index,
Vertex  normal,
CovarianceMatrix &  principalComponents,
Vertex  variances,
Vertex  curVertex 
)
protected

This method projects all surrounding vertices of given vertex in a Surface in the normal direction onto a plane and computes a primary component analysis on the projected vertices. In the next step a orthonormal system is created.

Parameters
indexThe index of the input Vertex in the Surface.
normalThe normal of the input Vertex.
principalComponentsCovarianceMatrix of the principal component analysis.
variancesVariances along the axes of the createt Orthonormal system.
curVertexThe current Vertex in the surface

◆ EnableNormalization()

void mitk::CovarianceMatrixCalculator::EnableNormalization ( bool  state)

Enables/disables the covariance matrix normalization.

Parameters
stateEnables the covariance matrix normalization.

◆ GetCovarianceMatrices()

const CovarianceMatrixList& mitk::CovarianceMatrixCalculator::GetCovarianceMatrices ( ) const

Returns a reference to the CovarianceMatrixList with the computed covariance matrices.

Returns
A CovarianceMatrixList.

◆ GetMeanVariance()

double mitk::CovarianceMatrixCalculator::GetMeanVariance ( ) const

Returns the mean of variance of all computed covariance matrices.

Returns
The mean variance.

◆ mitkClassMacroItkParent()

mitk::CovarianceMatrixCalculator::mitkClassMacroItkParent ( CovarianceMatrixCalculator  ,
itk::Object   
)

◆ New()

static Pointer mitk::CovarianceMatrixCalculator::New ( )
static

◆ SetInputSurface()

void mitk::CovarianceMatrixCalculator::SetInputSurface ( Surface *  input)

Sets the input Surface for which the covariance matrices will be calculated.

Parameters
inputA Surface.

◆ SetVoronoiScalingFator()

void mitk::CovarianceMatrixCalculator::SetVoronoiScalingFator ( const double  factor)

Sets the scaling factor for the voronoi area.

Parameters
factorThe scaling factor.

Member Data Documentation

◆ m_CovarianceMatrixList

CovarianceMatrixList mitk::CovarianceMatrixCalculator::m_CovarianceMatrixList
protected

List that stores the computed covariance matrices.

Definition at line 64 of file mitkCovarianceMatrixCalculator.h.


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