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.

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.

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.

Training image.

Query image, successful detection.

Query image, successful detection.

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.

gauges.jpg
 

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.

pooltable.jpg
 

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.