Course Information

This class is a general introduction to computer vision. It covers standard techniques in image processing like filtering, edge detection, stereo, flow, etc. (old-school vision), as well as newer, machine-learning based computer vision. It was originally offered in the spring of 2018 at the University of Washington.



Slides are a mishmash of lots of other people's work. Special thanks to: Rob Fergus, Linda Shapiro, Harvey Rhody, Rick Szeliski, Ali Farhadi, Robert Collins. Lectures 8 and 9 on Flow, 3d, and stereo are given by Connor Schenck.

All of the slides, videos, and homeworks are free to use, modify, redistribute as you like without permission. Just make your own copy of the slides on Google Docs, don't ask to modify mine!


The class has 6 homeworks where you will build out a computer vision library in C. We cover basic image manipulations, filtering, features, stitching, optical flow, machine learning, and convolutional neural networks.

Final Project:

There was a final project worth 20% of the final grade.

Pick any area of computer vision that interests you and pursue some independent work in that area. Each project should have a significant technical component, software implementation, or large-scale study. Projects can focus on developing new techniques or tools in computer vision or applying existing tools to a new domain. If you don't have an idea you can train a classifier on birds and compete in the Kaggle competition posted on the Google Group.


Lectures were automatically recorded with the schools Pantopto system. Unfortunately, some were recorded at the wrong aspect ratio and the audio was not recorded in the image segmentation lecture.

This YouTube playlist has all of the lectures in sequential order.

Lecture 1: Introduction

Lecture 2: Human Vision, Color Spaces, Transforms

Lecture 3: Image Coordinates, Resizing

Lecture 4: Resizing, Filters, Convolutions

Lecture 5: Edges and Features

Lecture 6: Harris, Matching, RANSAC

Lecture 7: Matching, RANSAC, HOG, and SIFT

Lecture 8: Optical Flow

Lecture 9: 3D, Depth, and Stereo

Lecture 10: Machine Learning for Computer Vision

Lecture 11: More Machine Learning for Computer Vision

Lecture 12: Neural Networks

Lecture 13: Convolutional Neural Networks

Lecture 14: Network Architectures

Lecture 15: Semantic Segmentation

Lecture 16: Object Detection

Lecture 17: Guest Lecture from Ira Kemelmacher-Shlizerman

Lecture 18: Detection and Instance Segmentation

Lecture 19: Vision and Language

Lecture 20: Generative Adversarial Networks