893-3 Machine Vision
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
||Shape and active contours||
HW1: due 1/20|
||Shape and active contours||
HW2: due 2/3|
HW3: due 2/17|
HW4: due 3/3|
HW5: due 3/17|
||Tracking and filtering||
HW6: due 4/7|
||Scale space and SIFT features||
HW7: due 4/21|
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
Possible project topics:
- crowd tracking
- person recognition
- mobile robot navigation / person following
- mobile robot obstacle avoidance
- motion segmentation
- 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
- 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:
- 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:
In addition, turn in a hard copy of your report to the grader.
- 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
- 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
- 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)
Instructor: Stan Birchfield, 207-A Riggs Hall, 656-5912, email: stb at clemson
Grader: Prashant Oswal, email: prashao at clemson (please
use this account, not his regular account)
Lectures: 1:25 - 2:15, 301 Riggs Hall