Monday, October 13, 2014

$1 Recognizer

$1 recognizer is a gesture recognizer to enable novice programmers to incorporate gestures into  UI prototypes. 

Algorithm:

The gestures are compared against already recorded templates.

Resample the point path : Resample gestures such that the path defined by their original M points is defined by N equidistantly spaced points. N=64 was adequate. 32<= N <=64 works well.

Rotate once based on Indicative Angle: We rotate the gesture to make its indicative angle 0. Indicative angle is the angle formed between the centroid of the gesture  and gesture's first point. 

Scale and Translate: Scaled to a reference square and translate the centroid to (0,0).

Find optimal angle for best score: Path distance between template Ti and C(candidate) is calculated using the following: 

Template Ti with lease di is selected. This minimum path distance is converted to a [0.. 1] score using 


Aligning template and candidate
After rotating the indicative angles of all gestures to 0°  there is no guarantee that two gestures C and Ti will be aligned optimally. We therefore must fine-tune C’s angle so that C’s path-distance to Ti is minimized. 
Brute force - Rotate C +1 degree for all 360 degree and take best result. It is slow and processor intensive

Hill Climbing - Path-distance graph has no local minima. Rotate +/- 1 degree until C's path-distance to Ti decreases.
Optimal angle - 4.2 degree from indicative angle. 
Indicative angle is a good approximation. But it is not efficient for dissimilar gestures. 

Golden Selection Search - The algorithm finds minimum value in the range using golden ratio. 
GSS loses |10.0–7.2|=2.8 iterations to hill climbing for similar gestures, it gains |10.0–53.5|=43.5 iterations for dissimilar ones

Limitations:
Cannot distinguish gestures whose identities depend on specific orientations, aspect ratio or locations. Does not use time and hence cannot distinguish based on speed.

$1, DTW and Rubine were compared for the gesture set designed for $1 recognizer. 

Rubine was less successful in recognizing compared to the other two recognizers.



No comments:

Post a Comment