go home Home | Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages
elxDeformationFieldTransform.h
Go to the documentation of this file.
00001 /*======================================================================
00002 
00003   This file is part of the elastix software.
00004 
00005   Copyright (c) University Medical Center Utrecht. All rights reserved.
00006   See src/CopyrightElastix.txt or http://elastix.isi.uu.nl/legal.php for
00007   details.
00008 
00009      This software is distributed WITHOUT ANY WARRANTY; without even
00010      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
00011      PURPOSE. See the above copyright notices for more information.
00012 
00013 ======================================================================*/
00014 
00015 #ifndef __elxDeformationFieldTransform_H__
00016 #define __elxDeformationFieldTransform_H__
00017 
00018 #include "itkDeformationFieldInterpolatingTransform.h"
00019 
00020 #include "elxIncludes.h"
00021 #include "itkAdvancedCombinationTransform.h"
00022 
00023 
00024 namespace elastix
00025 {
00026 using namespace itk;
00027 
00053   template < class TElastix >
00054     class DeformationFieldTransform:
00055   public
00056     AdvancedCombinationTransform<
00057       ITK_TYPENAME elx::TransformBase<TElastix>::CoordRepType,
00058       elx::TransformBase<TElastix>::FixedImageDimension >,
00059   public
00060     TransformBase<TElastix>
00061   {
00062   public:
00063 
00065     typedef DeformationFieldTransform                     Self;
00066 
00069     typedef DeformationFieldInterpolatingTransform<
00070       typename elx::TransformBase<TElastix>::CoordRepType,
00071       elx::TransformBase<TElastix>::FixedImageDimension,
00072       float >                                             DeformationFieldInterpolatingTransformType;
00073 
00074     typedef AdvancedCombinationTransform<
00075       typename elx::TransformBase<TElastix>::CoordRepType,
00076       elx::TransformBase<TElastix>::FixedImageDimension > Superclass1;
00077 
00078     typedef elx::TransformBase< TElastix >                Superclass2;
00079 
00080     typedef SmartPointer< Self >                          Pointer;
00081     typedef SmartPointer< const Self >                    ConstPointer;
00082 
00084     itkNewMacro( Self );
00085 
00087     itkTypeMacro( DeformationFieldTransform, AdvancedCombinationTransform );
00088 
00093     elxClassNameMacro( "DeformationFieldTransform" );
00094 
00096     itkStaticConstMacro( SpaceDimension, unsigned int, Superclass2::FixedImageDimension );
00097 
00099     typedef typename Superclass1::ScalarType                ScalarType;
00100     typedef typename Superclass1::ParametersType            ParametersType;
00101     typedef typename Superclass1::JacobianType              JacobianType;
00102     typedef typename Superclass1::InputVectorType           InputVectorType;
00103     typedef typename Superclass1::OutputVectorType          OutputVectorType;
00104     typedef typename Superclass1::InputCovariantVectorType  InputCovariantVectorType;
00105     typedef typename Superclass1::OutputCovariantVectorType OutputCovariantVectorType;
00106     typedef typename Superclass1::InputVnlVectorType        InputVnlVectorType;
00107     typedef typename Superclass1::OutputVnlVectorType       OutputVnlVectorType;
00108     typedef typename Superclass1::InputPointType            InputPointType;
00109     typedef typename Superclass1::OutputPointType           OutputPointType;
00110 
00112     typedef typename DeformationFieldInterpolatingTransformType::DeformationFieldType DeformationFieldType;
00113     typedef typename DeformationFieldInterpolatingTransformType::DeformationFieldVectorType DeformationFieldVectorType;
00114 
00115     typedef typename DeformationFieldInterpolatingTransformType::Pointer
00116       DeformationFieldInterpolatingTransformPointer;
00117 
00119     typedef typename Superclass2::ElastixType               ElastixType;
00120     typedef typename Superclass2::ElastixPointer            ElastixPointer;
00121     typedef typename Superclass2::ConfigurationType         ConfigurationType;
00122     typedef typename Superclass2::ConfigurationPointer      ConfigurationPointer;
00123     typedef typename Superclass2::RegistrationType          RegistrationType;
00124     typedef typename Superclass2::RegistrationPointer       RegistrationPointer;
00125     typedef typename Superclass2::CoordRepType              CoordRepType;
00126     typedef typename Superclass2::FixedImageType            FixedImageType;
00127     typedef typename Superclass2::MovingImageType           MovingImageType;
00128     typedef typename Superclass2::ITKBaseType               ITKBaseType;
00129     typedef typename Superclass2::CombinationTransformType  CombinationTransformType;
00130 
00132     virtual void ReadFromFile( void );
00133 
00135     virtual void WriteToFile( const ParametersType & param ) const;
00136 
00137   protected:
00138 
00140     DeformationFieldTransform();
00142     virtual ~DeformationFieldTransform() {};
00143 
00144   private:
00145 
00147     DeformationFieldTransform( const Self& ); // purposely not implemented
00149     void operator=( const Self& );            // purposely not implemented
00150 
00151     typedef typename DeformationFieldType::DirectionType   DirectionType;
00152 
00155     DeformationFieldInterpolatingTransformPointer m_DeformationFieldInterpolatingTransform;
00156 
00158     DirectionType           m_OriginalDeformationFieldDirection;
00159 
00160   }; // end class DeformationFieldTransform
00161 
00162 
00163 } // end namespace elastix
00164 
00165 #ifndef ITK_MANUAL_INSTANTIATION
00166 #include "elxDeformationFieldTransform.hxx"
00167 #endif
00168 
00169 #endif // end #ifndef __elxDeformationFieldTransform_H__
00170 


Generated on 24-10-2011 for elastix by doxygen 1.7.4 elastix logo