![]() |
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 __elxNormalizedMutualInformationMetric_H__ 00016 #define __elxNormalizedMutualInformationMetric_H__ 00017 00018 #include "elxIncludes.h" 00019 #include "itkParzenWindowNormalizedMutualInformationImageToImageMetric.h" 00020 00021 #include "elxTimer.h" 00022 00023 namespace elastix 00024 { 00025 using namespace itk; 00026 00072 template <class TElastix > 00073 class NormalizedMutualInformationMetric : 00074 public 00075 ParzenWindowNormalizedMutualInformationImageToImageMetric< 00076 ITK_TYPENAME MetricBase<TElastix>::FixedImageType, 00077 ITK_TYPENAME MetricBase<TElastix>::MovingImageType >, 00078 public MetricBase<TElastix> 00079 { 00080 public: 00081 00083 typedef NormalizedMutualInformationMetric Self; 00084 typedef ParzenWindowNormalizedMutualInformationImageToImageMetric< 00085 typename MetricBase<TElastix>::FixedImageType, 00086 typename MetricBase<TElastix>::MovingImageType > Superclass1; 00087 typedef MetricBase<TElastix> Superclass2; 00088 typedef SmartPointer<Self> Pointer; 00089 typedef SmartPointer<const Self> ConstPointer; 00090 00092 itkNewMacro( Self ); 00093 00095 itkTypeMacro( NormalizedMutualInformationMetric, 00096 ParzenWindowNormalizedMutualInformationImageToImageMetric ); 00097 00102 elxClassNameMacro( "NormalizedMutualInformation" ); 00103 00105 typedef typename 00106 Superclass1::CoordinateRepresentationType CoordinateRepresentationType; 00107 typedef typename Superclass1::MovingImageType MovingImageType; 00108 typedef typename Superclass1::MovingImagePixelType MovingImagePixelType; 00109 typedef typename Superclass1::MovingImageConstPointer MovingImageConstPointer; 00110 typedef typename Superclass1::FixedImageType FixedImageType; 00111 typedef typename Superclass1::FixedImageConstPointer FixedImageConstPointer; 00112 typedef typename Superclass1::FixedImageRegionType FixedImageRegionType; 00113 typedef typename Superclass1::TransformType TransformType; 00114 typedef typename Superclass1::TransformPointer TransformPointer; 00115 typedef typename Superclass1::InputPointType InputPointType; 00116 typedef typename Superclass1::OutputPointType OutputPointType; 00117 typedef typename Superclass1::TransformParametersType TransformParametersType; 00118 typedef typename Superclass1::TransformJacobianType TransformJacobianType; 00119 typedef typename Superclass1::InterpolatorType InterpolatorType; 00120 typedef typename Superclass1::InterpolatorPointer InterpolatorPointer; 00121 typedef typename Superclass1::RealType RealType; 00122 typedef typename Superclass1::GradientPixelType GradientPixelType; 00123 typedef typename Superclass1::GradientImageType GradientImageType; 00124 typedef typename Superclass1::GradientImagePointer GradientImagePointer; 00125 typedef typename Superclass1::GradientImageFilterType GradientImageFilterType; 00126 typedef typename Superclass1::GradientImageFilterPointer GradientImageFilterPointer; 00127 typedef typename Superclass1::FixedImageMaskType FixedImageMaskType; 00128 typedef typename Superclass1::FixedImageMaskPointer FixedImageMaskPointer; 00129 typedef typename Superclass1::MovingImageMaskType MovingImageMaskType; 00130 typedef typename Superclass1::MovingImageMaskPointer MovingImageMaskPointer; 00131 typedef typename Superclass1::MeasureType MeasureType; 00132 typedef typename Superclass1::DerivativeType DerivativeType; 00133 typedef typename Superclass1::ParametersType ParametersType; 00134 typedef typename Superclass1::FixedImagePixelType FixedImagePixelType; 00135 typedef typename Superclass1::MovingImageRegionType MovingImageRegionType; 00136 typedef typename Superclass1::ImageSamplerType ImageSamplerType; 00137 typedef typename Superclass1::ImageSamplerPointer ImageSamplerPointer; 00138 typedef typename Superclass1::ImageSampleContainerType ImageSampleContainerType; 00139 typedef typename 00140 Superclass1::ImageSampleContainerPointer ImageSampleContainerPointer; 00141 typedef typename Superclass1::FixedImageLimiterType FixedImageLimiterType; 00142 typedef typename Superclass1::MovingImageLimiterType MovingImageLimiterType; 00143 typedef typename 00144 Superclass1::FixedImageLimiterOutputType FixedImageLimiterOutputType; 00145 typedef typename 00146 Superclass1::MovingImageLimiterOutputType MovingImageLimiterOutputType; 00147 typedef typename 00148 Superclass1::MovingImageDerivativeScalesType MovingImageDerivativeScalesType; 00149 00151 itkStaticConstMacro( FixedImageDimension, unsigned int, 00152 FixedImageType::ImageDimension ); 00153 00155 itkStaticConstMacro( MovingImageDimension, unsigned int, 00156 MovingImageType::ImageDimension ); 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 00168 typedef tmr::Timer TimerType; 00170 typedef TimerType::Pointer TimerPointer; 00171 00177 virtual void BeforeEachResolution( void ); 00178 00181 virtual void Initialize(void) throw (ExceptionObject); 00182 00183 protected: 00184 00186 NormalizedMutualInformationMetric() 00187 { 00188 this->SetUseDerivative(true); 00189 }; 00190 00192 virtual ~NormalizedMutualInformationMetric() {} 00193 00194 private: 00195 00197 NormalizedMutualInformationMetric( const Self& ); // purposely not implemented 00199 void operator=( const Self& ); // purposely not implemented 00200 00201 }; // end class NormalizedMutualInformationMetric 00202 00203 00204 } // end namespace elastix 00205 00206 00207 #ifndef ITK_MANUAL_INSTANTIATION 00208 #include "elxNormalizedMutualInformationMetric.hxx" 00209 #endif 00210 00211 #endif // end #ifndef __elxNormalizedMutualInformationMetric_H__
Generated on 11-05-2012 for elastix by ![]() |
![]() |