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 |
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.
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.
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.
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 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
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:
CS331 - HW X - “Problem description in 2-3 keywords”
In any case, please always include CS331 in your header for organizational issues.
Grading: Homeworks 0 through 6 are each graded Pass/Fail. Each homework consists of a coding and a technical writeup. Your coding must be correct, and your writeup must be clearly written in order to receive a passing grade. For each assignment that you fail, your grade gets lowered by one letter. So if you pass all seven assignments you get an A, if you fail one assignment you get a B, if you fail two you get a C, and so on. You can resubmit up to three homework assignments that you received a failing grade for. We plan to stick closely to these grading guidelines, but some exceptions may be made for partial credit (e.g. A-/B+, etc.).
When and Where to Submit Assignments: A writeup report for each assignment must be submitted on Canvas by 11:59pm on the due date. Your code must be pushed to your individual GitHub Classroom code repository, also at 11:59pm on the due date.
Late Policy: If EITHER there is nothing on Canvas OR your code has not been pushed to by 11:59pm on the due date, you fail the assignment. The most recent code on github at 11:59pm on the due date is the code we will grade. The most recent submission in Canvas at that point, is the one we grade. A good approach is to continually check in and push to GitHub as you work. Also, put up a “safety” submission on Canvas with what you currently have, an hour prior to the deadline. You can resubmit up to three homework assignments that you received a failing grade for.
Cheating & Academic Dishonesty: Do your own work. This includes free response answers and code. Penalties include failing the class and can be more severe than that. If you have a question about whether something may be considered cheating, ask, prior to submitting your work. We will be checking for code duplication. Academic dishonesty will be dealt with as laid out in the student handbook.
Announcements and discussions will take place on CampusWire. The sign-up code will be sent via Canvas.
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) |
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 |
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
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 |
A list with extra reading material which will be developed throughout the quarter can be found here: https://github.com/NUCS331/Material
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.