To commemorate achieving a milestone of sorts, I'm including this screenshot of the four current phases that the program goes through. They are capture, differences, thinning (and separation into sub images) and stroke extraction. In the stroke images, control points are in red, strokes in random colors to help differentiate them.
As was mentioned yesterday, fixing the stroke collapsing required changing the error function to measure deltas instead of overall errors. Currently, given a point P, we find the active ones preceding and succeeding it (A and B), and compute the difference in the error function as it sampled A to P and P to B versus directly A to B (which would be the case if P were removed). Sampling is uniform, some constant K times along A to P and P to B, and 2K along A to B.
One issue is to know when to stop. Absolute error boundaries won't work since bigger strokes can have much more error and still look OK whereas smaller ones won't. Perhaps some normalization by stroke length will work.