go home Home | Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages
elxTransformRigidityPenaltyTerm.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 __elxTransformRigidityPenaltyTerm_H__
00015 #define __elxTransformRigidityPenaltyTerm_H__
00016 
00017 #include "elxIncludes.h"
00018 #include "itkTransformRigidityPenaltyTerm.h"
00019 
00020 #include "elxTimer.h"
00021 
00022 namespace elastix
00023 {
00024 using namespace itk;
00025 
00108 template <class TElastix >
00109 class TransformRigidityPenalty
00110   : public TransformRigidityPenaltyTerm<
00111   ITK_TYPENAME MetricBase<TElastix>::FixedImageType,
00112   double >,
00113   public MetricBase<TElastix>
00114 {
00115 public:
00116 
00118   typedef TransformRigidityPenalty                      Self;
00119   typedef TransformRigidityPenaltyTerm<
00120     typename MetricBase<TElastix>::FixedImageType,
00121     double >                                            Superclass1;
00122   typedef MetricBase<TElastix>                          Superclass2;
00123   typedef SmartPointer<Self>                            Pointer;
00124   typedef SmartPointer<const Self>                      ConstPointer;
00125 
00127   itkNewMacro( Self );
00128 
00130   itkTypeMacro( TransformRigidityPenalty, TransformRigidityPenaltyTerm );
00131 
00136   elxClassNameMacro( "TransformRigidityPenalty" );
00137 
00139   typedef typename Superclass1::CoordinateRepresentationType CoordinateRepresentationType;
00140   typedef typename Superclass1::MovingImageType             MovingImageType;
00141   typedef typename Superclass1::MovingImagePixelType        MovingImagePixelType;
00142   typedef typename Superclass1::MovingImageConstPointer     MovingImageConstPointer;
00143   typedef typename Superclass1::FixedImageType              FixedImageType;
00144   typedef typename Superclass1::FixedImageConstPointer      FixedImageConstPointer;
00145   typedef typename Superclass1::FixedImageRegionType        FixedImageRegionType;
00146   typedef typename Superclass1::TransformType               TransformType;
00147   typedef typename Superclass1::TransformPointer            TransformPointer;
00148   typedef typename Superclass1::InputPointType              InputPointType;
00149   typedef typename Superclass1::OutputPointType             OutputPointType;
00150   typedef typename Superclass1::TransformParametersType     TransformParametersType;
00151   typedef typename Superclass1::TransformJacobianType       TransformJacobianType;
00152   typedef typename Superclass1::InterpolatorType            InterpolatorType;
00153   typedef typename Superclass1::InterpolatorPointer         InterpolatorPointer;
00154   typedef typename Superclass1::RealType                    RealType;
00155   typedef typename Superclass1::GradientPixelType           GradientPixelType;
00156   typedef typename Superclass1::GradientImageType           GradientImageType;
00157   typedef typename Superclass1::GradientImagePointer        GradientImagePointer;
00158   typedef typename Superclass1::GradientImageFilterType     GradientImageFilterType;
00159   typedef typename Superclass1::GradientImageFilterPointer  GradientImageFilterPointer;
00160   typedef typename Superclass1::FixedImageMaskType          FixedImageMaskType;
00161   typedef typename Superclass1::FixedImageMaskPointer       FixedImageMaskPointer;
00162   typedef typename Superclass1::MovingImageMaskType         MovingImageMaskType;
00163   typedef typename Superclass1::MovingImageMaskPointer      MovingImageMaskPointer;
00164   typedef typename Superclass1::MeasureType                 MeasureType;
00165   typedef typename Superclass1::DerivativeType              DerivativeType;
00166   typedef typename Superclass1::ParametersType              ParametersType;
00167   typedef typename Superclass1::FixedImagePixelType         FixedImagePixelType;
00168   typedef typename Superclass1::MovingImageRegionType       MovingImageRegionType;
00169   typedef typename Superclass1::ImageSamplerType            ImageSamplerType;
00170   typedef typename Superclass1::ImageSamplerPointer         ImageSamplerPointer;
00171   typedef typename Superclass1::ImageSampleContainerType    ImageSampleContainerType;
00172   typedef typename Superclass1::ImageSampleContainerPointer ImageSampleContainerPointer;
00173   typedef typename Superclass1::FixedImageLimiterType       FixedImageLimiterType;
00174   typedef typename Superclass1::MovingImageLimiterType      MovingImageLimiterType;
00175   typedef typename Superclass1::FixedImageLimiterOutputType FixedImageLimiterOutputType;
00176   typedef typename Superclass1::MovingImageLimiterOutputType MovingImageLimiterOutputType;
00177 
00178   typedef typename Superclass1::CoefficientImageType        CoefficientImageType;
00179 
00181   itkStaticConstMacro( FixedImageDimension, unsigned int,
00182     FixedImageType::ImageDimension );
00183 
00185   itkStaticConstMacro( MovingImageDimension, unsigned int,
00186     MovingImageType::ImageDimension );
00187 
00189   typedef typename Superclass2::ElastixType               ElastixType;
00190   typedef typename Superclass2::ElastixPointer            ElastixPointer;
00191   typedef typename Superclass2::ConfigurationType         ConfigurationType;
00192   typedef typename Superclass2::ConfigurationPointer      ConfigurationPointer;
00193   typedef typename Superclass2::RegistrationType          RegistrationType;
00194   typedef typename Superclass2::RegistrationPointer       RegistrationPointer;
00195   typedef typename Superclass2::ITKBaseType               ITKBaseType;
00196 
00198   typedef tmr::Timer          TimerType;
00200   typedef TimerType::Pointer  TimerPointer;
00201 
00205   virtual void Initialize( void ) throw (ExceptionObject);
00206 
00211   virtual void BeforeEachResolution( void );
00212 
00219   virtual void BeforeRegistration( void );
00220 
00225   virtual void AfterEachIteration( void );
00226 
00231   virtual void SelectNewSamples( void ){};
00232 
00233 protected:
00234 
00236   TransformRigidityPenalty(){};
00237 
00239   virtual ~TransformRigidityPenalty() {}
00240 
00241 private:
00242 
00244   TransformRigidityPenalty( const Self& ); // purposely not implemented
00246   void operator=( const Self& );              // purposely not implemented
00247 
00248 }; // end class TransformRigidityPenalty
00249 
00250 
00251 } // end namespace elastix
00252 
00253 
00254 #ifndef ITK_MANUAL_INSTANTIATION
00255 #include "elxTransformRigidityPenaltyTerm.hxx"
00256 #endif
00257 
00258 #endif // end #ifndef __elxTransformRigidityPenaltyTerm_H__
00259 


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