Medical Imaging Interaction Toolkit  2024.06.00
Medical Imaging Interaction Toolkit
mitkAnisotropicIterativeClosestPointRegistration.h
Go to the documentation of this file.
1 /*============================================================================
2 
3 The Medical Imaging Interaction Toolkit (MITK)
4 
5 Copyright (c) German Cancer Research Center (DKFZ)
6 All rights reserved.
7 
8 Use of this source code is governed by a 3-clause BSD license that can be
9 found in the LICENSE file.
10 
11 ============================================================================*/
12 
13 #ifndef mitkAnisotropicIterativeClosestPointRegistration_h
14 #define mitkAnisotropicIterativeClosestPointRegistration_h
15 
16 // MITK
17 #include <mitkCommon.h>
18 #include <mitkVector.h>
19 
20 // EXPORTS
22 
23 // STL
24 #include <vector>
25 
26 // ITK
27 #include <itkMatrix.h>
28 
29 // forward declarations
30 class vtkPoints;
31 class vtkKdTreePointLocator;
32 
33 namespace mitk
34 {
35  class Surface;
36  class WeightedPointTransform;
37 
115  {
116  protected:
118  typedef itk::Matrix<double, 3, 3> CovarianceMatrix;
120  typedef std::vector<CovarianceMatrix> CovarianceMatrixList;
126  typedef std::pair<unsigned int, double> Correspondence;
128  typedef std::vector<Correspondence> CorrespondenceList;
129 
132 
134  unsigned int m_MaxIterations;
135 
137  double m_Threshold;
138 
141 
144 
149 
151  double m_FRE;
152 
155 
157  unsigned int m_NumberOfIterations;
158 
163 
166 
169 
172 
177 
200  void ComputeCorrespondences(vtkPoints *X,
201  vtkPoints *Z,
202  vtkKdTreePointLocator *Y,
203  const CovarianceMatrixList &sigma_X,
204  const CovarianceMatrixList &sigma_Y,
205  CovarianceMatrixList &sigma_Z,
206  CorrespondenceList &correspondences,
207  const double radius);
208 
209  public:
211  itkFactorylessNewMacro(Self);
212  itkCloneMacro(Self);
213 
215  itkSetMacro(MaxIterations, unsigned int);
216 
218  itkSetMacro(Threshold, double);
219 
232  itkSetMacro(FRENormalizationFactor, double);
233 
235  itkSetMacro(SearchRadius, double);
236 
240  itkSetMacro(MaxIterationsInWeightedPointTransform, double);
241 
243  itkGetMacro(FRE, double);
244 
246  itkGetMacro(NumberOfIterations, unsigned int);
247 
254  itkSetMacro(TrimmFactor, double);
255 
259  itkSetMacro(MovingSurface, itk::SmartPointer<Surface>);
260 
264  itkSetMacro(FixedSurface, itk::SmartPointer<Surface>);
265 
269  itkGetConstReferenceMacro(Translation, Translation);
270 
274  itkGetConstReferenceMacro(Rotation, Rotation);
275 
284  {
285  m_CovarianceMatricesMovingSurface = list;
286  }
287 
295  void SetCovarianceMatricesFixedSurface(CovarianceMatrixList &list) { m_CovarianceMatricesFixedSurface = list; }
306  void Update();
307  };
308 }
309 #endif
mitk::AnisotropicIterativeClosestPointRegistration::CorrespondenceList
std::vector< Correspondence > CorrespondenceList
Definition: mitkAnisotropicIterativeClosestPointRegistration.h:128
mitk::AnisotropicIterativeClosestPointRegistration::CovarianceMatrix
itk::Matrix< double, 3, 3 > CovarianceMatrix
Definition: mitkAnisotropicIterativeClosestPointRegistration.h:118
mitk::AnisotropicIterativeClosestPointRegistration::m_MaxIterations
unsigned int m_MaxIterations
Definition: mitkAnisotropicIterativeClosestPointRegistration.h:134
mitk::AnisotropicIterativeClosestPointRegistration::Correspondence
std::pair< unsigned int, double > Correspondence
Definition: mitkAnisotropicIterativeClosestPointRegistration.h:126
mitk::AnisotropicIterativeClosestPointRegistration::m_FRE
double m_FRE
Definition: mitkAnisotropicIterativeClosestPointRegistration.h:151
mitk::AnisotropicIterativeClosestPointRegistration::m_Threshold
double m_Threshold
Definition: mitkAnisotropicIterativeClosestPointRegistration.h:137
mitk::AnisotropicIterativeClosestPointRegistration::m_FRENormalizationFactor
double m_FRENormalizationFactor
Definition: mitkAnisotropicIterativeClosestPointRegistration.h:140
mitk::AnisotropicIterativeClosestPointRegistration::Translation
mitk::Vector3D Translation
Definition: mitkAnisotropicIterativeClosestPointRegistration.h:122
itk::SmartPointer
Definition: mitkIFileReader.h:30
MitkAlgorithmsExtExports.h
MITKALGORITHMSEXT_EXPORT
#define MITKALGORITHMSEXT_EXPORT
Definition: MitkAlgorithmsExtExports.h:15
mitk::AnisotropicIterativeClosestPointRegistration::CovarianceMatrixList
std::vector< CovarianceMatrix > CovarianceMatrixList
Definition: mitkAnisotropicIterativeClosestPointRegistration.h:120
mitkClassMacroItkParent
#define mitkClassMacroItkParent(className, SuperClassName)
Definition: mitkCommon.h:45
mitk::AnisotropicIterativeClosestPointRegistration::m_NumberOfIterations
unsigned int m_NumberOfIterations
Definition: mitkAnisotropicIterativeClosestPointRegistration.h:157
mitk
Find image slices visible on a given plane.
Definition: RenderingTests.dox:1
mitk::Vector< ScalarType, 3 >
mitk::AnisotropicIterativeClosestPointRegistration::SetCovarianceMatricesMovingSurface
void SetCovarianceMatricesMovingSurface(CovarianceMatrixList &list)
Definition: mitkAnisotropicIterativeClosestPointRegistration.h:283
mitk::AnisotropicIterativeClosestPointRegistration::m_SearchRadius
double m_SearchRadius
Definition: mitkAnisotropicIterativeClosestPointRegistration.h:143
mitk::AnisotropicIterativeClosestPointRegistration::m_FixedSurface
itk::SmartPointer< Surface > m_FixedSurface
Definition: mitkAnisotropicIterativeClosestPointRegistration.h:162
mitkCommon.h
mitk::AnisotropicIterativeClosestPointRegistration::m_MaxIterationsInWeightedPointTransform
double m_MaxIterationsInWeightedPointTransform
Definition: mitkAnisotropicIterativeClosestPointRegistration.h:148
mitk::AnisotropicIterativeClosestPointRegistration::SetCovarianceMatricesFixedSurface
void SetCovarianceMatricesFixedSurface(CovarianceMatrixList &list)
Definition: mitkAnisotropicIterativeClosestPointRegistration.h:295
mitk::AnisotropicIterativeClosestPointRegistration::Rotation
CovarianceMatrix Rotation
Definition: mitkAnisotropicIterativeClosestPointRegistration.h:124
mitk::AnisotropicIterativeClosestPointRegistration::m_Translation
Translation m_Translation
Definition: mitkAnisotropicIterativeClosestPointRegistration.h:174
mitk::AnisotropicIterativeClosestPointRegistration::m_MovingSurface
itk::SmartPointer< Surface > m_MovingSurface
Definition: mitkAnisotropicIterativeClosestPointRegistration.h:160
mitk::AnisotropicIterativeClosestPointRegistration::m_CovarianceMatricesFixedSurface
CovarianceMatrixList m_CovarianceMatricesFixedSurface
Definition: mitkAnisotropicIterativeClosestPointRegistration.h:171
mitk::AnisotropicIterativeClosestPointRegistration::m_WeightedPointTransform
itk::SmartPointer< WeightedPointTransform > m_WeightedPointTransform
Definition: mitkAnisotropicIterativeClosestPointRegistration.h:165
mitkVector.h
mitk::AnisotropicIterativeClosestPointRegistration::m_TrimmFactor
double m_TrimmFactor
Definition: mitkAnisotropicIterativeClosestPointRegistration.h:154
mitk::AnisotropicIterativeClosestPointRegistration::m_CovarianceMatricesMovingSurface
CovarianceMatrixList m_CovarianceMatricesMovingSurface
Definition: mitkAnisotropicIterativeClosestPointRegistration.h:168
mitk::AnisotropicIterativeClosestPointRegistration::m_Rotation
Rotation m_Rotation
Definition: mitkAnisotropicIterativeClosestPointRegistration.h:176
mitk::AnisotropicIterativeClosestPointRegistration
Implementation of the anisotropic iterative closest point (A-ICP) algorithm.
Definition: mitkAnisotropicIterativeClosestPointRegistration.h:114