Draw images in the style of a painted image
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
build
sample-images
.gitignore
Color.cpp
Color.hpp
Image.cpp
Image.hpp
README.md
Stroke.cpp
Stroke.hpp
Vector.cpp
Vector.hpp
main.cpp
writeup.pdf

README.md

Painterly Image Rendering

This is my implementation of the paper by Aaron Hertzmann "Painterly rendering with curved brush strokes of multiple sizes".

This was done for a final project in CSC 361 - Computer Graphics. A full write-up can be found here.

To use this program, you must supply the path to a .ppm image.

We are able to render images in different painted styles, including impressionist and pointillist. The render's appearance depends on:

  • Minimum brush size
  • Brush size ratio
  • Number of brushes used
  • New stroke threshold
  • Minimum and maximum stroke length
  • Curvature filture (determines how much curviness strokes have)

To paint images, we apply a blur to the original image with an intensity based on the size of the current brush being used to paint. We compare the blurred image to our current canvas to determine which areas should be painted with new strokes. We model strokes using cubic B-splines.

Sample Renders












Useful Links

Interactive B-spline drawing tool

Another interactive B-spline drawing tool