Images of the Russian Empire: Colorizing the Prokudin-Gorskii photo collection
Ja (Thanakul) Wattanawong
The project is to recombine the RGB channels from frames that were taken separately by Prokudin-Gorskii while also making sure to handle image alignment and large files.
My basic approach was pretty straightforward, where I used Normalized Cross Correlation to score each displacement between [-15,15]. This works pretty well for the small images. Then, in order to handle larger images I implemented an image pyramid that worked in exponents of 2.
To improve the speed I made the following small optimizations:
In terms of parameters at each pyramid level I would search in displacements between [-5, 5] in both x and y directions. My preprocessing involved cropping the middle 60% of the image to avoid edge artifacts from the scanning and cropping process.
My algorithm clocks in under a minute (as measured by %time in iPython) for all the example images on a semi-modern macbook which I would consider successful, as my goal was to maximize quality within the time constraint.
Note: for display purposes I applied a flat 10% crop on each side.
Displacement g:(53, -1) r:(105, -12)
Displacement g:(42, 7) r:(85, 33)
Displacement g:(3, 3) r:(7, 4)
Displacement g:(51, 15) r:(110, 13)
Displacement g:(78, 29) r:(176, 37)
Displacement g:(50, 27) r:(108, 37)
Displacement g:(-3, 2) r:(3, 3)
Displacement g:(83, 10) r:(179, 13)
Displacement g:(53, 8) r:(114, 12)
Displacement g:(41, 18) r:(90, 23)
Displacement g:(59, 17) r:(124, 15)
Displacement g:(48, 24) r:(106, 41)
Displacement g:(5, 2) r:(12, 3)
Displacement g:(33, 2) r:(98, 5)
Displacement g:(12, 5) r:(42, -3)
Displacement g:(13, 18) r:(38, 22)
Displacement g:(-21, 15) r:(36, 22)
Displacement g:(47, 5) r:(220, 5)
The post-crop images are already pretty nice, but they look a little flat. To improve this I increased the dynamic range, allowing at most 0.2% of the image to clip. This mostly just involved finding the 0.1th and 99.9th percentile of levels (R+G+B) and rescaling all the values to be within those bounds. Here are some comparison images:
This was really fun! I just started reading ‘A Gentleman in Moscow’ and so this time period is very interesting to me on a personal level. I hope we get more projects like this in the future.