bzztbomb

A human that makes things, sometimes they don’t fall apart

Doctrine of Error

Eye painted with the Doctrine of Error from Brian Richardson on Vimeo.

This images were generated with a pretty simple program. It takes an input image and compares it against the current painted image. The program generates a new brush stroke and the new error is calculated between the input image and the painted image, if the stroke reduces the error it is kept, otherwise it is rejected. You can view the final image of the eye above here.

Tank Man – Painted with the Doctrine of Error from Brian Richardson on Vimeo.


I like how this one turned out, the source image of Tank Man was a bit noisy and I think it interacted with the algorithm in a cool way. Final image here.

Jellyfish painted with the Doctrine of Error from Brian Richardson on Vimeo.

I wrote this program in Racket. I’ve been meaning to learn a LISP or Scheme based language for a long time. I thought this program would be a fun way to start. The brush strokes use a technique called Globs which basically connect to circles together with splines in a way that it has first-derivative continuity with the circles. It’s a nice way to generate brush strokes. Final jellyfish image is here.


brain painted with the Doctrine of Error from Brian Richardson on Vimeo.


It was inspired by the Create Applications of Deep Learning class and Ben Garney’s blog posts about writing a proof of concept video chat system. In both cases, the technique of defining, measuring, and reducing error is the core concept that makes it all work. Final brain here.

the-persistence-of-memory painted with the Doctrine of Error from Brian Richardson on Vimeo.

In the future, I’m planning to apply this to video. It’ll be straightforward to take the previous frame of a video and use it as the starting point for the next frame. I think the effect could be cool. I might also port a simple version of this to a more popular language and give a DorkbotPDX workshop on it. Final clocks here.