The idea for this project is completely based on the work of Roger Alsing back in December 2008.
I saw the blog post and loved the idea and wanted to tinker with it - the only problem was that he had not supplied any source code. Not to be discouraged, I figured that the program was simple enough, and decided to reimplement his ideas.
I wrote a basic copy of the program with a very limited feature set which worked ok, and upon showing this to friends I came to notice that Roger had in fact posted the source code for his version on his page, just four days after the initial post. My version did not work as well as his, and now that the source was opened up I had little motivation to continue my work.
Fast forward to November 2009 (almost a year after I first played with the idea). Uni had finished for the semester and I was looking for a project to work on. I found this lying around my hard drive and decided to give it a bit of a spit shine and get things a bit nicer.
I ported the project to use the OpenCV library, so that I could take advantage of the user interface, image loading and polygon rendering features that it offered. This updated version displays a live view of the evolution process, allows for different image types to be loaded (the original only worked in Windows bitmap format) and was generally more reliable than the first version.
There are a few key points that would be cool to add, given the time and motivation:
- Save states - the evolution process is slow and it would be nice to pick up where you left off
- Multi-core processing - again, due to the slowness, the program would benefit from multi-core processing
- More user friendly interface - perhaps a full GUI rather than a console based one
- SVG Output - Take advantage of the vector nature of the images
This program relies on the OpenCV libraries (OpenCV core, and the HighGUI library), so they need to be installed before compilation is attempted. For Ubuntu users this is a simple matter of "apt-get install"ing libcv-dev and libhighgui-dev.
It is licenced under the GNU GPL Version 3, a full copy of which has been included in the archive below.