Show HN: Reusable, spectraly shaped Blue Noise point clouds (github.com)

1 point by adec314 13 hours ago

Blue noise is the task of sampling a collection of points optimally placed to cover space randomly yet uniformly.

-randomly: no periodic pattern or undesired ordered structure, to prevent aliasing effects.

-uniformly: no empty regions, clusters... that would unavoidably appear by just using a raw random generator because of natural fluctuations.

In spectral language, one can take the Fourier transform of the point cloud. For a blue noise, it's amplitude should be:

- 0 or small at low frequencies. This ensures long-range order.

- 1 or not too big at high frequencies (short-range disorder).

Hence blue noise: Imagine sending light on the point cloud; in some abstract sense, only the blue (high frequency) will pass through.

Many popular algorithms can sample blue noise: Poisson disks, void and clusters, Lloyd relaxation... but the bluest blue noise (those that show up as a hard 0-1 spectral step) comes from the most basic, brute-force algorithm you can imagine. Take points from a purely random generator, compare the Fourier transform with the 0-1 target, launch gradient descent... and wait. Wait because it has O(N^2) complexity. Well, it turns out in 2D / 3D, advanced fast Fourier techniques can bring it down to N log N, see https://github.com/martiniani-lab/FReSCo (not me), but this is limited to 2D / 3D point clouds.

So, all this just to say that I launched a high-quality but slow blue noise optimiser on the GPU, collected the samples in a reusable database and hope it could interest people from graphics, statistical physics, maybe also quasi-Monte Carlo integration (but this one is just a maybe, simple Sobol sequences are better than blue noise on many tasks) or just curious hackers.

Sampled clouds, all open access: 2D to 32D 1k to 130k points (and up to 30 millions in 2D / 3D thanks to the mentioned fast Fourier speed-up).