go home Home | Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages
elxMultiResolutionRegistration.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 __elxMultiResolutionRegistration_H__
00016 #define __elxMultiResolutionRegistration_H__
00017 
00018 #include "itkMultiResolutionImageRegistrationMethod2.h"
00019 
00020 #include "elxIncludes.h"
00021 
00022 namespace elastix
00023 {
00024 using namespace itk;
00025 
00043   template <class TElastix>
00044     class MultiResolutionRegistration :
00045     public
00046       RegistrationBase<TElastix>::ITKBaseType,
00047     public
00048       RegistrationBase<TElastix>
00049   {
00050   public:
00051 
00053     typedef MultiResolutionRegistration                 Self;
00054     typedef typename RegistrationBase<TElastix>
00055       ::ITKBaseType                                     Superclass1;
00056     typedef RegistrationBase<TElastix>                  Superclass2;
00057     typedef SmartPointer<Self>                          Pointer;
00058     typedef SmartPointer<const Self>                    ConstPointer;
00059 
00061     itkNewMacro( Self );
00062 
00064     itkTypeMacro( MultiResolutionRegistration, MultiResolutionImageRegistrationMethod );
00065 
00070     elxClassNameMacro( "MultiResolutionRegistration" );
00071 
00075     typedef typename Superclass1::FixedImageType            FixedImageType;
00076     typedef typename Superclass1::FixedImageConstPointer    FixedImageConstPointer;
00077     typedef typename Superclass1::FixedImageRegionType      FixedImageRegionType;
00078 
00080     typedef typename Superclass1::MovingImageType           MovingImageType;
00081     typedef typename Superclass1::MovingImageConstPointer   MovingImageConstPointer;
00082 
00084     typedef typename Superclass1::MetricType                MetricType;
00085     typedef typename Superclass1::MetricPointer             MetricPointer;
00086 
00088     typedef typename Superclass1::TransformType             TransformType;
00089     typedef typename Superclass1::TransformPointer          TransformPointer;
00090 
00092     typedef typename Superclass1::InterpolatorType          InterpolatorType;
00093     typedef typename Superclass1::InterpolatorPointer       InterpolatorPointer;
00094 
00096     typedef typename Superclass1::OptimizerType             OptimizerType;
00097 
00099     typedef typename Superclass1::FixedImagePyramidType     FixedImagePyramidType;
00100     typedef typename Superclass1::FixedImagePyramidPointer  FixedImagePyramidPointer;
00101 
00103     typedef typename Superclass1::MovingImagePyramidType    MovingImagePyramidType ;
00104     typedef typename Superclass1::MovingImagePyramidPointer MovingImagePyramidPointer;
00105 
00109     typedef typename Superclass1::ParametersType            ParametersType;
00110 
00112     typedef typename Superclass2::ElastixType           ElastixType;
00113     typedef typename Superclass2::ElastixPointer        ElastixPointer;
00114     typedef typename Superclass2::ConfigurationType     ConfigurationType;
00115     typedef typename Superclass2::ConfigurationPointer  ConfigurationPointer;
00116     typedef typename Superclass2::RegistrationType      RegistrationType;
00117     typedef typename Superclass2::RegistrationPointer   RegistrationPointer;
00118     typedef typename Superclass2::ITKBaseType           ITKBaseType;
00119     typedef typename Superclass2::UseMaskErosionArrayType UseMaskErosionArrayType;
00120 
00122     itkStaticConstMacro( FixedImageDimension, unsigned int, Superclass2::FixedImageDimension );
00124     itkStaticConstMacro( MovingImageDimension, unsigned int, Superclass2::MovingImageDimension );
00125 
00130     virtual void BeforeRegistration( void );
00131 
00134     virtual void BeforeEachResolution( void );
00135 
00136   protected:
00137 
00139     MultiResolutionRegistration(){};
00141     virtual ~MultiResolutionRegistration() {};
00142 
00144     typedef tmr::Timer          TimerType;
00146     typedef TimerType::Pointer  TimerPointer;
00147 
00149     typedef typename Superclass2::MaskPixelType                   MaskPixelType;
00150     typedef typename Superclass2::FixedMaskImageType              FixedMaskImageType;
00151     typedef typename Superclass2::MovingMaskImageType             MovingMaskImageType;
00152     typedef typename Superclass2::FixedMaskImagePointer           FixedMaskImagePointer;
00153     typedef typename Superclass2::MovingMaskImagePointer          MovingMaskImagePointer;
00154     typedef typename Superclass2::FixedMaskSpatialObjectType      FixedMaskSpatialObjectType;
00155     typedef typename Superclass2::MovingMaskSpatialObjectType     MovingMaskSpatialObjectType;
00156     typedef typename Superclass2::FixedMaskSpatialObjectPointer   FixedMaskSpatialObjectPointer;
00157     typedef typename Superclass2::MovingMaskSpatialObjectPointer  MovingMaskSpatialObjectPointer;
00158 
00160     void UpdateMasks( unsigned int level );
00161 
00163     virtual void SetComponents( void );
00164 
00165   private:
00166 
00168     MultiResolutionRegistration( const Self& ); // purposely not implemented
00170     void operator=( const Self& );              // purposely not implemented
00171 
00172   }; // end class MultiResolutionRegistration
00173 
00174 
00175 } // end namespace elastix
00176 
00177 #ifndef ITK_MANUAL_INSTANTIATION
00178 #include "elxMultiResolutionRegistration.hxx"
00179 #endif
00180 
00181 #endif // end #ifndef __elxMultiResolutionRegistration_H__


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