Using evolving images for image compression: 256x256 image in 1k
screamingduck.com
screamingduck.com
This is why when testing compression algorithms against each other you usually weigh the total of the code and the compressed versions of some common corpora which is large relative to what you expect code sizes to be.
If you don't do this, I mean, you can do lossless compression of the Mona Lisa into one bit while remaining able to display any other JPG. Check bits of input. If first bit is 1, then decompress into the Mona Lisa. If first bit is 0, the rest of the stream is a JPG, interpret as normal.
Still, I'm of the opinion that it remains an outrageously good tech demo for GAs. (Visual, easily described task, results anyone can appreciate, etc.)
If anything, Mona Lisa and Lena were specifically chosen to be hard for a system like this to compress (fine brush detail does not mix well n sided polygons). Blur for example compensates for the shortcomings of polygon rendering to make the whole system more general purpose.
It was developed by none other than Michael Barnsley (of "Barnsley Fern" fractal fame) and it was the compression technique du jour in the early 90s. It looked very interesting.
And then it got patented all over, which effectively inhibited any further academic research. The patent holding company (Iterated Systems) struggled with commercialization of the technology, so the practical applications never really took off either.
Too bad really. The idea of compressing an image down to a formula was both elegant and damn smart. And so are these genetic algorithms. I just really hope they don't follow the path of the fractal ones.
For any compression scheme to take hold, it'll need to handle both large and small files well.
Before looking at your comparison, I thought their pic looked like crap. Now it looks absolutely stunning given the comparison shots. But how would it look at 200kb? Does it compare (dis)favorably against JPEG then?
Also, I'm not an image compression expert, but I wonder if you could use this technique as a pre-pass before a more standard image compression algorithm to improve the overall results. In other words, maybe subtract the image created using the polygons from the original image and then compress the result using JPEG (or something else more suitable?).
1. The pixels in the output image should be close in value to the corresponding pixels in the input image.
2. Neighboring pixels in the output image should have similar values.
I wonder if anyone has compared compression techniques using these sorts of assumptions.
Also, wavelets are not at all "provably optimal." The only "provably optimal" transform is the KLT, and even that isn't really, since in practice overcomplete transforms tend to have better compression efficiency than complete ones, at the cost of turning compression from a simple O(nlog(n)) frequency transform into an NP-complete problem of matching pursuits.
Roger Alsing (who was the original author and inspiration) did later an optimized compiled parallel version that was able to get Mona Lisa in 1 minute 34 seconds (on a 64 bit 4 core machine).
http://rogeralsing.com/2009/01/04/scaling-clustere-evolution...
Also there are supposed to be some efforts to run it on GPU, which should be even faster.