Course Information
Instructor:
Alexei (Alyosha) Efros,
Ren Ng
GSI:
Nithin Vengatha Chalapathi,
Himanshu Gaurav Singh,
Hongsuk Choi
Tutors:
Aditi Mundra,
Andrew Phillip Goldberg,
Eric Khodorenko, Kelvin Jiang Li
Ed:
Join the course
Gradescope Entry Code: G7EVRZ
Course: CS 180/280A
Meeting: TuTh 14:00-15:29
Location: The Gateway Building 1210
Office Hours
| Person | Time | Location |
|---|---|---|
| Alexei (Alyosha) Efros and Ren Ng | After class | The Gateway Building 1210 |
| Nithin Chalapathi and Himanshu Singh | Tue 4-5 PM | Wheeler 130 |
| Eric Khodorenko and Hongsuk Choi | Wed 10-11 AM | Barker 110 |
| Andrew Goldberg and Aditi Mundra | Wed 6-7 PM | Dwinelle 259 |
| Kelvin Jiang Li | Fri 3-4 PM | Gateway B1009 |
Prerequisites
This is a heavily project-oriented class, therefore good programming proficiency (at least CS 61B) is absolutely essential and required. Moreover, working knowledge of linear algebra (MATH 54, MATH 56, MATH 110, or EECS 16A) and multivariate calculus (e.g. MATH 53) are vital. Experience with machine learning and neural networks is required in the second part of the course. You must have taken beforehand or are currently taking (CS 182 or CS 189). Due to the open-endedness of this course, creativity is a class requirement.
Discussions
Discussions are GSI-led worksheets designed to help you better understand the concepts in class and in the projects. Attendance optional, but encouraged. Sheets and solutions will be posted after each week.
| Person | Time | Location |
|---|---|---|
| Himanshu Singh | Tue 5-6 PM | Gateway B1016 |
| Nithin Chalapathi | Tue 6-7 PM | Gateway B1016 |
| Nithin Chalapathi | Wed 6-7 PM | Dwinelle 83 |
| Hongsuk Choi | Thu 11 AM-12 PM | Gateway B1012 |
Topics
| Discussion | Topic | Materials |
|---|---|---|
| Week 1 | Python & NumPy Fundamentals for Computer Vision | Main sheet | Challenge | Solutions | Slides | Python notebook |
| Week 2 | Image formation | Main sheet | Solutions | Slides |
| Week 3 | Filtering and Frequencies | Sheet | Solutions | Slides | FFT Demo Tool |
| Week 4 | 2D Transformations and Warping | Sheet | Solutions | Slides |
| Week 5 | Homography | Sheet | Solutions | Slides |
| Week 6 | Automated correspondence | Sheet | Solutions | Slides |
| Week 7 | Midterm Review | Slides | Google Slides |
| Week 8 | No Discussion | — |
| Week 9 | World, Camera, Pixels, Rays | Sheet | Solutions | Slides |
| Week 10 | NeRF | Sheet | Solutions | Slides |
| Week 11 | No Discussion | — |
| Week 12 | Diffusion / Flow + CFG | Sheet | Solutions | Slides |
| Week 13 | Flow Matching II | Sheet | Solutions | Slides |
Course Description
The aim of this advanced undergraduate course is to introduce students to computing with visual data (images and video). We will cover acquisition, representation, and manipulation of visual information from digital photographs (image processing), image analysis and visual understanding (computer vision), and image synthesis (computational photography). Key algorithms will be presented, ranging from classical (e.g. Gaussian and Laplacian Pyramids) to contemporary (e.g. ConvNets, GANs), with an emphasis on using these techniques to build practical systems. This hands-on emphasis will be reflected in the programming projects, in which students will have the opportunity to acquire their own images and develop, largely from scratch, the image analysis and synthesis tools for solving applications.
Programming Projects
Project 1: Images of the Russian Empire -- Colorizing the Prokudin-Gorskii Photo Collection
See the submission gallery here.
Class Choice Award: TBD!
Project 2: Fun with Filters and Frequencies
See the submission gallery here.
Class Choice Award: TBD!
Project 3: (Auto)stitching and Photo Mosaics
See the submission gallery here.
Class Choice Award: TBD!
See the homework submission specification.
Class Schedule
Note that recordings will not be made of lectures this year, though lecture slides will be posted each class.
| Class Date | Topics | Material |
|---|---|---|
| Aug 27 |
Introduction
|
|
| Sep 01 |
The Camera
|
|
| Sep 03 |
Capturing Light... In human and machine
|
|
| Sep 08 |
Image Processing I: Pixels and Images
|
|
| Sep 10 |
Image Processing II: Convolution and Derivatives
|
|
| Sep 15 |
The Frequency Domain
|
|
| Sep 17 |
Pyramid Blending, Templates, NL Filters
|
|
| Sep 22 |
Image Transformations
|
|
| Sep 24 |
Homographies and Mosaics
|
|
| Sep 29 |
Automatic Image Alignment Part 1
|
|
| Oct 1 |
Automatic Image Alignment Part 2
|
|
| Oct 6 |
3D Vision: Coordinate Spaces
|
|
| Oct 8 |
Stereopsis
|
|
| Oct 13 |
Epipolar Geometry and Calibration
|
|
| Oct 15 |
Structure-from-Motion (SfM)
|
|
| Oct 20 |
Neural Radiance Fields 1
|
|
| Oct 27 |
Neural Radiance Fields 2
|
|
| Oct 29 |
Neural Radiance Fields 3
|
|
| Nov 3 |
Texture Models
|
|
| Nov 5 |
Image-to-Image Translation
|
|
| Nov 12 |
Generative Models of Images
|
|
| Nov 17 |
Flow Matching
|
|
| Nov 19 |
Diffusion Sampling
|
|
| Nov 24 |
Photography and Art
|
|
| Dec 1 |
Sequence Models for words and pixels
|
|
| Dec 3 |
Research in Computer Vision
|
|
Exams
- Midterm: October 15, in class
- Final: Tuesday, December 15, 8:00–11:00 AM (Finals Week)
Textbook
- Foundations of Computer Vision by Torralba, Isola, Freeman
- 2nd edition of Computer Vision textbook by Rick Szeliski
- If you need a refresher of linear algebra, please see Gilbert Strang's online class.
Class Notes
The instructor is extremely grateful to a large number of researchers for making their slides available for use in this course. Steve Seitz and Rick Szeliski have been particularly kind in letting me use their wonderful lecture notes. In addition, I would like to thank Paul Debevec, Stephen Palmer , Paul Heckbert, David Forsyth, Steve Marschner and others, as noted in the slides. The instructor gladly gives permission to use and modify any of the slides for academic and research purposes. However, please do also acknowledge the original sources where appropriate.
GRADING:
CS180:
- 30% Programming Projects (4 in total)
- 20% Final Project
- 15% Midterm
- 30% Final Exam (held during finals week)
- 5% Pop Attendance Quizzes
CS280A:
- Projects bells and whistles are required
- Different grading curve than CS180
The midterm and final exams are expected to be more challenging than the past offerings. We offer optional but highly encouraged discussion sessions to help prepare students for this.
Students will be allotted a total of 5 (five) late days per semester with each additional late day incurring a 10% penalty.
Quizzes are graded for completion only, and the worst score will be dropped.
PROGRAMMING RESOURCES:
Students will be encouraged to use Python (with either
scikit-image or opencv) as their primary computing platform. These
libraries offer tons of built-in image processing functions. Here is a
link to some
useful Python resources
compiled for this class. We also have an interactive
FFT tool
for visualizing Fourier transforms.
PREVIOUS OFFERINGS OF THIS COURSE:
Previous offerings of this course can be found
here.
SIMILAR COURSES IN OTHER UNIVERSITIES:
- Computational Photography (Hoiem, UIUC)
- Computational Photography (Hays, Brown)
- Digital and Computational Photography (Durand, MIT)
- Computer Vision (Seitz & Szeliski, UWashington)