/vol/vipdata/irtk/packages/registration/include/irtkGenericHistogramSimilarityMetric.h

00001 /*=========================================================================
00002 
00003   Library   : Image Registration Toolkit (IRTK)
00004   Module    : $Id: irtkGenericHistogramSimilarityMetric.h 2 2008-12-23 12:40:14Z dr $
00005   Copyright : Imperial College, Department of Computing
00006               Visual Information Processing (VIP), 2008 onwards
00007   Date      : $Date: 2008-12-23 12:40:14 +0000 (Tue, 23 Dec 2008) $
00008   Version   : $Revision: 2 $
00009   Changes   : $Author: dr $
00010 
00011 =========================================================================*/
00012 
00013 #ifndef _IRTKGENERICHISTOGRAMSIMILARITYMETRIC_H
00014 
00015 #define _IRTKGENERICHISTOGRAMSIMILARITYMETRIC_H
00016 
00026 class irtkGenericHistogramSimilarityMetric : public irtkHistogramSimilarityMetric
00027 {
00028 
00030   irtkSimilarityMeasure _SimilarityMeasure;
00031 
00032 public:
00033 
00035   irtkGenericHistogramSimilarityMetric(irtkSimilarityMeasure = MI, int = 64, int = 64);
00036 
00038   virtual void Reset();
00039 
00042   virtual void Reset(irtkGenericHistogramSimilarityMetric& metric);
00043 
00047   virtual void PutMin(double targetMin, double sourceMin);
00048 
00052   virtual void GetMin(double *targetMin, double *sourceMin) const;
00053 
00057   virtual void PutMax(double targetMax, double sourceMax);
00058 
00062   virtual void GetMax(double *targetMax, double *sourceMax) const;
00063 
00068   virtual void Add(int targetBin, int sourceBin, int count = 1);
00069 
00074   virtual void Delete(int targetBin, int sourceBin, int count = 1);
00075 
00077   virtual int GetNumberOfBinsX() const;
00078 
00080   virtual int GetNumberOfBinsY() const;
00081 
00083   virtual int NumberOfSamples() const;
00084 
00087   virtual void SetMeasure(irtkSimilarityMeasure measure);
00088 
00090   virtual irtkSimilarityMeasure GetMeasure() const;
00091 
00093   virtual double Evaluate();
00094 
00095 };
00096 
00097 inline irtkGenericHistogramSimilarityMetric::irtkGenericHistogramSimilarityMetric(irtkSimilarityMeasure SimilarityMeasure, int target_nbins, int source_nbins) : irtkHistogramSimilarityMetric(target_nbins, source_nbins)
00098 {
00099   _SimilarityMeasure = SimilarityMeasure;
00100 }
00101 
00102 inline void irtkGenericHistogramSimilarityMetric::Reset()
00103 {
00104   this->_histogram->Reset();
00105 }
00106 
00107 inline void irtkGenericHistogramSimilarityMetric::Reset(irtkGenericHistogramSimilarityMetric& metric)
00108 {
00109   this->_histogram->Reset(*(metric._histogram));
00110 }
00111 
00112 inline void irtkGenericHistogramSimilarityMetric::PutMin(double targetMin, double sourceMin)
00113 {
00114   this->_histogram->PutMin(targetMin, sourceMin);
00115 }
00116 
00117 inline void irtkGenericHistogramSimilarityMetric::GetMin(double *targetMin, double *sourceMin) const
00118 {
00119   this->_histogram->GetMin(targetMin, sourceMin);
00120 }
00121 
00122 inline void irtkGenericHistogramSimilarityMetric::PutMax(double targetMax, double sourceMax)
00123 {
00124   this->_histogram->PutMax(targetMax, sourceMax);
00125 }
00126 
00127 inline void irtkGenericHistogramSimilarityMetric::GetMax(double *targetMax, double *sourceMax) const
00128 {
00129   this->_histogram->GetMax(targetMax, sourceMax);
00130 }
00131 
00132 inline void irtkGenericHistogramSimilarityMetric::SetMeasure(irtkSimilarityMeasure measure)
00133 {
00134   _SimilarityMeasure = measure;
00135 }
00136 
00137 inline irtkSimilarityMeasure irtkGenericHistogramSimilarityMetric::GetMeasure() const
00138 {
00139   return _SimilarityMeasure;
00140 }
00141 
00142 inline int irtkGenericHistogramSimilarityMetric::GetNumberOfBinsX() const
00143 {
00144   return this->_histogram->GetNumberOfBinsX();
00145 }
00146 
00147 inline int irtkGenericHistogramSimilarityMetric::GetNumberOfBinsY() const
00148 {
00149   return this->_histogram->GetNumberOfBinsY();
00150 }
00151 
00152 inline int irtkGenericHistogramSimilarityMetric::NumberOfSamples() const
00153 {
00154   return this->_histogram->NumberOfSamples();
00155 }
00156 
00157 inline void irtkGenericHistogramSimilarityMetric::Add(int i, int j, int n)
00158 {
00159   this->_histogram->Add(i, j, n);
00160 }
00161 
00162 inline void irtkGenericHistogramSimilarityMetric::Delete(int i, int j, int n)
00163 {
00164   this->_histogram->Delete(i, j, n);
00165 }
00166 
00167 #endif