go home Home | Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages
elxViolaWellsMutualInformationMetric.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 __elxViolaWellsMutualInformationMetric_H__
00016 #define __elxViolaWellsMutualInformationMetric_H__
00017 
00018 #include "elxIncludes.h"
00019 #include "itkMutualInformationImageToImageMetric.h"
00020 
00021 #include "elxTimer.h"
00022 
00023 namespace elastix
00024 {
00025 using namespace itk;
00026 
00059   template <class TElastix >
00060     class ViolaWellsMutualInformationMetric :
00061     public
00062       MutualInformationImageToImageMetric<
00063         ITK_TYPENAME MetricBase<TElastix>::FixedImageType,
00064         ITK_TYPENAME MetricBase<TElastix>::MovingImageType >,
00065     public MetricBase<TElastix>
00066   {
00067   public:
00068 
00070     typedef ViolaWellsMutualInformationMetric             Self;
00071     typedef MutualInformationImageToImageMetric<
00072       typename MetricBase<TElastix>::FixedImageType,
00073       typename MetricBase<TElastix>::MovingImageType >    Superclass1;
00074     typedef MetricBase<TElastix>                          Superclass2;
00075     typedef SmartPointer<Self>                            Pointer;
00076     typedef SmartPointer<const Self>                      ConstPointer;
00077 
00079     itkNewMacro( Self );
00080 
00082     itkTypeMacro( ViolaWellsMutualInformationMetric,
00083       MutualInformationImageToImageMetric );
00084 
00089     elxClassNameMacro( "ViolaWellsMutualInformation" );
00090 
00092     typedef typename Superclass1::TransformType             TransformType;
00093     typedef typename Superclass1::TransformPointer          TransformPointer;
00094     typedef typename Superclass1::TransformJacobianType     TransformJacobianType;
00095     typedef typename Superclass1::InterpolatorType          InterpolatorType;
00096     typedef typename Superclass1::MeasureType               MeasureType;
00097     typedef typename Superclass1::DerivativeType            DerivativeType;
00098     typedef typename Superclass1::ParametersType            ParametersType;
00099     typedef typename Superclass1::FixedImageType            FixedImageType;
00100     typedef typename Superclass1::MovingImageType           MovingImageType;
00101     typedef typename Superclass1::FixedImageConstPointer    FixedImageConstPointer;
00102     typedef typename Superclass1::MovingImageConstPointer   MovingImageCosntPointer;
00103     typedef typename Superclass1::FixedImageIndexType       FixedImageIndexType;
00104     typedef typename Superclass1::FixedImageIndexValueType  FixedImageIndexValueType;
00105     typedef typename Superclass1::MovingImageIndexType      MovingImageIndexType;
00106     typedef typename Superclass1::FixedImagePointType       FixedImagePointType;
00107     typedef typename Superclass1::MovingImagePointType      MovingImagePointType;
00108 
00110     itkStaticConstMacro( MovingImageDimension, unsigned int,
00111       MovingImageType::ImageDimension );
00112 
00114     typedef typename Superclass2::ElastixType           ElastixType;
00115     typedef typename Superclass2::ElastixPointer        ElastixPointer;
00116     typedef typename Superclass2::ConfigurationType     ConfigurationType;
00117     typedef typename Superclass2::ConfigurationPointer  ConfigurationPointer;
00118     typedef typename Superclass2::RegistrationType      RegistrationType;
00119     typedef typename Superclass2::RegistrationPointer   RegistrationPointer;
00120     typedef typename Superclass2::ITKBaseType           ITKBaseType;
00121 
00123     typedef tmr::Timer          TimerType;
00124     typedef TimerType::Pointer  TimerPointer;
00125 
00131     virtual void BeforeEachResolution(void);
00132 
00136     virtual void Initialize(void) throw (ExceptionObject);
00137 
00138   protected:
00139 
00141     ViolaWellsMutualInformationMetric();
00143     virtual ~ViolaWellsMutualInformationMetric() {}
00144 
00145   private:
00146 
00148     ViolaWellsMutualInformationMetric( const Self& ); // purposely not implemented
00150     void operator=( const Self& );                    // purposely not implemented
00151 
00152   }; // end class ViolaWellsMutualInformationMetric
00153 
00154 
00155 } // end namespace elastix
00156 
00157 
00158 #ifndef ITK_MANUAL_INSTANTIATION
00159 #include "elxViolaWellsMutualInformationMetric.hxx"
00160 #endif
00161 
00162 #endif // end #ifndef __elxViolaWellsMutualInformationMetric_H__


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