go home Home | Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages
elxMultiMetricMultiResolutionRegistration.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 __elxMultiMetricMultiResolutionRegistration_H__
00016 #define __elxMultiMetricMultiResolutionRegistration_H__
00017 
00018 #include "itkMultiMetricMultiResolutionImageRegistrationMethod.h"
00019 
00020 #include "elxIncludes.h"
00021 
00022 namespace elastix
00023 {
00024 using namespace itk;
00025 
00077 template <class TElastix>
00078 class MultiMetricMultiResolutionRegistration
00079   : public
00080   MultiMetricMultiResolutionImageRegistrationMethod<
00081   ITK_TYPENAME RegistrationBase<TElastix>::FixedImageType,
00082   ITK_TYPENAME RegistrationBase<TElastix>::MovingImageType >,
00083   public RegistrationBase<TElastix>
00084 {
00085 public:
00086 
00088   typedef MultiMetricMultiResolutionRegistration      Self;
00089 
00091   typedef MultiMetricMultiResolutionImageRegistrationMethod<
00092     typename RegistrationBase<TElastix>::FixedImageType,
00093     typename RegistrationBase<TElastix>::MovingImageType >
00094                                                       Superclass1;
00095   typedef RegistrationBase<TElastix>                  Superclass2;
00096 
00098   typedef SmartPointer<Self>                          Pointer;
00099   typedef SmartPointer<const Self>                    ConstPointer;
00100 
00102   itkNewMacro( Self );
00103 
00105   itkTypeMacro( MultiMetricMultiResolutionRegistration,
00106     MultiMetricMultiResolutionImageRegistrationMethod );
00107 
00112   elxClassNameMacro( "MultiMetricMultiResolutionRegistration" );
00113 
00117   typedef typename Superclass1::FixedImageType            FixedImageType;
00118   typedef typename Superclass1::FixedImageConstPointer    FixedImageConstPointer;
00119   typedef typename Superclass1::FixedImageRegionType      FixedImageRegionType;
00120 
00122   typedef typename Superclass1::MovingImageType           MovingImageType;
00123   typedef typename Superclass1::MovingImageConstPointer   MovingImageConstPointer;
00124 
00126   typedef typename Superclass1::MetricType                MetricType;
00127   typedef typename Superclass1::MetricPointer             MetricPointer;
00128 
00130   typedef typename Superclass1::TransformType             TransformType;
00131   typedef typename Superclass1::TransformPointer          TransformPointer;
00132 
00134   typedef typename Superclass1::InterpolatorType          InterpolatorType;
00135   typedef typename Superclass1::InterpolatorPointer       InterpolatorPointer;
00136 
00138   typedef typename Superclass1::OptimizerType             OptimizerType;
00139   typedef typename Superclass1::OptimizerPointer          OptimizerPointer;
00140 
00142   typedef typename Superclass1::FixedImagePyramidType     FixedImagePyramidType;
00143   typedef typename Superclass1::FixedImagePyramidPointer  FixedImagePyramidPointer;
00144 
00146   typedef typename Superclass1::MovingImagePyramidType    MovingImagePyramidType ;
00147   typedef typename Superclass1::MovingImagePyramidPointer MovingImagePyramidPointer;
00148 
00152   typedef typename Superclass1::ParametersType            ParametersType;
00153 
00155   typedef typename Superclass1::CombinationMetricType     CombinationMetricType;
00156   typedef typename Superclass1::CombinationMetricPointer  CombinationMetricPointer;
00157 
00159   typedef typename Superclass2::ElastixType           ElastixType;
00160   typedef typename Superclass2::ElastixPointer        ElastixPointer;
00161   typedef typename Superclass2::ConfigurationType     ConfigurationType;
00162   typedef typename Superclass2::ConfigurationPointer  ConfigurationPointer;
00163   typedef typename Superclass2::RegistrationType      RegistrationType;
00164   typedef typename Superclass2::RegistrationPointer   RegistrationPointer;
00165   typedef typename Superclass2::ITKBaseType           ITKBaseType;
00166   typedef typename Superclass2::UseMaskErosionArrayType UseMaskErosionArrayType;
00167 
00169   itkStaticConstMacro( FixedImageDimension, unsigned int, Superclass2::FixedImageDimension );
00171   itkStaticConstMacro( MovingImageDimension, unsigned int, Superclass2::MovingImageDimension );
00172 
00179   virtual void BeforeRegistration( void );
00180 
00185   virtual void BeforeEachResolution( void );
00186 
00190   virtual void AfterEachIteration( void );
00191 
00192 protected:
00193 
00195   MultiMetricMultiResolutionRegistration(){};
00197   virtual ~MultiMetricMultiResolutionRegistration() {};
00198 
00200   typedef tmr::Timer          TimerType;
00202   typedef TimerType::Pointer  TimerPointer;
00203 
00205   typedef typename Superclass2::MaskPixelType                   MaskPixelType;
00206   typedef typename Superclass2::FixedMaskImageType              FixedMaskImageType;
00207   typedef typename Superclass2::MovingMaskImageType             MovingMaskImageType;
00208   typedef typename Superclass2::FixedMaskImagePointer           FixedMaskImagePointer;
00209   typedef typename Superclass2::MovingMaskImagePointer          MovingMaskImagePointer;
00210   typedef typename Superclass2::FixedMaskSpatialObjectType      FixedMaskSpatialObjectType;
00211   typedef typename Superclass2::MovingMaskSpatialObjectType     MovingMaskSpatialObjectType;
00212   typedef typename Superclass2::FixedMaskSpatialObjectPointer   FixedMaskSpatialObjectPointer;
00213   typedef typename Superclass2::MovingMaskSpatialObjectPointer  MovingMaskSpatialObjectPointer;
00214 
00216   void UpdateFixedMasks( unsigned int level );
00217   void UpdateMovingMasks( unsigned int level );
00218 
00220   virtual void SetComponents( void );
00221 
00222 private:
00223 
00225   MultiMetricMultiResolutionRegistration( const Self& );  // purposely not implemented
00227   void operator=( const Self& );              // purposely not implemented
00228 
00229 }; // end class MultiMetricMultiResolutionRegistration
00230 
00231 
00232 } // end namespace elastix
00233 
00234 #ifndef ITK_MANUAL_INSTANTIATION
00235 #include "elxMultiMetricMultiResolutionRegistration.hxx"
00236 #endif
00237 
00238 #endif // end #ifndef __elxMultiMetricMultiResolutionRegistration_H__


Generated on 11-05-2011 for elastix by doxygen 1.7.4 elastix logo