go home Home | Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages
itkParzenWindowNormalizedMutualInformationImageToImageMetric.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 __itkParzenWindowNormalizedMutualInformationImageToImageMetric_H__
00016 #define __itkParzenWindowNormalizedMutualInformationImageToImageMetric_H__
00017 
00018 #include "itkParzenWindowHistogramImageToImageMetric.h"
00019 
00020 namespace itk
00021 {
00022 
00067   template <class TFixedImage,class TMovingImage >
00068     class ParzenWindowNormalizedMutualInformationImageToImageMetric :
00069   public ParzenWindowHistogramImageToImageMetric< TFixedImage, TMovingImage >
00070   {
00071   public:
00072 
00074     typedef ParzenWindowNormalizedMutualInformationImageToImageMetric             Self;
00075     typedef ParzenWindowHistogramImageToImageMetric<
00076       TFixedImage, TMovingImage >                                       Superclass;
00077     typedef SmartPointer<Self>                                          Pointer;
00078     typedef SmartPointer<const Self>                                    ConstPointer;
00079 
00081     itkNewMacro( Self );
00082 
00084     itkTypeMacro(
00085       ParzenWindowNormalizedMutualInformationImageToImageMetric,
00086       ParzenWindowHistogramImageToImageMetric );
00087 
00089     typedef typename
00090       Superclass::CoordinateRepresentationType              CoordinateRepresentationType;
00091     typedef typename Superclass::MovingImageType            MovingImageType;
00092     typedef typename Superclass::MovingImagePixelType       MovingImagePixelType;
00093     typedef typename Superclass::MovingImageConstPointer    MovingImageConstPointer;
00094     typedef typename Superclass::FixedImageType             FixedImageType;
00095     typedef typename Superclass::FixedImageConstPointer     FixedImageConstPointer;
00096     typedef typename Superclass::FixedImageRegionType       FixedImageRegionType;
00097     typedef typename Superclass::TransformType              TransformType;
00098     typedef typename Superclass::TransformPointer           TransformPointer;
00099     typedef typename Superclass::InputPointType             InputPointType;
00100     typedef typename Superclass::OutputPointType            OutputPointType;
00101     typedef typename Superclass::TransformParametersType    TransformParametersType;
00102     typedef typename Superclass::TransformJacobianType      TransformJacobianType;
00103     typedef typename Superclass::InterpolatorType           InterpolatorType;
00104     typedef typename Superclass::InterpolatorPointer        InterpolatorPointer;
00105     typedef typename Superclass::RealType                   RealType;
00106     typedef typename Superclass::GradientPixelType          GradientPixelType;
00107     typedef typename Superclass::GradientImageType          GradientImageType;
00108     typedef typename Superclass::GradientImagePointer       GradientImagePointer;
00109     typedef typename Superclass::GradientImageFilterType    GradientImageFilterType;
00110     typedef typename Superclass::GradientImageFilterPointer GradientImageFilterPointer;
00111     typedef typename Superclass::FixedImageMaskType         FixedImageMaskType;
00112     typedef typename Superclass::FixedImageMaskPointer      FixedImageMaskPointer;
00113     typedef typename Superclass::MovingImageMaskType        MovingImageMaskType;
00114     typedef typename Superclass::MovingImageMaskPointer     MovingImageMaskPointer;
00115     typedef typename Superclass::MeasureType                MeasureType;
00116     typedef typename Superclass::DerivativeType             DerivativeType;
00117     typedef typename Superclass::ParametersType             ParametersType;
00118     typedef typename Superclass::FixedImagePixelType        FixedImagePixelType;
00119     typedef typename Superclass::MovingImageRegionType      MovingImageRegionType;
00120     typedef typename Superclass::ImageSamplerType           ImageSamplerType;
00121     typedef typename Superclass::ImageSamplerPointer        ImageSamplerPointer;
00122     typedef typename Superclass::ImageSampleContainerType   ImageSampleContainerType;
00123     typedef typename
00124       Superclass::ImageSampleContainerPointer               ImageSampleContainerPointer;
00125     typedef typename Superclass::FixedImageLimiterType      FixedImageLimiterType;
00126     typedef typename Superclass::MovingImageLimiterType     MovingImageLimiterType;
00127     typedef typename
00128       Superclass::FixedImageLimiterOutputType               FixedImageLimiterOutputType;
00129     typedef typename
00130       Superclass::MovingImageLimiterOutputType              MovingImageLimiterOutputType;
00131     typedef typename
00132       Superclass::MovingImageDerivativeScalesType           MovingImageDerivativeScalesType;
00133 
00135     itkStaticConstMacro( FixedImageDimension, unsigned int,
00136       FixedImageType::ImageDimension );
00137 
00139     itkStaticConstMacro( MovingImageDimension, unsigned int,
00140       MovingImageType::ImageDimension );
00141 
00143     MeasureType GetValue( const ParametersType& parameters ) const;
00144 
00146     void GetValueAndDerivative( const ParametersType& parameters,
00147       MeasureType& Value, DerivativeType& Derivative ) const;
00148 
00149   protected:
00150 
00152     ParzenWindowNormalizedMutualInformationImageToImageMetric() {};
00153 
00155     virtual ~ParzenWindowNormalizedMutualInformationImageToImageMetric() {};
00156 
00158     void PrintSelf( std::ostream& os, Indent indent ) const;
00159 
00163     typedef typename Superclass::FixedImageIndexType                FixedImageIndexType;
00164     typedef typename Superclass::FixedImageIndexValueType           FixedImageIndexValueType;
00165     typedef typename Superclass::MovingImageIndexType               MovingImageIndexType;
00166     typedef typename Superclass::FixedImagePointType                FixedImagePointType;
00167     typedef typename Superclass::MovingImagePointType               MovingImagePointType;
00168     typedef typename Superclass::MovingImageContinuousIndexType     MovingImageContinuousIndexType;
00169     typedef typename Superclass::BSplineInterpolatorType            BSplineInterpolatorType;
00170     typedef typename Superclass::CentralDifferenceGradientFilterType        CentralDifferenceGradientFilterType;
00171     typedef typename Superclass::MovingImageDerivativeType          MovingImageDerivativeType;
00172     typedef typename Superclass::PDFValueType                       PDFValueType;
00173     typedef typename Superclass::MarginalPDFType                    MarginalPDFType;
00174     typedef typename Superclass::JointPDFType                       JointPDFType;
00175     typedef typename Superclass::JointPDFDerivativesType            JointPDFDerivativesType;
00176     typedef typename Superclass::IncrementalMarginalPDFType         IncrementalMarginalPDFType;
00177     typedef typename Superclass::JointPDFIndexType                  JointPDFIndexType;
00178     typedef typename Superclass::JointPDFRegionType                 JointPDFRegionType;
00179     typedef typename Superclass::JointPDFSizeType                   JointPDFSizeType;
00180     typedef typename Superclass::JointPDFDerivativesIndexType       JointPDFDerivativesIndexType;
00181     typedef typename Superclass::JointPDFDerivativesRegionType      JointPDFDerivativesRegionType;
00182     typedef typename Superclass::JointPDFDerivativesSizeType        JointPDFDerivativesSizeType;
00183     typedef typename Superclass::ParzenValueContainerType           ParzenValueContainerType;
00184     typedef typename Superclass::KernelFunctionType                 KernelFunctionType;
00185     typedef typename Superclass::NonZeroJacobianIndicesType         NonZeroJacobianIndicesType;
00186 
00189     virtual void ComputeLogMarginalPDF( MarginalPDFType & pdf ) const;
00190 
00197     virtual MeasureType ComputeNormalizedMutualInformation( MeasureType & jointEntropy ) const;
00198 
00199   private:
00200 
00202     ParzenWindowNormalizedMutualInformationImageToImageMetric( const Self& ); // purposely not implemented
00204     void operator=( const Self& );                              // purposely not implemented
00205 
00206   }; // end class ParzenWindowNormalizedMutualInformationImageToImageMetric
00207 
00208 } // end namespace itk
00209 
00210 #ifndef ITK_MANUAL_INSTANTIATION
00211 #include "itkParzenWindowNormalizedMutualInformationImageToImageMetric.hxx"
00212 #endif
00213 
00214 #endif // end #ifndef __itkParzenWindowNormalizedMutualInformationImageToImageMetric_H__
00215 


Generated on 24-05-2012 for elastix by doxygen 1.7.6.1 elastix logo