ECE 661

Computer Vision


Avinash Kak

Next offering: Fall 2018

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


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 revised: September 4, 2012)
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 16, 2016)
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 18, 2012)
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: December 9, 2014)
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 download 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 revised: November 7, 2014)
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.   Extracting Features by Bin Counting in Parameter Space --- The Hough
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)
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.)
26.   The AdaBoost Algorithm for Combining Weak Classifiers and its use in
  in the Viola and Jones Face Detector

   (This lecture is based on my AdaBoost tutorial that you can access by clicking here.)
27.   Cascaded vs. Monolithic Face Detectors for Achieving Very Low
  False-Positive Rates
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.

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!