Homework Assignment #3
For your assignment 3 you should select and implement one of the projects below. You will not be given any starter notebooks, but you are strongly encouraged to submit your results as a notebook containing your code and detailed explanation of your methodology and results. In case you have your own idea for a project you should talk to me and get it approved. In case you have a strong reason to work in a programming environment other than python notebook (Jupiter), you should also talk to me to get an approval.
IMPORTANT: When preparing your notebooks for submission, you should test each notebook after restarting the python kernel in Jupiter (Kernel->Restart). Then, run the cells consequtively (top to bottom) and make sure that they work correctly in this order. When saving your notebook before submission, the cell numbers on the left margin of the notebook should be 1,2,3,4,... from top to bottom. When testing your code I can re-run the cells of your notebook only in this specific order. Also, save your notebook after each (e.g. interactive) figure cell is in the state showing the exact result that you want to demonstrate (e.g. for specific seeds) and that you might be discussing in a markdown cell right below the figure. Besides these tested notebook files, you should also save and submit their "html" versions (File->Download as->HTML), which also contain the "current" state of your figures.
- Project 1 - Video textures. See Topic 5.
- Project 2 - Background subtraction. For this project you should use the difference image to segment object from background using graph cuts and "elliptic" K-means (estimating both "means" and "variances" for Normal distributions of object and background). See Topics 4, 6 (e.g. Chan Vese model).
- Project 3 - Medical segmentation. Implement Chan Vese model for segmenting gray-scale medical images with "elliptic" K-means + graph cuts. You can start from K=2 (Topic 6). It should be easy to extend it to K>2 (Topic 12).
- Project 4 - Grab Cut. Implement "Grab Cut" method for interactive binary segmentation of color images (256x256x256 color space). Use RGB histograms with bins of size 12x12x12. You can use user placed "seeds" (and "box"). See Topic 6.
- Project 5 - Piece-wise planar reconstruction. Implement multi-homography fitting for stereo-pairs with multiple planar surfaces. See Topic 10. Topic 12 may also help.
- Project 6 - High-dynamic range imaging. Input: images of the same scene with different exposures taken from the same view point. Register those images via homography-fitting (in case the images are obtained without a tripod) and blend them in a way that increases the dynamic range (e.g. image should preserve details in both dark and bright parts) . Implement "widnow-center" interface (Topic 3) to watch such high-dynamic range images on a regular monitor. Related to Topics 9, 10.
- Project 7 - Automatic panoramas. Implement automatic planar panorama mosaicing for a large number of images. I will be testing your project for K>5. See Topic 10.
- Project 8 - Stereo reconstruction. Implement and compare three methods for computing disparity maps: windows-based, scan-line (using Viterbi or Dijkstra technique), and global (using multi-layerd graph cuts). See Topic 11.
What to submit, where to submit, and when to submit
Submit one file hw3_your_name.zip containing your project's notebook, its html copy, and subdirectory "images" with all image files you use in your notebook. Your notebook should include cells with your python code, figures, and explanations/discussions. Your code cells should include "code comments" (e.g. description of function interfaces/parameters, etc.)
The corresponding file (.zip) should be submitted electronically via OWL. The notebook (code and comments) should be your independent effort.
All files should be submitted to OWL before 11:55pm on the due date (Dec.2). Do not wait until the last moment. A rush just before 11:55pm will not be accepted as a valid excuse.