This is the source code for the following paper:
Aaron Hertzmann. Painterly Rendering with Curved Brush Strokes of Multiple Sizes. Proc. SIGGRAPH 1998. Project Page, ACM paper link
I haven't looked at this code in more than 20 years, but, amazingly, it runs just fine with no modification. Thanks to Manuel Rodriguez Ladrón de Guevara for the impetus to dig up the files and for testing it out.
For my NPAR2000 paper, I re-implemented this algorithm in C++/OpenGL, and I may release that code at some point too. That code does not work out of the box.
If necessary, install Java with your favorite client. For example, OS X with homebrew
already installed:
homebrew install java
rehash
Then, to run
cd java
javac Painter.java
java Painter ../images/tomato83.jpg
(There will be a mountain of warnings about deprecated APIs.)
You should see an interface like this, showing the input image:
Press Go!
Three windows will appear, showing the three layers of paint strokes, with Layer 2 being the final output:
The parameters in the UI should correspond directly to the parameters listed in the paper.
What took minutes of computation in 1998 is now instantaneous.
Some more outputs: