ECE 4310/6310 Introduction to Computer Vision

The purpose of a computer vision system is to take data (usually in the form of one or more images) and produce information. For example, a computer vision system might inspect bottles for proper volumes, identify abnormal tissue in a medical image, recognize a fingerprint to allow entry to a building, or tell an automated door when it is safe to close. This course teaches the mainstream theories of computer vision used to build such systems. Several examples (such as optical character recognition) are implemented in assignments. It is assumed the student has a solid mathematical background and is proficient in C programming.

Instructor: Adam Hoover

Grader: Basil Lin, email


Semester project for ECE 6310 students.

Some information on the software tools you will need for this course.

Many of the images used as examples during lectures, and for assignments. Some helpful pieces of C code from lectures and for assignments.

An on-line free repository of textbooks, Wiki pages, data sets and other resources related to computer vision.

Here is the tentative outline for the semester. Dates and topics are subject to change.

Day Lecture topics (instructor notes) Extra references Lab assigned Lab due
Thursday, 8/22 Introduction to computer vision An example C program that reads a PPM format image.
Tuesday, 8/27 Histogram, convolution, smoothing Some C code that demonstrates creating a test image, standard 2D convolution, and how to time a piece of your program. Some examples of convolution masks and an animated example of convolution. lab 1 - convolution and timing
Thursday, 8/29 Gradients, Laplacian, scale space An excerpt from Sonka's text on edge detection, including examples of "Mexican Hat" filters.
Tuesday, 9/3 Hysteresis, scale (continued), smoothing vs edges The original paper on the Canny edge detector. A paper discussing edge preserving smoothing.
Thursday, 9/5 Template matching, cross correlation References for convolution and cross-correlation; the former has a nice animated gif. lab 2 - optical character recognition. The input image, template image, and ground truth. lab 1 due
Tuesday, 9/10 ROC evaluation A reference for receiver operating characteristic, along with a list of all related formulas. Further reading on the confusion matrix.
Thursday, 9/12 matched filter, Wiener filter A paper on blood vessel detection in retinal images using a filter bank and matched spatial filtering. A paper on deformable templates for recognizing handwritten digits. An excerpt from Castleman's textbook demosntrating a Wiener filter.
Tuesday, 9/17 edge properties, skeletonization lab 3 - letters lab 2 due
Thursday, 9/19 segmentation The Berkley segmentation data sets. The Berkley DeepDrive data sets.
Tuesday, 9/24 segmentation (region growing, queue method) Some C code that demonstrates flood filling using recursion. C code that does the same thing but uses a queue instead, running faster and growing boundaries evenly. C code that demonstrates using region growing with a predicate on region variance.
Thursday, 9/26 region properties
Tuesday, 10/1 GUI event driven programming A tutorial on Win32 GUI programming. A zip file containing the C code and MS Visual Studio project files for the plus program. lab 4 - region interaction lab 3 due
Thursday, 10/3 GUI event driven programming (continued)
Tuesday, 10/8 example vision system - car inspection (BMW project) Powerpoint presentation (contains videos, so is large)
Thursday, 10/10 system latency Powerpoint presentation from the VIMS 2011 workshop. A journal paper describing the method to measure system latency.
Tuesday, 10/15 no class - Fall break
Thursday, 10/17 active contours A youtube video demonstrating an active contour on an image of dogs. An online java demo of an elliptical active contour. A video demonstrating a student project that implements several active contour ideas. lab 5 - active contours. The input image and the initial contour. lab 4 due
Tuesday, 10/22 active contour models A book on active contours, including dynamic models and tracking. Examples of lip motion tracking, face tracking, and hand tracking.
Thursday, 10/24 texture An excerpt from Jain's text on image texture analysis, including a description of grey level co-occurrence matrices.
Tuesday, 10/29 camera calibration An online reference for Tsai's camera calibration model. Examples of radial lens distortion. lab 6 - camera network calibration
Thursday, 10/31 grid finding A journal paper describing the grid finding algorithm and methods to calibrate a camera network. lab 5 due
Tuesday, 11/5 stereo A technical report describing the algorithm that computes a floor-level occupancy map from a network of calibrated cameras.
Thursday, 11/7 gyroscopes and accelerometers A video demo of a gyroscope. An explanation of the Coriolis effect which provides the mathematical relationship between rotating axes. An explanation of Precession which explains how a gyroscope works. See also Kelly Waller's thesis. lab 7 - motion tracking. The accelerometer and gyroscope data to use for the lab.
Tuesday, 11/12 motion tracking Magnetomer, inertial measurement unit (IMU), attitude and heading reference system (AHRS), zero velocity updates (ZUPT). A talk explaining IMU sensors and sensor fusion, by InvenSense. lab 6 due
Thursday, 11/14 wrist motion tracking for dietary intake monitoring Presentation at the Wireless Health 2013 conference. A journal paper describing the method for bite detection. A journal paper describing the method for eating detection during all-day monitoring.
Tuesday, 11/19 range cameras An introduction to range cameras, and a dissertation chapter providing details on how they work. Some more examples of structured light images. A Wiki description of time-of-flight cameras. Some youtube videos describing how the Kinect works.
Thursday, 11/21 object modeling A dissertation chapter on superquadrics and hyperquadrics, by Senthil Kumar.
Tuesday, 11/26 range image segmentation A journal paper on differential geometry in range images. lab 8 - surface segmentation. The range image and reflectance image to use for the lab. Some C code to convert the range image to 3D coordinates. lab 7 due
Thursday, 11/28 no class - Thanksgiving break
Tuesday, 12/3 object recognition
Thursday, 12/5 teacher's choice lab 8 due

ECE 4310/6310 Page / Clemson /