Medical Imaging Interaction Toolkit
2018.4.99-389bf124
Medical Imaging Interaction Toolkit
|
This class implements an extension of the weighted point based registration algorithm from A. Danilchenko, R. Balachandran and J. M. Fitzpatrick. More...
#include <mitkWeightedPointTransform.h>
Public Member Functions | |
mitkClassMacroItkParent (WeightedPointTransform, itk::Object) | |
Pointer | Clone () const |
void | ComputeTransformation () |
Method which registers both point sets. More... | |
virtual void | SetThreshold (double _arg) |
Sets the threshold of the registration. Default value is 0.0001. More... | |
virtual void | SetMaxIterations (double _arg) |
Sets the maximum number of iterations of the registration. Default value is 1000. More... | |
virtual int | GetIterations () |
virtual double | GetFRE () |
virtual void | SetFRENormalizationFactor (double _arg) |
Sets the FRE normalization factor. Default value is 1.0. More... | |
virtual double | GetFRENormalizationFactor () |
void | SetMovingPointSet (vtkSmartPointer< vtkPoints > p) |
void | SetCovarianceMatricesMoving (const CovarianceMatrixList &matrices) |
void | SetFixedPointSet (vtkSmartPointer< vtkPoints > p) |
void | SetCovarianceMatricesFixed (const CovarianceMatrixList &matrices) |
const Translation & | GetTransformT () const |
const Rotation & | GetTransformR () const |
Static Public Member Functions | |
static Pointer | New () |
Protected Member Functions | |
WeightedPointTransform () | |
~WeightedPointTransform () override | |
void | C_maker (vtkPoints *X, const WeightMatrixList &W, itk::VariableSizeMatrix< double > &returnValue) |
void | E_maker (vtkPoints *X, vtkPoints *Y, const WeightMatrixList &W, vnl_vector< double > &returnValue) |
double | CalculateConfigChange (vtkPoints *X, vtkPoints *X_new) |
void | WeightedPointRegister (vtkPoints *X, vtkPoints *Y, const CovarianceMatrixList &Sigma_X, const CovarianceMatrixList &Sigma_Y, double Threshold, int MaxIterations, Rotation &TransformationR, Translation &TransformationT, double &FRE, int &n) |
This method performs a variant of the weighted point register algorithm presented by A. Danilchenko, R. Balachandran and J. M. Fitzpatrick in January 2010. (Modified in January 2011) converted to C++ by Alfred Franz in March/April 2010. More... | |
Protected Attributes | |
double | m_Threshold |
int | m_MaxIterations |
int | m_Iterations |
double | m_FRE |
double | m_FRENormalizationFactor |
vtkSmartPointer< vtkLandmarkTransform > | m_LandmarkTransform |
vtkSmartPointer< vtkPoints > | m_FixedPointSet |
vtkSmartPointer< vtkPoints > | m_MovingPointSet |
CovarianceMatrixList | m_CovarianceMatricesMoving |
CovarianceMatrixList | m_CovarianceMatricesFixed |
Translation | m_Translation |
Rotation | m_Rotation |
This class implements an extension of the weighted point based registration algorithm from A. Danilchenko, R. Balachandran and J. M. Fitzpatrick.
The class implements an extension of the weighted point based registration from A. Danilchenko et al. presented by L. Maier-Hein et al. in "Convergent Iterative Closest-Point Algorithm to Accomodate Anisotropic and Inhomogenous Localization Error.", IEEE T Pattern Anal 34 (8), 1520-1532, 2012. The extension computes, in order to ensure the convergence of the algorithm, an isotropic estimation by an unweighted point based registration algorithm as an initial estimate. The implemantion was originally ported to C/C++ by A. Franz.
Definition at line 52 of file mitkWeightedPointTransform.h.
|
protected |
Definition at line 47 of file mitkWeightedPointTransform.cpp.
|
overrideprotected |
Definition at line 57 of file mitkWeightedPointTransform.cpp.
References m_FixedPointSet, m_LandmarkTransform, and m_MovingPointSet.
|
protected |
original matlab-function:
Constructs the C matrix of the linear version of the registration problem, Cq = e, where q = [delta_angle(1:3),delta_translation(1:3)] and e is produced by e_maker(X,Y,W)
Authors: JM Fitzpatrick and R Balachandran Creation: February 2009
converted to C++ by Alfred Franz in March/April 2010
Definition at line 164 of file mitkWeightedPointTransform.cpp.
Referenced by WeightedPointRegister().
|
protected |
This method computes the change in a root mean squared sense between the previous and the actual iteration. The computed value is used as a termination constraint of the algorithm and compared against the threshold.
X | The moving point set in the previous iteration step. |
X_new | The moving point set in the actual step. |
Definition at line 414 of file mitkWeightedPointTransform.cpp.
References ls.
Referenced by WeightedPointRegister().
Pointer mitk::WeightedPointTransform::Clone | ( | ) | const |
void mitk::WeightedPointTransform::ComputeTransformation | ( | ) |
Method which registers both point sets.
Definition at line 64 of file mitkWeightedPointTransform.cpp.
References m_CovarianceMatricesFixed, m_CovarianceMatricesMoving, m_FixedPointSet, m_FRE, m_Iterations, m_MaxIterations, m_MovingPointSet, m_Rotation, m_Threshold, m_Translation, and WeightedPointRegister().
|
protected |
original matlab-function:
Constructs the e vector of the linear version of the registration problem, Cq = e, where q = [delta_angle(1:3),delta_translation(1:3)] and C is produced by C_maker(X,W)
Authors: JM Fitzpatrick and R Balachandran Creation: February 2009
converted to C++ by Alfred Franz in March/April 2010
Definition at line 188 of file mitkWeightedPointTransform.cpp.
Referenced by WeightedPointRegister().
|
virtual |
|
virtual |
|
virtual |
|
inline |
The rotation matrix computed by the algorithm.
Definition at line 130 of file mitkWeightedPointTransform.h.
|
inline |
The translation vector computed by the algorithm.
Definition at line 126 of file mitkWeightedPointTransform.h.
mitk::WeightedPointTransform::mitkClassMacroItkParent | ( | WeightedPointTransform | , |
itk::Object | |||
) |
|
static |
void mitk::WeightedPointTransform::SetCovarianceMatricesFixed | ( | const CovarianceMatrixList & | matrices | ) |
Set the list of 3x3 covariance matrices belonging to the fixed point set.
matrices | List of covariance matrices. |
Definition at line 409 of file mitkWeightedPointTransform.cpp.
References m_CovarianceMatricesFixed.
void mitk::WeightedPointTransform::SetCovarianceMatricesMoving | ( | const CovarianceMatrixList & | matrices | ) |
Set the list of 3x3 covariance matrices belonging to the moving point set.
matrices | List of covariance matrices. |
Definition at line 399 of file mitkWeightedPointTransform.cpp.
References m_CovarianceMatricesMoving.
void mitk::WeightedPointTransform::SetFixedPointSet | ( | vtkSmartPointer< vtkPoints > | p | ) |
Sets the fixed point set used for the registration.
p | The input point set. |
Definition at line 404 of file mitkWeightedPointTransform.cpp.
References m_FixedPointSet.
|
virtual |
Sets the FRE normalization factor. Default value is 1.0.
|
virtual |
Sets the maximum number of iterations of the registration. Default value is 1000.
void mitk::WeightedPointTransform::SetMovingPointSet | ( | vtkSmartPointer< vtkPoints > | p | ) |
Sets the moving point set used for the registration.
p | The input point set. |
Definition at line 394 of file mitkWeightedPointTransform.cpp.
References m_MovingPointSet.
|
virtual |
Sets the threshold of the registration. Default value is 0.0001.
|
protected |
This method performs a variant of the weighted point register algorithm presented by A. Danilchenko, R. Balachandran and J. M. Fitzpatrick in January 2010. (Modified in January 2011) converted to C++ by Alfred Franz in March/April 2010.
X | (input) the moving point set |
Y | (input) the fixed (static) point set |
Sigma_X | (input) a 3-by-3-by-N array, each page containing the weighting matrix for the Nth pair of points in X |
Sigma_Y | (input) a 3-by-3-by-N array, each page containing the weighting matrix for the Nth pair of points in Y |
Threshold | (input) the relative size of the change to the moving set above which the iteration continues |
MaxIterations | (input) the maximum number of iterations allowed |
Threshold | (input) the threshold used to terminate the algorithm |
TransformationR | (output) this variable will hold the computed rotation matrix |
TransformationT | (output) this variable will hold the computed translation vector |
FRE | (output) this variable will hold the computed rotation FRE of the transformation |
n | (output) this variable will hold the number of iterations used by the algorithm |
Definition at line 221 of file mitkWeightedPointTransform.cpp.
References C_maker(), CalculateConfigChange(), calculateWeightMatrices(), ComputeWeightedFRE(), E_maker(), IsotropicRegistration(), m_FRENormalizationFactor, m_LandmarkTransform, max(), MITK_DEBUG, MITK_WARN, and mitk::AnisotropicRegistrationCommon::TransformPoints().
Referenced by ComputeTransformation().
|
protected |
Covariance matrices of the moving point set (Sigma_Y).
Definition at line 163 of file mitkWeightedPointTransform.h.
Referenced by ComputeTransformation(), and SetCovarianceMatricesFixed().
|
protected |
Covariance matrices of the moving point set (Sigma_X).
Definition at line 160 of file mitkWeightedPointTransform.h.
Referenced by ComputeTransformation(), and SetCovarianceMatricesMoving().
|
protected |
The fixed point set (Y).
Definition at line 154 of file mitkWeightedPointTransform.h.
Referenced by ComputeTransformation(), SetFixedPointSet(), and ~WeightedPointTransform().
|
protected |
The fiducial registration error (FRE) used in the algorithm.
Definition at line 145 of file mitkWeightedPointTransform.h.
Referenced by ComputeTransformation().
|
protected |
Normalization factor for the FRE.
Definition at line 148 of file mitkWeightedPointTransform.h.
Referenced by WeightedPointRegister().
|
protected |
The amount of iterations needed by the algorithm.
Definition at line 142 of file mitkWeightedPointTransform.h.
Referenced by ComputeTransformation().
|
protected |
Isotropic point based registration used for initial estimate.
Definition at line 151 of file mitkWeightedPointTransform.h.
Referenced by WeightedPointRegister(), and ~WeightedPointTransform().
|
protected |
Max allowed iterations used by the algorithm.
Definition at line 139 of file mitkWeightedPointTransform.h.
Referenced by ComputeTransformation().
|
protected |
Moving point set (X).
Definition at line 157 of file mitkWeightedPointTransform.h.
Referenced by ComputeTransformation(), SetMovingPointSet(), and ~WeightedPointTransform().
|
protected |
3x3 rotation matrix.
Definition at line 169 of file mitkWeightedPointTransform.h.
Referenced by ComputeTransformation().
|
protected |
Threshold used to terminate the algorithm.
Definition at line 136 of file mitkWeightedPointTransform.h.
Referenced by ComputeTransformation().
|
protected |
3x1 translation vector.
Definition at line 166 of file mitkWeightedPointTransform.h.
Referenced by ComputeTransformation().