## Description

1) The goal of the first questions is to implement some code that performs calibration using the

method described in the book; by first computing a projection matrix, and then decomposing

that matrix to find the extrinsic and intrinsic camera parameters. Use the approach described

in the slides. I have given you a program, written in C++ that uses OpenCV, called

projection-template.cpp. This program takes ten given 3d points and projects them into a 2d

image using the given supplied camera calibration matrix, rotation matrix and translation

vector. Your goal is to write the two routines that are missing, which are

computeprojectionmatrix and decomposeprojectionmatrix. The first routine

computes the projection matrix using the method described in Section 6.3.1 of the book, and

the second uses the method in Section 6.3.2 to decompose the projection matrix into a camera

calibration matrix, rotation matrix and translation vector. It should be the case that the

computed camera matrix, rotation matrix and translation vector are the same (or very similar)

to the original versions that were used to create the projected points. This shows that your

two routines are working properly. You hand in your program source and the resulting output

file assign3-out created by running this modified program.

5 marks

2) The goal of this question is to create a program that take as input two images that are related

by a rotation homography; a left (keble_a_half), middle (keble_b_long) and creates a single

panoramic image (same size as keble_b_long) as output. This is done by warping the left

“into” the middle image. I have made the middle image big enough to hold both the warped

left and the original middle image. I have given you a program called

akaze-match-template.cpp which takes these two images and computes a set of features that

you can use to compute the homography between them. To actually compute the homography

you use the routine findhomography(, , RANSAC) and then you use warperspective routine

with the computed homography to warp the left image into an image of the same size as the

middle image. In other words you warp img1 into img3, and after that you paste (essentially

an OR operation) img3 into img2. You should output two images; warped, which is the

warped version of img1, and merged which is the warped version of img1 (img3) combined

with img2. I have included two images called warped and merged which show you how they

should look like. Notice that the final merged image has some anomalies because of the OR

operation. In real mosaicking programs you do not see these anomalies. Write down a short

(one paragraph) description of how you would get rid of these visible anomalies. The answer

is simple.

5 marks