saliences.com : Weighted Voronoi Stippling : Technical Whitepaper

Implementation Details

The Stippling program is a command line utility that outputs an SVG file with the stippled rendition of an input PNG image using a set number of stipple points. The program is an implementation of the ideas found in Adrian Secord’s paper. The program follows the same general algorithm outlined in Secord’s paper. That is, the program first generates a set of initial stipple points using rejection sampling, followed by Lloyd’s Method to evenly space out the stipple points. However, instead of using the approximation technique used by Woo et al, this implementation computes a precise geometric Voronoi diagram using a slightly modified version of Fortune’s algorithm provided by O’Sullivan. The program then calculates the Centroids of the Voronoi cells using a variable spaced numerical integration over the area of the voronoi tile. In addition, the program uses the centroid computation to compute the a variable radius size for each of the stipple point.

Varied Stipple Sizes

To create varied stipple sizes that preserve tonal qualities, the following algorithm is used: Calculate the area A of the Voronoi cell, while taking into account the colour density of the cell as well (so darker cells have a larger area than lighter cells). Then, using A, calculate the radius of a circle that would fit into that area. Essentially, the program finds the volume under the density map for any given cell using a very simple Gaussian numerical integration. This creates stipple dots that preserve tone.

Cell Centroid Area Calculations

To calculate the area of a cell, the following technique was used:

Optimizations

The computation of the centroid area is embarrassingly parallel since each centroid area can be computed independently of the others. The program parallelizes the workload rather simply by using OpenMP for the centroid cell computation.

Back to project page