Images of the Russian Empire: Colorizing the Prokudin-Gorskii photo collection

by Samay Suragimath
ssuragimath@berkeley.edu

Introduction

The goal of this project is to take digitized Prokudin-Gorskii glass plate images and, using image processing techniques, automatically produce a color image with as few visual artifacts as possible. In order to do this, we need to extract the three color channel images representing red, green, and blue, placing them on top of each other and aligning them such that they form a single RGB colorized image. To align the three channels, I implemented two unique search procedures to calculate displacements using exhaustive search for .jpg files and a pyramid method approach for larger, more problematic .tif files.

Uncolorized Prokudin-Gorskii glass plate images:

Exhaustive Method

My exhaustive search method consisted of a iterative process involving some image preprocessing steps. Firstly, I cropped a fixed amount of 25 pixels from each edge of the individual filter images in order to remove unwanted borders that negatively impact performance. In order to further improve the accuracy of my algorithm, I incorporated a Roberts edge detection process within the skimage library which resulted in significantly increased performance. Then, my exhuastive search algorithm would search possible displacements within a defined search window of [-15, 15] pixels, scoring possible alignments using the L2 norm or SSD as the image matching metric in order to output our final alignments, displayed below.

cathedral.jpg
G: (5,2), R: (12,3)
monastery.jpg
G: (-3,2), R: (3,2)
tobolsk.jpg
G: (3,3), R: (6,3)

Pyramid Method

For larger high-resolution images in the collection, the exhaustive search method is extremely slow and prohibitively expensive. For this reason, we need a faster approach using similar preprocessing steps consisting of cropping the filtered images by a fixed amount of 250 pixels due to the larger resolution, and incorporating Roberts edge detection for improved performance, as before. We implement a faster search procedure using the image pyramid method involving scaling the image down to 1/8 resolution and applying the previous exhaustive search algorithm to provide an initial baseline displacement for improvement at higher levels of resolutions. Then, we repeatedly rescale the image by a factor of 2 as we traverse the pyramid, adjusting all previous displacements estimates accordingly and also implementing a sliding search window to improve runtime performance at higher levels as we refine our predictions. As a result, we are able to drastically improve our displacement calculations over time in order to output our final alignments, displayed below. For certain images such as emir.tif, I also discovered that aligning red and green channels to blue resulted in significant misalignments of our final images. For this reason, I chose to incorporate green as the base channel when aligning the blue and red channels, which resulted in more correct alignment outputs for all chosen images. I believe this may be related to the fact that the human eye perceives green better than any other color, making it a more suitable base channel for our algorithm.

church.tif
B: (-34,-8), R: (41,-12)
emir.tif
B: (-58,-34), R: (65,23)
harvester.tif
B: (-72,-23), R: (69,-3)
icon.tif
B: (-50,-25), R: (57,9)
lady.tif
B: (-66,-9), R: (69,3)
melons.tif
B: (-80,1), R: (85,5)
onion_church.tif
B: (-60,-34), R: (65,15)
self_portrait.tif
B: (-80,-30), R: (85,4)
three_generations.tif
B: (-64,-20), R: (65,-1)
train.tif
B: (-52,-5), R: (51,35)
workshop.tif
B: (-64,0), R: (63,-16)

Additional Images

building.tif
B: (-42,-24), R: (57,13)
cliff.tif
B: (-84,33), R: (81,-36)
observatory.tif
B: (-64,-34), R: (69,41)