Assignment 1: 3D Photography with Planar Shadows

The goal of this assignment is to build an inexpensive, yet accurate, 3D scanner using household items and a camera. Specifically, we'll implement the "desktop scanner" originally proposed by Jean-Yves Bouguet and Pietro Perona, composed of five items: a camera, a point-like light source, a stick, two planar surfaces, and a checkerboard. By waving the stick in front of the light source, the user can cast planar shadows into the scene. Afterward, the depth at each pixel can then be recovered using simple geometric reasoning. In the course of completing this homework, you will develop a good understanding of camera calibration, Euclidean coordinate transformations, manipulation of implicit and parametric representations of lines and planes, and efficient numerical methods for solving least-squares problems.


Assignment 2: Structured Lighting for 3D Scanning

The goal of this assignment is to build a 3D scanner using one or more digital cameras and a single projector. While the "desktop scanner" implemented in the previous assignment is inexpensive, it has limited practical utility. The scanning process requires manual manipulation of the stick, and the time required to sweep the shadow plane across the scene limits the system to reconstructing static objects. Manual translation can be eliminated by using a digital projector to sequentially display patterns (e.g., a single stipe translated over time). Furthermore, various structured light illumination sequences, consisting of a series of projected images, can be used to efficiently solve for the camera pixel to projector column (or row) correspondences.


Assignment 3: Introduction to Geometry Processing

This assignment will introduce basic geometry processing for polygonal meshes. After completing this homework you should have a good understanding of the type of algorithms, data structures, and coding practices expected for this course – especially with regard to the Java framework we'll provide. In particular, you'll be implementing a variety of fundamental mesh operations, including: selection, deletion, and classification of vertices, edges, and faces. The methods developed in this problem set will form the foundation for further assignments focusing on more advanced topics such as compression and filtering.