go home Home | Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages
elxDisplacementMagnitudePenalty.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 __elxDisplacementMagnitudePenalty_H__
00015 #define __elxDisplacementMagnitudePenalty_H__
00016 
00017 #include "elxIncludes.h"
00018 #include "itkDisplacementMagnitudePenaltyTerm.h"
00019 
00020 #include "elxTimer.h"
00021 
00022 namespace elastix
00023 {
00024 using namespace itk;
00025 
00043   template <class TElastix >
00044     class DisplacementMagnitudePenalty:
00045     public
00046       DisplacementMagnitudePenaltyTerm<
00047         ITK_TYPENAME MetricBase<TElastix>::FixedImageType,
00048         double >,
00049     public MetricBase<TElastix>
00050   {
00051   public:
00052 
00054     typedef DisplacementMagnitudePenalty                 Self;
00055     typedef DisplacementMagnitudePenaltyTerm<
00056       typename MetricBase<TElastix>::FixedImageType,
00057       double >                                            Superclass1;
00058     typedef MetricBase<TElastix>                          Superclass2;
00059     typedef SmartPointer<Self>                            Pointer;
00060     typedef SmartPointer<const Self>                      ConstPointer;
00061 
00063     itkNewMacro( Self );
00064 
00066     itkTypeMacro( DisplacementMagnitudePenalty, DisplacementMagnitudePenaltyTerm );
00067 
00072     elxClassNameMacro( "DisplacementMagnitudePenalty" );
00073 
00075     typedef typename
00076       Superclass1::CoordinateRepresentationType              CoordinateRepresentationType;
00077     typedef typename Superclass1::MovingImageType            MovingImageType;
00078     typedef typename Superclass1::MovingImagePixelType       MovingImagePixelType;
00079     typedef typename Superclass1::MovingImageConstPointer    MovingImageConstPointer;
00080     typedef typename Superclass1::FixedImageType             FixedImageType;
00081     typedef typename Superclass1::FixedImageConstPointer     FixedImageConstPointer;
00082     typedef typename Superclass1::FixedImageRegionType       FixedImageRegionType;
00083     typedef typename Superclass1::TransformType              TransformType;
00084     typedef typename Superclass1::TransformPointer           TransformPointer;
00085     typedef typename Superclass1::InputPointType             InputPointType;
00086     typedef typename Superclass1::OutputPointType            OutputPointType;
00087     typedef typename Superclass1::TransformParametersType    TransformParametersType;
00088     typedef typename Superclass1::TransformJacobianType      TransformJacobianType;
00089     typedef typename Superclass1::InterpolatorType           InterpolatorType;
00090     typedef typename Superclass1::InterpolatorPointer        InterpolatorPointer;
00091     typedef typename Superclass1::RealType                   RealType;
00092     typedef typename Superclass1::GradientPixelType          GradientPixelType;
00093     typedef typename Superclass1::GradientImageType          GradientImageType;
00094     typedef typename Superclass1::GradientImagePointer       GradientImagePointer;
00095     typedef typename Superclass1::GradientImageFilterType    GradientImageFilterType;
00096     typedef typename Superclass1::GradientImageFilterPointer GradientImageFilterPointer;
00097     typedef typename Superclass1::FixedImageMaskType         FixedImageMaskType;
00098     typedef typename Superclass1::FixedImageMaskPointer      FixedImageMaskPointer;
00099     typedef typename Superclass1::MovingImageMaskType        MovingImageMaskType;
00100     typedef typename Superclass1::MovingImageMaskPointer     MovingImageMaskPointer;
00101     typedef typename Superclass1::MeasureType                MeasureType;
00102     typedef typename Superclass1::DerivativeType             DerivativeType;
00103     typedef typename Superclass1::ParametersType             ParametersType;
00104     typedef typename Superclass1::FixedImagePixelType        FixedImagePixelType;
00105     typedef typename Superclass1::MovingImageRegionType      MovingImageRegionType;
00106     typedef typename Superclass1::ImageSamplerType           ImageSamplerType;
00107     typedef typename Superclass1::ImageSamplerPointer        ImageSamplerPointer;
00108     typedef typename Superclass1::ImageSampleContainerType   ImageSampleContainerType;
00109     typedef typename
00110       Superclass1::ImageSampleContainerPointer               ImageSampleContainerPointer;
00111     typedef typename Superclass1::FixedImageLimiterType      FixedImageLimiterType;
00112     typedef typename Superclass1::MovingImageLimiterType     MovingImageLimiterType;
00113     typedef typename
00114       Superclass1::FixedImageLimiterOutputType               FixedImageLimiterOutputType;
00115     typedef typename
00116       Superclass1::MovingImageLimiterOutputType              MovingImageLimiterOutputType;
00117 
00119     itkStaticConstMacro( FixedImageDimension, unsigned int,
00120       FixedImageType::ImageDimension );
00121 
00123     itkStaticConstMacro( MovingImageDimension, unsigned int,
00124       MovingImageType::ImageDimension );
00125 
00127     typedef typename Superclass2::ElastixType               ElastixType;
00128     typedef typename Superclass2::ElastixPointer            ElastixPointer;
00129     typedef typename Superclass2::ConfigurationType         ConfigurationType;
00130     typedef typename Superclass2::ConfigurationPointer      ConfigurationPointer;
00131     typedef typename Superclass2::RegistrationType          RegistrationType;
00132     typedef typename Superclass2::RegistrationPointer       RegistrationPointer;
00133     typedef typename Superclass2::ITKBaseType               ITKBaseType;
00134 
00136     typedef tmr::Timer          TimerType;
00138     typedef TimerType::Pointer  TimerPointer;
00139 
00143     virtual void Initialize( void ) throw (ExceptionObject);
00144 
00145   protected:
00146 
00148     DisplacementMagnitudePenalty(){};
00149 
00151     virtual ~DisplacementMagnitudePenalty() {}
00152 
00153   private:
00154 
00156     DisplacementMagnitudePenalty( const Self& ); // purposely not implemented
00158     void operator=( const Self& );              // purposely not implemented
00159 
00160   }; // end class DisplacementMagnitudePenalty
00161 
00162 
00163 } // end namespace elastix
00164 
00165 
00166 #ifndef ITK_MANUAL_INSTANTIATION
00167 #include "elxDisplacementMagnitudePenalty.hxx"
00168 #endif
00169 
00170 #endif // end #ifndef __elxDisplacementMagnitudePenalty_H__
00171 


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