Computer Vision (Spring 2004) T. Boult
UCCS Vision And Software Technology Laboratory

CS 584 Computer Vision

Spring 2003

Outline
Assignments
Projects/Software
Grading Policy
Lecture Notes
What's new

Instructor

Prof. Terry Boult
Phone : 719 262 3510 (office)     719 262 3900 (lab)   719 939 0573 (cell)
Email :
Office Hours : 1:30-3:00PM, MW (and by appointment)
Office Location : Monday Eng 294, Wed Modular 203 room 301 (lab)

Course Objective

The objective of this course is to convey the basic issues in computer vision and major approaches that address them. After completing the course, the students may expect to have the knowledge needed to read and understand the more advanced topics and current research literature, and the ability to solve basic industrial "vision" problems. The course will have plenty of hands-on experience building exercises. This course is NOT designed to be a "cookbook" course that gives just a survey of the methods needed in "practice" and will it not cover "commercial" systems in any detail. Vision is a very broad topic and a this single course is a beginning, not an end.

Textbooks

Required:
  1. Computer Vision : A Mordern Approach, D. Forsyth and J. Ponce, Prentice-Hall, 2001
  2. Papers, manuals and web documents as assigned.

Useful References

  1. Computer Vision, D. Ballard and C. Brown, Prentice-Hall, 1982. and its avaible online (for free)
  2. Computer and Robot Vision vol. 2, R. Haralick and L. Shapiro, Addison-Wesley, 1992
  3. Robot Vision, B.K.P. Horn, MIT Press, 1986
  4. Three-Dimensional Computer Vision, O. Faugeras, MIT Press, 1993
  5. A Guided Tour of Computer Vision, V. S. Nalwa, Addison Wesley, 1993
  6. Vision, David Marr, Freeman, 1982

Prerequisite

  1. Students must be able to program in C++.
    CS 145 or equivalent - Data Structures, good programming skills.
    CS306 (OO programing in C++). recommend
  2. Ability to convert vague problem descriptions and informatl specifications into computer algorithms. Recommended: CS330 Software Engineering
  3. Basic Mathematics - Good facility with calculus and analytical solid geometry is essential. If you have not used them for several years, you must be prepared to spend some time to review them (and the assignments may take more than the alloted time). Undergraduate knowledge of linear algebra, matrix theory and elementary probability theory will also be helpful.

HOMEWORK POLICY

The course will have numerous programming assignments. Assignments can be done on UCCS machines or on your own. Assignments can be done in either windows of linux. Web cameras will be availible (Depending on enrollment either for the semester or on a daily basis). Assignments and class handouts will be available here.

All "software related" assignments in this class is to be done on a two person team basis. Each team assignment will be given a total number of points. Based on the teams reports, each team will achieve a total number of points. These points will be shared, not necessarily equally, among team members.

You are bound by the rules of CU-Colorado Springs Academic Honor Code Except for sharing information between members of the same team, any collaboration, plagiarism or any other offense listed therein is consider cheating and will be referred to the disciplinary committee. Even though assignments are team assignment, sharing materials or even detailed discussions of solution techniques, between teams, is considering CHEATING. Make sure you protect your files, if someone copies from you, you are both responsible. If in assignments you "borrow" code from places other than our text or openCV, even small segments of code, you need to give proper acknowledgement in your code. I reserve the right to deny any student from being graded under the homework weighted option, independent of the handling of their case by the disciplinary committee.


GRADING POLICIES

There will be two grading schema, with your grade being the maximum of the two.
Grading system 1: (Homework weighted)
Midterm20%
Final 25%
Software assignments 30%
Theory Assignments 25%
Under this opinion who have an A- or better before the final are guaranteed that the final exam cannot lower their grade (even if they get a zero).
Grading system 2: (Exam&Class weighted)
Midterm 28%
Final 35%
Software assignments 20%
Theory Assignments 5%
Class participation (2 grades, 6%each) 12%

Each assignment/exam will be graded on a curve, and for each assignment letter grades will be assigned (F=0 thru A+=4.33). A curve per assignment will be used for all students (with zero scores not affecting the curve). In general each curves will have a mean between B- and B+, depending on my assessment of the overall performance. Programs will have point values which reflect their relative weight. Class participation grade will be based on my assessment of the students voluntary contribution, plus their response to questions I ask them during class, with the possible grades F, C,B,B+,A-,A. Interactions with the instructor outside of class, such as in office hours, is also considered "class" participation.

There will be a number of chances for extra credit which is added to your final letter grade with 300pts extra credit = 1 letter grade. Extra credit does not impact curving. I do not offer individuals extra credit, if I offer it, it is offered to the entire class.

Teams will be self organizing, with the limitation that any two students CANNOT be on more than 2 teams together. Teams will be limited to groups of 2 unless I approve otherwise. Teams should submit a group report as well as a shorter individual report for each team member. The Individual reports should include a breakdown (by %) of who did what and should get what fraction of the credit.


WORKLOAD and HOMEWORK

I expect students to devote an average of 7-10 hours per week on the work for this class. Working on theory assignments, the expetation is an average student will finish 75-80% of it in that time. For some student the time needed to totally finish is unbounded. For the software assignements the average student should, if they work in a team and the team works effectively, finish approximately 80% of the assignments. If, however, the team does not work effectively the time required could double or triple. Debugging badly understood/designed code could can make an assignment take unlimited amounts of time (like 100's of hours).

If an assignment is given multiple weeks, do NOT wait until the last few days to start. Don't count on putting in 20 hours in 3 days, because you might just need to ask me a few questions.


Course Outline

Following is a list of topics expected to be covered, in anticipated order, and with expected time to be spent on them. This list is intended to be only indicative, the actual topics, the order and the time may vary somewhat depending on various factors including student interests and preparation.

  1. Introduction (1 week)
    Background, requirements and issues, human vision.
    For Week of 1/26 read chapters 1,2. Download and read about opencv.

  2. Intro to OpenCV (1 class)
    Notes and manual

  3. Image formation (1 week)
    Radiometry and color, (Ch 4 and 6)

  4. Image segmentation (2 weeks)
    Edge and line finding, region segmentation

  5. Grouping (2 weeks)
    Background Subtraction, Morphology, Connected Components grouping

  6. Shape analysis and object recognition (1-2 weeks)
    Hough, fitting Shape representation and matching

  7. Activity Undrstanding (1 week)
    Tracking and inference of human activity from image sequences.

  8. Understanding geometry (1 weeks)
    Camera Calibration, pose estimation

  9. Multi-view Geometry (1 weeks)
    Shape from stereo and motion, motion tracking

  10. Applications survey (1 week)
    Industrial, navigation, mapping, multimedia





Assignments

  1. Personal assignment #1. Due Feb 2. Questions from the text.
    • 1.2
    • 1.5
    • 2.1
    • 2.4
    • 2.7
    Using a digital video camera, take your picture and setup a class web page with your picture (In a later assignment you will be doing some filtering of it from the intel openCV package, and eventually extending their face recognition system. These images will be the class "DB".) Include the URL in your "writeup".



  2. Software assignment #1 (part 1, 80 pts). Due Feb 9. Using OpenCV, process your "picture" (i.e. photo from last week) to produce:
    1. A blurred facial image, 3 levels of blurring.
    2. A detected/localize face on all 4 (orig + 3 blurred images)
    3. and edge image with 3 different levels of "edgeiness", applied to all 4 images (i.e. 12 different images).
    4. 3 different levels of "segmented" image
    5. Write a openCV program that loads an image, blurs it, adds random noise, detects the face and computes the errors of the detection/localization. Run it for a range of parameters and report the errors. To facilitate comparison you should use both your picture and my picture (from my web page). You should explain how you define and computed the error in detection/localization.
    Your team will turn in your results by posting them on a web-page and emailing me the URL.
    Note: people have asked if you can use Hawk. The answer is yes but I strongly suggest you try to get the Compiler-version going in your environment. The next assignment is video based and it is hard to do it in Hawk.



  3. Personal (Theory) assignment #2 ( 50 pts). From the Text. Due Feb 16.
    • 4.2
    • 4.6
    • 4.10
    • 6.2
    • 6.6



  4. Software assignment #2 (teams allowed). 200 points. Due Mar 1.
    Choose an application (e.g. hand-recognition, or part inspection) not already implemented in openCV (e.g. face detection is not allowed) and do the following:
    1. Do some image "normalization"/filtering to reduce noise improve dynamic range (may be before of after color work below).
    2. Develop a color-based algorithm to approximately locate the object
    3. then apply a "correlation-based" template matching to locate features for your object (normalized correlation is allowed)
    4. Test the system with at least 20 different "examples" of the input with varying illumination. If possible define and measure the "error" as a function of illumination variations.
    5. and display/save the results.
    6. generate a "report" on the results of your experiment
    7. 30pts extra credit for a near-real-time implementation (say < 150ms per frame) that does this on video streams.
    You are encourage to find a paper in the literature related to your algorithm and see if you can implement the key ideas of that paper. Include proper citations in your report.

    If you don't have an application in mind and you would like to help out on our research we can have teams working on the same application (detection and location of fingers/creases on the hand).



  5. Software assignment #3 (teams allowed). 200 points. Due Mar 10.
    • Implement Union-find based Connected Components. Output a list of regions with basic properties (area, Bbox, average gray value, gray variance) and a "colored" image showing the results. Test as basis for background-subtraction using 2 different "scenes" with 3 different thresholds.
    • Implement Quasi-connected Components. Output a list of regions with basic properties (area, Bbox, average gray value, gray variance) and a "colored" image showing the results. Test as basis for background-subtraction using 2 different "scenes" with 3 different thresholds.
    • Implement basic Component-Morphology allowing pruning of components based on properties. If practical allow pruning before the "relabeling" phase so only the pruned objects are left in the image.
    • Make one of CC or QCC fast/efficient and in the style of opencv.
    • Use both CC and QCC to detect the color targets you used in software assignment #2 and compare with the results of the segmentation you did there.
    Extra credit:
    • 5pts Extend your union-find to compute properties (like area, Bbox, average, variance) as it does the union steps instead of computing them afterward.
    • 5pts Compare QCC with morphology applied to basic thresholding and CC.
    • 10pts Extend QCC to have "temporal" overlap, using a previous parent image with labels which effects the label generation, i.e. keep the same label if the component in this time frame overlaps component in previous time frame.
    • 10pts Make a multi-channel (RGB) QCC with 3 low and 3 high thresholds.
    • 15pts Make your QCC use multiple scales and explain how it works across scales.
    As before prepare a web-page with the result (and email me the code).

  6. Personal (Theory) assignment #3 ( 80 pts). From the Text. Due April 12.
    • 15.2
    • 15.3
    • 15.4
    • 16.2
    • 16.3
    • 3.1
    • 3.3
    • 3.8
    • 15.7 Extra Credit (10 pts)



  7. Software assignment #4 (teams allowed). 2 parts, 100 points each. Part One due April 28, Part 2 due May 5. Part 1:
    • Using OpenCV implement both a Kalman Filter and Condensation tracking syntehtic data where you define the object, motion and noise models (algebraically) and simulate the data then the tracking and then compute formal error and performance measures.
    • Test simple motion (velocity+acceleration model) with noise data drawn from a two different "unimodal" (at most one guassian) distributions,
    • Test model with N>=3 targets both moving with vel+accel.
    As before prepare a web-page with the result (and email me the code).
    Your report (and code comments) should discuss the models used why/How Kalman/Condensation applies.
    Your report should discuss how you addressed the data association problem.
    Your grade depends on good design/implementation, use of the library and explination, Not in choosing a model for which Kalman/Condensenation tracking works well.

    Part 2. Extend your solution to Part 1 to include a "parametric" motion involving multiple constained "parts" (e.g. a simple human model or multiple targets contrained by connections).. Your report (and code comments) should discuss the models and how you implemented it. Discuss its physical plausabiity. Discuss why/how Kalman/Condensation applies, in particular how you developed your dynamic motion model matrixices.
    Your report should discuss how you addressed the data association problem.
    Extra Credit (50 pts) Due by May 10. Using OpenCV, choose either the Kalman Filter or Condensation tracking, and apply it to tracking on real video data. You also need to "segment" to find the data and have some way to

    As before prepare a web-page with the result (and email me the code). For examples of condensation in use see: http://www.stanford.edu/~jbrasket/cs223b/project/ http://www.robots.ox.ac.uk/~misard/condensation.html







Final Exam

May 17 4:30-7PM, EAS 105
Format/length same as midterm (half-open, half-closed)
Will Cover include material from midterm(Chapters 1,2,5,6,7,8) but will have more emphais on material from after midterm Ch 3,9,10,12,14,15,16,17,18,22), "Math" type questions will come only from 3,9,12,14,15,16,17.