distill is a small go program which takes an image and redraws a primitive version using only extremely simplified shape and colour information. It's designed to be run against works of art, but any input image can be used.
While the output is basic, distill tries to generate recognisable images which retain the character and substance of the original. Whether it succeeds at this or not is up to you.
Download a binary release (todo) or fetch the package
go get github.com/jamesbarnett91/distill
Then invoke distill passing an image e.g. distill some-magnum-opus.png
distill takes the follwing optoins which can be used to adjust the output:
Usage:
distill [OPTIONS] [file]
Application Options:
-b, --block-size= The size of the blocks the image should be distilled to. E.g. 10 will result in square blocks of 10x10 pixels. Note
that this is the size of the blocks, not the number of blocks. (default: 50)
-n, --max-dominant-colours= The number of dominant colours to be extracted from the image. (default: 8)
-o, --output-path= Path to the output file. The format will be png. (default: out.png)
Help Options:
-h, --help Show this help message
The distillation process has 4 steps.
The n most dominant colours are extracted from the image. This is done via a k-means clustering.
The image is divided into square blocks of size b. This has the effect of drastically 'enlarging' the pixels.
The average colour of each block is calculated. This creates an extremely low resolution version of the original (while preserving the size)
The average colour of each block is compared to the previously extracted dominant colours. The block colour is set the the closest dominant colour based on its euclidean distance in the Lab colour space.







