00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
#ifndef __itkMeanReciprocalSquareDifferencePointSetToImageMetric_h
00018
#define __itkMeanReciprocalSquareDifferencePointSetToImageMetric_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 MeanReciprocalSquareDifferencePointSetToImageMetric :
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 MeanReciprocalSquareDifferencePointSetToImageMetric
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(MeanReciprocalSquareDifferencePointSetToImageMetric,
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 MeanReciprocalSquareDifferencePointSetToImageMetric();
00108
virtual ~MeanReciprocalSquareDifferencePointSetToImageMetric() {};
00109
void PrintSelf(std::ostream& os,
Indent indent)
const;
00110
00111
private:
00112 MeanReciprocalSquareDifferencePointSetToImageMetric(
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 "itkMeanReciprocalSquareDifferencePointSetToImageMetric.txx"
00124
#endif
00125
00126
#endif
00127
00128
00129