Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Weighted Linde-Buzo-Gray Stippling

An interactive demo application for the algorithm proposed in our SIGGRAPH Asia 2017 technical paper. Our project website (paper, video, examples) can be found here. I want to thank Jochen Görtler for his help with this implementation.

Example animation of our algorithm.


Stippled George Clooney. Stippled Leonardo DiCaprio. Stippled Brad Pitt.


This is a reimplemented demo with focus on interactivity, and not the code that was used to generate the images and timings in the paper.


We propose an adaptive version of Lloyd's optimization method that distributes points based on Voronoi diagrams. Our inspiration is the Linde-Buzo-Gray-Algorithm in vector quantization, which dynamically splits Voronoi cells until a desired number of representative vectors is reached. We reformulate this algorithm by splitting and merging Voronoi cells based on their size, greyscale level, or variance of an underlying input image. The proposed method automatically adapts to various constraints and, in contrast to previous work, requires no good initial point distribution or prior knowledge about the final number of points. Compared to weighted Voronoi stippling the convergence rate is much higher and the spectral and spatial properties are superior. Further, because points are created based on local operations, coherent stipple animations can be produced. Our method is also able to produce good quality point sets in other fields, such as remeshing of geometry, based on local geometric features such as curvature.


  author = {Deussen, Oliver and Spicker, Marc and Zheng, Qian},
  title = {Weighted Linde-Buzo-Gray Stippling},
  journal = {ACM Trans. Graph.},
  issue_date = {November 2017},
  volume = {36},
  number = {6},
  month = nov,
  year = {2017},
  issn = {0730-0301},
  pages = {233:1--233:12},
  articleno = {233},
  numpages = {12},
  url = {},
  doi = {10.1145/3130800.3130819},
  acmid = {3130819},
  publisher = {ACM},
  address = {New York, NY, USA},
  keywords = {linde-buzo-gray-algorithm, lloyd optimization, remeshing, sampling, stippling, voronoi diagram},


The following libraries are required:

  • Qt5Core
  • Qt5Widgets
  • Qt5Svg
  • Qt5PrintSupport


mkdir build
cd build
cmake ..