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:
Lectures: Wednesdays 9:00-11:00am in Wilson Hall 1016. Lectures will be recorded and made available on Quercus.
Instructor office hours: Wednesdays 11:10-12:00pm (BA7228) starting on September 9; discussion about projects, lecture material, etc. TA problem sessions/office hours: Thursdays in Bahen 5256 from 2:00-3:00pm starting on September 10; 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). Please make a private Piazza post if you need to contact the instructors directly.
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.
There will be 5 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 are graded on completion, so each is worth an equal share of the 20% (4% per assignment); the midterm is where your understanding of the homework material is assessed.
Although homeworks are graded on completion, submissions after the deadline will still receive a 1% deduction per hour late.
Collaboration Policy: Homework assignments may be completed collaboratively. You are welcome to work together in groups—discussing the problems, working through the derivations, and writing and debugging code together—if you wish. Because the homeworks are graded on completion and are meant as low-stakes practice, there are no restrictions on working with classmates. We only ask that you (1) submit your own writeup on Quercus and (2) list the names of anyone you worked with. Note that the midterm is completed individually and is where your understanding of this material is assessed, so it is in your own interest to make sure you can do the work yourself.
AI Assistants Policy: You may use AI assistants (e.g., ChatGPT, Claude, Copilot) on the homework assignments, just as you may collaborate with classmates or consult references. The homeworks are practice—the goal is for you to learn the material, and the midterm is where that learning is assessed—so use these tools in a way that helps you understand the techniques rather than just produce an answer. Please include a brief acknowledgment of any AI tools you used and how you used them.
For the final project, you are welcome to use AI assistants as a tool (e.g., for coding support or polishing writing). However, you must be thoroughly familiar with the details of your own implementation—this will be assessed during your poster presentation, where we will ask you to explain how your method works. We also expect project reports to be written and carefully edited by your team so that they read clearly and accurately and are specific to your work; ultimately you are responsible for what is written in the report. Any use of AI should be acknowledged in your report.
There will be one in-class midterm exam (see schedule) covering the lecture and homework material from the first part of the course. The midterm is closed-book and completed individually; it is the primary assessment of your understanding of the course material.
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.
| Week | Date | Description | Material | Readings | Event | Deadline |
|---|---|---|---|---|---|---|
| Wed Sep 9 |
Lecture 1: Course intro, human visual system Overview of class, human perception of color, depth, contrast, resolution |
[slides]
|
Hybrid Images Paper | HW1 out on Quercus | ||
| Thu Sep 10 |
Problem session (HW1) | [slides] | ||||
| Wed |
Lecture 2: Digital photography I Ray optics, aperture, depth of field, exposure, sensor, noise |
[slides] | Marc Levoy's course on digital photography | HW2 out on Quercus | ||
| Thu |
Problem Session (HW2) | [slides] | ||||
| Fri Sep 18 |
HW1 due at 11:59pm | |||||
| Wed |
Lecture 3: Digital photography II CameraISP, demosaicking, denoising, deconvolution |
[slides] |
Demosaicking Paper Non-local Means Paper Intro to Bilateral Filtering |
|||
| Thu |
TA Office Hours (HW2) | [slides] | ||||
| Wed |
Lecture 4: Great ideas in computational photography 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 |
HW3 out on Quercus | ||
| Thu |
Problem session (HW3) | [slides] | ||||
| Fri |
HW2 due at 11:59pm | |||||
| Wed |
Lecture 5: Sampling, linear systems, deconvolution DFT, aliasing, diffraction, blur, Wiener filter |
[slides] |
Visual intro to Fourier transform Fourier transform book |
HW4 out on Quercus | ||
| Thu |
Problem session (HW4) | [slides] | ||||
| Fri |
HW3 due at 11:59pm | |||||
| Wed |
Lecture 6: Solving regularized inverse problems with ADMM Natural image priors, deconvolution, single-pixel imaging, ADMM, solving general inverse problems |
[slides] |
Deconvolution notes
Compressive imaging notes |
HW5 out on Quercus | ||
| Thu |
Problem session (HW5 and Midterm review) | [slides] | ||||
| Fri |
HW4 due at 11:59pm | |||||
| Wed |
Midterm exam (in class, 9:00-11:00am) Covers Lectures 1–6 |
Midterm | ||||
| Fri |
HW5 due at 11:59pm | |||||
| Wed |
Fall Reading Week (No Lecture) |
|||||
| Mon |
Project Proposal due at 11:59pm | |||||
| Wed |
Lecture 7 (Rohan Dahale): Black hole imaging guest lecture |
[slides] | ||||
| Wed |
Lecture 8: Light Field Imaging plenoptic function, light field cameras, 3D displays |
[slides] | ||||
| Wed |
Lecture 9 (Ben Attal): Neural rendering guest lecture |
[slides] | ||||
| Wed |
Lecture 10: Foundation models for computational imaging |
[slides] | ||||
| Wed |
Final Project - poster presentations in Bahen lobby (9-11 am) |
ProjectPosterTemplate.ppt cvpr2026_latex_template.zip |
||||
| Fri |
Project report and code due at 11:59pm |
We will only support Python 3.11 and recommend that you install it using Anaconda or Miniconda (see installation instructions here).
See Quercus for instructions on how to print your poster for the final project poster session.
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.
Links to notable pinhole camera photos:
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.