COMS 4731 - Computer Vision

Spring 2013

Instructor: Austin Reiter (

Office: CEPSR 611

Office Hours: Mon/Tue, 2:00-3:00pm

Lecture: Tue/Thu, 10:10-11:25AM

Location: 702 Hamilton Hall


Hongzhi Li - (Office Hours: Fri, 12-2pm @ CEPSR 707)

Jiazhen Zhou (“Joe”) - (Office Hours: Mon/Wed, 4:30-5:30pm @ CEPSR 6LW1)

I-Hung Wang - (Office Hours: Thu, 3:00-5:00pm @ CEPSR 6LW1)

Required Textbook:

“Computer Vision: Algorithms and Applications” by Richard Szeliski (Springer)

(available at the University bookstore or online at Amazon)

** referred to as RS in the schedule below

Course Information:

This course provides an introduction to Computer Vision and is intended for advanced undergraduate and graduate students (MS and/or Ph.D.).  We require a mathematical background (e.g., calculus, linear algebra, some knowledge of probability and statistics) and the ability to program in MATLAB.  This will be a very hands-on course where we will both learn AND program the concepts we are learning.  Computer Vision is as much about application as it is about theory. If you are unsure about your background, please email me or come see me.

We cover the following topics (listed in more detail below): image formation, image sensing, binary processing, image processing, segmentation, feature detection/matching/tracking, optical flow, image stitching, face detection, computational photography, appearance tracking, camera calibration, pose estimation, stereo vision, structure-from-motion, structured light, 3D reconstruction (shape-from-X, depth-from-defocus), photometric stereo, appearance matching, and recognition.


MATLAB is an excellent programming tool for learning and executing computer vision algorithms.  However, it comes along with a fantastic Image Processing toolbox.  As this is NOT a course in how to use the MATLAB Image Processing Toolbox, none of these “magic” functions are allowed unless explicitly stated by me to do so.  For example, when a homework question asks you to write an edge detector, you may NOT hand-in this as your solution:

edge_image = edge(gray_image, ‘Sobel’);

Also I am very familiar with MATLAB’s code (as well as most of the popular available vision toolkits online), so I will likely figure out if you are simply recycling someone else’s code.  Besides, why are you here if not to learn this stuff yourself!  So, if this isn’t already clear enough, all MATLAB code must be written by you, originating from you, and using only your own written code!  As I said earlier, if you are unsure of an allowable MATLAB function, please ask me or the TAs for clarification.  All we are using MATLAB for is the ability to read images (imread), write images (imwrite), and display images (imshow, imagesc).  As we get to more advanced topics, I may allow certain “magic” functions, but unless you can show me where I said this was allowed, please don’t assume any other functions are allowed!


4 Homeworks - combination of written and programming assignments (35%)

Final Exam (25%)

FInal Project - includes a proposal, in-class presentation, and write-up (40%)

(click here for more information on the final project)