NifTK  16.4.1 - 0798f20
CMIC's Translational Medical Imaging Platform
itkMultiStageImageRegistrationMethod.h
Go to the documentation of this file.
1 /*=============================================================================
2 
3  NifTK: A software platform for medical image computing.
4 
5  Copyright (c) University College London (UCL). All rights reserved.
6 
7  This software is distributed WITHOUT ANY WARRANTY; without even
8  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
9  PURPOSE.
10 
11  See LICENSE.txt in the top level directory for details.
12 
13 =============================================================================*/
14 
15 #ifndef itkMultiStageImageRegistrationMethod_h
16 #define itkMultiStageImageRegistrationMethod_h
17 
18 
20 #include <itkImageToImageMetric.h>
23 
24 namespace itk
25 {
26 
45 template <typename TInputImageType>
47 : public MaskedImageRegistrationMethod<TInputImageType>
48 {
49 public:
50 
54  typedef SmartPointer<Self> Pointer;
55  typedef SmartPointer<const Self> ConstPointer;
56 
58  itkNewMacro(Self);
59 
62 
64  typedef ImageToImageMetric< TInputImageType,
65  TInputImageType > MetricType;
66  typedef typename MetricType::TransformParametersType ParametersType;
67  typedef typename MetricType::DerivativeType DerivativeType;
68 
70  typedef itk::EulerAffineTransform<double,
71  TInputImageType::ImageDimension,
72  TInputImageType::ImageDimension> TransformType;
73  typedef TransformType* TransformPointer;
74 
77  typedef OptimizerType* OptimizerPointer;
78  typedef OptimizerType::ScalesType ScalesType;
79 
80 
81 protected:
82 
85  void PrintSelf(std::ostream& os, Indent indent) const;
86 
88  virtual void DoRegistration() throw (ExceptionObject);
89 
91  virtual void DoMultiStageRegistration(OptimizerPointer optimizer, TransformPointer transform) throw (ExceptionObject) {};
92 
94  itkSetMacro( LoopTolerance, double );
95  itkGetMacro( LoopTolerance, double );
96 
98  itkSetMacro( MaxNumberOfLoops, unsigned int );
99  itkGetMacro( MaxNumberOfLoops, unsigned int );
100 
102  itkSetMacro( LoopStepSizeReductionFactor, double);
103  itkGetMacro( LoopStepSizeReductionFactor, double);
104 
105 private:
106 
107  MultiStageImageRegistrationMethod(const Self&); // purposefully not implemented
108  void operator=(const Self&); // purposefully not implemented
109 
111  unsigned int m_MaxNumberOfLoops;
112 
114  double m_LoopTolerance;
115 
117  double m_LoopStepSizeReductionFactor;
118 };
119 
120 
121 } // end namespace itk
122 
123 #ifndef ITK_MANUAL_INSTANTIATION
124 #include "itkMultiStageImageRegistrationMethod.txx"
125 #endif
126 
127 #endif
128 
129 
130 
MaskedImageRegistrationMethod< TInputImageType > Superclass
Definition: itkMultiStageImageRegistrationMethod.h:53
SmartPointer< const Self > ConstPointer
Definition: itkMultiStageImageRegistrationMethod.h:55
Base class for NifTK Image Registration Methods employing a binary mask.
Definition: itkMaskedImageRegistrationMethod.h:55
Definition: niftkITKAffineResampleImage.cxx:74
OptimizerType::ScalesType ScalesType
Definition: itkMultiStageImageRegistrationMethod.h:78
OptimizerType * OptimizerPointer
Definition: itkMultiStageImageRegistrationMethod.h:77
GLuint GLenum GLenum transform
Definition: glew.h:12775
Euler Affine transform.
Definition: itkEulerAffineTransform.h:38
TransformType * TransformPointer
Definition: itkMultiStageImageRegistrationMethod.h:73
MetricType::TransformParametersType ParametersType
Definition: itkMultiStageImageRegistrationMethod.h:66
Implement a Regular Step Size optimizer.
Definition: itkUCLRegularStepOptimizer.h:32
UCLRegularStepOptimizer OptimizerType
Definition: itkMultiStageImageRegistrationMethod.h:76
virtual ~MultiStageImageRegistrationMethod()
Definition: itkMultiStageImageRegistrationMethod.h:84
SmartPointer< Self > Pointer
Definition: itkMultiStageImageRegistrationMethod.h:54
ImageToImageMetric< TInputImageType, TInputImageType > MetricType
Definition: itkMultiStageImageRegistrationMethod.h:61
MetricType::DerivativeType DerivativeType
Definition: itkMultiStageImageRegistrationMethod.h:67
Base Class specifically for doing multiple stage registrations.
Definition: itkMultiStageImageRegistrationMethod.h:46
MultiStageImageRegistrationMethod Self
Definition: itkMultiStageImageRegistrationMethod.h:52
itk::EulerAffineTransform< double, TInputImageType::ImageDimension, TInputImageType::ImageDimension > TransformType
Definition: itkMultiStageImageRegistrationMethod.h:72