I have created in my code folder a shell script which runs my matlab code. The shell script takes two directory arguments: first is the folder where all the 3-channel images are, and the second is the folder into which the colorized versions will be saved. It will automatically sort out the large/small versions based on file extension (the small ones are jpgs).

About my submission: I have tested all example images and they all align well except for one of the small ones, and it takes about 5 seconds to process each image on the andrew machines on the large images.

To align the images I take the three images that need to be aligned (smaller ones first, from the pyramid) and convolve them with a laplacian 5x5 edge detector. Then I throw away the outer 1/5th edges of that. In the "align2" function I use circshift to find the smallest SSD distance to the blue channel, scanning over 4 offsets (this is editable in the script), for the red and green channels. Then I iteratively use the offset found to have the lowest SSD distance to scan the next larger set of images from the pyramids. It turns out that using the edges from the channels to line them up is much more effective than just using the normal versions.

As for Bells and Whistles, I snip off a constant amount at the edges.

Here are the small images' results:










Large image results (scaled down):







Additional images chosen: