Medical Imaging Interaction Toolkit  2023.12.00
Medical Imaging Interaction Toolkit
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
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) algoritm.
Definition: mitkAnisotropicIterativeClosestPointRegistration.h:114