|
|
Home | Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages |
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 1.7.4 |