go home Home | Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages
elxTransformBase.h
Go to the documentation of this file.
1 /*=========================================================================
2  *
3  * Copyright UMC Utrecht and contributors
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0.txt
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  *=========================================================================*/
18 #ifndef __elxTransformBase_h
19 #define __elxTransformBase_h
20 
22 #include "elxMacro.h"
23 
24 #include "elxBaseComponentSE.h"
25 #include "itkAdvancedTransform.h"
27 #include "elxComponentDatabase.h"
28 #include "elxProgressCommand.h"
29 
30 #include <fstream>
31 #include <iomanip>
32 
33 namespace elastix
34 {
35 //using namespace itk; //Not here, because a TransformBase class was added to ITK...
36 
130 template< class TElastix >
132  public BaseComponentSE< TElastix >
133 {
134 public:
135 
139 
141  itkTypeMacro( TransformBase, BaseComponentSE );
142 
148  typedef typename ConfigurationType
149  ::CommandLineArgumentMapType CommandLineArgumentMapType;
150  typedef typename ConfigurationType
151  ::CommandLineEntryType CommandLineEntryType;
154 
156  typedef typename ElastixType::CoordRepType CoordRepType;
157  typedef typename ElastixType::FixedImageType FixedImageType;
158  typedef typename ElastixType::MovingImageType MovingImageType;
159 
164 
167 
169  itkStaticConstMacro( FixedImageDimension,
170  unsigned int, FixedImageType::ImageDimension );
171 
173  itkStaticConstMacro( MovingImageDimension,
174  unsigned int, MovingImageType::ImageDimension );
175 
177  typedef itk::Object ObjectType;
178  typedef itk::AdvancedTransform<
179  CoordRepType,
180  itkGetStaticConstMacro( FixedImageDimension ),
181  itkGetStaticConstMacro( MovingImageDimension ) > ITKBaseType;
183  itkGetStaticConstMacro( FixedImageDimension ) > CombinationTransformType;
184  typedef typename
186 
189  typedef typename ParametersType::ValueType ValueType;
190 
194 
196  typedef itk::Vector<
197  float, FixedImageDimension > VectorPixelType;
198  typedef itk::Image<
200 
202  typedef typename RegistrationType::ITKBaseType ITKRegistrationType;
203  typedef typename ITKRegistrationType::OptimizerType OptimizerType;
204  typedef typename OptimizerType::ScalesType ScalesType;
205 
207  typedef typename ElastixType::ParameterMapType ParameterMapType;
208 
210  virtual ITKBaseType * GetAsITKBaseType( void )
211  {
212  return dynamic_cast< ITKBaseType * >( this );
213  }
214 
215 
217  virtual const ITKBaseType * GetAsITKBaseType( void ) const
218  {
219  return dynamic_cast< const ITKBaseType * >( this );
220  }
221 
222 
224  {
225  return dynamic_cast< const CombinationTransformType * >( this );
226  }
227 
228 
230  {
231  return dynamic_cast< CombinationTransformType * >( this );
232  }
233 
234 
238  virtual int BeforeAllBase( void );
239 
243  virtual int BeforeAllTransformix( void );
244 
248  virtual void BeforeRegistrationBase( void );
249 
253  virtual void AfterRegistrationBase( void );
254 
256  virtual const InitialTransformType * GetInitialTransform( void ) const;
257 
260 
262  virtual void SetTransformParametersFileName( const char * filename );
263 
265  itkGetStringMacro( TransformParametersFileName );
266 
268  virtual void ReadFromFile( void );
269 
272  const ParametersType & param, ParameterMapType * paramsMap ) const;
273 
275  virtual void WriteToFile( const ParametersType & param ) const;
276 
278  virtual void WriteToFile( void ) const;
279 
281  virtual void SetReadWriteTransformParameters( const bool _arg );
282 
285  const char * transformParameterFileName );
286 
290  virtual void ReadInitialTransformFromVector( const size_t index );
291 
293  virtual void TransformPoints( void ) const;
294 
296  virtual void TransformPointsSomePoints( const std::string filename ) const;
297 
299  virtual void TransformPointsSomePointsVTK( const std::string filename ) const;
300 
308  typename DeformationFieldImageType::Pointer GenerateDeformationFieldImage( void ) const;
309 
310  void WriteDeformationFieldImage( typename DeformationFieldImageType::Pointer ) const;
311 
313  virtual void TransformPointsAllPoints(void) const;
314 
316  virtual void ComputeDeterminantOfSpatialJacobian( void ) const;
317 
319  virtual void ComputeSpatialJacobian( void ) const;
320 
324  virtual void SetFinalParameters( void );
325 
326 protected:
327 
331  virtual ~TransformBase();
332 
339  void AutomaticScalesEstimation( ScalesType & scales ) const;
340 
349  const unsigned int & numSubTransforms, ScalesType & scales ) const;
350 
355 
356 private:
357 
359  TransformBase( const Self & ); // purposely not implemented
361  void operator=( const Self & ); // purposely not implemented
362 
365 
366  std::string GetInitialTransformParametersFileName( void ) const
367  {
368  if( !this->GetInitialTransform() )
369  {
370  return "NoInitialTransform";
371  }
372 
373  const Self * t0 = dynamic_cast<const Self *>( this->GetInitialTransform() );
374  return t0->GetTransformParametersFileName();
375  }
376 
377 };
378 
379 } // end namespace elastix
380 
381 #ifndef ITK_MANUAL_INSTANTIATION
382 #include "elxTransformBase.hxx"
383 #endif
384 
385 #endif // end #ifndef __elxTransformBase_h
elastix::TransformBase::SetFinalParameters
virtual void SetFinalParameters(void)
elastix::TransformBase::SetInitialTransform
virtual void SetInitialTransform(InitialTransformType *_arg)
elastix::TransformBase::GenerateDeformationFieldImage
DeformationFieldImageType::Pointer GenerateDeformationFieldImage(void) const
elastix::TransformBase::DeformationFieldImageType
itk::Image< VectorPixelType, FixedImageDimension > DeformationFieldImageType
Definition: elxTransformBase.h:199
itk::AdvancedTransform::OutputPointType
Superclass::OutputPointType OutputPointType
Definition: itkAdvancedTransform.h:125
elastix::TransformBase::ReadInitialTransformFromVector
virtual void ReadInitialTransformFromVector(const vcl_size_t index)
elastix::TransformBase::AutomaticScalesEstimation
void AutomaticScalesEstimation(ScalesType &scales) const
elastix::TransformBase::m_FinalParameters
ParametersType m_FinalParameters
Definition: elxTransformBase.h:354
elastix::TransformBase::ReadFromFile
virtual void ReadFromFile(void)
elastix::TransformBase::TransformBase
TransformBase(const Self &)
elastix::TransformBase::ProgressCommandType
elx::ProgressCommand ProgressCommandType
Definition: elxTransformBase.h:166
itkAdvancedTransform.h
elastix::TransformBase::ComponentDescriptionType
ComponentDatabaseType::ComponentDescriptionType ComponentDescriptionType
Definition: elxTransformBase.h:162
elastix::TransformBase::Self
TransformBase Self
Definition: elxTransformBase.h:137
elastix::ProgressCommand
A specialized Command object for updating the progress of a filter.
Definition: elxProgressCommand.h:91
elastix::TransformBase::FixedImageType
ElastixType::FixedImageType FixedImageType
Definition: elxTransformBase.h:157
elastix::TransformBase::BeforeAllBase
virtual int BeforeAllBase(void)
itk::AdvancedTransform::InputPointType
Superclass::InputPointType InputPointType
Definition: itkAdvancedTransform.h:124
elastix::TransformBase::TransformBase
TransformBase()
elastix::TransformBase::TransformPointsSomePointsVTK
virtual void TransformPointsSomePointsVTK(const std::string filename) const
elastix::TransformBase::GetTransformParametersFileName
virtual const char * GetTransformParametersFileName() const
elastix::TransformBase::PtrToCreator
ComponentDatabase::PtrToCreator PtrToCreator
Definition: elxTransformBase.h:163
elastix::TransformBase::CoordRepType
ElastixType::CoordRepType CoordRepType
Definition: elxTransformBase.h:156
elastix::TransformBase::itkStaticConstMacro
itkStaticConstMacro(MovingImageDimension, unsigned int, MovingImageType::ImageDimension)
elastix::TransformBase::RegistrationPointer
Superclass::RegistrationPointer RegistrationPointer
Definition: elxTransformBase.h:153
elastix::TransformBase::InitialTransformType
CombinationTransformType::InitialTransformType InitialTransformType
Definition: elxTransformBase.h:185
elastix::TransformBase::ParametersType
ITKBaseType::ParametersType ParametersType
Definition: elxTransformBase.h:188
itkAdvancedCombinationTransform.h
elastix::TransformBase::ComputeSpatialJacobian
virtual void ComputeSpatialJacobian(void) const
elastix::TransformBase::CommandLineArgumentMapType
ConfigurationType ::CommandLineArgumentMapType CommandLineArgumentMapType
Definition: elxTransformBase.h:149
elastix::TransformBase::m_TransformParametersPointer
ParametersType * m_TransformParametersPointer
Definition: elxTransformBase.h:352
elastix::BaseComponentSE::RegistrationPointer
RegistrationType * RegistrationPointer
Definition: elxBaseComponentSE.h:63
elastix::BaseComponentSE::ElastixType
TElastix ElastixType
Definition: elxBaseComponentSE.h:52
elastix::BaseComponentSE::ConfigurationPointer
ElastixType::ConfigurationPointer ConfigurationPointer
Definition: elxBaseComponentSE.h:57
elastix::TransformBase::m_TransformParametersFileName
std::string m_TransformParametersFileName
Definition: elxTransformBase.h:353
elastix::BaseComponentSE
The BaseComponentSE class is a base class for elastix components that provides some basic functionali...
Definition: elxBaseComponentSE.h:44
elastix::TransformBase::BeforeRegistrationBase
virtual void BeforeRegistrationBase(void)
elastix::TransformBase::ITKRegistrationType
RegistrationType::ITKBaseType ITKRegistrationType
Definition: elxTransformBase.h:202
elastix::TransformBase::SetTransformParametersFileName
virtual void SetTransformParametersFileName(const char *filename)
elastix::TransformBase::SetReadWriteTransformParameters
virtual void SetReadWriteTransformParameters(const bool _arg)
elastix::TransformBase::operator=
void operator=(const Self &)
elastix::ComponentDatabase::PtrToCreator
ObjectPointer(* PtrToCreator)(void)
Definition: elxComponentDatabase.h:76
elastix::TransformBase::ComponentDatabaseType
ComponentDatabase ComponentDatabaseType
Definition: elxTransformBase.h:161
elastix::TransformBase::CombinationTransformType
itk::AdvancedCombinationTransform< CoordRepType, itkGetStaticConstMacro(FixedImageDimension) > CombinationTransformType
Definition: elxTransformBase.h:183
elastix::ComponentDatabase::ComponentDescriptionType
std::string ComponentDescriptionType
Definition: elxComponentDatabase.h:77
elxBaseComponentSE.h
itk::AdvancedCombinationTransform
This class combines two transforms: an 'initial transform' with a 'current transform'.
Definition: itkAdvancedCombinationTransform.h:58
elastix::TransformBase::AutomaticScalesEstimationStackTransform
void AutomaticScalesEstimationStackTransform(const unsigned int &numSubTransforms, ScalesType &scales) const
elastix::TransformBase::MovingImageType
ElastixType::MovingImageType MovingImageType
Definition: elxTransformBase.h:158
elastix::TransformBase::ElastixType
Superclass::ElastixType ElastixType
Definition: elxTransformBase.h:141
elastix::TransformBase::GetAsCombinationTransform
virtual const CombinationTransformType * GetAsCombinationTransform(void) const
Definition: elxTransformBase.h:223
elxComponentDatabase.h
elastix::TransformBase::GetAsCombinationTransform
virtual CombinationTransformType * GetAsCombinationTransform(void)
Definition: elxTransformBase.h:229
elastix::TransformBase::ITKBaseType
itk::AdvancedTransform< CoordRepType, itkGetStaticConstMacro(FixedImageDimension), itkGetStaticConstMacro(MovingImageDimension) > ITKBaseType
Definition: elxTransformBase.h:181
elastix::TransformBase::OutputPointType
ITKBaseType::OutputPointType OutputPointType
Definition: elxTransformBase.h:193
itk::AdvancedTransform
Transform maps points, vectors and covariant vectors from an input space to an output space.
Definition: itkAdvancedTransform.h:87
elastix::TransformBase::GetAsITKBaseType
virtual ITKBaseType * GetAsITKBaseType(void)
Definition: elxTransformBase.h:210
elastix::ComponentDatabase
The ComponentDatabase class is a class that stores the New() functions of all components.
Definition: elxComponentDatabase.h:54
elastix::TransformBase::OptimizerType
ITKRegistrationType::OptimizerType OptimizerType
Definition: elxTransformBase.h:203
elastix::TransformBase::ElastixPointer
Superclass::ElastixPointer ElastixPointer
Definition: elxTransformBase.h:145
elastix::TransformBase::ReadInitialTransformFromFile
virtual void ReadInitialTransformFromFile(const char *transformParameterFileName)
elastix::TransformBase::ComputeDeterminantOfSpatialJacobian
virtual void ComputeDeterminantOfSpatialJacobian(void) const
elastix::TransformBase::~TransformBase
virtual ~TransformBase()
elastix::TransformBase::GetInitialTransform
virtual const InitialTransformType * GetInitialTransform(void) const
elastix::BaseComponentSE::ElastixPointer
itk::WeakPointer< ElastixType > ElastixPointer
Definition: elxBaseComponentSE.h:53
elastix::TransformBase::AfterRegistrationBase
virtual void AfterRegistrationBase(void)
elxProgressCommand.h
elastix::TransformBase::m_ReadWriteTransformParameters
bool m_ReadWriteTransformParameters
Definition: elxTransformBase.h:364
elastix::TransformBase::CreateTransformParametersMap
virtual void CreateTransformParametersMap(const ParametersType &param, ParameterMapType *paramsMap) const
elastix::TransformBase::GetInitialTransformParametersFileName
std::string GetInitialTransformParametersFileName(void) const
Definition: elxTransformBase.h:366
elastix::TransformBase::TransformPoints
virtual void TransformPoints(void) const
elastix::TransformBase::WriteDeformationFieldImage
void WriteDeformationFieldImage(typename DeformationFieldImageType::Pointer) const
elastix::TransformBase::CommandLineEntryType
ConfigurationType ::CommandLineEntryType CommandLineEntryType
Definition: elxTransformBase.h:151
elastix::TransformBase::BeforeAllTransformix
virtual int BeforeAllTransformix(void)
elastix::TransformBase::TransformPointsAllPoints
virtual void TransformPointsAllPoints(void) const
elastix::TransformBase::GetAsITKBaseType
virtual const ITKBaseType * GetAsITKBaseType(void) const
Definition: elxTransformBase.h:217
elastix::TransformBase::ConfigurationType
Superclass::ConfigurationType ConfigurationType
Definition: elxTransformBase.h:146
elastix::TransformBase::TransformPointsSomePoints
virtual void TransformPointsSomePoints(const std::string filename) const
elastix::TransformBase::Superclass
BaseComponentSE< TElastix > Superclass
Definition: elxTransformBase.h:138
elastix::TransformBase::ScalesType
OptimizerType::ScalesType ScalesType
Definition: elxTransformBase.h:204
elastix::TransformBase::ConfigurationPointer
Superclass::ConfigurationPointer ConfigurationPointer
Definition: elxTransformBase.h:147
elastix::TransformBase::ValueType
ParametersType::ValueType ValueType
Definition: elxTransformBase.h:189
itk::AdvancedTransform::ParametersType
Superclass::ParametersType ParametersType
Definition: itkAdvancedTransform.h:110
elastix::TransformBase::ParameterMapType
ElastixType::ParameterMapType ParameterMapType
Definition: elxTransformBase.h:207
elxMacro.h
elastix::BaseComponentSE::ConfigurationType
ElastixType::ConfigurationType ConfigurationType
Definition: elxBaseComponentSE.h:56
elastix::TransformBase
This class is the elastix base class for all Transforms.
Definition: elxTransformBase.h:133
elastix
Definition: elxFixedGenericPyramid.h:25
elastix::TransformBase::itkStaticConstMacro
itkStaticConstMacro(FixedImageDimension, unsigned int, FixedImageType::ImageDimension)
elastix::TransformBase::WriteToFile
virtual void WriteToFile(void) const
elastix::TransformBase::VectorPixelType
itk::Vector< float, FixedImageDimension > VectorPixelType
Definition: elxTransformBase.h:197
elastix::TransformBase::InputPointType
ITKBaseType::InputPointType InputPointType
Definition: elxTransformBase.h:192
float
elastix::TransformBase::ObjectType
itk::Object ObjectType
Definition: elxTransformBase.h:177
elastix::BaseComponentSE::RegistrationType
ElastixType::RegistrationBaseType RegistrationType
Definition: elxBaseComponentSE.h:62
elastix::TransformBase::WriteToFile
virtual void WriteToFile(const ParametersType &param) const
elastix::TransformBase::RegistrationType
Superclass::RegistrationType RegistrationType
Definition: elxTransformBase.h:152


Generated on OURCE_DATE_EPOCH for elastix by doxygen 1.8.18 elastix logo