WHAT IS ARCIMBOLDER?
Arcimbolder is my latest creation, an image filter software that recreates an image as a collage of objects from an object pack. It is inspired by the artworks of Giuseppe Arcimboldo, a 16th century painter known for creating portait heads made of fruits and vegetables.
DOWNLOAD AND USAGE
You can download Arcimbolder 0.2 alpha here. It doesn’t require installation to run, you just have to unpack all the files and directories inside the downloaded zip file and then run arcimbolder.exe. Remember that it is an experimental -alpha- version, use it at your own risk.
In the main menu, click on “Open image” to select the image you want to filter. Then, select a Quality option, a Background color option and an Object pack option. After that, press on “Generate” to start the rendering process.
During the rendering process, if you can click on the rendered image, the process will temporaly stop and a “Save image” button and a original image thumbnail will appear.
By clicking on the thumbnail, you will switch view from the rendered image to the original image, so you can compare the result.
By clicking on “Save image” you can save the current result as a jpeg image.
Clicking again on the rendered image, the rendering process will continue.
The rendering process never stops by itself -you decide when the results are good enough for you.
There are 2 object packs included with Arcimbolder 0.2, and more will be released soon. Note that packs that are currently provided are just tests and are not yet attuned. I’m also preparing an object pack developer kit, so you can create your own packs.
Arcimboldo’s fruits & vegetables v.1
It includes 57 fruit and vegetable objects directly cropped from Arcimboldo’s paints.
Van Gogh’s brush strokes v.1
It includes 85 Van Gogh brush strokes cropped from some of his paints. The results with this object pack are
similar to oil paints.
Update on 11/10/08: AOP File Format details
The output quality varies depending of the Quality option selected, the object pack selected, the input image and the time you give to the rendering process.
Low: it is thought to be for a fast preview, having low precision. It should render several objects per second in an average computer.
Medium: a good average between speed and precision. It should render about one object per second in an average computer.
High: it renders with a very high precision, but it is very slow -about 1 object every 10 seconds in an average computer-. It is thought to be used only when medium quality is not enough.
It is an useful option when your input image has a flat background color. Matching the input image background color with the background color option, you will have a object-free background in your output, perfect for illustration purposes (e.g. Arcimbolder’s logo was done this way).
Arcimbolder requires a minimum of 512 Mb of RAM and Windows XP or Vista.
I have also tested it under Kubuntu with Wine, and it seems to work by right clicking on arcimbolder.exe - Open With - Wine.
THE TECHNOLOGY BEHIND ARCIMBOLDER
Arcimbolder uses a computer vision technique called template matching to search for the best positions of objects. Template matching is a computationally expensive task (i.e. very slow), so there are aproximation algorithms that aim to get good enough -but not the theoretically best- results in a reasonable time.
In the case of Arcimbolder, due to the avant-garde use of template matching, none of the common and already developed aproximation algorithms was useful, so I had to develop custom algorithms from scratch, ranging from adaptative Monte Carlo searchs to what I call fuzzy color histogram analysis.
Even if the current code is highly optimized, there is yet room for improvements in future versions.
TO DO LIST
- Release new object packs
- Release the object pack developer kit
- Support for different image formats and resolutions
- Use MMX for a faster memory access (I expect about 20% of speed improvement)
- SMT/Multicore version (70% of speed increase expected on dual core machines)
- Cleaning, restructuring and commenting the source code to release it as open source
- Mac OS and Linux ports