Programming Languages for Compressing Graphics [PDF] [PS] [PPT Talk]
Images are programs. They are usually simple instructions to a very specialized interpreter that renders them on screen. Image formats therefore correspond to different programming languages, each with distinctive properties of program size and accuracy. Image-processing languages render large images from small pieces of code. We present Evolver, a language and toolkit that perform the reverse transformation.
The toolkit accepts images in conventional graphics formats like JPEG and uses genetic algorithms to grow a program in the Evolver language that generates a similar image. Because the program it produces is often significantly smaller than the input image, Evolver can be used as a compression tool.
The language balances the tradeoff between having many features, which improves compression, and fewer features, which improves searching. In addition, by being programmatic descriptions, the rendered images scale much better to multiple resolutions than fixed-size images. We have implemented this system and present examples of its use.
Download evolver.tar.gz[238,524 bytes], the complete Java source code and data for our implementation. You will also need the beta version of the G3D Java implementation: convert.jar and graphics3d.jar. These contain the com.graphics3d.book heirarchy needed for compiling and running the evolver code. Our goal in making the source available now is to make available details of the image processing filters and provide our test images for similar projects.
The Evolver project was inspired by the Artificial Animator project, which was in turn inspired by the genetic art work by Karl Sims.