Computer Vision (CSE 576), Spring 2005
Project 3: Fully Automated Panoramic Mosaic Stitching
Images below have been cropped to reduce non-image regions. Clicking on an image will link to the original sized version
of the cropped image. To view the original, uncropped version, click on the link labeled "original"
Mountain
Without bundle adjustment (total error: 0.004381)
View Panorama | Original
With bundle adjustment (total error: 0.004380)
View Panorama | Original
Piazzanavona
Without bundle adjustment (total error: 0.011962)
View Panorama | Original
Bundle adjustment did not lead to any improvements.
Palo Alto
Without bundle adjustment (total error: 0.292403)
View Panorama | Original
Bundle adjustment did not lead to any improvements.
Microsoft Lobby
View Panorama | Original
Allen Center Atrium
Without bundle adjustment (total error: 0.292403)
View Panorama | Original
Bundle adjustment did not lead to any improvements.
Suzallo Library Reading Room
Without bundle adjustment
View Panorama | Original
Bundle adjustment did not lead to any improvements.
- Since the original SVD code was returning U,S, and V matrices that were not proper decompositions of the original A matrix, I had to make sure that the SVD result was within some threshold of A, and if it wasn't, I discard the result for that RANSAC iteration. This resulted in a much more robust rotation estimation.
- I used a lower matching threshold value than Project 2 (0.2 vs 0.6), which improved the quality of the set of matched features significantly.
- For some reason, my bundle adjustment does not seem to be improving anything. This may be due to the fact that my initial alignment is too accurate, and therefore gets in a local minima from which the iterative least squares method cannot escape, especially given that the image graph is such that the edge where there is greatest error (e.g. the sun in the Palo Alto sequence) gets far outweighed by the greater number of inliers between all other image pairs. I tried modifying the parent assignment algorithm so that it is more conservative in assigning new parents (i.e. only if the candidate number of matches is at least x times the previous best match, where I tried x = 3), but that did not seem to affect things much.
- I also tried adjusting the RANSACthresh and minMatches parameters, but I was never able to get Palo Alto to align. The images also seem to be suffering from radial distortion, which I do not know the coefficients for.
- For the antcrim sequence, there were several images that were of different orientation (400x300 instead of 300x400). Simply rotating these to match the other images' orientation didn't work well (the alignment orientation was off in the final panorama). So I changed the code such that it correctly extracts the dimension for each image.