This project required me to colorize the Prokudin-Gorskii photo collection, utilizing a single-scale exhaustive search over potential window displacements, as well as a multi-scale pyramid scheme algorithm to efficiently search larger '.tif' images.
Green displacement vector: [x=5, y=2], Red displacement vector: [x=12, y=3]
Green displacement vector: [x=15, y=3], Red displacement vector: [x=12, y=-1]
Green displacement vector: [x=14, y=6], Red displacement vector: [x=-2, y=-3]
Green displacement vector: [x=52, y=17], Red displacement vector: [x=48, y=6]
Green displacement vector: [x=29, y=17], Red displacement vector: [x=-24, y=14]
Green displacement vector: [x=13, y=9], Red displacement vector: [x=-4, y=-12]
Green displacement vector: [x=15, y=0], Red displacement vector: [x=15, y=0]
Green displacement vector: [x=-3, y=2], Red displacement vector: [x=3, y=2]
Green displacement vector: [x=37, y=16], Red displacement vector: [x=31, y=13]
Green displacement vector: [x=-15, y=-9], Red displacement vector: [x=28, y=15]
Green displacement vector: [x=21, y=6], Red displacement vector: [x=13, y=1]
Green displacement vector: [x=3, y=3], Red displacement vector: [x=6, y=3]
Green displacement vector: [x=16, y=3], Red displacement vector: [x=21, y=7]
Green displacement vector: [x=15, y=0], Red displacement vector: [x=10, y=-1]
My program fails to properly align the Emir of Bukhara since the images to be matched do not actually have the same brightness values. Thus, both metrics (SSD and NCC) fail to identify the optimal displacements. I ran into issues where both NCC and SSD favored aligning on border boundaries due to their relative loss, so I solved this issue by cropping 0.1 of the image shape out of each color channel. Note: Some images do not have optimal alignment due to local processing issues - I was unable to set a large enough window size to find optimum due to the runtime of exhaustive search