15 #ifndef itkMSDImageToImageMetric_h
16 #define itkMSDImageToImageMetric_h
28 template <
class TFixedImage,
class TMovingImage >
40 typedef typename Superclass::RealType
RealType;
64 this->m_NumberOfSamplesForCostFunction = 0;
71 FixedImagePixelType fixedValue,
72 MovingImagePixelType movingValue)
74 this->m_MSD += ((fixedValue - movingValue) * (fixedValue - movingValue));
75 this->m_NumberOfSamplesForCostFunction++;
83 if (this->m_NumberOfSamplesForCostFunction > 0)
85 return this->m_MSD / (double)m_NumberOfSamplesForCostFunction;
98 m_NumberOfSamplesForDerivative = 0;
105 DerivativeType & derivative,
106 const GradientPixelType & gradientPixel,
107 const TransformJacobianType & jacobian,
108 unsigned int dimensions,
109 unsigned int parameterNumber,
111 RealType movingValue)
113 RealType sum = NumericTraits< RealType >::Zero;
114 for(
unsigned int dim=0; dim < dimensions; dim++)
116 sum += 2.0 * (movingValue - fixedValue) * jacobian( dim, parameterNumber ) * gradientPixel[dim];
118 derivative[parameterNumber] += sum;
119 m_NumberOfSamplesForDerivative++;
129 if( !this->m_NumberOfSamplesForDerivative )
131 itkExceptionMacro(<<
"All the points mapped to outside of the moving image");
135 unsigned int parametersDimension = derivative.GetSize();
137 for(
unsigned int i = 0; i < parametersDimension; i++)
139 derivative[i] /= this->m_NumberOfSamplesForDerivative;
146 void operator=(
const Self&);
150 long int m_NumberOfSamplesForCostFunction;
151 long int m_NumberOfSamplesForDerivative;
MSDImageToImageMetric Self
Definition: itkMSDImageToImageMetric.h:35
Abstract base class, implementing TemplateMethod [2] for similarity measures.
Definition: itkSimilarityMeasure.h:56
Superclass::GradientPixelType GradientPixelType
Definition: itkMSDImageToImageMetric.h:42
void FinalizeDerivative(DerivativeType &derivative)
Definition: itkMSDImageToImageMetric.h:127
Superclass::MeasureType MeasureType
Definition: itkMSDImageToImageMetric.h:39
Implements Mean of Squared Difference similarity measure.
Definition: itkMSDImageToImageMetric.h:29
Definition: niftkITKAffineResampleImage.cxx:74
void ResetCostFunction()
Definition: itkMSDImageToImageMetric.h:61
Superclass::RealType RealType
Definition: itkMSDImageToImageMetric.h:40
SmartPointer< const Self > ConstPointer
Definition: itkMSDImageToImageMetric.h:38
virtual ~MSDImageToImageMetric()
Definition: itkMSDImageToImageMetric.h:56
void ResetDerivativeComputations()
Definition: itkMSDImageToImageMetric.h:96
Superclass::FixedImagePixelType FixedImagePixelType
Definition: itkMSDImageToImageMetric.h:44
void ComputeDerivativeValue(DerivativeType &derivative, const GradientPixelType &gradientPixel, const TransformJacobianType &jacobian, unsigned int dimensions, unsigned int parameterNumber, RealType fixedValue, RealType movingValue)
Definition: itkMSDImageToImageMetric.h:104
Superclass::TransformJacobianType TransformJacobianType
Definition: itkMSDImageToImageMetric.h:43
Superclass::MovingImagePixelType MovingImagePixelType
Definition: itkMSDImageToImageMetric.h:45
SimilarityMeasure< TFixedImage, TMovingImage > Superclass
Definition: itkMSDImageToImageMetric.h:36
SmartPointer< Self > Pointer
Definition: itkMSDImageToImageMetric.h:37
Superclass::DerivativeType DerivativeType
Definition: itkMSDImageToImageMetric.h:41
void AggregateCostFunctionPair(FixedImagePixelType fixedValue, MovingImagePixelType movingValue)
Definition: itkMSDImageToImageMetric.h:70
MSDImageToImageMetric()
Definition: itkMSDImageToImageMetric.h:55
MeasureType FinalizeCostFunction()
Definition: itkMSDImageToImageMetric.h:81
AbstractBase class, just to implement a gradient method based on Jacobian.
Definition: itkJacobianGradientSimilarityMeasure.h:35