Complex Gesture Recognition: Understanding the Score

I’ve had a few inquiries about the score that’s passed to the glyph detection delegate via

-(void)glyphDetected:(WTMGlyph *)glyph withScore:(float)score

in the MultistrokeGestureRecognizer iOS library.

Here are a few key points about the score and the recognizer in general:

  • Calling detectGlyph will always return a match!
  • The match returned has a score (float) associated with it
  • The higher the score, the better
  • There’s no absolute scale as to what determines a “good” match

As an example, if your only template glyph is a circle and the user draws a squiggly line, a call to detectGlyph will still return a match to your only template. The score will most likely be very low since the two gestures don’t resemble each other. Ultimately, it’s up to you and your application to determine what is a good match and whether to accept the input as a match or not.

Behind the scenes, the N Dollar Recognizer is assigning a score to every template, but only the highest score is returned to the delegate.

So, there’s no magical threshold in the score that determines a match. You’ll have to seed your templates and then do some testing, and your particular implementation will have to define score thresholds.