CIS 580, Machine Perception, Spring 2014: Assignment 4 Due: Wednesday, April 10th, 10:30am (use turnin)

Similar documents
1 Projective Geometry

Multiple View Geometry in Computer Vision

CS6670: Computer Vision

The Singular Value Decomposition: Let A be any m n matrix. orthogonal matrices U, V and a diagonal matrix Σ such that A = UΣV T.

CIS 580, Machine Perception, Spring 2016 Homework 2 Due: :59AM

3D Geometry and Camera Calibration

55:148 Digital Image Processing Chapter 11 3D Vision, Geometry

ECE 470: Homework 5. Due Tuesday, October 27 in Seth Hutchinson. Luke A. Wendt

Computer Vision I Name : CSE 252A, Fall 2012 Student ID : David Kriegman Assignment #1. (Due date: 10/23/2012) x P. = z

Reminder: Lecture 20: The Eight-Point Algorithm. Essential/Fundamental Matrix. E/F Matrix Summary. Computing F. Computing F from Point Matches

calibrated coordinates Linear transformation pixel coordinates

Computer Vision Projective Geometry and Calibration. Pinhole cameras

CSCI 5980: Assignment #3 Homography

Structure from Motion. Prof. Marco Marcon

Single-view 3D Reconstruction

Two-view geometry Computer Vision Spring 2018, Lecture 10

General Instructions. Questions

Computer Vision CSCI-GA Assignment 1.

Perspective Projection [2 pts]

Math background. 2D Geometric Transformations. Implicit representations. Explicit representations. Read: CS 4620 Lecture 6

Stereo Vision. MAN-522 Computer Vision

55:148 Digital Image Processing Chapter 11 3D Vision, Geometry

CS 231A: Computer Vision (Winter 2018) Problem Set 2

Vector Algebra Transformations. Lecture 4

CSE 252B: Computer Vision II

Groups, Linear Algebra, and the Geometry of the Torus

COMP 558 lecture 19 Nov. 17, 2010

CS231A Course Notes 4: Stereo Systems and Structure from Motion

Multiple View Geometry in Computer Vision

Geometric camera models and calibration

Introduction to Computer Graphics and Computer Vision Assignment 3: Due 7/27/2015

Camera Calibration. Schedule. Jesus J Caban. Note: You have until next Monday to let me know. ! Today:! Camera calibration

CIS 580, Machine Perception, Spring 2015 Homework 1 Due: :59AM

TD2 : Stereoscopy and Tracking: solutions

N-Views (1) Homographies and Projection

Machine vision. Summary # 11: Stereo vision and epipolar geometry. u l = λx. v l = λy

3D Geometry and Camera Calibration

2D/3D Geometric Transformations and Scene Graphs

Announcements. Photometric Stereo. Shading reveals 3-D surface geometry. Photometric Stereo Rigs: One viewpoint, changing lighting

CS 664 Slides #9 Multi-Camera Geometry. Prof. Dan Huttenlocher Fall 2003

Photometric Stereo. Photometric Stereo. Shading reveals 3-D surface geometry BRDF. HW3 is assigned. An example of photometric stereo

Computer Vision, Assignment 1 Elements of Projective Geometry

CALCULATING TRANSFORMATIONS OF KINEMATIC CHAINS USING HOMOGENEOUS COORDINATES

An idea which can be used once is a trick. If it can be used more than once it becomes a method

Geometric Transformations

FreeMat Tutorial. 3x + 4y 2z = 5 2x 5y + z = 8 x x + 3y = -1 xx

16720: Computer Vision Homework 1

Interlude: Solving systems of Equations

Concept of Curve Fitting Difference with Interpolation

Rectification and Distortion Correction

Introduction to Homogeneous coordinates

CS-9645 Introduction to Computer Vision Techniques Winter 2019

Convex Optimization / Homework 2, due Oct 3

2D rendering takes a photo of the 2D scene with a virtual camera that selects an axis aligned rectangle from the scene. The photograph is placed into

Two-View Geometry (Course 23, Lecture D)

Camera Geometry II. COS 429 Princeton University

Unit 3 Multiple View Geometry

Teaching Manual Math 2131

Epipolar Geometry Prof. D. Stricker. With slides from A. Zisserman, S. Lazebnik, Seitz

(Creating Arrays & Matrices) Applied Linear Algebra in Geoscience Using MATLAB

Epipolar Geometry and the Essential Matrix

The real voyage of discovery consists not in seeking new landscapes, but in having new eyes.

CSE 547: Machine Learning for Big Data Spring Problem Set 2. Please read the homework submission policies.

1 CSE 252A Computer Vision I Fall 2017

A METHOD TO MODELIZE THE OVERALL STIFFNESS OF A BUILDING IN A STICK MODEL FITTED TO A 3D MODEL

Lecture 2 September 3

1 Graph Visualization

3D Reconstruction from Two Views

Computer Vision I - Appearance-based Matching and Projective Geometry

Exercise session using MATLAB: Quasiconvex Optimixation

Camera Models and Image Formation. Srikumar Ramalingam School of Computing University of Utah

Stereo matching. Francesco Isgrò. 3D Reconstruction and Stereo p.1/21

Euclidean Space. Definition 1 (Euclidean Space) A Euclidean space is a finite-dimensional vector space over the reals R, with an inner product,.

METRIC PLANE RECTIFICATION USING SYMMETRIC VANISHING POINTS

Parallel and perspective projections such as used in representing 3d images.

Structure from motion

WHAT YOU SHOULD LEARN

C / 35. C18 Computer Vision. David Murray. dwm/courses/4cv.

Image warping and stitching

Image Analysis & Retrieval. CS/EE 5590 Special Topics (Class Ids: 44873, 44874) Fall 2016, M/W Lec 13

Multiple-Choice Questionnaire Group C

Model Based Perspective Inversion

Image Warping and Mosacing

Lab # 2 - ACS I Part I - DATA COMPRESSION in IMAGE PROCESSING using SVD

DD2429 Computational Photography :00-19:00

Short on camera geometry and camera calibration

CHAPTER 5 SYSTEMS OF EQUATIONS. x y

1 Affine and Projective Coordinate Notation

Camera Calibration. COS 429 Princeton University

Last lecture. Passive Stereo Spacetime Stereo

Announcement. Photometric Stereo. Computer Vision I. Shading reveals 3-D surface geometry. Shape-from-X. CSE252A Lecture 8

Take Home Exam # 2 Machine Vision

CS 231A Computer Vision (Winter 2015) Problem Set 2

UNIT 2 2D TRANSFORMATIONS

Answers to practice questions for Midterm 1

Computer Vision I - Appearance-based Matching and Projective Geometry

CS1114 Assignment 5, Part 2

Mathematics of a Multiple Omni-Directional System

6 Randomized rounding of semidefinite programs

CS201 Computer Vision Camera Geometry

Transcription:

CIS 580, Machine Perception, Spring 2014: Assignment 4 Due: Wednesday, April 10th, 10:30am (use turnin) Solutions (hand calculations, plots) have to be submitted electronically as a single pdf file using the turnin command below. No Word documents are accepted. Please refer to http://fling.seas.upenn.edu/ cis580/wiki/ index.php?title=homeworks for submission instructions. We strongly encourage you to use LaTeX to type up your answers. For this project, you will additionally need to submit your code. The best way to do it is to make a clean copy of your code directory (ie, without build files, backup files, IDE-specific project files, etc.). Exclude images from the clean directory as well. (I already have the input images, and the output images should be in your PDF.) Keep only CMakeLists.txt,.cpp,.h files. Then you can submit your clean source directory with your PDF $ turnin -c cis580 -p hw4 <your-submission>.pdf <your-clean-source-dir>/ You can verify exactly what was submitted with $ turnin -c cis580 -p hw4 -v 1 Geometry and model fitting [40 points] 1. Line-point duality in projective geometry. (a) [5 points] Using a clear 3D figure showing a camera screen and center and two points p 1, p 2 on the screen, illustrate the fact that the line between p 1 and p 2 on the screen can be defined by its normal vector of homogeneous coordinates l = p 1 p 2. Hint: use the properties of the cross-product of two 3D vectors. (b) [5 points] Using a clear 3D figure showing a camera screen and center and two lines l 1, l 2 on the screen, illustrate the fact that the intersection point of the lines has homogeneous coordinates p = l 1 l 2. Hint: use the properties of the cross-product of two 3D vectors. 2. Least squares and SVD. When fitting a model (e.g. line through a set of points in homogeneous coordinates), we need to solve a system of form Aw = 0, where A contains the measurements (e.g. position of the points) and w contains the parameters of the model, that are unknown (e.g. line parameters). For instance in the case of the line defined by the parameters w = [a b c] T, for all points on the line we have ax + by + c = [x y 1]w = 0: x 1 y 1 1... x n y n 1 a b c = 0 n In practice each row of A contains information from a measurement and there are many measurements, therefore A is m n with m > n: A is skinny, the system is over-determined and generally it is not possible to solve Aw = 0 exactly. Instead we can perform least-squares estimation, i.e. minimize Aw 2 for w R n. To avoid the trivial solution w = 0, we add the constraint w = 1, i.e. w is on the sphere of radius 1. The constraint has a natural interpretation: for instance, when fitting a line, the line equation is defined up to a scaling, therefore we set w = 1 to avoid w = 0. 1

(a) [2 points] Write the Lagrangian of the constrained minimization and show that it is convex. (b) [2 points] Set the derivative with respect to x to zero and show that the minimizer is an eigenvector of A T A. (c) [2 points] Prove that A T A is symmetric and positive semi-definite (psd). Hint: Recall that a real symmetric matrix M is psd iff x T Mx 0 for all x. (d) [2 points] Show that all the eigenvalues of a symmetric real matrix M are real. Hint: Compute e H Me for a given eigenvector e associated to eigenvalue λ, where we don t know a priori if e has real coordinates, and e H is the Hermitian transpose (transpose and take complex conjugate of coordinates). (e) [3 points] Show that for two distinct eigenvalues λ 1 λ 2 of a real symmetric matrix M, the corresponding eigenvectors e 1, e 2 are orthogonal. Hint: Compute e T 1 Me 2. (f) [4 points] follows: Using the previous questions, prove that any real symmetrix matrix M can be factored as M = QΛQ T, Q T Q = I (i.e. Q is orthonormal) This fundamental result of linear algebra is know as the spectral theorem, and is also sometimes formulated as M = i λ i e i e T i where the λ i, e i respectively denote the eigenvalues and eigenvectors of M. σ 1 0 0 (g) [2 points] We can now apply this result to A T A. Prove that there is a matrix Σ =. 0.. 0 Rn n 0 0 σ n and an orthogonal matrix V R n n (V T V = I) such that A T AV = VΣ 2. (h) [4 points] Let U m n = AVΣ 1. Show that U T U = I and that the columns of U are eigenvectors of AA T. (i) [2 points] Show that A m n = U m n Σ n n V T n n. Note that we can rewrite this as A m n = U m m Σ m n V T n n by completing the orthogonal basis in U (by Gram- Schmidt) and by adding m n rows of zeros to Σ: U m m and V n n are now two orthogonal matrices and we have A = UΣV T, which is known as the SVD decomposition. The σ i s are named singular values and are the eigenvalues of A T A (and AA T ), and U, V contains the corresponding eigenvectors, respectively for AA T and A T A. (j) [7 points] In OpenCV, there is an SVD class which computes the singular value decomposition. Mat A =... ; SVD svd (A, SVD : : FULL UV ) ; Afterwards, svd.u is the matrix U, svd.vt is the matrix V T, and svd.w contains the diagonal elements of Σ. (Compare this to [U S V] = svd(a); in MATLAB.) Complete the function minimizeax() in hw4.cpp that finds the optimal x ( x = 1) minimizing Ax, using the OpenCV class SVD. You many NOT use SVD::solveZ(). We will use this technique in question 2. 2 Panoramic image stitching [70 points] In this section, you will write a simple program to build a panoramic picture by stitching together several pictures of a same building facade. In general, off-the-shelf softwares detect interest points that appear in two different images (for instance by matching there SIFT descriptors) and use the 2D-2D matchings to rectify the images. You will implement a slightly different algorithm that uses lines to find vanishing points, and aligns the images based on the position of those vanishing points. Preliminaries: You will use the three images img_left.jpg,img_center.jpg,img_right.jpg in the homework toolkit. You will extensively use the helper function getclick() we provide to retrieve the position of user clicks: getclick(winname, img) displays image img in window winname (creating it if necessary), and waits for the user to double-click, then returns a Point with the click position. 2

2.1 Image rectification [30 points] In this section you will simply rectify the pictures of the building facade such that the projections of parallel lines appear parallel in the image. The program image_rectification (see src/image_rectification.cpp) provides the layout for doing image rectification. Once you complete all the programming parts of this section, you should have a fully working program which reads in images/img_center.jpg, rectifies it based on user input, and saves the result to images/img_center_rectified.jpg. You should only need to modify the file src/hw4.cpp by completing the functions therein, but feel free to hack the rest of the code if you want to eg improve the user interface. However, DO NOT modify any of the header files/function signatures as I will need them to stay intact for the purpose of testing your code when you submit. 1. [6 points] Complete the function fitline(im, n) in hw4.cpp that displays the image im, prompts the user to click n aligned points, fits a line on them, and outputs the line coefficients as Vec3d (which is a 3 1 Mat of type double). Hint: you can use the OpenCV function line() to draw lines in an image if you want to draw a small cross where the user clicked. In practice, if there are more than two points, you need to solve a least-squares problem: leverage the minimizeax() function to solve it. 2. [6 points] Complete the function findintersection(l) that takes an arbitrary number of concurrent lines (for example projections of parallel lines) represented as rows of a N 3 matrix L = [l 1,..., l N ] T and outputs a Vec3d of homogeneous coordinates of the intersection point. In practice if there are more than two lines, you need to solve a least-squares problem: you can leverage minimizeax() again. 3. We are now interested in computing the projective transformation that would rectify the image of a facade: we want the projections of parallel vertical and horizontal lines to be parallel in the image. In this question, assume the following: We clicked on a set of projections of horizontal lines in the image and obtained their equations and intersection using questions 1 and 2: we have the homogeneous coordinates of v x (Vec3d), projection of the horizontal vanishing point. Similarly we clicked on projections of vertical lines and obtained v y, homogeneous coordinates of the vertical vanishing point. We now click on two points x 00 and x 11 that define the area covered by the facade: x 00 will be mapped to the bottom-left corner of the rectified image and x 11 to the upper-right one. Concretely x 00 is the image of [0, 0, 1] and x 11 the image of [1, 1, 1] by a projective transformation that goes from the rectified image to the input image. (a) [6 points] (Course question) Show that if H = rectified image to the original image is the following: v x v y x 00 A = H. diag(h 1 x 11 ), v 1 0 0 where diag(v) =. 0.. 0 for a vector v = [v 1... v n ] R n. 0 0 v n, the projective transformation A from the (b) [4 points] Complete the function computeprojtransfo(v x, v y, x 00, x 11 ) that takes as input two vanishing points v x and v y and two points on a building facade x 00 and x 11 selected so that the building fits in the target picture, and outputs a 3 3 projective transformation as computed in question 3a. Tip: A 1 b is shorthand for solving Ax = b for x, which can be done in OpenCV with solve(a, b, x) (this uses the the LU decomposition by default. See the documentation for other options if interested). If you really need 3

the inverse of a Mat A, then you can get it with A.inv(). You are not allowed to use any OpenCV functions like findhomography() or any other geometric image transformations. Remark: Such a projective transformation can be also computed if you specify by hand which four cornerpoints in your facade will map to preselected corners of a rectangle in the target image. 4. [8 points] Complete the function rectifyimage(a,im,n) that takes as input the projective transformation A computed by computeprojtransfo() and an image im, and produces a frontoparallel picture of the image of size N N. Note: we are not trying to get the right scale or aspect ratio here, but simply rectify the image. You are not allowed to use the OpenCV functions transform(), warpperspective() or anything related to those. To return a clean output, your algorithm should go through positions in the rectified image and fill the values based on the value in the non-rectified image (going through positions in the original image and filling their pre-images in the rectified image doesn t guarantee that the rectified image will be filled correctly). Show rectified images for the three images in the homework kit. Output images should be of size 200 200. 2.2 Projective transformation between two images The facades in the three images lie on the same building in the real world. This means that there exists a projective transformation between corresponding points in the images. In this section, you will compute the homographies between pairs of images using two methods. We want to find the projective transformations A le f t and A right such that p le f t A le f t p center and p right A right p center. You will state your answer so that A le f t (3, 3) = 1 and A right (3, 3) = 1. We will consider two methods: For this and the following sections, there are only a couple functions to implement in src/hw4.cpp. Feel free to extend image_rectification.cpp to show off the functionality of those functions, or create a new program altogether. (You almost surely want to do this for the sake of seeing your output and debugging your code.) 1. [8 points] Using vanishing points and lines: For each pair of images, choose x 00 and x 11 in each image to be corners of rectangles that match across the two images (e.g. the same balcony visible in both images), compute two projective transformations (using the functions above) and compose them the right way. 2. [8 points] Using matching points: Another classical way to compute the homography between two images is to use 2D-2D correspondences. The usual way to do this is to detect interest points and match their SIFT descriptors. We will do a less sophisticated version where the user clicks a point p 1 in one image and clicks its corresponding point p 2 in the other image. (a) [4 points] Show that if p = [x y 1] is the image of p = [x y 1] i.e. p Ap and the A i j s are the coefficients of A, we have: [ ] x y 1 0 0 0 xx yx x 0 0 0 x y 1 xy yy y A 11 A 12 A 13 A 21 A 22 A 23 A 31 A 32 A 33 [ ] 0 = 0 (b) [2 points] We can write the two equations above for N pairs of matching points, yielding the system Mw = 0 where M is 2N 9 and w = [A 11... A 33 ] T. What is the minimum number N of pairs to determine A? What is the condition on the points? (c) [6 points] In practice the coordinates of the points are not always precise (low precision if we click, wrong matchings if we do automatic SIFT matching) and we use many pairs, therefore we perform least squares by minimizing Mw. Complete the function fithomography(x1,x2), where the inputs are 2-channel 4

double Mat of height N and width 1 (ie, Mat(N, 1, CV 64FC2); the i th element of X1 contains a Vec2d representing a point in the first image and the i th element of X2 contains its matching point in the second image. Leverage the minimizeax() function to solve the least squares. (d) [4 points] Complete the function findcorrespandfithomography() that displays a pair of images, lets the user click a point in the first image and its matching point in the second image, reiterates the process to obtain several pairs and computes the transformation between the two images using the clicked pairs. 2.3 Image stitching Similarly to the previous section, you will need to either extend an existing program or create a new program to accomplish the tasks in the following problems. Figure 1: Images stitched together. 1. [10 points] Produce one image as in figure 1 (by overlaying individual images no blending is required) which contains the center image and the warped versions of the left and right images, which means it is the same as have been taken from the viewpoint of the second image. Show the resulting image. Show results for both ways of determining the homographies (using vanishing points and using pairs of matching points). 2. [6 points] Repeat the same procedure by taking the rectified version of the center image instead of the original one. Show the resulting image. 5