Assignment 1 (draft version)
Computational Photography
Alex Berg

This assignment comes from Alexei Efros' computational photography class at CMU with transitive thanks to Svetlana Lazebnik for bringing up the Prokudin-Gorskii Collection.

This assignment is designed to help get started with image manipulation using matlab (or other) code, by going through the process of automatically aligning monochrome photos of the same scene taken with different color filters to make a color image. This was the technique used by the Russian photographer Sergey Prokudin-Gorskii to make color photographs in the beginning of the 1900s.

To start, check out the photos from the Prokudin-Gorskii Collection here. Pick a photo and download an image with the three monocolor negatives, like this one . Then write a matlab .m file to:
  1. load in the image (using imread),
  2. crop out the three separate negatives (the alignment doesn't need to be perfect for this).
  3. Then make each negative as one channel of a RGB image (a n x m x 3 array).
  4. This will result in a poorly aligned color image like this (click and zoom in on birch trees to see problems) until you write some more code to align the color channels.
  5. You should write code to automatically search over small translations (say a few dozen pixels) to try and find the correct offsets for the image in each channel. Your code should do this automatically and output the aligned color image.
  6. For extra credit, you should consider translations by a fraction of a pixel, or consider small rotations. You could also explore different metrics for evaluating a good alignment.
  7. You will receive test images closer to the due date for the assignment.
  8. You should produce a web-page with illustrative results and discussion of your approach, including the code itself. The goal of the writeup should be to show how the various parts of your approach work, and generally to illustrate your approach. There should be figures showing intermediate results and plotting things. For this assignment that should probably include a plot of registration quality vs alignment of some sort. You can use wordpress or any other setup you like. Submit a link to the page and a pdf of the page on sakai.
  9. It might help to try with this as a smaller and simpler test triple image, . This image was generated using this code that might be useful to examine.
Useful matlab commands for this assignment: imread, imwrite, cat(3,...), imagesc, imshow, im2double