go home Home | Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages
elxRayCastInterpolator.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 #ifndef __elxRayCastInterpolator_h
00015 #define __elxRayCastInterpolator_h
00016 
00017 #include "itkAdvancedRayCastInterpolateImageFunction.h"
00018 #include "itkAdvancedCombinationTransform.h"
00019 #include "itkAdvancedTransform.h"
00020 #include "../Transforms/EulerTransform/itkEulerTransform.h"
00021 #include "elxIncludes.h"
00022 
00023 namespace elastix
00024 {
00025 
00026 using namespace itk;
00027 
00041 template < class TElastix >
00042 class RayCastInterpolator :
00043 public
00044   AdvancedRayCastInterpolateImageFunction<
00045     ITK_TYPENAME InterpolatorBase<TElastix>::InputImageType,
00046     ITK_TYPENAME InterpolatorBase<TElastix>::CoordRepType >,
00047 public
00048   InterpolatorBase<TElastix>
00049 {
00050 public:
00051 
00053   typedef RayCastInterpolator                  Self;
00054   typedef AdvancedRayCastInterpolateImageFunction<
00055     typename InterpolatorBase<TElastix>::InputImageType,
00056     typename InterpolatorBase<TElastix>::CoordRepType > Superclass1;
00057   typedef InterpolatorBase<TElastix>          Superclass2;
00058   typedef SmartPointer<Self>                  Pointer;
00059   typedef SmartPointer<const Self>            ConstPointer;
00060 
00062   itkNewMacro( Self );
00063 
00065   itkTypeMacro( RayCastInterpolator, AdvancedRayCastInterpolateImageFunction );
00066 
00071   elxClassNameMacro( "RayCastInterpolator" );
00072 
00074   itkStaticConstMacro( ImageDimension, unsigned int, Superclass1::ImageDimension );
00075 
00077   typedef typename Superclass1::OutputType                OutputType;
00078   typedef typename Superclass1::InputImageType            InputImageType;
00079   typedef typename Superclass1::IndexType                 IndexType;
00080   typedef typename Superclass1::ContinuousIndexType       ContinuousIndexType;
00081   typedef typename Superclass1::PointType                 PointType;
00082   typedef typename Superclass1::SizeType                  SizeType;
00083   typedef typename InputImageType::SpacingType            SpacingType;
00084 
00086   typedef typename Superclass2::ElastixType               ElastixType;
00087   typedef typename Superclass2::ElastixPointer            ElastixPointer;
00088   typedef typename Superclass2::ConfigurationType         ConfigurationType;
00089   typedef typename Superclass2::ConfigurationPointer      ConfigurationPointer;
00090   typedef typename Superclass2::RegistrationType          RegistrationType;
00091   typedef typename Superclass2::RegistrationPointer       RegistrationPointer;
00092   typedef typename Superclass2::ITKBaseType               ITKBaseType;
00093 
00095   typedef typename itk::EulerTransform<
00096     typename InterpolatorBase<TElastix>::CoordRepType,
00097     ImageDimension >                                      EulerTransformType;
00098   typedef typename EulerTransformType::ParametersType     TransformParametersType;
00099   typedef typename EulerTransformType::Pointer            EulerTransformPointer;
00100   typedef typename itk::AdvancedTransform<
00101   typename InterpolatorBase<TElastix>::CoordRepType,
00102     itkGetStaticConstMacro( ImageDimension ),
00103     itkGetStaticConstMacro( ImageDimension ) >            AdvancedTransformType;
00104   typedef typename AdvancedTransformType::Pointer         AdvancedTransformPointer;
00105   typedef typename itk::AdvancedCombinationTransform<
00106     typename InterpolatorBase<TElastix>::CoordRepType,
00107     itkGetStaticConstMacro( ImageDimension ) >            CombinationTransformType;
00108   typedef typename CombinationTransformType::Pointer      CombinationTransformPointer;
00109 
00110 protected:
00111 
00113   RayCastInterpolator() {}
00114 
00116   virtual ~RayCastInterpolator() {}
00117 
00118   virtual int BeforeAll( void );
00119 
00120   virtual void BeforeRegistration( void );
00121 
00122   virtual void BeforeEachResolution( void );
00123 
00124   private:
00125 
00127   RayCastInterpolator( const Self& );  // purposely not implemented
00128 
00130   void operator=( const Self& );      // purposely not implemented
00131 
00132   EulerTransformPointer         m_PreTransform;
00133   TransformParametersType       m_PreParameters;
00134   CombinationTransformPointer   m_CombinationTransform;
00135 
00136 }; // end class RayCastInterpolator
00137 
00138 
00139 } // end namespace elastix
00140 
00141 #ifndef ITK_MANUAL_INSTANTIATION
00142 #include "elxRayCastInterpolator.hxx"
00143 #endif
00144 
00145 #endif // end #ifndef __elxRayCastInterpolator_h
00146 


Generated on 11-05-2012 for elastix by doxygen 1.7.6.1 elastix logo