Thursday, April 9, 2009

Improving the Sketch-Based Interface - Forming Curves from Many Small Strokes

Authors:
Richard Pusch, Faramarz Samavati,
University of Calgary,

Ahmad Nasri,
American University of Beirut,

Brian Wyvill

University of Victoria

Summary:
There is a divide in interaction between user / pen & paper and user / touch interfaces while drawing. One important problem is the ability the correct the stroke in the paper by over drawing a long stroke with small strokes to make local corrections.

This paper proposes a new method to create a smooth stroke out of many small strokes.
First important step is to find the global ordering of the stroke. This is done by running a PCA over the starting points of the stroke. This process is made easier by dividing the strokes in to boxes and connecting them. The boxes obtained are sub - divided until they become simple. Condition for simple box - closeness of the strokes inside the box to the straight line (measured by ratio of eigenvalues) / box containing single line.

metric for dividing a box - a largely horizontal box will be divided into 2 horizontal halves rather than vertical divisions. A straight stroke / stroke with more points should be taken as dominant strokes in deciding the division of the box. In order to find the method of division, a metric is formed using weighted average of the angle between the x-axis and each stroke's primary eigenvector. This is weighted using the ratio of the eigen values. This metric is used to find which of the 3 following division will be made - vertical, horizontal or both.

Once the box is chosen, then the ordering of strokes is performed by projecting the strokes on the dominant eigen vector. for overlapping strokes, the overlap is substituted by a average curve.

Next step, the boxes are connected by finding the last point of the local ordering and finding the stroke which it belongs to and continue on that stroke.After this step, a b-spline curve is fit to the strokes.

Discussion:
It would be interesting to implement something like a fudge tool. Move over every point in base line, any line that falls with in a particular radius should be merged with the base stroke.

No comments: