A recreation of Jozsef Fejes's work (homepage).

The collection of all possible 24-bit colors is iterated in a random order. From the set of all empty pixels that neighbor any already filled pixel, the color is placed in the pixel that minimizes the distance between the chosen color and its neighbors.

I use a kd-tree to improve performance; it takes ~30 seconds to generate an image on my laptop, down from the 5-10 hours for the original implementation.

Color distance is measured using Oklab.