The final project is research-oriented - you have a good bit of freedom in choosing your final project. It can be a pure vision project or an application of vision technique in the student's own research area. You are expected to implement one (or more) related research papers, or think of some interesting novel ideas and implement them. Below, we list some possible projects (most of these are taken from Prof. Peter Belhumeur and Rob Fergus’s course webpages). However, you are welcome to come up with your own ideas - in fact we encourage this and a project with new ideas can expect to get significantly better grades. Students can propose their own project topics, subject to the instructor's approval.
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 comparison to other work is welcome, but not required. You can use your favorite programming languages (e.g., Matlab, C, C++, Python, Java, etc.).
You should work on the 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.
Project Timeline and What to Submit: There will be three checkpoints: a project proposal, an intermediate milestone report, and a final project webpage. Create a webpage for the project at the beginning. This page will include the proposal, the mid-term report, interesting implementation details, some results (e.g., images, videos, etc.), and so on. Your website should also include downloadable source and executable code. Do not modify the website after the due date of the assignment. Also, send an email to the instructor and TA with the URL of your webpage BEFORE the due dates.
Project Proposal (Due: Feb 15) (5%)
This will be a short report (usually one or two pages will be enough). You will explain what problem you are trying to solve, why you want to solve it, and what are the possible steps to the solution. Please include a time table.
Project Mid-Term Report (Due: March 29) (5%)
In this report, you will need to give a brief summary of current progress, including your current results, the difficulties that arise during the implementation, and how your proposal may have changed in light of current progress.
Final Project Presentations (April 24, April 26, April 28, May 1, May 3) (15%)
This will be a short presentation in class about your project. It will be 10 minutes per team. Please add a link to the presentation on the project webpage.
Final Project Webpage (Due: May 8) (15%)
Assemble all the materials you have finished for your project in a webpage or wiki, including the motivation, the approach, your implementation, the results, and discussion of problems encountered. If you have comparison results or some interesting findings, put them on the webpage and discuss these as well.
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”, in which 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 (will likely get extra credit) to take your own set of photographs and work on that data. If you don’t have access to a camera, the TA or the instructor may provide one.
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.
This project is to re-implement the Micro Phase Shifting paper by Gupta and Nayar 2012. The input will be a set of photographs of the same 3D scene taken under different projector patterns. A sample set of data is provided on the above linked webpage. You will need to write the code to estimate the phase-maps (and hence, the 3D geometry of the scene) from these images. The sample code is provided on the above web-page too, but you are expected to write your own code.
You are highly encouraged (will get extra credit) to take your own set of photographs and work on that data. Please check with the TA or instructor for a camera and a projector.
This project is to re-implement the elegant Example-based Photometric Stereo method by Hertzman and Seitz 2005. The input will be a set of photographs of the test 3D scene (whose 3D geometry needs to be computed) and another “example object” (whose geometry is known) taken under different illumination conditions. A sample set of data is provided on the above linked webpage. You will need to write the code to estimate the surface normals (and hence, the 3D geometry of the scene) from these images.
This project is to re-implement the paper by Nayar et al. 2006 – one of the most elegant recent papers in computational imaging! The input will be a set of photographs of the same 3D scene taken under different projector patterns. You will need to write the code to estimate the direct and global components of the scene.
You will need to take your own set of photographs (using a camera and a projector) and work on that data. Please check with the TA or instructor for a camera and a projector.
This project is to re-implement two interactive image segmentation methods -- GrabCut – a SIGGRAPH paper by Rother et al. in 2004 and Lazy Snapping by Li et al. in 2004. The goal will be to implement these papers and create a GUI (in language of your choice) that takes as input an image, allows the user to interact with the image as described in these papers, and then create a background/foreground segmentation of the image. Some example input images are provided here. You are highly encourages to make your system as a “tool-box” that people can download and use in the future.
This project is to re-implement the BM3D image denoising method (currently the state of the art image denoising method). The input will be a noisy image. You will need to write the code to denoise the image. This is likely not an easy implementation, but if done well, will get good grades. There is code available on the above website which you can refer to, but eventually, you need to write your own code. You will need to show denoising results on several images that you captured yourself under several different parameters, and explain your choice of parameters.
This project is to re-implement the creation of Panoramic Image Mosaics paper by Szeliski and Shum 97. You should be able to create a tool that takes as input a sequence of overlapping images that you captured from your cell-phone cameras, and create a panoramic mosaic from them. If you don’t have access to a camera, please contact the TA or the instructor.
This project is to re-implement the View Morphing paper by Seitz & Dyer. You will need to capture your own images for this project, using your cell-phone or other cameras. If you don’t have access to a camera, talk to TA or the instructor. Here are some suggested steps for the implementation: