See the article for this repo here: http://blog.krum.io/k-d-trees/
An implementation of a k-d tree to quantize color images down to a defined set.
After cloning, use
cargo build --release to download dependencies and compile. From there, you can invoke the binary directly in
./target/release/chromatic_confiner <args> or you can use
cargo run --release -- <args>.
There are three required files to be passed into the program.
-c <FILE> The color specification file to be used in restricting the image. This should be formatted as a list of
r,g,b color values, with one color per line. See https://github.com/z2oh/chromatic_confinement/blob/master/color_files/css4.colors for an example.
-i <FILE> The input image to quantize
-o <FILE> The path of the resultant output image (this should end in .png).
You can pass the
-n flag to run the slow version of this algorithm. This is the non k-d tree version, which runs much more slowly than the k-d tree version when the number of colors is large. See http://blog.krum.io/k-d-trees/#results for a more detailed comparison.
Example usage (can be run immediately after cloning):
cargo run --release -- -c color_files/1kcolors.colors -i images/bridge_4096_2304.jpg -o image.png will produce this image (in
./image.png, the image you see here is scaled down to reduce load time of this repo. Image provided courtesy of Julian Herzog, see LICENSE for more information):
If you would like to try out this code on huge images, I recommend searching for images on Wikimedia Commons. Here is a 30,000 x 23,756 pixel image of Starry Night, for example.