CS 194-26 Project 1: Colorizing the Prokudin-Gorskii Photo Collection
Catherine Lu, Fall 2020
The Prokudin-Gorskii collection contains
thousands of scenes recorded through red, green, and blue filters.
By layering these three color channels together, we can produce the color pictures Sergei Mikhailovich
Prokudin-Gorskii envisioned as he created these RGB glass plate negatives.
In this project, I extracted the digitized images for each of the RBG color channels and aligned them to produce a sharp color image with minimal visual artifacts.
To align the red, green, and blue images, I first started out with a naive implementation of looping through
a range of displacements, shifting the image to that displacement, and scoring the result.
For scoring, I implemented both the Sum of Squared Differences (SSD) distance and the normalized
Both scoring functions seemed to have similar results for most of the images.
Then, displacement with the best score would be used in the final color image. I used this method to align
the green and
red channels to the blue image, and stacked the three channels to produce the colored result.
This method worked well for small jpg images but would take hours on the large tiff files.
To speed up the image alignement, I implemented an image pyramid. Instead of an exhaustive search of all displacements within a reasonable range, I recursively scaled the image down by half, then starting from the smallest image, I searched for the best alignment within a very small range. Then, moving down the pyramid, I searched through the possible displacements that I missed at the coarser granularity, updating my estimate until I returned to the original image size.
Each of the images for the three color channels had a border surrounding it that did not match up with the other color channels. This influenced the similarity scores on the rest of the image and prevented my algorithm from producing a sharp result. To fix this, I cropped the borders of the images to only score the center.
I was also unable to align emir.tif accurately with my current algorithm. This is because the glass plate negatives for the different channels have different brightness levels, resulting in bad similarity scores even when the images are aligned.