go home Home | Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages
elxMultiResolutionRegistrationWithFeatures.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 __elxMultiResolutionRegistrationWithFeatures_H__
00016 #define __elxMultiResolutionRegistrationWithFeatures_H__
00017 
00018 #include "itkMultiResolutionImageRegistrationMethodWithFeatures.h"
00019 
00020 #include "elxIncludes.h"
00021 
00022 namespace elastix
00023 {
00024 using namespace itk;
00025 
00051   template <class TElastix>
00052     class MultiResolutionRegistrationWithFeatures :
00053     public
00054       MultiResolutionImageRegistrationMethodWithFeatures<
00055       ITK_TYPENAME RegistrationBase<TElastix>::FixedImageType,
00056       ITK_TYPENAME RegistrationBase<TElastix>::MovingImageType >,
00057     public
00058       RegistrationBase<TElastix>
00059   {
00060   public:
00061 
00063     typedef MultiResolutionRegistrationWithFeatures     Self;
00064     typedef MultiResolutionImageRegistrationMethodWithFeatures<
00065       typename RegistrationBase<TElastix>::FixedImageType,
00066       typename RegistrationBase<TElastix>::MovingImageType >
00067                                                         Superclass1;
00068     typedef RegistrationBase<TElastix>                  Superclass2;
00069     typedef SmartPointer<Self>                          Pointer;
00070     typedef SmartPointer<const Self>                    ConstPointer;
00071 
00073     itkNewMacro( Self );
00074 
00076     itkTypeMacro( MultiResolutionRegistrationWithFeatures,
00077       MultiResolutionImageRegistrationMethodWithFeatures );
00078 
00083     elxClassNameMacro( "MultiResolutionRegistrationWithFeatures" );
00084 
00088     typedef typename Superclass1::FixedImageType            FixedImageType;
00089     typedef typename Superclass1::FixedImageConstPointer    FixedImageConstPointer;
00090     typedef typename Superclass1::FixedImageRegionType      FixedImageRegionType;
00091 
00093     typedef typename Superclass1::MovingImageType           MovingImageType;
00094     typedef typename Superclass1::MovingImageConstPointer   MovingImageConstPointer;
00095 
00097     typedef typename Superclass1::MetricType                MetricType;
00098     typedef typename Superclass1::MetricPointer             MetricPointer;
00099 
00101     typedef typename Superclass1::TransformType             TransformType;
00102     typedef typename Superclass1::TransformPointer          TransformPointer;
00103 
00105     typedef typename Superclass1::InterpolatorType          InterpolatorType;
00106     typedef typename Superclass1::InterpolatorPointer       InterpolatorPointer;
00107 
00109     typedef typename Superclass1::OptimizerType             OptimizerType;
00110     typedef typename Superclass1::OptimizerPointer          OptimizerPointer;
00111 
00113     typedef typename Superclass1::FixedImagePyramidType     FixedImagePyramidType;
00114     typedef typename Superclass1::FixedImagePyramidPointer  FixedImagePyramidPointer;
00115 
00117     typedef typename Superclass1::MovingImagePyramidType    MovingImagePyramidType ;
00118     typedef typename Superclass1::MovingImagePyramidPointer MovingImagePyramidPointer;
00119 
00123     typedef typename Superclass1::ParametersType            ParametersType;
00124 
00126     //typedef typename Superclass1::CombinationMetricType     CombinationMetricType;
00127     //typedef typename Superclass1::CombinationMetricPointer  CombinationMetricPointer;
00128 
00130     typedef typename Superclass2::ElastixType               ElastixType;
00131     typedef typename Superclass2::ElastixPointer            ElastixPointer;
00132     typedef typename Superclass2::ConfigurationType         ConfigurationType;
00133     typedef typename Superclass2::ConfigurationPointer      ConfigurationPointer;
00134     typedef typename Superclass2::RegistrationType          RegistrationType;
00135     typedef typename Superclass2::RegistrationPointer       RegistrationPointer;
00136     typedef typename Superclass2::ITKBaseType               ITKBaseType;
00137     typedef typename Superclass2::UseMaskErosionArrayType   UseMaskErosionArrayType;
00138 
00140     itkStaticConstMacro( FixedImageDimension, unsigned int, Superclass2::FixedImageDimension );
00141 
00143     itkStaticConstMacro( MovingImageDimension, unsigned int, Superclass2::MovingImageDimension );
00144 
00151     virtual void BeforeRegistration( void );
00152 
00157     virtual void BeforeEachResolution( void );
00158 
00159   protected:
00160 
00162     MultiResolutionRegistrationWithFeatures(){};
00163 
00165     virtual ~MultiResolutionRegistrationWithFeatures() {};
00166 
00168     typedef tmr::Timer          TimerType;
00169     typedef TimerType::Pointer  TimerPointer;
00170 
00172     typedef typename Superclass2::MaskPixelType                   MaskPixelType;
00173     typedef typename Superclass2::FixedMaskImageType              FixedMaskImageType;
00174     typedef typename Superclass2::MovingMaskImageType             MovingMaskImageType;
00175     typedef typename Superclass2::FixedMaskImagePointer           FixedMaskImagePointer;
00176     typedef typename Superclass2::MovingMaskImagePointer          MovingMaskImagePointer;
00177     typedef typename Superclass2::FixedMaskSpatialObjectType      FixedMaskSpatialObjectType;
00178     typedef typename Superclass2::MovingMaskSpatialObjectType     MovingMaskSpatialObjectType;
00179     typedef typename Superclass2::FixedMaskSpatialObjectPointer   FixedMaskSpatialObjectPointer;
00180     typedef typename Superclass2::MovingMaskSpatialObjectPointer  MovingMaskSpatialObjectPointer;
00181 
00183     void UpdateFixedMasks( unsigned int level );
00184     void UpdateMovingMasks( unsigned int level );
00185 
00187     virtual void GetAndSetComponents( void );
00188 
00190     virtual void GetAndSetFixedImageRegions( void );
00191 
00193     virtual void GetAndSetFixedImageInterpolators( void );
00194 
00195   private:
00196 
00198     MultiResolutionRegistrationWithFeatures( const Self& ); // purposely not implemented
00200     void operator=( const Self& );              // purposely not implemented
00201 
00202   }; // end class MultiResolutionRegistrationWithFeatures
00203 
00204 
00205 } // end namespace elastix
00206 
00207 #ifndef ITK_MANUAL_INSTANTIATION
00208 #include "elxMultiResolutionRegistrationWithFeatures.hxx"
00209 #endif
00210 
00211 #endif // end #ifndef __elxMultiResolutionRegistrationWithFeatures_H__


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