CSE 803 Computer Vision: Homework 3 solution

$29.99

Original Work ?
Category: You will Instantly receive a download link for .ZIP solution file upon Payment

Description

5/5 - (6 votes)

1 RANSAC [30 pts]
1.1 Fitting a Line [10 pts]
In this section, each question depends on the previous one. By putative model, we mean the model that is fit
in the inner loop of RANSAC.
1. (3 pts) Suppose we are fitting a line (e.g., y = mx + b). How many points do we need to sample in an
iteration to compute a putative model?
2. (3 pts) In the previous setting, suppose the outlier ratio of the data set is 0.1. What is the probability
that a putative model fails to get a desired model?
3. (4 pts) In the previous settings, to exceed a probability level of 95% for success, how many trials
should we attempt to fit putative models?
1.2 Fitting Transformations [20 pts]
We’ll begin by reviewing fitting transformations from 2D points to 2D points. You will need to use these
results to solve the subsequent sections.
1. (1 pt) Recall that a matrix M ∈ R
2×2
is a linear transformation: R
2 → R
2
. How many degrees of
freedom does M have? How many samples are required to find M?
1
2. (2 pts) Suppose we have a dataset {(xi
, yi)}
N
i=1 and want to fit y = Mx. Formulate the fitting
problem into the form of a least squares problem:
argminmkAm − bk
2
where m is some vector that has all the parameters of M. Write out the form of A.
3. (3 pts) Use numpy.load() to load p1/transform.npy. Each row contains two points x and y,
represented in the form [x
T
i
, y
T
i
]1×4. Then fit a transformation
y = Sx + t
where S ∈ R
2×2
, t ∈ R
2×1
. Solve the problem by setting up an optimization of the form of
argminvkAv − bk
2
. Report S and t.
4. (2 pts) Plot the points x, y and yˆ = Sx + t in one figure with different colors. Display the figure.
5. (2 pts) Explain how you transform the points in words based on S and t. Is the fitting result good?
6. (4 pts) We have 8 cases of homography transformation of letter M. In each case, there are two sets of
2D points X and Y, which are represented in the same format as 1.2.3 (a N×4 array with each row in
the form [x
T
i
, y
T
i
]1×4, we have loaded the data for you). For each case, fit a homography

y
1

≡ H

x
1

where H ∈ R
3×3
. Solve the problem by dealing with the optimization of the form of argminhkAhk
2
with khk = 1 where h has all the parameters of H. Report matrix H of each case.
7. (4 pts) Visualize the original points, the target points and the points after homography transformation
in one figure (three separate images in one figure). Display the figure of each case.
8. (2 pts) Discuss the transformations your observed in visualization with the homography matrix H.
Do they make sense to you?
2 Image Stitching [55 pts]
Image stitching or photo stitching combines multiple photographic images that have overlapping fields of
view to produce a segmented panorama or high-resolution image. You’ll be able to do this by the end of this
problem (which is derived from an assignment developed by Svetlana Lazebnik at UIUC). For this part, you
will be working with the following images.
2
Figure 1: Input of Image Stitching.
Here are the instructions:
1. (3 pts) Load both images: p2/uttower left.jpg and p2/uttower right.jpg. Convert
them to double and to grayscale. Display the grayscale images.
2. (4 pts) Use SIFT/SURF descriptors in OpenCV to detect feature points in both images. Display both
the images along with the feature points.
3. (6 pts) Compute distances between every descriptor in one image and every descriptor in the other
image. Alternatively, experiment with computing normalized correlation, or Euclidean distance after
normalizing all descriptors to have zero mean and unit standard deviation. Report your choices.
Note: You are not allowed to use built-in functions to match features for you, including but not
limit to cv2.BFMatcher. However, you can use them to debug your code and compare to your
implementation.
4. (10 pts) Select putative matches based on the matrix of pairwise descriptor distances obtained above.
You can (i) select all pairs whose descriptor distances are below a specified threshold; (ii) select the
top few hundred descriptor pairs with the smallest pairwise distances; or (iii) as described in lecture,
compute the ratio test described in lecture (nearest-neighbor to second-nearest-neighbor ratio test).
Report your choices.
5. (12 pts) Run RANSAC to estimate a homography mapping one image onto the other. For the best
fit, Report the number of inliers and the average residual for the inliers (squared distance between
the point coordinates in one image and the transformed coordinates of the matching point in the other
image). Also, display the locations of inlier matches in both images. (i.e. for the inliers matches,
show lines between matching locations in the two images). You can use cv2.drawMatches to
draw matches.
Note: You need to implement RANSAC and calculate the transform matrix. You are not allowed
to use functions that do RANSAC in one line, including but not limit to cv2.findHomography
or cv2.getPerspectiveTransform. However, it’s a good idea to use them to debug your
implementation.
6. (8 pts) Warp one image onto the other using the estimated transformation. To do this, you will need
to learn about cv2.warpPerspective. Please read the documentation.
3
7. (8 pts) Create a new image big enough to hold the panorama and composite the two images into it.
You can composite by simply averaging the pixel values where the two images overlap. Display a
colored image, which might look like this:
Figure 2: Sample output of Image Stitching.
8. (4 pts) Try to run your code on p2/bbb left.jpg and p2/bbb right.jpg. Display the detected feature points, the matching result, the inliers after RANSAC, and the stitched image.
4
Python Environment
We are using Python 3.7 for this course. You can find references for the Python standard library here:
https://docs.python.org/3.7/library/index.html. To make your life easier, we recommend you to install the
latest Anaconda for Python 3.7 (https://www.anaconda.com/download/). This is a Python package manager
that includes most of the modules you need for this course.
We will make use of the following packages extensively in this course:
• Numpy (https://docs.scipy.org/doc/numpy-dev/user/quickstart.html).
• Matplotlib (http://matplotlib.org/users/pyplot tutorial.html).
• OpenCV (https://opencv.org/). Especially, we’ll use OpenCV 3.4 in this homework.
1. To install it on your computer, run conda install -c menpo opencv.
2. To use OpenCV 3.4 on Colab, run the following codes before import cv2:
– !pip uninstall opencv-python
– !pip install –force-reinstall opencv-python==3.4.2.16
– !pip install –force-reinstall opencv-contrib-python==3.4.2.16
References
Recognising Panoramas: http://matthewalunbrown.com/papers/iccv2003.pdf.
Acknowledgement
The homework is prepared by Dr. David Fouhey and Dr. Svetlana Lazebnik. We are grateful for their
generosity.
5