mdsTetraSimilarityMeasure.h

Go to the documentation of this file.
00001 //==============================================================================
00015 #ifndef MDS_TETRASIMILARITYMEASURE_H
00016 #define MDS_TETRASIMILARITYMEASURE_H
00017 
00018 #include "mdsTetraFeatures.h"
00019 
00020 // MDSTk
00021 #include <MDSTk/Math/mdsVectorFunctions.h>
00022 
00023 // STL
00024 #include <cmath>
00025 
00026 
00027 namespace mds
00028 {
00029 namespace seg
00030 {
00031 
00032 //==============================================================================
00036 class CTetraSimilarityMeasure
00037 {
00038 public:
00040     CTetraSimilarityMeasure(double dThreshold = 0.5) : m_dThreshold(dThreshold) {}
00041 
00043     virtual ~CTetraSimilarityMeasure() {}
00044 
00046     virtual double getSimilarity(const CTetraFeatures& v1, const CTetraFeatures& v2) = 0;
00047 
00051     virtual bool checkSimilarity(const CTetraFeatures& v1, const CTetraFeatures& v2)
00052     {
00053         return (this->getSimilarity(v1, v2) > m_dThreshold);
00054     }
00055 
00057     double getThreshold() { return m_dThreshold; }
00058 
00060     void setThreshold(double dValue) { m_dThreshold = dValue; }
00061 
00062 protected:
00064     double m_dThreshold;
00065 };
00066 
00067 
00068 //==============================================================================
00073 class CTetraMeanValueSimilarity : public CTetraSimilarityMeasure
00074 {
00075 public:
00077     static const double DEFAULT_THRESHOLD;
00078     static const double DEFAULT_RHO;
00079 
00080 public:
00082     CTetraMeanValueSimilarity(double dThreshold = DEFAULT_THRESHOLD,
00083                               double dRho = DEFAULT_RHO
00084                               );
00085 
00087     virtual ~CTetraMeanValueSimilarity() {}
00088 
00090     virtual double getSimilarity(const CTetraFeatures& v1, const CTetraFeatures& v2);
00091 
00092 protected:
00094     double m_dInvRho;
00095 };
00096 
00097 
00098 //==============================================================================
00103 class CTetraVarianceSimilarity : public CTetraSimilarityMeasure
00104 {
00105 public:
00107     static const double DEFAULT_THRESHOLD;
00108 
00109 public:
00111     CTetraVarianceSimilarity(double dThreshold = DEFAULT_THRESHOLD);
00112 
00114     virtual ~CTetraVarianceSimilarity() {}
00115 
00117     virtual double getSimilarity(const CTetraFeatures& v1, const CTetraFeatures& v2);
00118 };
00119 
00120 
00121 //==============================================================================
00125 class CTetraMixtureSimilarity : public CTetraSimilarityMeasure
00126 {
00127 public:
00129     CTetraMixtureSimilarity(CTetraSimilarityMeasure& M1,
00130                             CTetraSimilarityMeasure& M2,
00131                             double dW1,
00132                             double dW2
00133                             );
00134 
00136     virtual ~CTetraMixtureSimilarity() {}
00137 
00139     virtual double getSimilarity(const CTetraFeatures& v1, const CTetraFeatures& v2);
00140 
00142     virtual bool checkSimilarity(const CTetraFeatures& v1, const CTetraFeatures& v2);
00143 
00144 protected:
00146     CTetraSimilarityMeasure& m_Measure1;
00147     CTetraSimilarityMeasure& m_Measure2;
00148     
00150     double m_dW1, m_dW2;
00151 };
00152 
00153 
00154 } // namespace seg
00155 } // namespace mds
00156 
00157 #endif // MDS_TETRASIMILARITYMEASURE_H
00158 

Generated on Thu Mar 11 10:35:44 2010 for MDSTk Extension Libraries by  doxygen 1.4.6-NO