Dynamic Interactive Visualization
Forum
Sketch and whiteboard
Previous topic  |  This topic  |  Next topic
Previous article  |  This article  |  Next article

recognition/type class redesign
Michael Shilman, 9 Oct 1999

The recognition package currently employs 
a Recognition class that encapsulates multiple
interpretations of a single stroke as a set of
<Type, confidence> pairs, where confidence is a
double value.  I designed the classes Recognition
and Type with single-stroke recognition in mind,
with the intent of redesigning them once I added
multi-stroke/composite recognition.  Now that the
Parser2D package is complete, I think it's time
for a redesign.

A little background on the Recognition class: a
Recognition object is returned by a Recognizer in
response to some change in a TimedStroke.
For example:

public Recognition strokeCompleted(TimedStroke s);

So the Recognition class currently pertains to that
one stroke.  Now that multi-stroke recognition is
supported, the Recognition object must pertain to
multiple strokes.  I propose that the Recognition
object be a pair of <Type, confidence> values, where
the Type object is now either a scalar Type (single
stroke) or a CompositeType (multiple stroke, i.e.
scrollbar from the Parser2D user manual).  If it is
a composite Recognition, then the confidence values
will be confidences not of the individual stroke but
of the entire "world state".  This will involve another
change, which is how the stroke object is 'linked' to
Type.  Currently, all the types in a Recognition object
are implicitly linked to the TimedStroke that initiated
the recognition.  If there are composite types, then
the type objects will have to be modified to have
explicit links to the strokes that they represent.

Example:

Input to Recognizer: (stroke4 completed)
Output from LLR: [[downTri .95] [upTri .8] ...]
Input1 to non-incremental Parser2D: [vrect square upTri downTri]
Output1 from Parser2D: [scrollbar [boundary vrect] [handle square] 
                         [upArrow upTri] [downArrow downTri]]
Input2 to non-incremental Parser2D: [vrect square upTri upTri]
Output2 from Parser2D: []
Recognition: [scrollbar [boundary [vrect stroke1]] [handle [square stroke2]] [upArrow [upTri stroke3]] [downArrow [downTri stroke4]]

Open issues:
1) Deltas between world states.  In previous e-mails I
have advocated the need for representing mutual
exclusion in the recogniton objects.  So if a re-recognition precludes a world state from a previous
recognition, this should be expressed as a delta from
the previous recognition.  [more here]
Previous topic  |  This topic  |  Next topic
Previous article  |  This article  |  Next article
Send feedback to cxh at eecs berkeley edu
Contact 
©2002-2018 U.C. Regents