00001
00017 #ifndef MDS_TETRAMEMBERSHIPFCM2_H
00018 #define MDS_TETRAMEMBERSHIPFCM2_H
00019
00020 #define FCM_LOGGING_ENABLED
00021
00022 #include "mdsTetraMembershipFunc.h"
00023
00024
00025 #include <MDSTk/Base/mdsSTLContainer.h>
00026 #include <MDSTk/Math/Algorithm/mdsFuzzyCMeans.h>
00027
00028
00029 #include <vector>
00030
00031
00032 namespace mds
00033 {
00034 namespace seg
00035 {
00036
00037
00044 class CTetraMembershipFCM2 : public CTetraMembershipFunc
00045 {
00046 public:
00048 typedef std::vector<CTetraFeatures> tSubRegions;
00049
00050 public:
00052 CTetraMembershipFCM2(tSubRegions& SubRegions, double dWeight);
00053
00055 virtual ~CTetraMembershipFCM2() {}
00056
00059 virtual bool operator()(vctl::MCTetra *pFirstTetrahedron);
00060
00064 virtual bool operator()(vctl::MCTetra *pFirstTetrahedron,
00065 mds::tSize NumOfClasses
00066 );
00067
00068 protected:
00070 typedef mds::base::CSTLContainer<tSubRegions> tContainer;
00071
00072 protected:
00074 mds::math::CFuzzyCMeans<tContainer, NUM_OF_FEATURES> m_FCM;
00075
00077 tSubRegions& m_SubRegions;
00078 };
00079
00080
00081 }
00082 }
00083
00084 #endif // MDS_TETRAMEMBERSHIPFCM2_H
00085