Update

As described in the proposal, the project can be divided into 4 main steps.

1. Find features.

This part is done using the Lowe's SIFT features as described in the proposal. I did not choose to do the MOPS features because I have not implement the multi-scale part of it in project 4 yet. Considering the amount of time for this project, I consider this part of the project trivial and unimportant. Thus, in order to save time on trivial parts of the project, I modified the MATLAB SIFT code from the link for my project, instead of completing the MOPS in project 4.

This is the result of the feature extraction and matching. As you can see, there are some false feature matches.

2. Find the best alignment.

This part is the part I spent most of my last week on. The joiners paper does not properly show how they implement the Levenberg-Marquardt algorithm. (They omitted details due to lack of space). I try to figure out the Jacobian from the M. Brown 'Recognizing Panoramas.' However, it does not return consistent values. After a night and a half trying to implement it, I decided to use another method to figure out the similarity transform. I implement the method described in the paper by S. Umeyama 'Least-Squares Estimation of Transformation Parameters Between Two Points Patterns' instead. I choose the method described in this paper because it will only produce similarity transform that only consist of scale, rotation, and transition (no flipping). The output of the algorithm is also in terms of scale, rotation, and transition which should be helpful in understanding what is happening, especially if user input is going to be implement later on. (more intuitive than just a 2x3 matrix).

Use RANSAC with the transform eliminates the outliers in the image. However, in my testing, since the pictures are not taken from the same viewpoint as in project 4, the distance between 2 consistent features can be very high. Thus, I change the threshold to reject outliers to be much higher than project 4. (At the moment, I am using 20 pixels. This might need more tweaking as I test it with more images).

Output from RANSAC eliminates the false matches (in some case it also remove good matches that are too far)

I also finish the automatic stitching for a list of images. This is different from my project 4 where I run the stitching codes manually for each pairs. To save memory, each warped picture is saved in a separate file instead of keeping it in MAT:LAB's scarce memory. Doing this also might be useful when you want to use the images on other image editing software like Photoshop as mention on the paper. This is an example of a combined warped image that is ordered by the order the are given.

As you can notice the image looks okay, but the letters on the purple panel are all gone. This can should be fixed by the reordering.

3. Reorder.

I am in the process of coding this part. I am planning to use the gradient across boundaries. Apparently, finding the borders of the images is pretty hard to code (at least for me). I am having some difficulties with it.

4. Refinement

Since I am not using Levenberg-Marquardt algorithm as mentioned in step 1, this step might need to be modified. At the moment, I am planning to find the similarity transform by using only the features near the borders (by some number of pixels) instead of using the weights function. I am unsure whether this will works or not.

Other comments

Given the fact that I have finals on Monday and Tuesday, I might not be able to add in the GUI and the other blending method in time of the presentation. However, I will try to implement it before the final report due.

Back to final report