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: John Lawler, email

The Zoom link for live class.

Zoom open help session, Wednesday 2:00-3:00 PM


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/25 Introduction to computer vision Zoom 2022 An example C program that reads a PPM format image. Coding challenge: compile and run this program.
Tuesday, 8/30 Histogram, convolution, smoothing Zoom 2022 Some C code that demonstrates loading an image, standard 2D convolution, and how to time a piece of your program. An example of convolution at a single pixel. Some examples of convolution masks and an animated example of convolution. Coding challenge. lab 1 - convolution and timing
Thursday, 9/1 Gradients, Laplacian, scale space Zoom 2022 An excerpt from Sonka's text on edge detection, including examples of "Mexican Hat" filters. How to normalize data for visualization in greyscale. Coding challenge.
Tuesday, 9/6 Hysteresis, scale (continued), smoothing vs edges Zoom 2022 The original paper on the Canny edge detector. A paper discussing edge preserving smoothing. An example of Canny vs Sobel edges. Another example. Coding challenge. A hysteresis coding challenge and its data. lab 1 due
Thursday, 9/8 Template matching, cross correlation Zoom 2022 References for convolution and cross-correlation; the former has a nice animated gif. A lecture from Virginia Tech describing when to use zero-mean filter cross correlation, normalized cross correlation, or MSE, and the computational tradeoffs. Coding challenge. lab 2 - optical character recognition. The input image, template image, and ground truth.
Tuesday, 9/13 ROC evaluation Zoom 2022 A reference for receiver operating characteristic, along with a list of all related formulas. Further reading on the confusion matrix. A covid coding challenge and its data.
Thursday, 9/15 matched filter, Wiener filter Zoom 2022 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 demonstrating a Wiener filter. An image warp coding challenge.
Tuesday, 9/20 edge properties, skeletonization Zoom 2022 Coding challenge: complete this code stub to implement corner detection using the smallest angle method. Data for the challenge. lab 3 - letters lab 2 due
Thursday, 9/22 segmentation Zoom 2022 The Make Sense image annotation tool. The CVAT image annotation tool. The Berkley segmentation data sets. The Berkley DeepDrive data sets. A list of 14 face recognition datasets. The Mutiny face/head data sets. Examples of aerial image segmentation. Examples of medical image segmentation.
Tuesday, 9/27 segmentation (region growing, queue method) Zoom 2022 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. Coding challenge.
Thursday, 9/29 class cancelled
Tuesday, 10/4 region properties Zoom 2022 Region properties coding challenge.
Thursday, 10/6 GUI event driven programming Zoom 2022 A tutorial on Win32 GUI programming. A zip file containing the C code for 2017 MS Visual Studio for the plus program. A zip file containing the C code for 2019 MS Visual Studio, including the solutions for the coding challenges. Gui coding challenge. lab 4 - region interaction lab 3 due
Tuesday, 10/11 GUI event driven programming (continued) Zoom 2022 Gui coding challenge #2.
Thursday, 10/13 example vision system - car inspection (BMW project) Zoom 2022 Powerpoint presentation (contains videos, so is large)
Tuesday, 10/18 system latency Zoom 2022 Powerpoint presentation from the VIMS 2011 workshop. A journal paper describing the method to measure system latency. A demo of the Oculus Rift. Videos discussing VR motion sickness.
Thursday, 10/20 active contours slides Zoom 2022 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. Active contours coding challenge using this code stub. lab 5 - active contours. The input image and the initial contour. lab 4 due
Tuesday, 10/25 active contour models Zoom 2022 A book on active contours, including dynamic models and tracking. Examples of lip motion tracking, face tracking, and hand tracking. Active contours coding challenge #2 using this code stub.
Thursday, 10/27 texture Zoom 2022 An excerpt from Jain's text on image texture analysis, including a description of grey level co-occurrence matrices. Some examples of texture segmentation. Texture analysis, by Michael Wirth. Texture challenge based on this code.
Tuesday, 11/1 gyroscopes and accelerometers Zoom 2022 A video demo of a gyroscope. An explanation of Precession which explains how a gyroscope works. See also Kelly Waller's thesis. Coding challenge using this code stub and this data file.
Thursday, 11/3 motion tracking Zoom 2022 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 - motion tracking. The accelerometer and gyroscope data to use for the lab. lab 5 due
Tuesday, 11/8 no class - Fall break
Thursday, 11/10 wrist motion tracking for dietary intake monitoring Zoom 2022 Presentation at a 2019 workshop. Surya Sharma's PhD defense slides on detecting eating episodes during all-day tracking. A journal paper describing the method for bite detection. A journal paper describing the method for eating detection during all-day monitoring.
Tuesday, 11/15 camera calibration Zoom 2022 An online reference for Tsai's camera calibration model. Examples of radial lens distortion.
Thursday, 11/17 grid finding A journal paper describing the grid finding algorithm and methods to calibrate a camera network. Coding challenge. lab 7 - camera network calibration lab 6 due
Tuesday, 11/22 stereo Zoom 2022 A technical report describing the algorithm that computes a floor-level occupancy map from a network of calibrated cameras.
Thursday, 11/24 no class - Thanksgiving break
Tuesday, 11/29 range cameras Zoom 2022 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. Coding challenge: modify this code stub; input is this image.
Thursday, 12/1 range image segmentation Zoom 2022 A journal paper on differential geometry in range images. Coding challenge: modify this code stub to calculate a surface normal from 3 coordinates. 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
Tuesday, 12/6 deep learning Zoom 2022 Deep learning tutorials. Demo and instructions for students to run in Google collab. Demo of multiple layers. Datasets and more datasets publicly available for deep learning research.
Thursday, 12/8 teacher's choice lab 8 due

ECE 4310/6310 Page / Clemson /