15 #ifndef itkCRImageToImageMetric_h
16 #define itkCRImageToImageMetric_h
35 template <
class TFixedImage,
class TMovingImage >
49 typedef std::multimap<FixedImagePixelType, MovingImagePixelType>
MapType;
71 this->m_NumberCounted = 0;
72 this->m_MovingSum = 0;
80 FixedImagePixelType fixedValue,
81 MovingImagePixelType movingValue)
83 this->m_NumberCounted++;
84 this->m_MovingSum += movingValue;
85 this->m_Map.insert(std::pair<FixedImagePixelType, MovingImagePixelType>(fixedValue, movingValue));
93 MeasureType measure = 0;
96 double totalSigmaSquared = 0;
98 double conditionalNumber = 0;
99 double conditionalSum = 0;
100 double conditionalMean = 0;
101 double conditionalSigmaSquared = 0;
103 FixedImagePixelType fixedValue;
104 MovingImagePixelType movingValue;
106 MapIterator mapIterator;
108 totalMean = this->m_MovingSum / (double)this->m_NumberCounted;
110 mapIterator = this->m_Map.begin();
111 while(mapIterator != this->m_Map.end())
113 fixedValue = (*mapIterator).first;
115 conditionalNumber = 0;
117 conditionalSigmaSquared = 0;
119 while( (mapIterator != this->m_Map.end()) && ((*mapIterator).first == fixedValue) )
121 movingValue = (*mapIterator).second;
123 conditionalSum += movingValue;
124 conditionalSigmaSquared += movingValue*movingValue;
125 totalSigmaSquared += movingValue*movingValue;
130 conditionalMean = conditionalSum / conditionalNumber;
132 conditionalSigmaSquared = (conditionalSigmaSquared / conditionalNumber) - (conditionalMean*conditionalMean);
134 measure += (conditionalNumber * conditionalSigmaSquared);
138 totalSigmaSquared = (totalSigmaSquared / (double)this->m_NumberCounted) - totalMean;
140 if (totalSigmaSquared == 0)
146 measure /= ((double)this->m_NumberCounted * totalSigmaSquared);
154 void operator=(
const Self&);
156 unsigned long int m_NumberCounted;
void ResetCostFunction()
Definition: itkCRImageToImageMetric.h:69
Implements Correlation Ratio (Fixed | Moving), without a histogram.
Definition: itkCRImageToImageMetric.h:36
Abstract base class, implementing TemplateMethod [2] for similarity measures.
Definition: itkSimilarityMeasure.h:56
MapType::iterator MapIterator
Definition: itkCRImageToImageMetric.h:50
SmartPointer< const Self > ConstPointer
Definition: itkCRImageToImageMetric.h:45
bool ShouldBeMaximized()
Definition: itkCRImageToImageMetric.h:59
Superclass::MeasureType MeasureType
Definition: itkCRImageToImageMetric.h:48
Definition: niftkITKAffineResampleImage.cxx:74
Superclass::MovingImageType::PixelType MovingImagePixelType
Definition: itkCRImageToImageMetric.h:47
void AggregateCostFunctionPair(FixedImagePixelType fixedValue, MovingImagePixelType movingValue)
Definition: itkCRImageToImageMetric.h:79
std::multimap< FixedImagePixelType, MovingImagePixelType > MapType
Definition: itkCRImageToImageMetric.h:49
Superclass::FixedImageType::PixelType FixedImagePixelType
Definition: itkCRImageToImageMetric.h:46
SimilarityMeasure< TFixedImage, TMovingImage > Superclass
Definition: itkCRImageToImageMetric.h:43
float PixelType
Definition: niftkBreastDCEandADC.cxx:88
AbstractBase class, just to implement the finite difference gradient method.
Definition: itkFiniteDifferenceGradientSimilarityMeasure.h:32
SmartPointer< Self > Pointer
Definition: itkCRImageToImageMetric.h:44
CRImageToImageMetric Self
Definition: itkCRImageToImageMetric.h:42
Superclass::MeasureType MeasureType
Definition: itkSimilarityMeasure.h:80
CRImageToImageMetric()
Definition: itkCRImageToImageMetric.h:63
MeasureType FinalizeCostFunction()
Definition: itkCRImageToImageMetric.h:91
virtual ~CRImageToImageMetric()
Definition: itkCRImageToImageMetric.h:64