This assignment explores making image panoramas. Take images and write code to construct panoramas in two ways, first using hand selected correspondeces between images, and then using automatically found correspondes between images. For each panorama, at least 4 photographs are used.
In this part, I use hand specified correspondences.
I click the graph (
ginput() in MATLAB) to manually set correspondences between two graphs.
Hence, I get two group of points.
I normalize the points by
function [normal_Points T]= Normal(Points), and then compute the homography
for the two normalized point groups by
function H_normal = Compute_H_normal(Points,Points_prime).
Leveraging these two functions, I can compute the homography H for the two original images by
function H = Compute_H(Points,Points_prime).
Code of the three functions are provided in Compute_H.m.
In this part, I detect and match correspondences automatically via
Then, I estimate, with RANSAC, homography H of the correspondences for the two images via
Integrating these functions, I get
function tform = auto(I,I_prime) to automatically compute
homography. Code is provided in auto.m.
Finally, by the computed homography, by hand or automatically, I can use
to transform each individual image, and then blend it to the main photograph, or Base in my code,
by gradient domain blending.
The gradient domain blending
function output = gra_proc(source,target) is a little variation from
previous assignments. The code is provided in gra_proc.m.
Since the HD photographs will make the matrix too large, especially in the gradient domain processing, and hence will cause very long processing time or even may result in "OUT OF MEMORY" MATLAB error. Thus, I always resize the images to 0.25 of the original at very beginning of the whole processing.
I did 4 sets of examples to show my results. Each of them consists of 4 individual photographs. I will give very detailed step-by-step result for one of them, and for others, I will just post the final results for manual correspondences and automatic correspondences.
Manually chosen 8 correspondent point pairs, noted by blue circles.
Chosen correspondences automatically, and use RANSAC to find proper pairs.
The following are the results for the other 3 examples. I omit the intermediate steps for them and just show the final resualts.