Course Description

Computational imaging systems have a wide range of applications in consumer electronics, scientific imaging, HCI, medical imaging, microscopy, and remote sensing. We discuss digital photography and basic image processing, convolutional neural networks for image processing, denoising, deconvolution, single pixel imaging, inverse problems in imaging, proximal gradient methods, introduction to wave optics, time-of-flight imaging, end-to-end optimization of optics and imaging processing. Emphasis is on applied image processing and solving inverse problems using classic algorithms, formal optimization, and modern artificial intelligence techniques. Students learn to apply material by implementing and investigating image processing algorithms in Python and completing a term project.

Topics include:

  • Human visual perception
  • Digital cameras and ISPs
  • Denoising, deconvolution, and other inverse problems in imaging
  • Convolutional neural networks for solving inverse problems
  • Proximal gradient methods / formal optimization for solving inverse problems
  • High dynamic range imaging
  • Light field imaging
  • Time-of-flight imaging, non-line-of-sight imaging
  • End-to-end optimization of optics and image processing
  • ... other interesting topics.

Course Logistics

Lectures: Tuesdays 2:00-4:00pm in Earth Sciences Centre (ES) B149. Lectures will be recorded and made available on Quercus.

Instructor office hours: Tuesdays 1:00-2:00pm (David: BA7228, Aviad: BA7250) starting on September 3; discussion about projects, lecture material, etc. Office hours will be held by the instructor giving the lecture that day.

TA problem sessions/office hours: Wednesdays in Bahen 5256 from 1:00-2:00pm starting on September 4; discussion about homework questions. Problem sessions will be broadcast over Zoom (see "Zoom" tab on Quercus for the link), and the recordings will also be made available.

Textbook: There is no textbook for the course; links to readings and course notes are provided in the schedule.

Contact: Course announcements and general information will be posted on the course forum on Piazza (access through Quercus). For any emergency inquiries that cannot be handled on the forum via a private post, email the staff listserv: csc2529-fall2324-staff-l@listserv.utoronto.ca.

Coursework

Helpful Background

Related courses

Quercus

All assignments and the final project proposal and report should be submitted on Quercus. If you work as a team, make sure to indicate your team member in the submission.

Assignments (50%)

There will be 6 homework assignments (see schedule) in this class. These assignments will contain some theoretical questions and also implementations of techniques that we will discuss in class. Please refer to assignment writeups (available in the Files tab on Quercus) for details. After you finish, submit your code and report on Quercus.

Homeworks submitted after the deadline will receive a -1% deduction per hour late.

Collaboration Policy: Students are permitted to work together on homework assignments in small groups. However, while students can discuss the assignments together, they must compose their solutions individually. Students must not view or copy code of other students or solutions available on the internet. Names of collaborators must be listed on submitted assignments. Submitting plagiarized solutions is an academic offense and can have severe penalties.

ChatGPT Policy: Students must compose their own solutions in homework reports. This includes writing their own derivations and their own code implementations. As such, they must not look at solutions from their peers or on the web (including ChatGPT). 

However, ChatGPT can be used in the same way as other allowed resources can be used. For example, it is permissible to ask ChatGPT how to load an image in Python (same as you would find in a reference text or Stack Overflow). It is not permissible to ask ChatGPT to provide code that implements bilateral filtering for you (i.e., equivalent to copying the solution from the web). Non-coding uses of ChatGPT are also permitted—you could ask it to help you to correct grammatical issues in your project report (but please include an acknowledgment that ChatGPT was used).

Final Project (50%)

The final project grade takes into account your poster presentation (organization of poster, clarify of presentation, ability to answer question), your source code submission (code organization and documentation), and your final project report (appropriate format and length, abstract, introduction, related work, description of your method, quantitative and qualitative evaluation of your method, results, discussion & conclusion, bibliography).

You can work in teams of up to 3 students for the project. Submit only one proposal and final report for each team. The expected amount of work is relative to the number of team members, so if two teams work on a similar project, we'd expect less work from a smaller team. Before you start to work on the proposal or the report, take a look at some of the past project proposals and reports to give you sense for what's expected (see link at the bottom of this page).

The project proposal is a 1-2 page document that should contain the following elements: clear motivation of your idea, a discussion of related work along at least 3 scientific references (i.e., scientific papers not blog articles or websites), an overview of what exactly your project is about and what the final goals are, milestones for your team with a timeline and intermediate goals. Once you send us your proposal, we may ask you to revise it and we will assign a project mentor to your team.

The final project report should look like a short (~6 pages) conference paper. We expect the following sections, which are standard practice for conference papers: abstract, introduction, related work, theory (i.e., your approach), analysis and evaluation, results, discussion and conclusion, references. To make your life easier, we provide an LaTex template that you can use to get started on your report (see schedule for link). A detailed rubric can be found on Quercus under the final project report assignment.

Schedule and Syllabus

Week Date Description Material Readings Event Deadline
Week 1 Tue
Sep 3
Lecture 1 (David): Course intro, human visual system
Overview of class, human perception of color, depth, contrast, resolution
[slides]
Hybrid Images Paper HW1 out on Quercus
Wed
Sep 4
Problem session (HW1) [slides]
Week 2 Tue
Sep 10
Lecture 2 (David): Digital photography I
Ray optics, aperture, depth of field, exposure, sensor, noise
[slides] Marc Levoy's course on digital photography HW2 out on Quercus
Wed
Sep 11
Problem Session (HW2) [slides]
Fri
Sep 13
HW1 due at 11:59pm
Week 3 Tue
Sep 17
Lecture 3 (David): Digital photography II
CameraISP, demosaicking, denoising, deconvolution
[slides] Demosaicking Paper
Non-local Means Paper
Intro to Bilateral Filtering
Wed
Sep 18
TA Office Hours (HW2) [slides]
Week 4 Tue
Sep 24
Lecture 4 (David): Math review
Quick review of sampling, optimization, deconvolution, ...
[slides] Visual intro to Fourier transform
Fourier transform book
HW3 out on Quercus
Wed
Sep 25
Problem session (HW3) [slides]
Fri
Sep 27
HW2 due at 11:59pm
Week 5 Tue
Oct 1
Lecture 5: Great ideas in computational photography
no in-person lecture—see recording on Quercus
HDR, tone mapping, coded apertures, flutter shutter
[slides] HDR Imaging Paper
Tone Mapping Paper
Ext. Depth of Field Paper
Flutter Shutter Paper
Learned Coded Apertures
Neural Sensors
HW4 out on Quercus
Wed
Oct 2
Problem session (HW4) [slides]
Fri
Oct 4
HW3 due at 11:59pm
Week 6 Tue
Oct 8
Lecture 6 (Aviad): Introduction to neural networks
MLPs, CNNs, ResNets, denoising/deconvolution with CNNs
[slides] Linear classifiers Backpropagation notes
Optimization notes
HW5 out on Quercus
Wed
Oct 9
Problem session (HW5) [slides]
Fri
Oct 11
HW4 due at 11:59pm
Week 7 Tue
Oct 15
Lecture 7 (Aviad): Solving regularized inverse problems with ADMM
Natural image priors, deconvolution, single-pixel imaging, ADMM, solving general inverse problems
[slides] Deconvolution notes
Compressive imaging notes
HW6 out on Quercus
Wed
Oct 16
Problem session (HW6) [slides]
Fri
Oct 18
Project Proposal, HW5 due at 11:59pm
Week 8 Tue
Oct 22
Lecture 8 (Aviad): Light Field Imaging
plenoptic function, light field cameras, 3D displays
[slides]
Wed
Oct 23
TA office hours (HW6)
Fri
Oct 25
HW6 due at 11:59pm
Week 9 Tue
Oct 29
Fall Reading Week (No Lecture)
Week 10 Tue
Nov 5
Lecture 9 (David): Time-of-flight imaging & neural representations
lidar, non-line-of-sight imaging, ultrafast imaging, neural rendering
[slides]
Week 11 Tue
Nov 12
Lecture 10 (Manu Gopakumar): Holographic displays (on Zoom—see Quercus for link) [slides]
Week 12 Tue
Nov 19
Lecture 11 (Sotiris Nousias): Single-photon imaging [slides]
Week 13 Tue
Nov 26
Final Project - poster presentations in Bahen lobby (2-4 PM)
ProjectPosterTemplate.ppt
iccp2020_latex_template.zip
Week 14 Fri
Dec 6
Project report and code due at 11:59pm

Miscellanea

Installing Python

We will only support Python 3.7 and recommend that you install it using Anaconda or Miniconda (see installation instructions here).

Poster Printing Instructions

See Quercus for instructions on how to print your poster for the final project poster session.

Previous Course Offerings

This course is adapted from the Computational Imaging course designed by Gordon Wetzstein and offered at Stanford University (EE367). Below you can find links to pinhole camera photos and course projects from these previous iterations of the course.

Pinhole Camera Gallery

Links to notable pinhole camera photos:

Previous Course Projects

Acknowledgements

The course is adapted from EE367 at Stanford University by Gordon Wetzstein. Some of the materials used in class build on that from other instructors, including Yannis Gkioulekas, Marc Levoy, Fredo Durand, Ramesh Raskar, Shree Nayar, Paul Debevec, Matthew O'Toole and others, as noted in the slides. Feel free to use these slides for academic or research purposes, but please maintain all acknowledgments. This webpage is based on the website for CS231N and EE367 at Stanford University.