Visual Computing

University of Konstanz
IEEE Transactions on Visualization and Computer Graphics

A Simple Push-Pull Algorithm for Blue-Noise Sampling

A. Ahmed, J. Guo, D. Yan, J. Franceschia, X. Zhang, O. Deussen
Teaser of A Simple Push-Pull Algorithm for Blue-Noise Sampling


Paper (.pdf, 18.0 MB)


We describe a simple push-pull optimization (PPO) algorithm for blue-noise sampling by enforcing spatial constraints on given point sets. Constraints can be a minimum distance between samples, a maximum distance between an arbitrary point and the nearest sample, and a maximum deviation of a sample’s capacity (area of Voronoi cell) from the mean capacity. All of these constraints are based on the topology emerging from Delaunay triangulation, and they can be combined for improved sampling quality and efficiency. In addition, our algorithm offers flexibility for trading-off between different targets, such as noise and aliasing. We present several applications of the proposed algorithm, including anti-aliasing, stippling, and nonobtuse remeshing. Our experimental results illustrate the efficiency and the robustness of the proposed approach. Moreover, we demonstrate that our remeshing quality is superior to the current state-of-the-art approaches.


  author     = {A. Ahmed and J. Guo and D. Yan and J. Franceschia and X. Zhang and O. Deussen},
  doi        = {10.1109/TVCG.2016.2641963},
  issn       = {1077-2626},
  journal    = {IEEE Transactions on Visualization and Computer Graphics},
  keywords   = {image sampling;mesh generation;optimisation;blue-noise sampling;simple push-pull optimization algorithm;spatial constraints;improved sampling quality;Voronoi cell;Delaunay triangulation;antialiasing;stippling;nonobtuse remeshing;Optimization;Harmonic analysis;Radio frequency;Clustering algorithms;Density measurement;Noise measurement;Blue-noise sampling;push-pull;surface sampling;remeshing;stippling},
  month      = {dec},
  number     = {12},
  pages      = {2496--2508},
  title      = {A Simple Push-Pull Algorithm for Blue-Noise Sampling},
  volume     = {23},
  year       = {2017},
  url        = {},