From b2ddf5e7b126c7162e92666ea358347a91447fa3 Mon Sep 17 00:00:00 2001 From: Rik Veenboer Date: Tue, 8 Feb 2011 11:30:33 +0000 Subject: [PATCH] Classifier class van wiigee toegevoegd, deze was op mysterieuze wijze verdwenen waardoor fouten optraden. --- java/src/org/wiigee/logic/Classifier.java | 109 ++++++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 java/src/org/wiigee/logic/Classifier.java diff --git a/java/src/org/wiigee/logic/Classifier.java b/java/src/org/wiigee/logic/Classifier.java new file mode 100644 index 0000000..a8f1b5a --- /dev/null +++ b/java/src/org/wiigee/logic/Classifier.java @@ -0,0 +1,109 @@ +/* + * wiigee - accelerometerbased gesture recognition + * Copyright (C) 2007, 2008, 2009 Benjamin Poppinga + * + * Developed at University of Oldenburg + * Contact: wiigee@benjaminpoppinga.de + * + * This file is part of wiigee. + * + * wiigee is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +package org.wiigee.logic; + +import java.util.Vector; + +public class Classifier { + + private Vector gesturemodel; // each gesturetype got its own + // gesturemodel in this vector + private double lastprob; + + public Classifier() { + this.gesturemodel=new Vector(); + this.lastprob=0.0; + } + + /** + * This method recognize a specific gesture, given to the procedure. + * For classification a bayes classification algorithm is used. + * + * @param g gesture to classify + */ + public int classifyGesture(Gesture g) { + //Log.write("Recognizing gesture..."); + + // Wert im Nenner berechnen, nach Bayes + double sum = 0; + for(int i=0; irecogprob) { + probgesture=tmpgesture; + probmodel=tmpmodel; + recogprob=((tmpmodel*tmpgesture)/sum); + recognized=i; + } + } + + // a gesture could be recognized + if(recogprob>0 && probmodel>0 && probgesture>0 && sum>0) { + this.lastprob=recogprob; + return recognized; + } else { + // no gesture could be recognized + return -1; + } + + } + + public double getLastProbability() { + return this.lastprob; + } + + public void addGestureModel(GestureModel gm) { + this.gesturemodel.add(gm); + } + + public GestureModel getGestureModel(int id) { + return this.gesturemodel.elementAt(id); + } + + public Vector getGestureModels() { + return this.gesturemodel; + } + + public int getCountOfGestures() { + return this.gesturemodel.size(); + } + + public void clear() { + this.gesturemodel = new Vector(); + } + + +}