public RecognizerResult RecognizeSingleGesture(InputGesture g) { var features = mValidFeatures.Take(mValidFeatures.Count - 1).Select(x => Features.AllFeatures.GestureFeatures[x]).ToList(); //Console.WriteLine("{0} features to be checked", features.Count); var results = new List <GestureWeight>(); foreach (var kvp in mWeights) { GestureWeight gw = new GestureWeight() { name = kvp.Key }; for (int i = 0; i < features.Count; i++) { float fres = features[i].QueryGesture(g); gw.weight += kvp.Value[i] * fres; } gw.weight += kvp.Value[mValidFeatures.Count - 1]; gw.weight = Utility.Sigmoid(gw.weight); results.Add(gw); } results.Sort(); return(new RecognizerResult() { Gesture1 = results[0].name, Confidence1 = (float)results[0].weight, Gesture2 = results[1].name, Confidence2 = (float)results[1].weight, Gesture3 = results[2].name, Confidence3 = (float)results[2].weight }); }
public RecognizerResult RecognizeSingleGesture(InputGesture g) { List <Features.IGestureFeature> features = Features.AllFeatures.GestureFeatures; var results = new List <GestureWeight>(); foreach (var kvp in mWeights) { GestureWeight gw = new GestureWeight() { name = kvp.Key }; gw.weight = kvp.Value[features.Count]; for (int i = 0; i < features.Count; i++) { float fres = features[i].QueryGesture(g); gw.weight += kvp.Value[i] * fres; } gw.weight = Math.Exp(gw.weight); results.Add(gw); } double total_weight = 0; for (int i = 0; i < results.Count; i++) { total_weight += results[i].weight; } for (int i = 0; i < results.Count; i++) { results[i].weight = 1.0 * results[i].weight / total_weight; } results.Sort(); return(new RecognizerResult() { Gesture1 = results[0].name, Confidence1 = (float)results[0].weight, Gesture2 = results[1].name, Confidence2 = (float)results[1].weight, Gesture3 = results[2].name, Confidence3 = (float)results[2].weight }); }
public RecognizerResult RecognizeSingleGesture(InputGesture g) { var results = new List <GestureWeight>(); foreach (var kvp in mWeights) { GestureWeight gw = new GestureWeight() { name = kvp.Key }; for (int i = 0; i < mFeatures.Count; i++) { bool fp = mFeatures[i].QueryGesture(g); if (fp) { gw.weight += kvp.Value[i * 2]; } else { gw.weight += kvp.Value[i * 2 + 1]; } } results.Add(gw); } results.Sort(); results.Reverse(); float norm = (float)mFeatures.Count; return(new RecognizerResult() { Gesture1 = results[0].name, Confidence1 = results[0].weight / norm, Gesture2 = results[1].name, Confidence2 = results[1].weight / norm, Gesture3 = results[2].name, Confidence3 = results[2].weight / norm }); }