ECE 893-3 Machine Vision
Spring 2006

This course builds upon ECE847 by exposing students to fundamental concepts, issues, and algorithms in digital image processing and computer vision. Topics include segmentation, texture, detection, 3D reconstruction, calibration, shape, and energy minimization. The goal is to equip students with the skills and tools needed to manipulate images, along with an appreciation for the difficulty of the problems. Students will implement several standard algorithms, evaluate the strengths and weakness of various approaches, and explore a topic in more detail in a course project.

 Announcements

• 1/11/06: Welcome!

 Schedule

 Week Topic Assignment 1 Shape and active contours HW1:  due 1/20 2 Shape and active contours 3 Classification HW2:  due 2/3 4 Classification 5 Fourier transform HW3:  due 2/17 6 Texture 7 3D reconstruction HW4:  due 3/3 8 Level sets 9 Camera calibration HW5:  due 3/17 10 [break] 11 Model fitting 12 Tracking and filtering HW6:  due 4/7 13 Scale space and SIFT features 14 Function optimization HW7:  due 4/21 15 Function optimization

 Projects

In your project, you will investigate some area of image processing or computer vision in more detail. This will involve formulating a problem, reading the literature, proposing a solution, implementing the solution, evaluating the results, and communicating your findings.

Possible project topics:

• crowd tracking
• person recognition
• mobile robot navigation / person following
• mobile robot obstacle avoidance
• motion segmentation

 Assignments

Homeworks:

• HW#1 (due 1/25, 11:59pm)
• Implement the dynamic-programming snake algorithm, as described in Amini et al., 1990.  Include first-order and second-order derivative terms for the internal energy (i.e., alpha and beta), and allow each point to move to one of nine positions in its immediate vicinity.  For the external energy, use the negative of the magnitude of the gradient.
• For simplicity, restrict your implementation to work only with closed curves.
• Start your snake from an initial curve that is larger than the object and display its evolution over time.
• Run the "repeatable experiment" mentioned at the end of section VI of the Amini et al. paper.  Here is the image:  synthetic_square.pgm .
• Also run your code on fruitfly.pgm .  For this case, initialize your contour to a curve that surrounds the fly.
• Try your algorithm with different parameters for alpha and beta, number and location of points, etc.
• Write a report describing your approach, including the actual code, resulting images, and lessons learned.
• HW#2 (due 2/3, 11:59pm)
• Implement the basic level set algorithm to segment a simple image:  shapes.pgm.  The initial implicit surface should surround all the objects initially, and as the surface evolves, the zeroth level set should conform to the boundaries of the objects.
• Write a report describing your approach, including the resulting images and lessons learned.  Also include an overview of level set methods, the narrow band algorithm, and the fast marching method.  When is the latter applicable?

• Homework format: Email the grader (cc the instructor) with the subject line "HW?" (without quotes, where ? is the homework number).  The email should have the following files attached:
• username_hw2_exe (This is the precompiled executable, but with the extension removed so that it is not blocked by the email system).
• username_hw2_zip (This is a zipped version of the folder containing your entire workspace -- with extension removed -- with everything needed to compile your code.  Be sure that unzipping the file causes a folder to be created, with the individual files inside the folder.  Do not include DLLs, and do not include the Blepo directory.  Also be sure to delete the Debug and Release directories, as well as the .opt and .ncb files, since these files take up a lot of disk space and are automatically generated by VC++.  Your workspace should be at the same level as the inner-most Blepo directory, so that your main file has #include "../Blepo/blepo.h".)
• all the source files that you actually wrote for the homework, attached as individual text files (there will probably be only one or two of these, or at most three).
• an electronic copy of your report

• A.  Report is coherent, concise, clear, and neat, with correct grammar and punctuation.   Code works correctly the first time and achieves good results on both images.
• B.  Report adequately describes the work done, and code generally produces good results.  There are a small number of defects either in the implementation or the writeup, but the essential components are there.
• C.  Report or code are inadequate.  The report contains major errors or is illegible, the code does not produce meaningful results or does not run at all, or instructions are not followed.
• D or F.  Report or code not attempted, not turned in, or contain extremely serious deficiencies.

Extra credit:  Contributions to the Blepo computer vision library will earn up to 10 points extra credit on your final grade.  In general, you should expect 1 point for a major bug fix, and 2-7 points for a significant extension to an existing function or implementation of an algorithm or set of functions.  Contributions should be cleaning written, with code-level and user-level documentation, and a test harness.  To receive extra credit, you must meet the following deadlines:

• announce (non-binding) intention to contribute (3/17)
• get interface approval (4/7)
• turn in final code and documentation (4/28)