When I got my first 4K screen and looked at the specs I realised something. We are getting very close to the point where a screen will be able to show every possible (24 bit) pixel colour at once.
Testing this out on screen with a big colour palate would be kinda boring, so I made some software to take a large image and convert it to use one of every colour.
I am using 4096 * 4096 = 16,777,216 (or 224) images to do this.
I played around with a few algorithms, but found the best results came from a very simple idea:
- Start with a image containing all colours.
- Inspect two pixels
- Swap the two pixels, if that would make If the image more like the target.
- Repeat steps 2 – 4, until the image looks good.
Immediately I was stunned by the results.
- The Images actually worked, they looked like the source image.
- Parts of the image which where pulled toward a different colour and showed a very interesting (and accurate) image segmentation,
- The algorithm handled both photographs and solid colour cartoons well.
Firstly these files, produced by this method are are 50mb, and don’t compress well. I scaled them down for the website. If you want the verbatim image; you will have to download the software and make your own. (BTW: Did you notice the unusual beverage flavor in the vending machine pic, when you see it…).
Download the software:
Software usage note(s):
- Application works on high DPI screens.
- Some images prefer that I choose one of the pixels in a structured sequential fashion, others prefer both to be picked at random.
- I solved this by doing n iterative rounds, followed by x minutes of random swapping.
- The software lets you set these options.
- Iterative rounds produce good results very quickly, but will leave some lines on cartoons.
- Random rounds are slow to improve the image. A minute is a good buffer to clean up an image, but consider 40+ minutes for cleaner results.
- Uses many threads, and hogs the system bus. Will give the CPU a quick workout.
- Can be used in a command line mode, Suit batch processing.
- To do this, provide one optional parameter (directory with images).
- Finds all pictures in directory that don’t have “_done” or “_ignore” in the name.
- Saves a new image with _done added to the file name.
- Overrides that image without prompting!
- Save as bitmap If you don’t want the jpeg compression to alter the validity of the “every single colour” image.
On images heavily biased to one colour, the iterative pass may exhaust that colour to the top of its run.
In this case, set “Iteration Runs” to 0. This will disable the iterative passes and go strait to random passes.
Contact / Feedback