13 #ifndef mitkWeightedPointTransform_h
14 #define mitkWeightedPointTransform_h
20 #include <itkMatrix.h>
21 #include <itkVariableSizeMatrix.h>
25 #include <vtkSmartPointer.h>
29 class vtkLandmarkTransform;
55 typedef itk::Matrix<double, 3, 3> Matrix3x3;
57 typedef Matrix3x3 WeightMatrix;
59 typedef Matrix3x3 Rotation;
61 typedef itk::Vector<double, 3> Translation;
63 typedef std::vector<WeightMatrix> WeightMatrixList;
65 typedef std::vector<Matrix3x3> CovarianceMatrixList;
69 itkFactorylessNewMacro(Self);
73 void ComputeTransformation();
76 itkSetMacro(Threshold,
double);
81 itkSetMacro(MaxIterations,
double);
87 itkGetMacro(Iterations,
int);
92 itkGetMacro(FRE,
double);
95 itkSetMacro(FRENormalizationFactor,
double);
98 itkGetMacro(FRENormalizationFactor,
double);
109 void SetCovarianceMatricesMoving(
const CovarianceMatrixList &matrices);
120 void SetCovarianceMatricesFixed(
const CovarianceMatrixList &matrices);
185 void C_maker(vtkPoints *X,
const WeightMatrixList &W, itk::VariableSizeMatrix<double> &returnValue);
201 void E_maker(vtkPoints *X, vtkPoints *Y,
const WeightMatrixList &W, vnl_vector<double> &returnValue);
214 double CalculateConfigChange(vtkPoints *X, vtkPoints *X_new);
235 void WeightedPointRegister(vtkPoints *X,
237 const CovarianceMatrixList &Sigma_X,
238 const CovarianceMatrixList &Sigma_Y,
241 Rotation &TransformationR,
242 Translation &TransformationT,