This course is a first-principles introduction to the acquisition and computational processing of 2D images. It is aimed at undergraduates interested in learning about computer vision, digital photography and computer graphics.
The course serves as a stepping stone for tackling more advanced courses in those subjects and covers four broad themes:

Instructor office hour (week 2 onwards): Tuesday 3:00pm-4:00pm (BA 7250) right after class.
TA office hour: TBD
Contact: Course announcements and general information will be posted Quercus. Q&A related to lectures, assignments and practice problems will take place on Piazza.
Course dropbox: The one-stop shop for all course materials. See Quercus for the link.
Links to slides for all lectures will be available on the course Dropbox approximately an hour before each lecture (see Quercus for Dropbox link). The full set of lecture slides from the latest offerings of the course, is already available on dropbox. This years course slides will be very similar to pervious term's offering so students who prefer reviewing the lecture content in advance of a lecture can simply refer to those slides.
Recordings should be available on Quercus soon after each lecture. Since recording glitches are not uncommon due to issues with the system in specific classrooms (eg. missing sound, incomplete recordings, delays in posting) the completeness and timely availability of these recordings cannot be guaranteed, and they should not be treated as a substitute for in-person attendance.
In addition to lecture slides, assigned readings consist of selected sections from the following textbooks. The vast majority of required readings come from the first two; the rest will be used very occasionally and/or only as optional readings for those interested in delving more deeply into the lecture's subjects. Several of these books are freely available online; the rest can be found in the library and/or are available for purchase. See the course schedule for full details.
For the first half of the course, selected cartoon videos from Steve Seitz' "Graphics in 5 minutes (G5M)" channel on youtube must be watched before each week's lecture. In addition to these videos, Shree Nayar's video lectures on the First Principles of Computer Vision are an excellent source of lectures for optional viewing after class. See the course schedule for full details.
Solutions to past term tests and final exams since 2016 can be found on the course Dropbox. The TAs have also compiled a selection of practice problems from several textbooks to help you test your understanding of the lecture material. These resources will be available on the course Dropbox.
Generative AI has made code generation and the translation of research papers into working implementations substantially easier. The course has therefore shifted its emphasis away from implementing algorithms from scratch and toward developing intuition and understanding. Coursework will focus on asking useful questions, designing informative experiments, examining assumptions and failure cases, and critically evaluating the results produced by computer vision systems. Students may use generative AI as a tool, but remain responsible for understanding, verifying, and explaining their work.
The course includes five exploratory labs, one for each instructional module. Each lab is worth 5%. Students will use complete implementations provided in Jupyter notebooks to experiment with parameters, compare algorithms, investigate assumptions and failure cases, and interpret their results. The submissions assess the quality of these experiments and the understanding demonstrated in the analysis, rather than the ability to implement algorithms from scratch. Lab 5 has the same weight as the other labs but a smaller scope because of the shorter time available at the end of term.
Late policy: Lab submissions are due at 11:59pm on the due date. To account for unexpected last-minute technical issues, each student will receive a one-hour grace period for every lab submission. To request an extension of at most seven days, use the special-consideration form available on Quercus. This form is required even if an absence declaration has already been submitted through ACORN. Requests made by email to an instructor or TA will not be accepted.
Each module concludes with a 10-15 minute multiple-choice quiz during tutorial. Questions emphasize visual and algorithmic intuition, including recognizing parameter effects, artifacts, failure modes, and violated assumptions. There are five quizzes; each is worth 5%, and the best four of five count toward the final grade.
Discussion, brainstorming, and the use of generative AI tools are permitted for the exploratory labs. These tools may be used for installation, debugging, adapting code, designing experiments, and interpreting results. A word of caution: relying on AI for interpretation can hinder the genuine understanding needed for the quizzes and final examination. AI systems often produce agreeable and plausible explanations or suggestions that nevertheless miss the mark. Developing your own intuition is therefore essential, both for understanding computer vision and for recognizing when an AI-generated answer has failed. Students remain responsible for verifying generated material and for understanding and explaining everything they submit. Submitted observations, analysis, and conclusions must reflect the student's own work, and material taken from another person or source must not be presented as original work. Quizzes and the final examination are individual assessments; sharing their questions or answers is not permitted.
Final exam (no auto-fail): The comprehensive final examination assesses mathematical foundations, image-processing principles, and algorithmic intuition. Date and time TBD.
| Lecture Week |
Date | Description | G5M Videos to Watch Before Class | Lecture Materials |
Labs | Quizzes |
|---|---|---|---|---|---|---|
| Part I: Foundations | ||||||
| 1 | 08/09 |
Course Intro Image Geometry 1 Homogeneous 2D coordinates, 2D transformations, homographies, image warping algorithms. |
Affine transforms
|
[materials01] | Lab 1 released | |
| Tue 08/09 |
Tutorial Introduction to Python, Jupyter notebooks, and the course labs. |
|||||
| Thu 10/09 |
Tutorial Introduction to Python, Jupyter notebooks, and the course labs. |
|||||
| 2 | 15/09 |
Image Geometry 2 Homogeneous 3D coordinates, pinhole imaging & perspective projection, imaging of 3D planes, panoramic image stitching, homography estimation. |
Perspective projection, Perspective projection--the math |
[materials02] | ||
| Tue 15/09 |
Tutorial Linear algebra refresher: solving systems of linear equations. Lecture 1 practice problems. |
|||||
| Thu 17/09 |
Tutorial Linear algebra refresher: solving systems of linear equations. Lecture 1 practice problems. |
|||||
| 3 | 22/09 | Image Filtering 1 Linear shift-invariant filters, convolution, basic filters. |
Images, Image filtering | [materials03] | Lab 2 released | |
| Tue 22/09 |
Tutorial Quiz 1. Lecture 2 practice problems. Lab2 Q&A. |
Quiz 1 | ||||
| Thu 24/09 |
Tutorial Quiz 1. Lecture 2 practice problems. Lab2 Q&A. |
Quiz 1 | ||||
| 4 | 29/09 | Image Filtering 2 Gaussian filters, derivative filters, sharpening filters. The Bilateral filter. Discrete image formation, image interpolation. |
Interpolation | [materials04] | ||
| Tue 29/09 |
Tutorial Image filtering in action . Lecture 3 practice problems. Lecture 6 prep: Math refresher on complex numbers and their Euler representation |
|||||
| Thu 01/10 |
Tutorial Image filtering in action. Lecture 3 practice problems. Lecture 6 prep: Math refresher on complex numbers and their Euler representation |
|||||
| Fri 02/10 |
Lab 1 submission | Due at 23:59 | ||||
| 5 | 06/10 |
Image Filtering 3 Introduction to Fourier transforms, convolution theorem. |
Fourier transforms | [materials05] | ||
| Tue 06/10 |
Tutorial Image Filtering 3 continued. Tutorial is replaced by a lecture given by Aviad. |
|||||
| Thu 08/10 |
Tutorial Image Filtering 3 continued. Tutorial is replaced by a lecture given by Aviad. |
|||||
| 6 | 13/10 | Image Filtering 4 Fourier-domain image filtering, hybrid images. Sampling theory basics, aliasing, anti-aliasing methods. |
[materials06] | |||
| Tue 13/10 |
Tutorial Lecture 3 & 4 practice problems. |
|||||
| Thu 15/10 |
Tutorial Lecture 3 & 4 practice problems. |
|||||
| 7 | 20/10 | Color Vision & Camera ISPs Color perception in the human visual system, color imaging, color spaces, color displays. Smartphone Image Signal Processing pipelines. |
Color | [materials07] | Lab 3 released | |
| Tue 20/10 |
Tutorial Quiz. Fourier-domain filtering & anti-aliasing in action. Lab3 Q&A. |
Quiz 2 | ||||
| Thu 22/10 |
Tutorial Quiz. Fourier-domain filtering & anti-aliasing in action. Lab3 Q&A. |
Quiz 2 | ||||
| Fri 23/10 |
Lab 2 submission | Due at 23:59 | ||||
| Part II: Image Representations | ||||||
| 27/10 29/10 |
Reading week break (No Lecture, Tutorial, Office hours) | |||||
| 8 | 03/11 |
Differentiable 1D & 2D Representations Representing smooth 2D curves, curve tangent, curve normal and the moving frame. Image gradient, image Laplacian, edge enhancement, Canny edge detection. Intelligent scissors, painterly rendering. |
[no video] | [materials08] | ||
| Tue 03/11 |
Tutorial Lecture 7 practice problems. Lecture 9-10 prep: Linear algebra refresher on matrix eigenvectors and eigenvalues. |
|||||
| Thu 05/11 |
Tutorial Lecture 7 practice problems. Lecture 9-10 prep: Linear algebra refresher on matrix eigenvectors and eigenvalues. |
|||||
| 9 | 10/11 | Vector-Based Representations 1 Template matching, measuring image similarity, Harris/Foerstner corner detection. Introduction to PCA. |
[no video] | [materials09] | Lab 4 released | |
| Tue 10/11 |
Tutorial Quiz. Lecture 8 practice problems. |
Quiz 3 | ||||
| Thu 12/11 |
Tutorial Quiz. Lecture 8 practice problems. |
Quiz 3 | ||||
| Fri 13/11 |
Lab 3 submission | Due at 23:59 | ||||
| 10 | 17/11 |
Vector-Based Representations 2 Principal component analysis, face recognition using eigenfaces. |
[no video] | [materials10] | ||
| Tue 17/11 |
Tutorial Lecture 9 practice problems. Lab4 Q&A. |
|||||
| Thu 19/11 |
Tutorial Lecture 9 practice problems. Lab4 Q&A. |
|||||
| 11 | 24/11 | Multi-Scale Representations 1 The Discrete Haar Wavelet Transform, wavelet-based image compression, wavelet-based image processing. |
[no video] | [materials11] | Lab 5 released | |
| Tue 24/11 |
Tutorial Quiz. Lecture 10 practice problems. |
Quiz 4 | ||||
| Thu 26/11 |
Tutorial Quiz. Lecture 10 practice problems. |
Quiz 4 | ||||
| Fri 27/11 |
Lab 4 submission | Due at 23:59 | ||||
| 12 | 01/12 | Multi-Scale Representations 2 Panoramic image stitching revisited. SIFT keypoints and SIFT-based correspondence-finding. Robust model fiting using RANSAC. Gaussian and Laplacian pyramids. Laplacian image blending. |
[no video] | [materials12] | ||
| Tue 01/12 |
Tutorial Quiz. Preparing for the final. Lab5 Q&A. |
Quiz 5 | ||||
| Thu 03/12 |
Tutorial Quiz. Preparing for the final. Lab5 Q&A. |
Quiz 5 | ||||
| 08/12 | Lab 5 submission | Due at 23:59 | ||||
| 08/12 | End of term |
You are welcome to use your personal computer (OSX, Windows or Linux) for programming assignments. Be aware, however, that TAs will test your code on Teaching Labs computers and thus it is essential that you verify your code there before submission.
We will support only one of the latest versions of python and recommend that you install it using Anaconda or Miniconda (see installation instructions here). Further information about setting up your computing environment for the course's programming assignents will be given at the first tutorial and will also be available in the Tutorial 1 slides.
This version of the course was built (and taught in previous terms) by Kyros Kutulakos. The lecture slides have been revised significantly from offerings of the course prior to 2021, and include slides from several other instructors. Beginning in Fall 2026, the homework assignments changed substantially in response to the rise of generative AI. Feel free to use these slides for academic or research purposes, but please maintain all acknowledgments and source information. The format and style of this webpage are based on those of CS2529, taught by David Lindell.