go home Home | Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages
elxMovingImagePyramidBase.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 __elxMovingImagePyramidBase_h
00016 #define __elxMovingImagePyramidBase_h
00017 
00019 #include "elxMacro.h"
00020 
00021 #include "elxBaseComponentSE.h"
00022 #include "itkObject.h"
00023 
00024 #include "itkMultiResolutionPyramidImageFilter.h"
00025 
00026 
00027 namespace elastix
00028 {
00029 using namespace itk;
00030 
00057 template <class TElastix>
00058 class MovingImagePyramidBase : public BaseComponentSE<TElastix>
00059 {
00060 public:
00061 
00063   typedef MovingImagePyramidBase      Self;
00064   typedef BaseComponentSE<TElastix>   Superclass;
00065 
00067   itkTypeMacro( MovingImagePyramidBase, BaseComponentSE );
00068 
00070   typedef typename Superclass::ElastixType            ElastixType;
00071   typedef typename Superclass::ElastixPointer         ElastixPointer;
00072   typedef typename Superclass::ConfigurationType      ConfigurationType;
00073   typedef typename Superclass::ConfigurationPointer   ConfigurationPointer;
00074   typedef typename Superclass::RegistrationType       RegistrationType;
00075   typedef typename Superclass::RegistrationPointer    RegistrationPointer;
00076 
00078   typedef typename ElastixType::MovingImageType   InputImageType;
00079   typedef typename ElastixType::MovingImageType   OutputImageType;
00080 
00082   typedef MultiResolutionPyramidImageFilter<
00083     InputImageType, OutputImageType >             ITKBaseType;
00084 
00086   typedef typename ITKBaseType::ScheduleType      ScheduleType;
00087 
00089   virtual ITKBaseType * GetAsITKBaseType( void )
00090   {
00091     return dynamic_cast<ITKBaseType *>(this);
00092   }
00093 
00095   virtual const ITKBaseType * GetAsITKBaseType( void ) const
00096   {
00097     return dynamic_cast<const ITKBaseType *>(this);
00098   }
00099 
00103   virtual void BeforeRegistrationBase( void );
00104 
00108   virtual void BeforeEachResolutionBase( void );
00109 
00111   virtual void SetMovingSchedule( void );
00112 
00114   virtual void WritePyramidImage( const std::string & filename,
00115     const unsigned int & level ); // const;
00116 
00117 protected:
00118 
00120   MovingImagePyramidBase() {}
00122   virtual ~MovingImagePyramidBase() {}
00123 
00124 private:
00125 
00127   MovingImagePyramidBase( const Self& );  // purposely not implemented
00129   void operator=( const Self& );          // purposely not implemented
00130 
00131 }; // end class MovingImagePyramidBase
00132 
00133 
00134 } // end namespace elastix
00135 
00136 
00137 #ifndef ITK_MANUAL_INSTANTIATION
00138 #include "elxMovingImagePyramidBase.hxx"
00139 #endif
00140 
00141 #endif // end #ifndef __elxMovingImagePyramidBase_h


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