ECE 661

Computer Vision


Avinash Kak

Next Offering: 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: September 16, 2016)
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.   Estimating Homographies with Linear Least-Squares Minimization
   (scroll corrected: October 4, 2016)
11.   Robust Homography Estimation with the RANSAC Algorithm
   (scroll revised: October 4, 2012)
12.   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.
13.   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.
14.   Image Segmentation
   A part of this lecture is based on the same Watershed algorithm for image segmentation
    that is used in Lecture 13. You can access the module that illustrates this algorithm by
   clicking here.
15.   Measuring Texture and Color
   This lecture is based on my "Measuring Texture and Color in Images"  tutorial  that you can
    access by clicking here.
16.   Modeling the Camera
   (scroll corrected: October 22, 2020)
17.   Some Very Cool Properties of the Camera Projection Matrix
   (scroll corrected: December 5, 2014)
18.   Camera Imaging of Various Geometrical Forms (including the
  Absolute Conic)

   (scroll posted: October 9, 2014)
19.   Camera Calibration --- Zhang's Algorithm
   (scroll corrected: December 5, 2014)
20.   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
21.   Epipolar Geometry and the Fundamental Matrix
   (scroll corrected: December 5, 2014)
22.   Binocular Stereo: Image Rectification and Scene Reconstruction
   (scroll revised: November 24, 2014)

   In addition to the scroll available to you by clicking on the title of this lecture, the document that you can
   view by clicking here presents a "Reader" for the well-known  Loop and Zhang algorithm
   for stereo rectification.
23.   PCA (Principal Components Analysis) and LDA (Linear Discriminant
  Analysis) for Image Recognition

   This and the next lecture are based on my  Optimal Subspaces tutorial  that you can access by
    clicking here.
24.   Face Recognition Studies with PCA, LDA, etc., and Nearest-Neighbor

   This and the previous lecture are based on my Optimal Subspaces tutorial that you can
    access by clicking here.
25.   Automatically Learning the Most Discriminating Features through Class
  Entropy Minimization

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

   For  practical aspects of how to use decision trees, I recommend going through the documentation
   page for my Decision Tree module.
26.   The AdaBoost Algorithm for Designing Boosted Classifiers

   This lecture is based on my  AdaBoost tutorial  that you can access by clicking here.
27.   Cascaded vs. Monolithic Object Detectors for Achieving Very Low
  False-Positive Rates

   THIS LECTURE HAS TWO PARTS: (1) The first part is based on the same AdaBoost tutorial that is
   used in the previous lecture. (2)
The second part is based on a paper by Tanmay Prakash and myself
   that shows how AdaBoost can be used in conjunction with Active Learning for designing object
   detectors for infrequently occurring objects in satellite images. See Section 5 of the paper
   that you can download by clicking here.
28.   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.
29.   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.
30.   Using Regression for Estimating 3D Pose Directly From a Photograph

   How to use regression to estimate the 3D pose directly from a photograph is explained with the
   help of my Partial Least Squares module that you can access by clicking here.
31.   Well-Engineered Algorithms versus Deep Learning in Computer Vision
  --- A Case Study

  I will present our recent work on   unconstrained face recognition   where we have
   compared our manifold-based learning algorithms with an implementation based on a
   well-known deep convolutional network and shown that, at least in the context of this study,
   our algorithms outperform deep learning. You can download our publication by clicking here.
   I have highlighted the material on pages 1, 16, 17 where we talk about the comparison with
   deep learning. You might also like to see Figure 7 on page 8 that gives you an idea
   of the shape of the manifolds on which the data resides.

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!