I started by implementing the basic algorithm using SSD with a [-20 20] window. I found out that the target channel affected the result a lot. Some images were aligned much better if I chose R or G as the target channel instead of B. I tried computing the average brightness of each channel to see whether there's some rule to make the result better, but this didn't work. I ended up applying a canny edge detector before applying the basic algorithm and the results improved a lot, and this algorithm worked for all the images. I also implemented the algorithm using NCC, but didn't see much difference.
|
|
|
|
|
|
|
|
|
|
|
|
|
The algorithm I used for large images scale them in to 1/16, 1/8, 1/4, 1/2 and 1/1, searching with a window of [-16 16], [-8 8], [-4 4], [-2 2], [-1 1] respectively. I also detected the edges before using align images.
|
|
|
|
|
|
|
|
|
|
|