COMS 6998 Computational Photography

Final Project

Spring 2011

General Guideline

You have a good bit of freedom in choosing your final project. You are expected to implement one (or more) related research papers, or think of some interesting novel ideas and implement them using the techniques discussed in class. Below, we list some possible projects. However, you are welcome to come up with your own ideas - in fact we encourage this.

This project will require programming as well as the manipulation of images and/or video. Most likely, you will need to write a program with a user interface (i.e., a demo) so that you can show the results. It is also strongly recommended that you evaluate your system with varying input parameters. A comparion to other work is welcome, but not required. You can use your favoriate programming languages (e.g., Matlab, C, C++, Python, Java, etc.).

You are allowed to work on a project in groups of two. In your submission, please clearly identify the contribution of both group members. Please note that members in the same group will not necessarily get the same grade.

What to Submit?

The project is expected to be carried out through the remaining portion of the semester. There will be three checkpoints: a project proposal, an intermediate milestone report, and a final project report.

Create a webpage for the final project. This page should include the three reports, the interesting implementation details, some results (e.g., images, videos, etc.), and so on. Your website should also includes downloadable source and executable code. Do not modify the website after the due date of the assignment. Also, send an email to and with the URL of your webpage BEFORE the due dates.

Possible Project Ideas

1. From Your Previous Assignments ...

You have tried the face detector and the SVM classifier in your previous assignments. What could you do next using these tools?

Here you can find some resources of face detection with a web camera used for the biometrics class in the last semester. You can use the code if you want to build a complete face detection system. You can also add a face recognition module in your system. Or, do something completely different with these same components.

2. Radiometric Calibration of a Camera and High-Dynamic Range Imaging (Probably Not as Fun as Other Projects, but Cool)

This project is to re-implement the paper by Debevec & Malik 97. The input will be a set of photographs of the same 3D scene taken under different exposures. You will need to write the code to estimate the camera response curve of the camera, as well as to create high-dynamic range images from the set of photographs. Here you can find some sets of photographs. There is a file called "testfile" for each set, in wich the second column shows the shutter speed for each photograph.

If you have access to a camera with controls for the shutter speed, you are highly encouraged to take your own set of photographs and work on that data.

Once you get a high-dynamic range image, you might also want to implement some tone mapping algorithm to display the high-dynamic range image on computers.

3. Light Field Viewer (Not Easy) (Thanks to Prof. Szymon Rusinkiewicz and Prof. Jason Lawrence)

You will implement a light field viewer based on the techniques described by Levoy & Hanrahan 96. Given the input as a light field, the viewer you need to implement should allow the user interactively move the camera, and generate an image corresponding to that particular view. In other words, it should perform the following operations:

The basic operation performed by the light field viewer is looking up the color corresponding to a given ray in space. Since the light field is represented by "slabs" (pairs of planes in space), you will need to first derive code for intersecting a ray in space with a rectangular region of a plane (specified with the region's four corners). If you have not taken a graphics course, perhaps you should skip this.

Here are some single-slab light field data. Here is the format of the light field data. Here is multi-slab light field data.

4. Seam Carving

This project is to re-implement the Seam Carving paper by Avidan & Shamir 07. We will discuss the paper in the class. There is a follow-up paper that extends the idea for videos.

5. View Morphing

This project is to re-implement the View Morphing paper by Seitz & Dyer. Here are some suggested steps for the implementation: As an important related work, you might want to check the feature-based image morphing paper by Beier & Neely. It is strongly recommended to compare these two morphing methods in your final project.

6. Image Analogies (Not Easy)

Implement the Image Analogies paper by Aaron Hertzman.

7. Single View Metrology (Thanks to Prof. Steve Seitz)

Implement the Single View Metrology paper. Here are some suggested steps: