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 lawler6@g.clemson.edu

Zoom open help session, Tuesday/Thursday 12:30-1:30 PM

Syllabus

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.

The Zoom link for live class.

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/19 Introduction to computer vision Zoom 2021 An example C program that reads a PPM format image. Coding challenge: compile and run this program.
Tuesday, 8/24 Histogram, convolution, smoothing Zoom 2021 Some C code that demonstrates creating a test 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, 8/26 Gradients, Laplacian, scale space Zoom 2021 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, 8/31 Hysteresis, scale (continued), smoothing vs edges Zoom 2021 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/2 Template matching, cross correlation Zoom 2021 References for convolution and cross-correlation; the former has a nice animated gif. Coding challenge. lab 2 - optical character recognition. The input image, template image, and ground truth.
Tuesday, 9/7 ROC evaluation Zoom 2021 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/9 matched filter, Wiener filter Zoom 2021 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/14 edge properties, skeletonization Zoom 2021 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/16 segmentation Zoom 2021 The Make Sense image annotation tool. The CVAT image annotation tool. The Berkley segmentation data sets. The Berkley DeepDrive data sets. The Mutiny face/head data sets. Examples of aerial image segmentation. Examples of medical image segmentation.
Tuesday, 9/21 segmentation (region growing, queue method) Zoom 2021 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/23 region properties Zoom 2021 Region properties coding challenge.
Tuesday, 9/28 GUI event driven programming Zoom 2021 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
Thursday, 9/30 GUI event driven programming (continued) Zoom 2021 Gui coding challenge #2.
Tuesday, 10/5 example vision system - car inspection (BMW project) Zoom 2021 Powerpoint presentation (contains videos, so is large)
Thursday, 10/7 system latency Zoom 2021 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.
Tuesday, 10/12 no class - Fall break
Thursday, 10/14 active contours Zoom 2021 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/19 active contour models Zoom 2021 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/21 texture Zoom 2021 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, 10/26 gyroscopes and accelerometers Zoom 2021 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, 10/28 motion tracking Zoom 2021 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 7 - motion tracking. The accelerometer and gyroscope data to use for the lab. lab 5 due
Tuesday, 11/2 wrist motion tracking for dietary intake monitoring Zoom 2021 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.
Thursday, 11/4 camera calibration Zoom 2021 An online reference for Tsai's camera calibration model. Examples of radial lens distortion. lab 6 - camera network calibration
Tuesday, 11/9 grid finding A journal paper describing the grid finding algorithm and methods to calibrate a camera network. Coding challenge. lab 7 due
Thursday, 11/11 stereo Zoom 2021 A technical report describing the algorithm that computes a floor-level occupancy map from a network of calibrated cameras.
Tuesday, 11/16 range cameras Zoom 2021 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, 11/18 range image segmentation Zoom 2021 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.
Tuesday, 11/23 teacher's choice (covered texture today, see previous date) lab 6 due
Thursday, 11/25 no class - Thanksgiving break
Tuesday, 11/30 deep learning Zoom 2021 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/2 teacher's choice lab 8 due


ECE 4310/6310 Page / Clemson / ahoover@clemson.edu