In this project, we were responsible for applying image warping to be able to form representations of images from different perspectives (i.e.) how panoramas are made. My approach was the first calculate the H matrix by using creating an A matrix that was composed of stacks of [x1, y1, 1, 0, 0, 0, -1 * x1 * x2, -1 * y1 * x2], [0, 0, 0, x1, y1, 1, -1 * x1 * y2, -1 * y1 * y2], where each x1,y1 -> x2,y2 are point correspondences. I used as many points as I could for this step to make the correspondence more accurate. I used np.linalg.lstsq to solve this equation to find an h that best minimized this equation A * h = [x1,y1,x2,y2,...]^t, and then tacking on a 1 on the end and reshaping h to be a 3x3 matrix. Next, I ran each image through h and found the warped images. Below are my source images, and the result of warping the most shifted ones to each other.


I also warped this box to appear to have been taken lying on its side.