The goal of this assignment is to take the 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, I extracted the three color channel images, placed them on top of each other, and aligned them so that they form a single RGB color image.
For the low-resolution image, I initially computed the alignment with brute force, calculating the score between the base channel and Offset channel with normalized cross-correlation, but the result wasn't quite promising. The issue was resolved after I removed a percentage (default to 10%) of the border to prevent aligning the edges of the images.
For the high-resolution image, I utilized an image pyramid, where the image is downscaled to a certain level and the alignment process is applied from the most-coarse level. By default, I set the scaling factor to 2 and levels to 5. This works reasonably well for most of the high-resolution images, except for a few, such as the image labeled "emir". This, in turn, was resolved by utilizing Sobel edge detection, which computes the gradient of the image intensity at each pixel, emphasizing regions where the intensity changes sharply.