00001 #define __cplusplus__ 00002 #ifndef __GENPOTTSMRF__ 00003 #define __GENPOTTSMRF__ 00004 00005 #include<iostream> 00006 #include<istream> 00007 #include<fstream> 00008 #include<string> 00009 #include<vector> 00010 #include<sstream> 00011 #include <cmath> 00012 00013 #include <MRF.hpp> 00014 00015 using namespace std; 00016 00017 00018 00028 class Generic_Potts : public MRF { 00030 vector<double> Beta ; 00032 vector<double> Alpha; 00033 00034 public : 00036 Generic_Potts(); 00038 Generic_Potts(uint k); 00040 Generic_Potts(Neighborhood_System *nhs); 00042 Generic_Potts(Neighborhood_System *nhs, uint k); 00044 Generic_Potts(Neighborhood_System *nhs, uint k , 00045 vector<double> const & alph ,vector<double> const & bet); 00047 ~Generic_Potts(); 00049 void DeleteAll(); 00050 00052 void Get_Alpha(vector<double> & a); 00054 void Get_Beta(vector<double> & b ); 00055 00057 double H(uint i, uint k, vector<uint> const & Z); 00059 double Hmf(uint i, uint k); 00060 00062 void ReadFromFile(string filename); 00064 void WriteToFile(string filename); 00065 00067 void Gradient(vector<double> const & tik, vector<double> & Q); 00069 void Update_Gradient(vector<double> const & Q); 00070 00071 void Read_Params(istream & is); 00072 void Write_Params(ostream & os); 00073 00075 uint Degrees_Of_Freedom(); 00076 00077 void Info(); 00078 00079 }; 00080 00081 #endif