NifTK  16.4.1 - 0798f20
CMIC's Translational Medical Imaging Platform
itkMultiResolutionDeformableImageRegistrationMethod.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 itkMultiResolutionDeformableImageRegistrationMethod_h
16 #define itkMultiResolutionDeformableImageRegistrationMethod_h
17 
19 #include <niftkConversionUtils.h>
20 
21 namespace itk
22 {
23 
31 template <typename TInputImageType, class TScalarType, unsigned int NDimensions, class TDeformationScalar, class TPyramidFilter = itk::RecursiveMultiResolutionPyramidImageFilter< TInputImageType, TInputImageType > >
33  : public MultiResolutionImageRegistrationWrapper<TInputImageType, TPyramidFilter>
34 {
35 public:
39  typedef SmartPointer<Self> Pointer;
40  typedef SmartPointer<const Self> ConstPointer;
41 
43  itkNewMacro(Self);
44 
47 
49  typedef TInputImageType InputImageType;
51  typedef DeformableTransformType* DeformableTransformPointer;
52 
54  itkSetMacro(JacobianImageFileName, std::string);
55  itkGetMacro(JacobianImageFileName, std::string);
56 
58  itkSetMacro(JacobianImageFileExtension, std::string);
59  itkGetMacro(JacobianImageFileExtension, std::string);
60 
65  itkSetMacro(WriteJacobianImageAtEachLevel, bool);
66  itkGetMacro(WriteJacobianImageAtEachLevel, bool);
67 
69  itkSetMacro(VectorImageFileName, std::string);
70  itkGetMacro(VectorImageFileName, std::string);
71 
73  itkSetMacro(VectorImageFileExtension, std::string);
74  itkGetMacro(VectorImageFileExtension, std::string);
75 
80  itkSetMacro(WriteVectorImageAtEachLevel, bool);
81  itkGetMacro(WriteVectorImageAtEachLevel, bool);
82 
84  itkSetMacro(ParameterFileName, std::string);
85  itkGetMacro(ParameterFileName, std::string);
86 
88  itkSetMacro(ParameterFileExt, std::string);
89  itkGetMacro(ParameterFileExt, std::string);
90 
95  itkSetMacro(WriteParametersAtEachLevel, bool);
96  itkGetMacro(WriteParametersAtEachLevel, bool);
97 
100  {
101  this->WriteJacobianImage(this->m_JacobianImageFileName + "." + niftk::ConvertToString((int)this->m_CurrentLevel) + "." + this->m_JacobianImageFileExtension);
102  }
103 
105  virtual void WriteJacobianImage()
106  {
107  this->WriteJacobianImage(this->m_JacobianImageFileName + "." + this->m_JacobianImageFileExtension);
108  }
109 
111  virtual void WriteVectorImageForLevel()
112  {
113  this->WriteVectorImage(this->m_VectorImageFileName + "." + niftk::ConvertToString((int)this->m_CurrentLevel) + "." + this->m_VectorImageFileExtension);
114  }
115 
117  virtual void WriteVectorImage()
118  {
119  this->WriteVectorImage(this->m_VectorImageFileName + "." + this->m_VectorImageFileExtension);
120  }
121 
123  virtual void WriteParametersForLevel()
124  {
125  this->WriteParameters(this->m_ParameterFileName + "." + niftk::ConvertToString((int)this->m_CurrentLevel) + "." + this->m_ParameterFileExt);
126  }
127 
129  virtual void WriteParameters()
130  {
131  this->WriteParameters(this->m_ParameterFileName + "." + this->m_ParameterFileExt);
132  }
133 
134 protected:
137 
139  virtual void WriteJacobianImage(std::string filename);
140 
142  virtual void WriteVectorImage(std::string filename);
143 
145  virtual void WriteParameters(std::string filename);
146 
148  virtual void AfterSingleResolutionRegistration();
149 
150 private:
151  MultiResolutionDeformableImageRegistrationMethod(const Self&); //purposely not implemented
152  void operator=(const Self&); //purposely not implemented
153 
155  std::string m_JacobianImageFileName;
156 
158  std::string m_JacobianImageFileExtension;
159 
161  bool m_WriteJacobianImageAtEachLevel;
162 
164  std::string m_VectorImageFileName;
165 
167  std::string m_VectorImageFileExtension;
168 
170  bool m_WriteVectorImageAtEachLevel;
171 
173  std::string m_ParameterFileName;
174 
176  std::string m_ParameterFileExt;
177 
179  bool m_WriteParametersAtEachLevel;
180 
181 };
182 
183 } // end namespace itk
184 
185 #ifndef ITK_MANUAL_INSTANTIATION
186 #include "itkMultiResolutionDeformableImageRegistrationMethod.txx"
187 #endif
188 
189 #endif
190 
191 
192 
TInputImageType InputImageType
Definition: itkMultiResolutionDeformableImageRegistrationMethod.h:46
SmartPointer< const Self > ConstPointer
Definition: itkMultiResolutionDeformableImageRegistrationMethod.h:40
Base class for deformable transforms.
Definition: itkDeformableTransform.h:69
Definition: niftkITKAffineResampleImage.cxx:74
DeformableTransform< TInputImageType, TScalarType, NDimensions, TDeformationScalar > DeformableTransformType
Definition: itkMultiResolutionDeformableImageRegistrationMethod.h:50
virtual void WriteParameters()
Definition: itkMultiResolutionDeformableImageRegistrationMethod.h:129
DeformableTransformType * DeformableTransformPointer
Definition: itkMultiResolutionDeformableImageRegistrationMethod.h:51
virtual void WriteParametersForLevel()
Definition: itkMultiResolutionDeformableImageRegistrationMethod.h:123
virtual ~MultiResolutionDeformableImageRegistrationMethod()
Definition: itkMultiResolutionDeformableImageRegistrationMethod.h:136
std::string ConvertToString(int x)
Definition: niftkConversionUtils.cxx:26
SmartPointer< Self > Pointer
Definition: itkMultiResolutionDeformableImageRegistrationMethod.h:39
Extends MultiResolutionImageRegistrationWrapper to provide various common methods for FFD and Fluid...
Definition: itkMultiResolutionDeformableImageRegistrationMethod.h:32
MultiResolutionDeformableImageRegistrationMethod Self
Definition: itkMultiResolutionDeformableImageRegistrationMethod.h:37
virtual void WriteJacobianImageForLevel()
Definition: itkMultiResolutionDeformableImageRegistrationMethod.h:99
virtual void WriteJacobianImage()
Definition: itkMultiResolutionDeformableImageRegistrationMethod.h:105
virtual void WriteVectorImageForLevel()
Definition: itkMultiResolutionDeformableImageRegistrationMethod.h:111
MultiResolutionImageRegistrationWrapper< TInputImageType, TPyramidFilter > Superclass
Definition: itkMultiResolutionDeformableImageRegistrationMethod.h:38
virtual void WriteVectorImage()
Definition: itkMultiResolutionDeformableImageRegistrationMethod.h:117
GLsizei const GLcharARB ** string
Definition: glew.h:5194
UCL Base class for multi-resolution image registration methods.
Definition: itkMultiResolutionImageRegistrationWrapper.h:41