Image Analogies
The user experiences of Kevin Ruffin

Introduction
Image Analogies is a research project by Aaron Hertzmann et. al. The basic idea is to take two images as input (A and A') where A' is some transfiguration of A. The program finds a transformation from A to A' which can be used on a third input, B, to create B'. B' should be image B with the same styling as in A'. Here is the example given on the website.
'Unfiltered' painting (A) : 'Filtered' painting (A') :: Input image (B) : Target image (B')
A
A'
B
B'

This is not a normal renderer type. It does not involve any 3D models. It does, however, allow for texture synthesis, texture transference, super resolution, and artistic filters.

Sample Scene
This is one of the creators sample image transformations that I ran. It took 970 seconds to run. The top two images are A and A' respectively, while the first bottom is B and the last bottom is the generated B' (from left to right).


Files
The source code and a Windows executable are downloadable from the Image Analogies site here. The research paper written about the software is located here. I attempted to compile the source for OS X but ran into some problems. Most of the problems were fixed by modifying the makefile, but I think there was a library missing and I didn't feel like searching through code to find out what. So I tried the Windows executable and it worked fine. The program will run on PNG, PPM, or BMP images.

Usage
The program is command line based where the arguments can be loaded from a file. There is not very much documentation on the various parameters that can be used. The coders give a set of sample argument files with the parameters being used, but this is not a substitute for documentation. I assume they expect the user to have read their paper and source code before using it.
One of the more interesting ways to use the program is to mark parts of the image with a particular color. Then provide the program with the marked image and original image to find a transform. The image for B can then be a image made using the particular colors you provided in A. The following is an example made by me.

It took 277 seconds to generate this result (argfile)

It took 1140 seconds to generate this one (argfile)

Both of these results were created using the top three images. The only difference was in the parameters given to the program. It took about an hour and a half to mark over parts of the wooded image to generate my A image and create my B. The choice of which texture pieces should be used in the output image is very artistic in nature. I created my B image from scratch and had I been more careful with depth of field my output image would have been much more realistic. I really like the tree in the output. Because it takes so long to render I didn't play around with the parameters too much. As I said before the documentation is not very good so it is primarily up to the user to find out what each parameter does and what the parameters are. I believe that the html file generated by the program lists each parameter and it's value, so it is possible to know what they are. I liked the texture by numbers aspect of this program, so that's what I primarily focused on.
I would recommend this image synthesiser to someone only if they were tech savy because mom is not going to want to use text files and run it from the command prompt. Something that would make this program much more useful is if there was a GUI wrapper for it that allowed the user to see what the parameters are and what effect it will have by changing them.