go home Home | Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages
elxAffineDTITransform.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 __elxAffineDTITransform_H__
00016 #define __elxAffineDTITransform_H__
00017 
00018 #include "itkAdvancedCombinationTransform.h"
00019 #include "itkAffineDTITransform.h"
00020 #include "itkCenteredTransformInitializer.h"
00021 #include "elxIncludes.h"
00022 
00023 namespace elastix
00024 {
00025 using namespace itk;
00026 
00075   template < class TElastix >
00076     class AffineDTITransformElastix:
00077       public AdvancedCombinationTransform<
00078         ITK_TYPENAME elx::TransformBase< TElastix >::CoordRepType,
00079         elx::TransformBase< TElastix >::FixedImageDimension >,
00080       public elx::TransformBase< TElastix >
00081   {
00082   public:
00083 
00085     typedef AffineDTITransformElastix                               Self;
00086 
00087     typedef AdvancedCombinationTransform<
00088       typename elx::TransformBase< TElastix >::CoordRepType,
00089       elx::TransformBase< TElastix >::FixedImageDimension >     Superclass1;
00090 
00091     typedef elx::TransformBase< TElastix >                      Superclass2;
00092 
00095     typedef AffineDTITransform<
00096       typename elx::TransformBase< TElastix >::CoordRepType,
00097       elx::TransformBase< TElastix >::FixedImageDimension >     AffineDTITransformType;
00098 
00099     typedef SmartPointer<Self>                                  Pointer;
00100     typedef SmartPointer<const Self>                            ConstPointer;
00101 
00103     itkNewMacro( Self );
00104 
00106     //itkTypeMacro( AffineDTITransformElastix, AffineDTITransform );
00107     itkTypeMacro( AffineDTITransformElastix, AdvancedCombinationTransform );
00108 
00113     elxClassNameMacro( "AffineDTITransform" );
00114 
00116     itkStaticConstMacro( SpaceDimension, unsigned int, Superclass2::FixedImageDimension );
00117 
00121     typedef typename Superclass1::ScalarType                  ScalarType;
00122     typedef typename Superclass1::ParametersType              ParametersType;
00123     typedef typename Superclass1::JacobianType                JacobianType;
00124 
00125     typedef typename Superclass1::InputPointType              InputPointType;
00126     typedef typename Superclass1::OutputPointType             OutputPointType;
00127     typedef typename Superclass1::InputVectorType             InputVectorType;
00128     typedef typename Superclass1::OutputVectorType            OutputVectorType;
00129     typedef typename Superclass1::InputCovariantVectorType    InputCovariantVectorType;
00130     typedef typename Superclass1::OutputCovariantVectorType   OutputCovariantVectorType;
00131     typedef typename Superclass1::InputVnlVectorType          InputVnlVectorType;
00132     typedef typename Superclass1::OutputVnlVectorType         OutputVnlVectorType;
00133 
00134     typedef typename AffineDTITransformType::Pointer              AffineDTITransformPointer;
00135     typedef typename AffineDTITransformType::OffsetType           OffsetType;
00136 
00138     typedef typename Superclass2::ElastixType               ElastixType;
00139     typedef typename Superclass2::ElastixPointer            ElastixPointer;
00140     typedef typename Superclass2::ConfigurationType         ConfigurationType;
00141     typedef typename Superclass2::ConfigurationPointer      ConfigurationPointer;
00142     typedef typename Superclass2::RegistrationType          RegistrationType;
00143     typedef typename Superclass2::RegistrationPointer       RegistrationPointer;
00144     typedef typename Superclass2::CoordRepType              CoordRepType;
00145     typedef typename Superclass2::FixedImageType            FixedImageType;
00146     typedef typename Superclass2::MovingImageType           MovingImageType;
00147     typedef typename Superclass2::ITKBaseType               ITKBaseType;
00148     typedef typename Superclass2::CombinationTransformType  CombinationTransformType;
00149 
00151     typedef typename FixedImageType::IndexType              IndexType;
00152     typedef typename IndexType::IndexValueType              IndexValueType;
00153     typedef typename FixedImageType::SizeType               SizeType;
00154     typedef typename FixedImageType::PointType              PointType;
00155     typedef typename FixedImageType::SpacingType            SpacingType;
00156     typedef typename FixedImageType::RegionType             RegionType;
00157     typedef typename FixedImageType::DirectionType          DirectionType;
00158 
00159     typedef CenteredTransformInitializer<
00160       AffineDTITransformType, FixedImageType, MovingImageType>  TransformInitializerType;
00161     typedef typename TransformInitializerType::Pointer      TransformInitializerPointer;
00162 
00164     typedef typename Superclass2::ScalesType                ScalesType;
00165 
00170     virtual void BeforeRegistration(void);
00171 
00187     virtual void InitializeTransform(void);
00188 
00196     virtual void SetScales(void);
00197 
00202     virtual void ReadFromFile(void);
00203 
00207     virtual void WriteToFile( const ParametersType & param ) const;
00208 
00209   protected:
00210 
00212     AffineDTITransformElastix();
00214     virtual ~AffineDTITransformElastix() {};
00215 
00218     virtual bool ReadCenterOfRotationPoint( InputPointType & rotationPoint ) const;
00219 
00220   private:
00221 
00223     AffineDTITransformElastix( const Self& ); // purposely not implemented
00225     void operator=( const Self& );        // purposely not implemented
00226 
00227     AffineDTITransformPointer       m_AffineDTITransform;
00228 
00229   }; // end class AffineDTITransformElastix
00230 
00231 
00232 } // end namespace elastix
00233 
00234 #ifndef ITK_MANUAL_INSTANTIATION
00235 #include "elxAffineDTITransform.hxx"
00236 #endif
00237 
00238 #endif // end #ifndef __elxAffineDTITransform_H__
00239 


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