Back to project page wiigee_android_test.
The source code is released under:
GNU Lesser General Public License
If you think the Android project wiigee_android_test listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
/* * wiigee - accelerometerbased gesture recognition * Copyright (C) 2007, 2008, 2009 Benjamin Poppinga * /*from w w w . ja v a 2 s . c o m*/ * 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> gesturemodel; // each gesturetype got its own // gesturemodel in this vector private double lastprob; public Classifier() { this.gesturemodel=new Vector<GestureModel>(); 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; i<this.gesturemodel.size(); i++) { sum+=this.gesturemodel.elementAt(i).getDefaultProbability()* this.gesturemodel.elementAt(i).matches(g); } int recognized = -1; // which gesture has been recognized double recogprob = Integer.MIN_VALUE; // probability of this gesture double probgesture = 0; // temporal value for bayes algorithm double probmodel = 0; // temporal value for bayes algorithm for(int i=0; i<this.gesturemodel.size(); i++) { //this.gesturemodel.elementAt(i).print(); // Debug double tmpgesture = this.gesturemodel.elementAt(i).matches(g); double tmpmodel = this.gesturemodel.elementAt(i).getDefaultProbability(); if(((tmpmodel*tmpgesture)/sum)>recogprob) { 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<GestureModel> getGestureModels() { return this.gesturemodel; } public int getCountOfGestures() { return this.gesturemodel.size(); } public void clear() { this.gesturemodel = new Vector<GestureModel>(); } }