CS 194-26

Image Manipulation and Computational Photography

Project 1: Colorizing the Prokudin-Gorskii photo collection

Eilam Levitov, cs194-26-acx



Overview

Sergey Mikhaylovich Prokudin-Gorsky was a Russian photographer best known for his pioneering work in color photography of early 20th-century Russia. The method of color photography used by Prokudin-Gorsky was first suggested by James Clerk Maxwell in 1855 and demonstrated in 1861, but good results were not possible with the photographic materials available at that time. In imitation of the way a normal human eye senses color, the visible spectrum of colors was divided into three channels of information by capturing it in the form of three black-and-white photographs, one taken through a red filter, one through a green filter, and one through a blue filter. In this project we use the 3-channel digitized Prokudin-Gorskii glass plate images to reconstruct a retrospective view of the Russian Empire.
To learn more about Prokudin-Gorsky's colletion click here to go to Library of Congress's website.

Process

This is a rough guideline of the image processing method used

  1. Extract the three color channel images
  2. Adjust scale using the pyramid technique
  3. Compare sub-images of red and green images to a base blue sub-image
  4. Find optimal matches and output displacement vectors
  5. Align the 3 images according to the displacement vectors
  6. Print the reconstructed image


Blue, Green, and Red filters
Prokudin-Gorsky's self portrait



The base sub-image, blue filter
Matched image #1, green filter
Matched image #2, red filter

Alignment process

Using a Sum of Square Differences (SSD) I scored the sub-images in order to find the best match. I choose to use SSD as my main scoring function because of its simplicity and efficiency; simply perform sum((image1-image2)^2). This method proved most reliable and fastest. The sub-image's size and the perimeter searched within the full image are dictated by parameters given to the function, which I throughly tested to provide the best results. The alignment function moves from the top-left to bottom-right, scanning rows one by one. Using the a-priori knowledge that the images are (relatively) only slightly misaligned allowed me to assert a rather small search perimeter to effectively generate a scoring matrix. One the alignment process is done, a displacement vector is returned and a rolling process takes into place to align the red and green images to the blue image.

Pyramid Technique

My pyramid technique was quite straight forward: If a picture is above a certain number of pixels, rescale it with a factor of .25 - this allowed a significant improvement in performace, both speed and alignment.



More examples


Train; green (-11,1), red(-22,8)
Turkmen; green (-14,5), red(-29,7)

settlers; green (-7,0), red(-15,-1)
Village; green (-16, 3), red(-34, 5)