CSC320
  • Description
  • Logistics
  • Courseware
  • Coursework
  • Schedule
  • Piazza

CSC320: Introduction to Visual Computing

Winter 2023

 

 

 

 

 

 

 

 

 

 

 

 

photo credit

Course Description

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, and serves as a stepping stone for tackling more advanced courses on those subjects.

The course has four main goals:

  • Mathematical and engineering foundations: Introducing key concepts from geometry; multivariate calculus; linear algebra; image and signal processing; and human vision that are fundamental to delving deeper into vision, graphics and photography.
  • Algorithms for early vision: Putting these concepts to use in real-world applications, with an emphasis on the "early" stages of 2D visual processing. Specific topics include image warping, blending and stitching; image enhancement; image scissoring and inpainting; color image processing and display; modern smartphone camera processing pipelines; edge and feature detection; face recognition; and 2D image matching.
  • Visual programming: Providing hands-on experience with implementing several such early visual processing tools, through programming assignments.
  • First look at vision and graphics research: Most of the course's assignments involve reading a research paper and completing the starter code provided to fully implement the paper's technique. Understanding how to turn such algorithmic descriptions into working computer vision code---and how to evaluate its performance---will be key skills acquired in the course.

Instructor

Kyros Kutulakos

Teaching Assistants

Towaki Takikawa
Robin Swanson
Parsa Mirdehghan

Course Logistics

Lectures: Tuesdays 6:00pm-8:00pm in BA1130.
Tutorials: Tuesdays 8:00pm-9:00pm in BA1130.

Instructor in-person office hour: Wednesdays noon-1:00pm (BA7270).
Instructor zoom office hour: Tuesdays noon-1pm (zoom link posted on Quercus).

TA office hour (week of Jan 15 onwards): TBA.

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.

Course Materials

Textbooks

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.

 

 

 

 

 

 

 

Videos

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.

 

Problem Sets & Past Exams

Solutions to all past term tests and final exams since 2016 can be found on the course dropbox. The TAs have also compiled a selected set of practice problems from a variety of textbooks to test your knowledge of each lecture. See the course schedule for full details.

Coursework

Assignments (50%)

There will be 4 programming assignments in this class (see schedule). Each assignment comes with a partial implementation that you must then complete and test, and write a report about it. All except the first assignment will require reading an associated research paper and implementing (and testing) the technique it describes. Assignments will be exclusively in Python. All assignments will be posted on lecture day and will be due at noon (11:59am) three weeks later on MarkUs (except A4, which is due 14 days later). The three best assignments will count for 14% of the mark; the worst will count for 8%.

Late policy: All assignments are due at noon on the due date. There will be a 15% marks deduction for each day late (i.e., if you submit your assignment anytime between 12:01pm on the due date and 11:59am the next day your penalty will be 15%). No assignments will be accepted more than 5 days late.

To account for unexpected technical last-minute issues with submissions, each student will be allocated one-hour grace period "budget". If submission of A1 or any other assignment is only a few minutes late, these minutes will be deducted from the grace period budget. Once that budget goes to zero, submitting a future assignment even a minute late will incur the full one-day lateness penalty. Assignments submitted more than 1 hour late are not eligible for grace periods and do not affect the grace period budget.

Academic honesty policy for written components: All reports submitted as part of your assignments are strictly individual work. No part of these reports should be shared with others, or taken from others. This includes verbatim text, paraphrased text, and/or images used. You are, however, allowed to discuss these components with others at the level of ideas, and indeed you are welcome to brainstorm together.

Academic honesty policy for programming components: Collaboration on a programming component by individuals (whether or not they are taking the class) is encouraged at the level of ideas. Feel free to ask each other questions, brainstorm on algorithms, or work together on a (virtual or real) whiteboard. Be careful, however, about copying actual code for programming assignments or merely adapting someone else's code. This sort of collaboration at the level of artifacts is permitted if explicitly acknowledged, but will result in marks deduction. Full details about how to acknowledge such collaborations (and what deductions to expect) will be provided in the individual assignment handouts.

Exams (50%)

Term test (15%): Tuesday, March 7 (8:10pm-9:00pm).
Final exam (35%, no auto-fail): Date and time TBD.

Schedule and Syllabus

Lecture
Week
Date Description G5M Videos to Watch Before Class Lectures, Readings &
Exercises
Event Deadline
Part I: Foundations
1 Tue
10/1
Course Intro
Image Geometry 1
Homogeneous 2D coordinates, 2D transformations, homographies, image warping algorithms.
Affine transforms
[slides01][materials01]
Tue
10/1
Tutorial
Image I/O in OpenCV and Python.
[tslides01]
2 Tue
17/1
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
[slides02] [materials02] A1 out on Dropbox
Tue
17/1
Tutorial
Linear algebra refresher: solving systems of linear equations. Lecture 1 practice problems.
[tslides02]
3 Tue
24/1
Image Filtering 1
Linear shift-invariant filters, convolution, basic filters.
Images,
Image filtering
[slides03] [materials03]
Tue
24/1
Tutorial
Lecture 2 practice problems. A1 Q&A.
[tslides03]
4 Tue
31/1
Image Filtering 2
Gaussian filters, derivative filters, sharpening filters. The Bilateral filter. Discrete image formation, image interpolation.
Interpolation [slides04] [materials04]
Tue
31/1
Tutorial
Image filtering in action with OpenCV. Lecture 3 practice problems. Lecture 5 prep: Math refresher on complex numbers and their Euler representation.
[tslides04]
5 Tue
7/2
Image Filtering 3
Introduction to Fourier transforms, convolution theorem.
Fourier transforms [slides05] [materials05] A2 out on Dropbox A1 due at 11:59am
Tue
7/2
Image Filtering 3 continued (no tutorial this week)
Mathematics of Fourier Transforms.
[tslides05]
6 Tue
14/2
Image Filtering 4
Fourier-domain image filtering, hybrid images. Sampling theory basics, aliasing, anti-aliasing methods.
[no video] [slides06] [materials06]
Tue
14/2
Tutorial
Fourier-domain filtering & anti-aliasing in action with OpenCV. Lecture 4-5 practice problems. A2 overview and Q&A.
[tslides06]
Tue
21/2
Winter break (No Lecture)
7 Tue
28/2
Color Vision & Camera ISPs
Color perception in the human visual system, color imaging, color spaces, color displays. Smartphone Image Signal Processing pipelines. High-dynamic range imaging.
Color [slides07] [materials07] A3 out on Dropbox A2 due at 11:59am
Tue
28/2
Tutorial
Lecture 5-6 practice problems. Overview of A3.
[tslides08]
Part II: Image Representations for Computer Vision
8 Tue
7/3
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] [slides08] [materials08]
Tue
7/3
Term Test 1
8:10-9:00pm, instead of tutorial.
9 Tue
14/3
Vector-Based Representations 1
Template matching, measuring image similarity, Harris/Foerstner corner detection. Introduction to PCA.
[no video] [slides09] [materials09]
Tue
14/3
Tutorial
Lecture 7-8 practice problems. Lecture 9-10 prep: Linear algebra refresher on matrix eigenvectors and eigenvalues.
10 Tue
21/3
Vector-Based Representations 2
Principal component analysis, face recognition using eigenfaces.
[no video] [slides10] [materials10] A4 out on Dropbox A3 due at 11:59am
Tue
21/3
Tutorial
Lecture 9 practice problems. Overview of A4.
[tslides10]
11 Tue
28/3
Multi-Scale Representations 1
The Discrete Haar Wavelet Transform, wavelet-based image compression, wavelet-based image processing.
[no video] [slides11] [materials11]
Tue
28/3
Tutorial
Lecture 10 practice problems. A4 Q&A.
[tslides11]
12 Tue
4/4
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] [slides12] [materials12]
Tue
4/4
Tutorial
Lecture 11 practice problems. A4 Q&A. Preparing for the final.
Thu
6/4
End of term
No class.
A4 due at 11:59am

Additional Information

Prerequisites

  • Formal prerequisites: Please consult the Arts and Science timetable for full details on prerequisites and exclusions. Requests for prerequisite waivers should be directed to the Computer Science Undergraduate office.
  • Coding Experience: All assignments will be in Python and will rely heavily on packages such as NumPy and OpenCV. Advance knowledge of these packages is not necessary; they will be covered in tutorials as needed.
  • Course sequencing: Students planning to take CSC420 (Introduction to Image Understanding) are strongly encouraged to take CSC320 first. Both courses are currently in a transitional phase, with foundational material progressively shifted exclusively to CSC320 to make room for teaching more advanced topics in CSC420. Students planning to take CSC317 (Computer Graphics) would also greatly benefit from taking CSC320 first, or concurrently with that course.

Hardware & Software Compatibility

  • 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 only support Python 3.7 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 can be found in the Tutorial 1 slides.

Related courses at UofT

  • CSC317: Computer Graphics
  • CSC420: Introduction to Image Understanding (UTM)
  • CSC420: Introduction to Image Understanding (StG)
  • CSC2503: Foundations of Computer Vision
  • CSC2529: Computational Imaging
  • CSC2530: Computational Imaging and 3D Sensing
  • CSC2520: Geometry Processing

Acknowledgements

The lecture slides in this installment of the course have been revised significantly from previous offerings of course, and include slides from several other instructors. 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.