/painterJava

Painterly Rendering from SIGGRAPH 98 paper (Java version)

Primary LanguageJavaMIT LicenseMIT

Painterly Rendering with Curved Brush Strokes of Multiple Sizes (SIGGRAPH 98)

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.

Installation

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:

painter UI

Press Go!

Three windows will appear, showing the three layers of paint strokes, with Layer 2 being the final output:

painter 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:

HuangShan layers

Lizard layers