go home Home | Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages
elxCorrespondingPointsEuclideanDistanceMetric.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 __elxCorrespondingPointsEuclideanDistanceMetric_H__
00016 #define __elxCorrespondingPointsEuclideanDistanceMetric_H__
00017 
00018 #include "elxIncludes.h"
00019 #include "itkCorrespondingPointsEuclideanDistancePointMetric.h"
00020 
00021 #include "elxTimer.h"
00022 
00023 namespace elastix
00024 {
00025 using namespace itk;
00026 
00039 template <class TElastix >
00040 class CorrespondingPointsEuclideanDistanceMetric
00041   : public
00042   CorrespondingPointsEuclideanDistancePointMetric<
00043     typename MetricBase<TElastix>::FixedPointSetType,
00044     typename MetricBase<TElastix>::MovingPointSetType >,
00045   public MetricBase<TElastix>
00046 {
00047 public:
00048 
00050   typedef CorrespondingPointsEuclideanDistanceMetric    Self;
00051   typedef CorrespondingPointsEuclideanDistancePointMetric<
00052     typename MetricBase<TElastix>::FixedPointSetType,
00053     typename MetricBase<TElastix>::MovingPointSetType > Superclass1;
00054   typedef MetricBase<TElastix>                          Superclass2;
00055   typedef SmartPointer<Self>                            Pointer;
00056   typedef SmartPointer<const Self>                      ConstPointer;
00057 
00059   itkNewMacro( Self );
00060 
00062   itkTypeMacro( CorrespondingPointsEuclideanDistanceMetric,
00063     CorrespondingPointsEuclideanDistancePointMetric );
00064 
00069   elxClassNameMacro( "CorrespondingPointsEuclideanDistanceMetric" );
00070 
00072   typedef typename Superclass1::CoordinateRepresentationType CoordinateRepresentationType;
00073   typedef typename Superclass1::FixedPointSetType          FixedPointSetType;
00074   typedef typename Superclass1::FixedPointSetConstPointer  FixedPointSetConstPointer;
00075   typedef typename Superclass1::MovingPointSetType         MovingPointSetType;
00076   typedef typename Superclass1::MovingPointSetConstPointer MovingPointSetConstPointer;
00077 
00078 //  typedef typename Superclass1::FixedImageRegionType       FixedImageRegionType;
00079   typedef typename Superclass1::TransformType              TransformType;
00080   typedef typename Superclass1::TransformPointer           TransformPointer;
00081   typedef typename Superclass1::InputPointType             InputPointType;
00082   typedef typename Superclass1::OutputPointType            OutputPointType;
00083   typedef typename Superclass1::TransformParametersType    TransformParametersType;
00084   typedef typename Superclass1::TransformJacobianType      TransformJacobianType;
00085 //  typedef typename Superclass1::RealType                   RealType;
00086   typedef typename Superclass1::FixedImageMaskType         FixedImageMaskType;
00087   typedef typename Superclass1::FixedImageMaskPointer      FixedImageMaskPointer;
00088   typedef typename Superclass1::MovingImageMaskType        MovingImageMaskType;
00089   typedef typename Superclass1::MovingImageMaskPointer     MovingImageMaskPointer;
00090   typedef typename Superclass1::MeasureType                MeasureType;
00091   typedef typename Superclass1::DerivativeType             DerivativeType;
00092   typedef typename Superclass1::ParametersType             ParametersType;
00093 
00095   typedef typename Superclass2::ElastixType               ElastixType;
00096   typedef typename Superclass2::ElastixPointer            ElastixPointer;
00097   typedef typename Superclass2::ConfigurationType         ConfigurationType;
00098   typedef typename Superclass2::ConfigurationPointer      ConfigurationPointer;
00099   typedef typename Superclass2::RegistrationType          RegistrationType;
00100   typedef typename Superclass2::RegistrationPointer       RegistrationPointer;
00101   typedef typename Superclass2::ITKBaseType               ITKBaseType;
00102   typedef typename Superclass2::FixedImageType            FixedImageType;
00103   typedef typename Superclass2::MovingImageType           MovingImageType;
00104 
00106   itkStaticConstMacro( FixedImageDimension, unsigned int,
00107     FixedImageType::ImageDimension );
00108 
00110   itkStaticConstMacro( MovingImageDimension, unsigned int,
00111     MovingImageType::ImageDimension );
00112 
00116   typedef FixedPointSetType   PointSetType;
00117   typedef FixedImageType      ImageType;
00118 
00120   typedef tmr::Timer          TimerType;
00121   typedef TimerType::Pointer  TimerPointer;
00122 
00126   virtual void Initialize( void ) throw ( ExceptionObject );
00127 
00133   virtual int BeforeAllBase( void );
00134 
00139   virtual void BeforeRegistration( void );
00140 
00142   unsigned int ReadLandmarks(
00143     const std::string & landmarkFileName,
00144     typename PointSetType::Pointer & pointSet,
00145     const typename ImageType::ConstPointer image );
00146 
00148   virtual void SelectNewSamples( void ){ };
00149 
00150 protected:
00151 
00153   CorrespondingPointsEuclideanDistanceMetric(){};
00155   virtual ~CorrespondingPointsEuclideanDistanceMetric() {}
00156 
00157 private:
00158 
00160   CorrespondingPointsEuclideanDistanceMetric( const Self& ); // purposely not implemented
00162   void operator=( const Self& );              // purposely not implemented
00163 
00164 }; // end class CorrespondingPointsEuclideanDistanceMetric
00165 
00166 
00167 } // end namespace elastix
00168 
00169 
00170 #ifndef ITK_MANUAL_INSTANTIATION
00171 #include "elxCorrespondingPointsEuclideanDistanceMetric.hxx"
00172 #endif
00173 
00174 #endif // end #ifndef __elxCorrespondingPointsEuclideanDistanceMetric_H__
00175 


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