Medical Imaging Interaction Toolkit  2016.11.0
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,
6 Division of Medical and Biological Informatics.
7 All rights reserved.
8 
9 This software is distributed WITHOUT ANY WARRANTY; without
10 even the implied warranty of MERCHANTABILITY or FITNESS FOR
11 A PARTICULAR PURPOSE.
12 
13 See LICENSE.txt or http://www.mitk.org for details.
14 
15 ===================================================================*/
16 
17 #ifndef __ANISOTROPICITERATIVECLOSESTPOINTREGISTRATION_H__
18 #define __ANISOTROPICITERATIVECLOSESTPOINTREGISTRATION_H__
19 
20 // MITK
21 #include <mitkCommon.h>
22 #include <mitkVector.h>
23 
24 // EXPORTS
26 
27 // STL
28 #include <vector>
29 
30 // ITK
31 #include <itkMatrix.h>
32 
33 // forward declarations
34 class vtkPoints;
35 class vtkKdTreePointLocator;
36 
37 namespace mitk
38 {
39  class Surface;
40  class WeightedPointTransform;
41 
119  {
120  protected:
122  typedef itk::Matrix<double, 3, 3> CovarianceMatrix;
124  typedef std::vector<CovarianceMatrix> CovarianceMatrixList;
128  typedef CovarianceMatrix Rotation;
130  typedef std::pair<unsigned int, double> Correspondence;
132  typedef std::vector<Correspondence> CorrespondenceList;
133 
136 
138  unsigned int m_MaxIterations;
139 
141  double m_Threshold;
142 
145 
148 
153 
155  double m_FRE;
156 
159 
161  unsigned int m_NumberOfIterations;
162 
167 
170 
172  CovarianceMatrixList m_CovarianceMatricesMovingSurface;
173 
175  CovarianceMatrixList m_CovarianceMatricesFixedSurface;
176 
178  Translation m_Translation;
180  Rotation m_Rotation;
181 
204  void ComputeCorrespondences(vtkPoints *X,
205  vtkPoints *Z,
206  vtkKdTreePointLocator *Y,
207  const CovarianceMatrixList &sigma_X,
208  const CovarianceMatrixList &sigma_Y,
209  CovarianceMatrixList &sigma_Z,
210  CorrespondenceList &correspondences,
211  const double radius);
212 
213  public:
214  mitkClassMacroItkParent(AnisotropicIterativeClosestPointRegistration, itk::Object) itkFactorylessNewMacro(Self)
215  itkCloneMacro(Self)
216 
218  itkSetMacro(MaxIterations, unsigned int)
219 
221  itkSetMacro(Threshold, double)
222 
235  itkSetMacro(FRENormalizationFactor, double)
236 
238  itkSetMacro(SearchRadius, double)
239 
243  itkSetMacro(MaxIterationsInWeightedPointTransform, double)
244 
246  itkGetMacro(FRE, double)
247 
249  itkGetMacro(NumberOfIterations, unsigned int)
250 
257  itkSetMacro(TrimmFactor, double)
258 
262  itkSetMacro(MovingSurface, itk::SmartPointer<Surface>)
263 
267  itkSetMacro(FixedSurface, itk::SmartPointer<Surface>)
268 
272  itkGetConstReferenceMacro(Translation, Translation)
273 
277  itkGetConstReferenceMacro(Rotation, Rotation)
278 
286  void SetCovarianceMatricesMovingSurface(CovarianceMatrixList &list)
287  {
288  m_CovarianceMatricesMovingSurface = list;
289  }
290 
298  void SetCovarianceMatricesFixedSurface(CovarianceMatrixList &list) { m_CovarianceMatricesFixedSurface = list; }
309  void Update();
310  };
311 }
312 #endif
Implementation of the anisotropic iterative closest point (A-ICP) algoritm.
Class for storing surfaces (vtkPolyData).
Definition: mitkSurface.h:32
static void Update(vtkPolyData *)
Definition: mitkSurface.cpp:35
DataCollection - Class to facilitate loading/accessing structured data.
#define MITKALGORITHMSEXT_EXPORT
#define mitkClassMacroItkParent(className, SuperClassName)
Definition: mitkCommon.h:53