ECE 661

Computer Vision


Avinash Kak

Fall 2022

Links to homework problems and their best solutions for previous offerings of this class:
    Fall 2006     Fall 2008     Fall 2010     Fall 2012     Fall 2014     Fall 2016     Fall 2018     Fall 2020


This class is substantially self-contained. All you need in order to enroll for this class is that you be a graduate student in engineering, computer science, quantitative psychology, mathematics, etc.

1.   Course Intro and Demos of Working Computer and Robot Vision
2.   World 2D: Representing and Manipulating Points, Lines And Conics
  Using Homogeneous Coordinates

   (scroll corrected: January 17, 2021)
3.   World 2D: Projective Transformations and Transformation Groups
   (scroll corrected: September 26, 2014)
4.   Characterization of Distortions Caused by Projective Imaging
  and the Principle of Point/Line Duality

   (scroll corrected: November 29, 2022)
5.   Estimating a Plane-to-Plane Homography with Angle-to-Angle and
  Point-to-Point Correspondences

   (scroll corrected: September 10, 2020)
6.   World 3D: Representing Points, Planes, and Lines
   (scroll revised: September 18, 2012)
7.   World 3D: Quadrics, Transformation Groups, and the Absolute Conic
   (scroll revised: September 24, 2020)
8.   Visual Perception and Edge Detection (Sobel, LoG, Canny)
   (scroll corrected: September 26, 2016)
9.   Extracting Interest Points and Their Descriptors (with Harris, SIFT,
  and SURF) in Image Pairs and Establishing Point-to-Point
  Correspondences Between the Images

   (scroll corrected: September 24, 2020)
10.   SuperPoint: A Deep-Learning Based Framework for Detecting
  Keypoints in Images

   (Updated: Sept 28, 2022)

   NOTE: You need some background in Deep Learning to fully appreciate this lecture.
                  Click here for more info.

11.   Estimating Homographies with Linear Least-Squares Minimization
   (scroll corrected: October 4, 2016)
12.   Robust Homography Estimation with the RANSAC Algorithm
   (scroll revised: October 4, 2012)
13.   Refining Homographies with Nonlinear Least-Squares Minimization
  (Gradient-Descent, Levenberg-Marquardt, and DogLeg)

   (scroll revised: October 17, 2014)

   In addition to the scroll that you can view by clicking on the title of this lecture, I will
    also be illustrating nonlinear least-squares with my  Python module  that you can access
    by clicking here.
14.   Binary Image Processing and Morphology

   Several concepts of binary image processing and image morphology are explained
   with the help of the demos from the Examples directory of my  Watershed module  for
   image segmentation. You can access it by clicking here.

   (Updated: October 5, 2020)
15.   Image Segmentation
   A part of this lecture is based on the  same Watershed algorithm  for image segmentation
    that is used in Lecture 14. You can access the module that illustrates this algorithm by
   clicking here.

   (Updated: October 5, 2020)
16.   Measuring Texture and Color --- Part 1
   (Updated: October 30, 2022)
17.   Measuring Texture and Color --- Part 2
   (Updated: October 30, 2022)
18.   Modeling the Camera
   (scroll corrected: October 22, 2020)
19.   Some Very Cool Properties of the Camera Projection Matrix
   (scroll corrected: November 29, 2022)
20.   Camera Imaging of Various Geometrical Forms (including the
  Absolute Conic)

   (scroll corrected: November 29, 2022)
21.   Camera Calibration --- Zhang's Algorithm
   (scroll corrected: November 29, 2022)
22.   Hough Transform for Extracting Low-Level Features in Images
   (scroll posted: November 2, 2020)

   In addition to the scroll available to you by clicking on the title of this lecture, the publication that you
   can view by clicking here shows a very successful example of vision-guided indoor mobile-robot
   navigation and self-localization by using a particularly efficient implementation of
   the Hough Transform
23.   Epipolar Geometry and the Fundamental Matrix
   (scroll corrected: November 29, 2022)
24.   Binocular Stereo: Image Rectification and Scene Reconstruction
   (scroll revised: November 29, 2022)

   The rectification part of the lecture also includes the famous  Loop and Zhang algorithm
   presented in my "Reader" that you can view by clicking here.

   (Updated: November 15, 2022)
25.   Dense Stereo Reconstructions with Semi-Global Matching
   (Updated: November 20, 2022)
26.   Dimensionality Reduction with PCA, LDA, and Autoencoders
   (Updated: November 29, 2022)

   This lecture are based on my  Optimal Subspaces tutorial  that you can access by
    clicking above.
27.   Going Beyond PCA and LDA: Data Clustering on Manifolds
   (Updated: December 2, 2020)
28.   Automatically Learning the Most Discriminating Features through Class
  Entropy Minimization

   (Updated: November 20, 2020)

   This lecture is based on my  Decision Trees tutorial  that you can access by clicking above.

   For  practical aspects of how to use decision trees, I recommend going through
   the documentation page for my Decision Tree module. Click here for that.
   (Updated: May 14, 2016)
29.   The AdaBoost Algorithm for Designing Boosted Classifiers
   (Updated: November 25, 2020)

   This lecture is based on my  AdaBoost tutorial  that you can access by clicking above.
30.   Iterative Closest Point (ICP) Algorithm for Registering a Photo with a
  Database Image of the Same Scene

  The ICP algorithm is explained with the help of my  Python module  of the same name. You can
   access the module by clicking here.

   (Updated: November 25, 2017)
31.   Image Segmentation using Graph Partitioning Algorithms
    Although I will teach graph-based partitioning in the context of image segmentation, these
   algorithms find a much wider application in computer vision. In general, they can be used for
   grouping together elementary data blobs into more meaningful data entities on the basis of
   pairwise similarity between the blobs. To get this point across, I will illustrate how the Shi-Malik
   graph-partitioning algorithm can be used for clustering data that resides on a low-dimensional
   manifold in a high-dimensional measurement space. This part of the lecture is based on the
   tutorial "Clustering Data That Resides on a Low-Dimensional Manifold in a High-
   Dimensional Measurement Space"
that you can download by clicking here.

WHY THE HANDWRITTEN "SCROLLS" FOR THESE LECTURE NOTES? Think of these scrolls as expository art. Because of the difficulty of correcting the scrolls, my goal was to create the best possible explanations in the least amount of space. It has often taken me several days of non-stop work to produce a single scroll. Every sentence required careful thought and multiple attempts at expressing the thought on a regular piece of paper before writing it in the scroll. Writing by hand on paper creates a mind-set and a mental discipline that are simply not there in a document written on a computer. From my experience in teaching with these scrolls, while most students love them (eventually during the course of a semester if not at the very outset), some do not. But, then, that's true of all art forms.

FEEDBACK WELCOME! If you have any comments or any suggestions for improving these notes, please send an email to  with the string  "Comments on ECE 661"   in the subject line to get past my spam filter. Any suggestions that I incorporate would be duly acknowledged.

A NOTE FOR INSTRUCTORS USING THESE "SCROLLS": About the "scrolls" that are handed out in class, they look best when printed in color on long sheets of light yellow paper of size 11 in x 17 in (28 cm x 44 cm). Obviously, this is not the size of paper you can use with a home printer. However, many office copying/printing machines these days can make copies of this size without difficulty.

Valid HTML 4.01 Transitional Valid CSS!