← all projects
Computer Vision · September 2024 · 1 min read

Colorizing 1907 Russian Empire Photographs

Reconstructing color from Sergei Prokudin-Gorskii's glass plate negatives (captured 1907–1915) using image pyramids and normalized cross-correlation alignment.

PythonNumPyscikit-imageComputer Vision

Before color film existed, Sergei Prokudin-Gorskii traveled across the Russian Empire with a camera that exposed three grayscale plates through red, green, and blue filters. A century later, the plates survive — but the three exposures are slightly offset, and naive stacking produces ghosted, rainbow-fringed chaos.

Three glass plates per photograph — blue, green, and red filtered exposures of the same subject, captured seconds apart. Each looks like a tinted black-and-white image. The job: find the (x, y) shift that aligns each pair, then stack them into one full-color image.

The Alignment Problem

Naive stack — channels offset by tens of pixels After pyramid + NCC alignment

Left: stacking the three plates without alignment. The R channel sits 104 pixels down and 56 right of the B channel — every edge becomes a rainbow. Right: after pyramid-search NCC alignment. Pyramid downsampling cuts the search from O(n²) brute force to O(log n); normalized cross-correlation handles the brightness mismatch between filters that would dominate a sum-of-squared-differences score.

The Collection

Emir of Bukhara Lady Three generations Harvesters Steam locomotive Melons Onion-domed church Church Self portrait Sculpture Icon Cathedral Monastery Tobolsk

The emir’s robe was the hardest plate — its red dye absorbs differently in each filter, so intensity-based alignment fails. Switching to gradient-magnitude features (where edges drive the correlation, not raw pixels) fixes it.

#image-alignment#computational-photography#historical-photography

Related projects