CS498
Computer Vision

Computer vision is the "inverse" of computer graphics. In Computer Graphics, you give the computer a model, and it draws the picture. If you enjoy Pixar or Disney's children's movies, you are benefiting from computer graphics. In Computer Vision, you give the computer a picture, and it computes the model. This might mean creating 3-D textured model from an image, or putting a box around a person's face. This can mean finding points that match in two images, or automatically aligning the images based on the point correspondences.

Course Description: This class provides a survey of modern computer vision topics and a computer vision design experience. After a brief introduction to the array representation of images and classical low-level algorithms, this course lays the foundation for modern computer vision on the foundational concepts of camera geometry, feature extraction, and machine learning. Students will implement a modern computer vision algorithm in a series of structured labs, after which they will implement a computer vision algorithms in a project experience. This class is intended for students with a strong programming background. (prereq: Junior standing in SE or CE programs and MA-383 and MA-231) 3-2-4

Basics

Instructor
Josiah Yoder
lıɐɯə
npǝ˙ǝosɯ@ɹəpoʎ
Office
L344 (Library, 3rd floor)
Office Hours
See below
 
Phone
ƖƐ96 ᔭᔭᔭ ϛ9ㄥ Google Voice; rings my office, cell-phone, and computer at the same time.
Textbook
(optional) Computer Vision: Algorithms and Applications, by Szeliski, Springer, 2010, ISSN: 1868-0941, ISBN: 978-1-84882-935-0

Outcomes

On successful completion of this course, the student will:

  • Interpret gray-scale and color images encoded as Matlab arrays
  • Implement simple computer vision algorithms by operating on raw pixel values
  • Compute projections and back-projections using the pinhole camera model
  • Stitch panoramas using homographies and RANSAC
  • Interpret machine learning algorithms as partitions of multi-dimensional space
  • Implement features and describe their role in vision
  • Understand the value of real-world and synthetic testing for computer vision algorithms
  • Design and implement a computer vision algorithm

(These are the official EECS/MSOE outcomes for this class.)

My Schedule (Office Hours)

Time Mon Tue Wed Thu Fri
8:00 Class prep Class prep Class prep Class prep Class prep
9:00 CS498
S359
CS498
S359
CS498
S359
10:00 SE2811
S359
SE2811
S359
SE2811
S107
SE2811
S359
11:00 SE1011
Planning
Office
Hour
Office
Hour
Office
Hour
12:00 Office
Hour
Lunch Lunch Office
Hour
Lunch
1:00 Dept Mtg Admin Class prep Grading Admin
2:00 Class prep Class prep Class prep
3:00 SE1021
S243
4:00 SE1021
S362
SE1021
S362
SE1021
S362

Class

While I don't mind if you have to skip a class, class attendence is essential so you can learn what material I expect you to know, what HW and quizzes there will be, etc.

In class, I expect you to focus completely on class material. Instead of checking your email or browsing facebook, participate in the class activities and take notes of what you are learning.

If it becomes necessary to consider dropping the class, I am happy to give you advice, but I want you to make the final decision (with the help of your academic advisor). So if you stop coming class, I will not drop you, but instead give you whatever grade you have at the end of the quarter, even if it is an F.

Labs

Labs will be in teams of two. A team of three requires my permission.

Because working in lab is one of your best opportunities to interact with me and other students, 5 to 15% of the participation grade may be assigned to "in-lab completion" — graded tasks completed in lab.

Labs will be turned in electronically. These are due at 11pm, with a 1 hour grace period. On uploaded PDFs, include your name, date, and the assignment name. Also, please only submit a lab once. Multiple submissions are hard for me to keep track of, especially if I've already started to grade the first one.

Untested code is buggy. I find that if your code doesn't compile or hardly runs, that there are many other errors in it. To get more than half credit for a lab, it should compile and run when I test it. If it does not compile & run, please fix the lab and submit it later, or drop a feature or two to get it running again (often the best option).

For every day that goes by beyond the original deadline, it gets much harder to catch up on a lab. As a result, after the deadline, you can receive partial credit for a lab, up to 10% off per day.

At the end of the quarter, all assignments must be turned in by 4:30pm on Friday so that we can wrap things up and I can turn the grades in on time.

Please start early and ask me for help if you get stuck.

Learning Assessment

I will use the following mix of metrics to measure your learning:

Lab projects 25%
Final project 15%
Quizzes 15%
Midterm Exam 20%
Final Exam 25%
Total 100%

I sometimes make mistakes in tallying points. If you become aware of an error in grading, please send me an email, and I will fix it and reply by email.

Discussing things in person is a great way to start to resolve an issue. Please send me the email, too to help me keep track of things.

Please maintain your own records of your grades and check them against whatever summaries I send to you, and let me know if I'm missing an assigment that you've turned in, etc.

Quizzes & Exams

Quizzes will be announced in class at least one day in advance. They will usually be on Lab day.

Because of the difficulty of preparing fair and accurate tests, you cannot retake a quiz or exam if you miss it or do worse than you hoped. I will drop your lowest quiz score, so one 0 should not be a problem. If you need to skip an exam, you should schedule a make-up exam before the missed exam. I don't always give make-up exams, even if students ask in advance.

Grade Scale

I use the official MSOE grading scale:

≥93% ≥89% ≥85% ≥81% ≥77% ≥74% ≥70% <70%
A AB B BC C CD D F

In final grading, I may award a grade higher than the grade scale if I feel it is more accurate than what the "raw numbers" produce.

Integrity

Your integrity is your most valuable academic possession, significantly more valuable than passing a class or getting a high GPA.

Integrity is essentially honesty -- ensuring that everything that it appears you have done or know is true.

It is possible to accidentally give the impression that work is yours, or to accidentally see something on someone else's exam. If something like this happens to you, please let me know. And generally speaking, please do your best to avoid this. Be on the watch! We are very good at fooling ourselves; we can even not "know" that we are cheating when we are!

On lab assignments, you should not be looking at a classmate's code. You can discuss strategies, but the implementations should be independent. Even discussing the details is not a good idea if it goes too far.

Because of the importance of maintaining academic integrity, I will report apparent academic dishonesty to the Vice President of Academic Affairs. If this occurs, you will get a copy of the report.

Fine Print

1In rare cases, I may need to reschedule an office hour. I will try to both announce this in class at least a day in advance and email the whole class.