00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef __itkPatternIntensityPointSetToImageMetric_h
00018 #define __itkPatternIntensityPointSetToImageMetric_h
00019
00020 #include "itkSimilarityRegistrationMetric.h"
00021 #include "itkCovariantVector.h"
00022 #include "itkPoint.h"
00023
00024
00025 namespace itk
00026 {
00027
00040 template < class TTarget, class TMapper >
00041 class ITK_EXPORT PatternIntensityPointSetToImageMetric :
00042 public SimilarityRegistrationMetric< TTarget, TMapper, double,
00043 CovariantVector<double, TMapper::SpaceDimension > >
00044 {
00045 public:
00047 itkStaticConstMacro(SpaceDimension, unsigned int,
00048 TMapper::SpaceDimension);
00049 itkStaticConstMacro(RangeDimension, unsigned int, 9);
00050
00052 typedef double MeasureType;
00053
00055 typedef CovariantVector<MeasureType, itkGetStaticConstMacro(SpaceDimension) >
00056 DerivativeType;
00057
00059 typedef PatternIntensityPointSetToImageMetric Self;
00060 typedef SimilarityRegistrationMetric<TTarget, TMapper,
00061 MeasureType,DerivativeType > Superclass;
00062 typedef SmartPointer<Self> Pointer;
00063 typedef SmartPointer<const Self> ConstPointer;
00064
00066 itkNewMacro(Self);
00067
00069 itkTypeMacro(PatternIntensityPointSetToImageMetric, Object);
00070
00072 typedef TMapper MapperType;
00073
00075 typedef typename MapperType::DomainType ReferenceType;
00076
00078 typedef TTarget TargetType;
00079
00081 typedef typename ReferenceType::ConstPointer ReferenceConstPointer;
00082
00084 typedef typename TargetType::ConstPointer TargetConstPointer;
00085
00087 typedef typename MapperType::Pointer MapperPointer;
00088
00090 typedef typename TMapper::ParametersType ParametersType;
00091
00093 const DerivativeType & GetDerivative( const ParametersType & parameters );
00094
00096 MeasureType GetValue( const ParametersType & parameters );
00097
00099 void GetValueAndDerivative( const ParametersType & parameters,
00100 MeasureType& Value, DerivativeType& Derivative);
00101
00103 itkSetMacro( Lambda, double );
00104 itkGetReferenceConstMacro( Lambda, double );
00105
00106 protected:
00107 PatternIntensityPointSetToImageMetric();
00108 virtual ~PatternIntensityPointSetToImageMetric() {};
00109 void PrintSelf(std::ostream& os, Indent indent) const;
00110
00111 private:
00112 PatternIntensityPointSetToImageMetric(const Self&);
00113 void operator=(const Self&);
00114
00115 double m_Lambda;
00116
00117
00118 };
00119
00120 }
00121
00122 #ifndef ITK_MANUAL_INSTANTIATION
00123 #include "itkPatternIntensityPointSetToImageMetric.txx"
00124 #endif
00125
00126 #endif
00127
00128
00129