Friday, 23 October 1998
1:30 PM, 550 Cory Hall
Author: Heloise Hse, Michael Shilman (not present)
Moderator: John Reekie
Scribe: Jim Young
Reviewers: Jason Hong, Abdallah Tabbara, Shaz Qadeer
Overview
Threading allows for slow, compute-intensive LLR implementations. For some algorithms such as K-nearest neighbors (which compares an input gesture with every training gestures), classification may be slow if the training set is large. Also in the case where multiple LLRs are used. If this is running in the same thread as the UI, the user will experience a delay which is undesirable in interactive applications.
The user has the option of putting the LLR in its own thread.
Noted. This is being updated to specific events corresponding to the start, modification, and completion of a stroke.
This class is no longer present after redesign.
It is possible to write an aggregate LLR (say a voting scheme) given the current architecture. One can write a class which implements LowLevelRecognizer and the class would contain several recognition engines, each of which can also implement LowLevelRecognizer. If the class uses a voting scheme for classification, it would collect the classification results from each of the individual recognition engine, and produces a final result.
Types are now more sophisticated to reflect this criticism. The basic type class has a string representation, but subclasses can have more sophisticated fields, i.e. an EdgeType might have the head and tail nodes as part of the classification.
The "HLR" (now called ClassificationRecognizer) now listens to the PLLR (now called GestureRecognizer).
Interfaces
Gesture
Moved from interface to implementation.
Fixed.
Under consideration.
We like the term gesture, but to eliminate any confusion we will change the name to StrokeSet.
Under consideration.
LowLevelRecognizer
Good point. Fixed.
Fixed.
Stroke
Stroke is the most intuitive name for what this object represents: a stroke drawn by a pen. And since they are in a package, we don't think it is a big issue. But we will try to think of another descriptive name.
Under consideration. The property annotation mechanism is currently used for allowing reusable computation on strokes.
Moved from interface to implementation.
Fixed.
Fixed. We will make TimedPoint a full-fledged class.
We've looked at this class and it doesn't seem like this is consistent with the rest of the Iterators in the JDK. TimedPoints should make this cleaner.
Classes
CommandFilter
Fixed.
GestureAssembler
Fixed.
Documented.
Fixed.
PipelinedLLR
Fixed. Threaded operation has been removed from PipelinedLLR, and a subclass, ThreadedPipelinedLLR has been created which operates in its own thread. See above for an explanation of why threading is potentially useful.
Concluding comments: