NUCS331.github.io

CS331: Introduction to Computational Photography @ Northwestern

Summer 2021

Top Calendar Homework Links Slides Readings Credits
The Lytro Camera captures a 4D light field of a scene, enabling photographs to be digitally refocused after images are captured Computational illumination is used within the movie industry to render the performances of live actors into digital environments

Course Goals

To teach the fundamentals of modern camera architectures and give students hand-on experience acquiring, characterizing, and manipulating data captured using a modern camera platform. For example, students will learn how to estimate scene depth from a sequence of captured images.

Course Description

This course is the first in a two-part series that explores the emerging new field of Computational Photography. Computational photography combines ideas in computer vision, computer graphics, and image processing to overcome limitations in image quality such as resolution, dynamic range, and defocus/motion blur. This course will first cover the fundamentals of image sensing and modern cameras. We will then continue to explore more advanced topics in computer vision. We will then use this as a basis to explore recent topics in computational photography such as motion/defocus deblurring cameras, light field cameras, and computational illumination.

Time & Place

Monday and Wednesday 9:00am-10:30am (11:00am max) CT CS331 lecture

Note on lecture time: The lectures might be faster or slower. Each lecture will cover exactly one topic. Depending on how many questions, discussions we have, this might take one hour or maybe up to two hours. Experiences from the “in-person” quarters that we barely have lectures that take more than 90 minutes.

All lectures will be held live on zoom and linked through the canvas. Lectures will also be recorded for those who cannot attend during scheduled class times.

Instructors & Office Hours

Florian Schiffers (PhD student with Professor Cossairt)

Mail: florian.schiffers@u.northwestern.edu

Teaching Assistant (TA):

Jiazhang ( JiazhangWang2024@u.northwestern.edu )

Nirivik (nirviksinha2024@u.northwestern.edu )

Office Hours aka Campuswire

Office hours are replaced with increased Campuswire activity on my side. For coding questions that involve your own code, please make a private thread that is only visible to TA/Instructor.

If serious problems regarding an assignment arise, I am available for a zoom session on an individual basis. However, a requirement for a zoom session is to have an active Campuswire thread.

Link to Campuswire: https://campuswire.com/p/G45D7003E

How to write an e-mail

In the unlikely case (remember: Campuswire first. E-mails without a Campuswire thread link will be ignored) that you need to write an e-mail to the Instructor/Teaching Assistant, please follow this guideline for homework related questions:

  1. Descriptive Subject/Header Template in E-mail as here:

CS331 - HW X - “Problem description in 2-3 keywords”

  1. First line of the e-mail should contain the link to your GitHub repository of the corresponding homework

In any case, please always include CS331 in your header for organizational issues.

Policies

Lecture Calendar

This is a prediction of what will be covered in each week but the schedule is subject to change as the course progresses

Week of Lecture of week Topic
06/21 Mon Introduction to Computational Photography
  Wed Image Formation
06/28 Mon Image Sensing
  Wed Image Processing I
07/06 Tue Image Processing II
  Wed Image Segmentation
07/12 Mon Flash and Lighting
  Wed Radiometry
07/19 Mon HDR Imaging
  Wed Photometric Stereo
07/26 Mon Shape from Shading
  Wed Structured Light 3D Imaging
08/02 Mon Depth from Focus
  Wed SIFT and Camera Calibration
08/09 Mon Stereo
  Wed Light Fields
08/16 Mon Optical Flow
  Wed Light Transport
08/23 Mon FINAL WEEK (Video presentations of students)
  Wed FINAL WEEK (Video presentations of students)

Homework Calendar

See CANVAS assignments for the link to create your own GitHub repository for each assignment.

Homeworks need to be submitted as a PDF created using Overleaf or World template we provide to you.

CS331 homework template on Overleaf can be found here: https://www.overleaf.com/read/ybgqzfrjkzns

How to copy a project to your own account: https://www.overleaf.com/learn/how-to/Copying_a_project#Making_a_copy_of_a_project

Homeworks are due and assigned on the dates below.

Assigned Date Due
HW 0 06/21 06/25
HW 1 06/25 07/02
HW 2 07/02 07/09
HW 3 07/09 07/16
HW 4 07/16 07/30
HW 5 07/30 08/08
HW 6 08/08 08/18
HW 7 (Finals) 08/18 08/23

How to write good questions on Campuswire?

We are not here to debug your code line-by-line. We understand that many of you will be/are experiencing coding issues and we want to provide you with the support you need. In order to do this, we want to facilitate the process of posting questions and us (or you) answering questions.

We’d like you to write debugging/coding-related questions in a specific manner. Please find below a guideline on how to ask good questions on campuswire. If you follow those guidelines, the chances of you receiving a quick and helpful answer will increase a lot. Also, please be aware that we will remind you to reformulate your questions according to the guidelines below and we will refuse to answer questions with too little information content.

Title - Write a title that summarizes the specific problem

The title is the first thing potential answerers will see, and if your title isn’t interesting, they won’t read the rest. So make it count!

** Include Pictures **Include the example picture that we provide in the “example folder” and include a picture how your implementation looks like. This really facilitates debugging on our side!

Examples for good titles:

    Bad:  I don't understand confusing math in numpy
    Good: Numpy - Why does using float instead of int give me different results when all of my inputs are integers?
    Bad: Python if else problems
    Good: Syntax - Why does str == "value" evaluate to false when str is set to "value"?

Question - Ask about specific problems with your existing implementation, not just something like “I don’t know why it doesn’t work.”

Code - DO NOT INCLUDE pictures of your code, please use CampusWire’s formatting tools to type in code (3 backticks ``` followed by code and then 3 more backticks ). Please tell us which function in the code you’re trying to solve and copy the doc string so that it is easy for us to follow without revisting the code. Don’t make your code snippets too short (but also not too long)

e.g.

import numpy as np
a = 2
b.= 2
c = a + b
print c

Error message/assertion or Code doesn’t work

  1. What is the exact error that you’re receiving?
  2. What is making it difficult for you to understand this error message?
  3. What don’t you understand? Where are you struggling?
  4. What have you done exactly?
  5. Did you go over the algorithm again and are you sure you have no doubts about the theory?
  6. Can you include a minimal working example that we can try?
  7. Did you Google the error (please post a link to something you tried) and read up on what it means in Python/NumPy

Post the question and respond to feedback

After you post, leave the question open in your browser for a bit, and see if anyone comments. If you missed an obvious piece of information, be ready to respond by editing your question to include it. If someone posts an answer, be ready to try it out and provide feedback!

Similar Courses in Other Universities

More Links

Conferences: ICCP, SIGGRAPH, SIGGRAPH Asia, CVPR, ICCV, ECCV, ..

Top Calendar Links Slides Readings

Materials provided by us

A list with extra reading material which will be developed throughout the quarter can be found here: https://github.com/NUCS331/Material

Credits

Many of the course materials are modified from the excellent class notes of similar courses offered in other schools by Shree Nayar, Marc Levoy, Jinwei Gu, Fredo Durand, and others. The instructor is extremely thankful to the researchers for making their notes available online.