Neatening sketched strokes using piecewise French Curves
James McCrae, Karan Singh


Paper (PDF, ~1.1 MB)
Slides (PDF, ~3.1 MB)
Demo (Win32, 5.4 MB. Linux64, 140 kB.)
Source (C++, 21 kB. Includes Qt creator project file. Library dependencies: Qt4.)


A paper I presented at Sketch-Based Interfaces and Modeling 2011 in Vancouver. The paper details how French curves can be combined in an automatic way with a sketch-based system for stroke neatening.


We apply traditional bimanual curve modeling using French curves to the problem of automatic neatening of sketched strokes. Given a sketched input stroke and a set of template French curves we present an approach that fits the stroke using an optimal number of French curve segments. Our algorithm operates in both curvature and point space, reconstructing the salient curvature profiles of French curve segments, while limiting error accumulation resulting from curvature integration. User-controlled parameters allow the neatened stroke to model G2 continuous curves, capture G1 discontinuities, define closed curves and explore the trade-off between fitting error and the number of French curve segments used. We present an interactive sketch stroke neatening implementation to demonstrate the real-time performance of our algorithm and evaluate the quality of its results.

Demo instructions:

Left drag - draw a stroke (neatening is performed on release)
Right drag - add new French curve to library (drawn grey at top left)

Cost of French curve pieces, deviation from piece/input curve endpoints, and toggling using a greedy algorithm can be played with in the right pane. The reconstructed curve updates as these algorithm parameters are changed.