Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
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
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
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& );
00162 void operator=( const Self& );
00163
00164 };
00165
00166
00167 }
00168
00169
00170 #ifndef ITK_MANUAL_INSTANTIATION
00171 #include "elxCorrespondingPointsEuclideanDistanceMetric.hxx"
00172 #endif
00173
00174 #endif // end #ifndef __elxCorrespondingPointsEuclideanDistanceMetric_H__
00175