CS 410/510: Computational Photography
Instructor: Feng Liu Instructor: Hoang Le
Office: FAB 120-08 Office: Fishbowl
Office Hours: TR 15:30-16:30 Office Hours: TR 14:30-15:30
Email: fliu@cs.pdx.edu Email: hoanl@pdx.edu

  • Project submission. Your project needs to be submitted to fliu@pdx.edu by 5:00 pm on 06/08.
    • Your submission should include a project report, the project presentation, the source code, and the testing examples.
    • You should compress everything into a single zip file and upload the zip file onto your Google drive associated with your pdx email account. Do NOT email the zip file directly. Instead, email the link to the Google drive to the instructor. Make sure that you provide the access permission to fliu@pdx.edu to download your zip file. Alternatively, you can also upload your file to Dropbox and send me a link to it.
    • Your report should follow the style of a technical paper and contain the following components: Abstract, Introduction, Method, and Experiments. Do Not include any part of your code into your report. There is no page limit.
  • The paper presentation schedule is available. You need to log into your pdx email account to view it. The schedule for the second half of the term will be added later on.

Computational photography is a field where computer graphics, computer vision, optics, and photography come together to create high-quality pictures. This course will discuss computational techniques to overcome the limitations of traditional cameras and enhance their capabilities. This course will cover topics ranging from concepts of digital camera and photography to computer vision and graphics techniques for creating high-quality pictures, including high dynamic range imaging, panorama stitching, image segmentation & matting, video stabilization, etc.
General Course Information
  • Pre-Requisites: CS 202 or its equivalence
  • Schedule: TR 16:40-18:30, Room FAB 47
  • Syllabus
  • Grading policy: Readings (30%) + (1) Presentation (20%) + (1) Project (50%)
  • Class Mailing List: course-cs-410-042-201902-group@pdx.edu and course-cs-510-047-201902-group@pdx.edu

We do not require any textbooks for this class. But the following two books will be very helpful.

Computer Vision: Algorithms and Applications, by R. Szeliski

This book is available online. Please download its latest version.

Learning OpenCV: Computer Vision with the OpenCV Library,
by Gary Bradski and Adrian Kaehler.

Or its new version

Learning OpenCV 3: Computer Vision in C++ with the OpenCV Library
By Adrian Kaehler and Gary Bradski

These books provide not only a good reference to the OpenCV library, but also gives very good descriptions of a vast amount of vision algorithms.

*Many of the lecture notes were modified from materials for similar classes taught at other universities by Professor Yung-Yu Chuang, Frdo Durand, Chuck Dyer, Marc Levoy, Steve Seitz, Li Zhang, and Dr. Stephen Chenney and Richard Szeliski. Without their generous help, this class could not have been developed.
Date Topic Notes *Readings
W10: 06/06 Final Project Presentation II  
W10: 06/04 Final Project Presentation I  
W9: 05/30 Stereoscopic 3D II Notes  
W9: 05/28 Stereoscopic 3D I Notes Enabling Warping on Stereoscopic Images
Yuzhen Niu, Wu-chi Feng, and Feng Liu
SIGGRAPH Asia 2012

Production Rules for Stereo Acquisition
Frederik Zilly, Josef Kluger, Peter Kauff
Proceedings of IEEE, 2011

Looking Beyond Stereoscopic 3D's Revival
Kirk L. Kroeker,  Communications of the ACM, 2010
W8: 05/23 Video Stabilization II Notes Subspace Video Stabilization
Feng Liu, Michael Gleicher, Jue Wang, Hailin Jin, and Aseem Agarwala, ACM Transactions on Graphics, 2011
W8: 05/21 Video Stabilization I Notes Full-Frame Video Stabilization with Motion Inpainting
Matsushita, Yasuyuki and Ofek, Eyal and Ge, Weina and Tang, Xiaoou and Shum, Heung-Yeung. IEEE PAMI 2006
Content-Preserving Warps for 3D Video Stabilization
Feng Liu, Michael Gleicher, Hailin Jin, and Aseem Agarwala
W7: 05/16  Image Matting Notes Compositing Digital Images
Tom Porter and Tom Duff. SIGGRAPH 1984
Blue screen matting
Smith, Alvy Ray and Blinn, James F. SIGGRAPH 1996
W7: 05/14 Graph-cut based Image Editing Notes Lazy Snapping.
Yin Li, Jian Sun, Chi-Keung Tang and Heung-Yeung Shum. SIGGRAPH 2004
W6: 05/09 Image Segmentation Notes Normalized Cuts and Image Segmentation
Shi and Malik. IEEE PAMI 2000.
Intelligent scissors for image composition
E. Mortensen and W. Barrett. SIGGRAPH 1995
W6: 05/07 Panorama III Notes Multiperspective Imaging
Steven M. Seitz and Jiwon Kim. IEEE CG&A 2003
Photographing long scenes with multi-viewpoint panoramas. A. Agarwala, M. Agrawala, M. Cohen, D. Salesin, and R. Szeliski. ACM Trans. Graph., 25(3):853C861, 2006
W5: 05/02  Panorama II Notes Szeliski book, Chapter 9
Recognising Panoramas,
M. Brown and D. G. Lowe , ICCV 2003
AutoCollage, C. Rother, L. Bordeaux, Y. Hamadi, A. Blake, SIGGRAPH 2006
W5: 04/30  Panorama I Notes Image Alignment and Stitching: A Tutorial. Chapter 2 and 4
R. Szeliski. Foundations and Trends in Computer Graphics and Vision, 2009
Creating full view panoramic image mosaics and texture-mapped models.  R. Szeliski and H.-Y. Shum. SIGGRAPH 97.
W4: 04/25 Relighting II:
High Dynamic Range Imaging
Notes Recovering High Dynamic Range Radiance Maps from Photographs
Paul E. Debevec and Jitendra Malik, SIGGRAPH 1997.
High Dynamic Range Digital Photography,
G. Brown, RPS Journal, Nov. 2006
Burst photography for high dynamic range and low-light imaging on mobile cameras
Samuel W. Hasinoff, Dillon Sharlet, Ryan Geiss, Andrew Adams, Jonathan T. Barron, Florian Kainz, Jiawen Chen, and Marc Levoy. SIGGRAPH Asia 2016
W4: 04/23 Relighting I:
Tone Mapping
Notes Interactive local adjustment of tonal values.
Lischinski, Dani and Farbman, Zeev and Uyttendaele, Matt and Szeliski, Richard. ACM SIGGRAPH 06
Photographic tone reproduction for digital images.
E. Reinhard, M. Stark, P. Shirley, and J. Ferwerda, SIGGRAPH 2012
W3: 04/18  Light and Color Notes Color2Gray: Salience-Preserving Color Removal.
Amy A. Gooch, Sven C. Olsen, Jack Tumblin, and Bruce Gooch. SIGGRAPH 05
Robust color-to-gray via nonlinear global mapping.
Yongjin Kim and Cheolhun Jang and Julien Demouth and Seungyong Lee. SIGGRAPH ASIA 2009
Color harmonization
D. Cohen-Or, O. Sorkine, R. Gal, T. Leyvand, Y. Xu, SIGGRAPH 2006
W3: 04/16 No class    
W2: 04/11 Denoising Notes Video Enhancement using Per-pixel Virtual Exposures
Eric P. Bennett and Leonard McMillan. SIGGRAPH 2005
A Non-local Algorithm for Image Denoising.
Buades, A., Coll, B., Morel, J.-M. IEEE CVPR 2005
Accelerating Spatially Varying Gaussian Filters
Baek, J., Jacobs, D. E. SIGGRAPH Asia 2010
W2: 04/09 Filter Notes #Szeliski book: Chapter 3.2.
Hybrid Images
A. Oliva, A. Torralba, P.G. Schyns, , SIGGRAPH 2006
Bilateral Filtering for Gray and Color Images
C. Tomasi and R.Manduchi. IEEE ICCV 1998
W1: 04/04 Camera Notes Computational Cameras: Redefining the Image.
Nayar, S.K.. IEEE Computer, 39(8), 2006
W1: 04/02 Class overview Notes

Photography's Bright Future
K. Kroeker, Communications of ACM, 52(2), 2009
Computational Photography,
B. Hayes, American Scientist 96, 2007

* You might need to be on the PSU network or have an ACM/IEEE account to download some of papers.
You cannot select readings from a book for your reading assignment.

Reading Assignments:
Each week, you will read a few papers posted in the course web page. Besides, you need to pick one of the papers you read, write and send a short summary to hoanl@pdx.edu every Thursday afternoon before 4:00 pm.
In your email, please follow the following format for the email subject.
CS 410-510 Reading: You full name + Week number + Paper Title.

Your summary should be concise, no more than 500 words, and write in the plain text format in your email directly. You need to address the following five questions if appropriate.

1. What problem is addressed?
2. How it is solved?
3. The advantages of the presented method?
4. The limitations of the presented method?
5. Future work
In-class Presentation:
Giving a good technical talk is an important skill for CS students. Every student needs to present one technical paper in the class. The presentation should be around 20 minutes, including 3-5 minutes of Q & A. 

Your presentation should include the following content.
1. Title
2. Introduction
3. Outline
4. Method
5. Experiments/Results
6. Conclusion 

Below is a list of advices on how to prepare and give a good technical talk.

How to give a technical presentation (how to give a scientific talk), by Michael Ernst
Giving an Academic Talk, by Jonathan Shewchuk
Preparing and Giving a Good Talk, by Steven Swanson


You have the following three project options.

Option 1. Literature study
If you choose this option, you cannot work in group. You will read a rich set of papers on one of the topics in computational photography, and write a survey paper. This is an O.K. option for you to fulfill the course requirement. Personally, this is not very exciting.

Option 2. System development
If you choose this option, you can work in group. A good group size will be 1~2. Your project size should be proportional to the group size. You will be graded as a group. So be cautious when you form a group. You can pick an algorithm you are interested in and implement an easy-to-use system. This is a popular and interesting option.

Option 3. Research
If you choose this option, you can work in group. A good group size will be 1~2. Your project size should be proportional to the group size. You will be graded as a group. You can define a new problem and solve it. Or, you can develop a new solution to an existing problem. This is an exciting, but less popular option.

For all these options, a good way to look for topics is to look into recent SIGGRAPH/SIGGRAPH Asia/ICCV/CVPR/ECCV conference proceedings. We will also go over a range of topics in the first few lectures in our class.

Candidate Project Topics

Project Timeline:

04/16: Submit a project proposal to fliu@cs.pdx.edu. In your email subject, put CS510 Project Proposal + Your name. If you work in group, only one member of the group needs to submit a copy and the proposal should list all the group members. Your summary need to be concise, less than 300 words.

Programming Resouces
1. OpenCV
2. OpenCV-Python Installation
3. Visual Studio, OpenGL, and FLTK tutorial
4. Matlab Tutorial for Image Processing and sample files, provided by Prof. C. Dyer and his TA Tuo Wang at the University of Wisconsin, Madison.