go home Home | Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages
elxMutualInformationHistogramMetric.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 __elxMutualInformationHistogramMetric_H__
00016 #define __elxMutualInformationHistogramMetric_H__
00017 
00018 #include "elxIncludes.h"
00019 #include "itkMutualInformationHistogramImageToImageMetric.h"
00020 
00021 #include "elxTimer.h"
00022 
00023 namespace elastix
00024 {
00025 using namespace itk;
00026 
00045   template <class TElastix >
00046     class MutualInformationHistogramMetric :
00047     public
00048       MutualInformationHistogramImageToImageMetric<
00049         ITK_TYPENAME MetricBase<TElastix>::FixedImageType,
00050         ITK_TYPENAME MetricBase<TElastix>::MovingImageType >,
00051     public MetricBase<TElastix>
00052   {
00053   public:
00054 
00056     typedef MutualInformationHistogramMetric              Self;
00057     typedef MutualInformationHistogramImageToImageMetric<
00058       typename MetricBase<TElastix>::FixedImageType,
00059       typename MetricBase<TElastix>::MovingImageType >    Superclass1;
00060     typedef MetricBase<TElastix>                          Superclass2;
00061     typedef SmartPointer<Self>                            Pointer;
00062     typedef SmartPointer<const Self>                      ConstPointer;
00063 
00065     itkNewMacro( Self );
00066 
00068     itkTypeMacro( MutualInformationHistogramMetric,
00069       MutualInformationHistogramImageToImageMetric );
00070 
00075     elxClassNameMacro( "MutualInformationHistogram" );
00076 
00078     typedef typename Superclass1::TransformType             TransformType;
00079     typedef typename Superclass1::TransformPointer          TransformPointer;
00080     typedef typename Superclass1::TransformJacobianType     TransformJacobianType;
00081     typedef typename Superclass1::InterpolatorType          InterpolatorType;
00082     typedef typename Superclass1::MeasureType               MeasureType;
00083     typedef typename Superclass1::DerivativeType            DerivativeType;
00084     typedef typename Superclass1::ParametersType            ParametersType;
00085     typedef typename Superclass1::FixedImageType            FixedImageType;
00086     typedef typename Superclass1::MovingImageType           MovingImageType;
00087     typedef typename Superclass1::FixedImageConstPointer    FixedImageConstPointer;
00088     typedef typename Superclass1::MovingImageConstPointer   MovingImageCosntPointer;
00089     typedef typename Superclass1::ScalesType                ScalesType;
00090 
00092     itkStaticConstMacro( MovingImageDimension, unsigned int,
00093       MovingImageType::ImageDimension );
00094 
00096     typedef typename Superclass2::ElastixType           ElastixType;
00097     typedef typename Superclass2::ElastixPointer        ElastixPointer;
00098     typedef typename Superclass2::ConfigurationType     ConfigurationType;
00099     typedef typename Superclass2::ConfigurationPointer  ConfigurationPointer;
00100     typedef typename Superclass2::RegistrationType      RegistrationType;
00101     typedef typename Superclass2::RegistrationPointer   RegistrationPointer;
00102     typedef typename Superclass2::ITKBaseType           ITKBaseType;
00103 
00105     typedef tmr::Timer          TimerType;
00106     typedef TimerType::Pointer  TimerPointer;
00107 
00111     virtual void BeforeRegistration(void);
00112 
00116     virtual void BeforeEachResolution(void);
00117 
00121     virtual void Initialize(void) throw (ExceptionObject);
00122 
00123   protected:
00124 
00126     MutualInformationHistogramMetric();
00128     virtual ~MutualInformationHistogramMetric() {}
00129 
00130   private:
00131 
00133     MutualInformationHistogramMetric( const Self& );  // purposely not implemented
00135     void operator=( const Self& );                    // purposely not implemented
00136 
00137   }; // end class MutualInformationHistogramMetric
00138 
00139 
00140 } // end namespace elastix
00141 
00142 
00143 #ifndef ITK_MANUAL_INSTANTIATION
00144 #include "elxMutualInformationHistogramMetric.hxx"
00145 #endif
00146 
00147 #endif // end #ifndef __elxMutualInformationHistogramMetric_H__


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