EE367/CS448I: Computational Imaging and Display

Winter 2019
Lecture: Mondays and Wednesdays, 3-4:20 pm, Huang 018
Problem session: Fridays, 3:30-4:20 pm, Huang 018
Instructors: Gordon Wetzstein, Julie Chang (TA)

Light field photograph of the 2017 class. Top row, from left: front focus, center focus, rear focus. Click on the images for high-resolution pictures that were refocused from the light field in post-processing. Bottom row, from left: contrast-enhanced depth map computed from the light field and rectified, raw light field. Click on the images to see the original, full-resolution data.

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 light fields, time-of-flight cameras, multispectral imaging, thermal IR, computational microscopy, compressive imaging, computed tomography, computational light transport, compressive displays, phase space, and other topics at the convergence of applied mathematics, optics, and high-performance computing related to imaging. Hands-on assignments. Prerequisites: EE 261 or equivalent (basic signal processing) and EE 263 or equivalent (linear systems/algebra). Course Catalog Entry

Topics include:

Helpful Background

This course requires programming experience (especially Matlab) as well as knowledge of linear algebra, basic calculus, and optimization. The second class will review most of the required mathematical concepts (see tentative schedule below). Previous knowledge of computer graphics and computer vision will be helpful.
Courses that will be very helpful, but which are not absolutely required:
Related courses at Stanford that you may also find interesting:
A few of the course topics overlap with different parts of related courses.

Important Class Information

Requirements and Grading

The course requirements include: (1) six assignments, (2) an in-class midterm (80 minutes long), and (3) a major final project, including a project proposal, final report, source code, and a poster (or video) presentation.

Your final grade will be made up from There are no "late days" for the assignments. If you choose to submit an assignment late, we will accept it for up to 24h after the submission deadline with a 30% penalty (final grade multiplied by 0.7).


Different equipment will be available for use in the projects: Intel RealSense, Lytro Illum, Time of Flight cameras, machine vision and SLR cameras, The Eye Tribe (gaze tracker), Olympus Air / Open Camera Platform, ...


No textbook, students are expected to read relevant literature as discussed in class and outlined in the "additional readings" section of the syllabus.

Pinhole Camera Gallery

You can find some notable pinhole camera photos from previous offerings here

Class Projects of Previous Offerings

Tentative Syllabus

Class Date Topic Details Slides Additional Readings Assignments
Week 1


Introduction and fast forward overview of class, logistics, discussion of project ideas lecture1.pdf


The human visual system perception of color, depth, contrast, resolution lecture2.pdf - Hybrid images paper


Problem session
Week 2


Digital photography I optics, aperture, depth of field, exposure, noise, sensors lecture3.pdf - archived course CS 178


Digital photography II image processing pipeline lecture4.pdf - Demosaicing paper
- Non-local means paper
- Intro to bilateral filter


Problem session HW1 due at noon
Week 3


Martin Luther King Day
No Class!


Sampling, Linear Systems review of sampling, regularized linear systems lecture5.pdf


Problem session HW2 due at noon
Week 4


Deconvolution inverse filtering, Wiener filtering, total variation, ADMM lecture6.pdf - Lecture notes: deconvolution
- ADMM paper


Burst photography HDR, tone mapping, super-resolution, flash/no-flash, multi-flash lecture7.pdf - HDR paper
- Tone mapping paper


Problem session HW3 due at noon
Week 5


Light field photography camera arrays, lytro, coded masks, refocus, fourier slice theorem lecture8.pdf - original light field paper
- other light field paper
- light field thesis


Coded computational photography extended depth of field, motion invariance, flutter shutter lecture9.pdf - flutter shutter paper


Problem session HW4 due at noon
Week 6


Noise signal independent noise, signal-dependent noise, image reconstruction with noise lecture10.pdf - Lecture notes: noise and deconvolution with noise


Compressive imaging single pixel camera, compressive sensing, compressive hyperspectral imaging, compressive light field imaging lecture11.pdf - Lecture notes: single pixel camera
Project proposal due


Problem session HW5 due at noon
Week 7


President's Day
No Class!


Computational illumination Time-of-flight imaging, structured illumination, photometric stereo, non-line-of-sight imaging lecture12.pdf


HW6 due at noon
Week 8


Introduction to computational microscopy fluorescence, 3D microscopy, confocal, light field, light sheet, two-photon, etc. lecture13.pdf


In-class Midterm!


Week 9


Displays blocks LCDs, SLMs, OLEDs, stereo displays, light field displays lecture14.pdf


Computational displays HDR displays, projection displays, vision-correcting displays, volumetric displays lecture15.pdf


Week 10


Wearable displays head-mounted displays (HMDs), virtual reality (VR), augmented reality (AR) lecture16.pdf


Final project poster presentation
Packard Atrium, 3-5:30 pm
Poster printing instructions


Project reports and code due (until Fri, 3/15, 11:59pm)


Grades due

Computing Resources

The computers in the Stanford Center for Image Systems Engineering (SCIEN) Lab can be used to do your work in this class, although you can choose to use other university machines or your own computer. These machines are located in Room 001 (basement) of the Packard building. To get access to this room, please email the course staff.

The SCIEN computers are equipped with MATLAB (with the Image Processing Toolbox). They use the same username/password login as your normal SUNet account, and all your regular files on the Stanford network appear when you log into a SCIEN computer. The SCIEN machines can be remotely accessed using Microsoft Remote Desktop on the Stanford network. The device names are through The login is win\SUNetID and the password is your SUNet password. If connecting from off campus, you will need to use the Stanford VPN service. Only two students can simultaneously access one given device, so you may want to try another one if your access gets denied. If you have difficulty accessing the lab resources, please reach out to Steven Clark ( or John DeSilva ( for help.

You can find up-to-date information about our teaching labs and lab 64, including computing and hardware resources, on this wiki:

For basic tutorials on MATLAB, please look here.

Poster Printing Instructions

Detailed instructions for printing your poster can be found here:

The quick summary:


Some of the materials used in class build on that from other instructors. In particular, we will use some materials from Marc Levoy, Fredo Durand, Ramesh Raskar, Shree Nayar, Paul Debevec, Matthew O'Toole and others, as noted in the slides. The website was adopted from James Hays (thanks!). Feel free to use these slides for academic or research purposes, but please maintain all acknowledgments.