go home Home | Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages
itkDisplacementMagnitudePenaltyTerm.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 #ifndef __itkDisplacementMagnitudePenaltyTerm_h
00015 #define __itkDisplacementMagnitudePenaltyTerm_h
00016 
00017 #include "itkTransformPenaltyTerm.h"
00018 
00019 namespace itk
00020 {
00021 
00029 template< class TFixedImage, class TScalarType >
00030 class DisplacementMagnitudePenaltyTerm
00031   : public TransformPenaltyTerm< TFixedImage, TScalarType >
00032 {
00033 public:
00034 
00036   typedef DisplacementMagnitudePenaltyTerm      Self;
00037   typedef TransformPenaltyTerm<
00038     TFixedImage, TScalarType >                  Superclass;
00039   typedef SmartPointer<Self>                    Pointer;
00040   typedef SmartPointer<const Self>              ConstPointer;
00041 
00043   itkNewMacro( Self );
00044 
00046   itkTypeMacro( DisplacementMagnitudePenaltyTerm, TransformPenaltyTerm );
00047 
00049   typedef typename Superclass::CoordinateRepresentationType CoordinateRepresentationType;
00050   typedef typename Superclass::MovingImageType            MovingImageType;
00051   typedef typename Superclass::MovingImagePixelType       MovingImagePixelType;
00052   typedef typename Superclass::MovingImagePointer         MovingImagePointer;
00053   typedef typename Superclass::MovingImageConstPointer    MovingImageConstPointer;
00054   typedef typename Superclass::FixedImageType             FixedImageType;
00055   typedef typename Superclass::FixedImagePointer          FixedImagePointer;
00056   typedef typename Superclass::FixedImageConstPointer     FixedImageConstPointer;
00057   typedef typename Superclass::FixedImageRegionType       FixedImageRegionType;
00058   typedef typename Superclass::TransformType              TransformType;
00059   typedef typename Superclass::TransformPointer           TransformPointer;
00060   typedef typename Superclass::InputPointType             InputPointType;
00061   typedef typename Superclass::OutputPointType            OutputPointType;
00062   typedef typename Superclass::TransformParametersType    TransformParametersType;
00063   typedef typename Superclass::TransformJacobianType      TransformJacobianType;
00064   typedef typename Superclass::InterpolatorType           InterpolatorType;
00065   typedef typename Superclass::InterpolatorPointer        InterpolatorPointer;
00066   typedef typename Superclass::RealType                   RealType;
00067   typedef typename Superclass::GradientPixelType          GradientPixelType;
00068   typedef typename Superclass::GradientImageType          GradientImageType;
00069   typedef typename Superclass::GradientImagePointer       GradientImagePointer;
00070   typedef typename Superclass::GradientImageFilterType    GradientImageFilterType;
00071   typedef typename Superclass::GradientImageFilterPointer GradientImageFilterPointer;
00072   typedef typename Superclass::FixedImageMaskType         FixedImageMaskType;
00073   typedef typename Superclass::FixedImageMaskPointer      FixedImageMaskPointer;
00074   typedef typename Superclass::MovingImageMaskType        MovingImageMaskType;
00075   typedef typename Superclass::MovingImageMaskPointer     MovingImageMaskPointer;
00076   typedef typename Superclass::MeasureType                MeasureType;
00077   typedef typename Superclass::DerivativeType             DerivativeType;
00078   typedef typename Superclass::DerivativeValueType        DerivativeValueType;
00079   typedef typename Superclass::ParametersType             ParametersType;
00080   typedef typename Superclass::FixedImagePixelType        FixedImagePixelType;
00081   typedef typename Superclass::ImageSampleContainerType    ImageSampleContainerType;
00082   typedef typename Superclass::ImageSampleContainerPointer ImageSampleContainerPointer;
00083   typedef typename Superclass::ScalarType                 ScalarType;
00084 
00086   typedef typename Superclass::SpatialJacobianType  SpatialJacobianType;
00087   typedef typename Superclass
00088     ::JacobianOfSpatialJacobianType                 JacobianOfSpatialJacobianType;
00089   typedef typename Superclass::SpatialHessianType   SpatialHessianType;
00090   typedef typename Superclass
00091     ::JacobianOfSpatialHessianType                  JacobianOfSpatialHessianType;
00092   typedef typename Superclass::InternalMatrixType   InternalMatrixType;
00093 
00095   itkStaticConstMacro( FixedImageDimension, unsigned int, FixedImageType::ImageDimension );
00096 
00100   virtual MeasureType GetValue( const ParametersType & parameters ) const;
00101 
00104   virtual void GetDerivative( const ParametersType & parameters,
00105     DerivativeType & derivative ) const;
00106 
00111   virtual void GetValueAndDerivative(
00112     const ParametersType & parameters,
00113     MeasureType & value,
00114     DerivativeType & derivative ) const;
00115 
00116 protected:
00117 
00119   typedef typename Superclass::FixedImageIndexType                FixedImageIndexType;
00120   typedef typename Superclass::FixedImageIndexValueType           FixedImageIndexValueType;
00121   typedef typename Superclass::MovingImageIndexType               MovingImageIndexType;
00122   typedef typename Superclass::FixedImagePointType                FixedImagePointType;
00123   typedef typename Superclass::MovingImagePointType               MovingImagePointType;
00124   typedef typename Superclass::MovingImageContinuousIndexType     MovingImageContinuousIndexType;
00125   typedef typename Superclass::NonZeroJacobianIndicesType         NonZeroJacobianIndicesType;
00126 
00128   DisplacementMagnitudePenaltyTerm();
00129 
00131   virtual ~DisplacementMagnitudePenaltyTerm() {};
00132 
00136 private:
00137 
00139   DisplacementMagnitudePenaltyTerm( const Self& ); // purposely not implemented
00141   void operator=( const Self& );                    // purposely not implemented
00142 
00143 }; // end class DisplacementMagnitudePenaltyTerm
00144 
00145 
00146 } // end namespace itk
00147 
00148 #ifndef ITK_MANUAL_INSTANTIATION
00149 #include "itkDisplacementMagnitudePenaltyTerm.txx"
00150 #endif
00151 
00152 #endif // #ifndef __itkDisplacementMagnitudePenaltyTerm_h
00153 


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