This computer program takes in a real photograph, a simple low budget drawing of it, and a new simple drawing, and then generates a fourth image that shapes like the third image but has the texture of the photograph. This allows me to generate new photographs by using very simple drawings. This is an implementation of the algorithm described here.
I made it as my final project for CMU's Computational Photography course (15-463).
In all of the pictures, top left is actual photograph, top right is low budget drawing of it. Bottom left is a new low budget drawing, and bottom right is what my program generates.
It is written in Matlab.
I loop through patches in the third image, and look for patches in the second image that are similar to it. I then get the corresponding patch in the first image, and copy it over patch by patch to the output. In order to get all patches to blend together nicely, I ran Dijkstra's Algorithm to find a minimum error cut, and use that between each pair of adjacent patches.
Instead of just following some homework spec, I had to implement something that does not necessarily have a correct solution. I learned to dig through research papers and experiment with the code to find what produces the best results for each different input.