source: foam/trunk/vision/src/Classifier.h @ 95

Revision 95, 1.6 KB checked in by dave, 10 years ago (diff)

eigenface user classification seems to work on the test video

Line 
1// Copyright (C) 2009 foam
2//
3// This program is free software; you can redistribute it and/or modify
4// it under the terms of the GNU General Public License as published by
5// the Free Software Foundation; either version 2 of the License, or
6// (at your option) any later version.
7//
8// This program is distributed in the hope that it will be useful,
9// but WITHOUT ANY WARRANTY; without even the implied warranty of
10// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11// GNU General Public License for more details.
12//
13// You should have received a copy of the GNU General Public License
14// along with this program; if not, write to the Free Software
15// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
16
17#include <vector>
18#include <map>
19#include <set>
20#include "Vector.h"
21#include "Matrix.h"
22
23#ifndef FOAM_CLASSIFIER
24#define FOAM_CLASSIFIER
25
26// A base class classifier
27
28class Classifier
29{
30public:
31        Classifier(unsigned int FeatureSize);
32        ~Classifier();
33       
34        virtual void AddFeature(int group, const Vector<float> &f) = 0;
35        virtual int Classify(const Vector<float> &f, float &error) = 0;
36       
37        bool GroupExists(int g) { return m_GroupMeans.find(g)!=m_GroupMeans.end(); }
38        Vector<float> GetGroupMean(int g) { return m_GroupMeans[g]; }
39       
40protected:
41       
42        void CalcMean();
43        void CalcGroupMeans();
44        void AddFeatureToGroup(int group, const Vector<float> &f);
45
46        typedef std::vector<Vector<float> > FeatureVec;
47        typedef std::map<int,FeatureVec> FeatureMap;
48        typedef std::map<int,FeatureVec> GroupMap;
49       
50        FeatureMap m_Features;
51        GroupMap m_Groups;
52        unsigned int m_FeatureSize;
53
54        Vector<float> m_Mean;
55        std::map<int,Vector<float> > m_GroupMeans;
56};
57
58#endif
Note: See TracBrowser for help on using the repository browser.