Introduction to Computer Vision
I developed and taught this course, which is cross listed as a senior undergraduate course and a graduate level course. It covers the topics of image formation, image processing, feature extraction and matching, alignment and pose estimation - leading to applications such as image stitching, augmented reality and single-instance object recognition. I use Python and OpenCV for demonstrations and assignments.
I emphasize hands-on work, and have the students work in pairs during class to complete lab assignments, usually one per week. Students also do programming assignments, and an independent final project of their own choosing.
Topics
Sensors and image formation
2D and 3D transformations
Image filtering
Binary and color image processing
Edge detection
Principal component analysis, with applications
Computational photography: image stitching, panoramas
Pose estimation from 3D to 2D point correspondences
Camera calibration
Classical feature detection and matching
Hough transforms and line finding
Data driven recognition algorithms
Introduction to convolutional neural networks
Example Assignments
This assignment was to replace a planar area in an image with a different texture. The solution involved (a) computing a homography transformation, (b) creating a mask for the replacement area, and (c) fusing the new texture with the original image.
Computational Photography
Original image. The goal was to replace the circled sign with another image texture.
The new image with the sign replaced by a different image texture.
Marker-based Augmented Reality
This assignment was to recognize the square markers in each image and compute the pose of the camera; then draw a 3D indicator object that pointed to a specific place (an on/off switch) on the object. It required computing and applying transformations between marker-to-camera, switch-to-marker, and indicator-to-camera.
Object Detection
This assignment was to mark several points on a training image of an object, and then find the object in some query images, and overlay the augmentations in the correct place on the query image. The method detected and matched ORB feature points, and computed an affine transform using RANSAC.
Training image.
Query image, successful detection.
Query image, successful detection.
Example Final Projects
Analog Gauge Reading
This project by Ben Good used computer vision to read analog gauges. See his slides for his class presentation.
Pool Ball Identification
This project by Jordan Moser used computer vision to recognize a pool table and identify the balls. See his slides for his class presentation.
Chess Move Detection
This project by Ke Xiao used computer vision to recognize a chess board and track the moves. See his slides for his class presentation.