Early computers were text-based. Data was entered as text, programs were run from the command line, etc. Then computer systems began to use images -- but only for output. Computer graphics was invented, and the compute gaming industry was born. We began to have special-purpose graphics computers, and traditional computers were outfitted with window-based operating systems. Now we are entering the next phase: images and video streams as input. Every computer and cell-phone has a digital camera, but how do we take advantage of all this raw visual data? This course tries to begin answering this question.
In order to understand the material in this course you must be comfortable with linear algebra, and with computational geometry expressed through linear algebra. For example, you should be able to give a geometric interpretation of the dot (inner) product and cross product of two vectors, and for matrix multiplication. You should understand homogeneous coordinates and the mathematics of perspective projection. You should know the basic reflectance models (Lambertian, specular, and hybrid). You should know the basics about color spaces. This material is covered in CS410, which is a prerequisite for this course.
In order to do the programming assignments in this course, you must be able to write complex programs in either C++ or Python. (C, Java, MATLAB, and other programming languages are not acceptable.) You will be using the OpenCV library as well. Note that writing complex programs includes designing, testing and documenting your own programs from scratch.
The (required) textbook for this class is Computer Vision: Algorithms and Applications by Richard Szeliski. The good news is that the on-line version of this text is free (just click the link above). The bad news is that the book is organized very differently from the lectures in this class, so we will be jumping back and forth within the text. We will also skip large portions of the book, and supplement with topics not included in the text. Some supplementary material will come from CVonline, curated by Bob Fisher, and from Computer Vision by Linda Shapiro and George Stockman.
Here are the formally graded elements of the course and associated weighting:
Activity | Weight |
---|---|
Warm-up Programming Exercise | 10 % |
Programming Assignments (~3) | 60 % |
Midterm | 15 % |
Final Exam | 15 % |
Students in this class are expected to do more than attend; they are expected to participate. This includes having read and understood the reading assignments before class, answering questions in class when called upon, and most importantly asking questions in class. The midterm will cover material from the start of class to the date of the midterm exam, with an emphasis on material not covered by the programming assignments. The final exam will cover material from the midterm exam through the end of the course (i.e. it is not cumulative), again with an emphasis on material not covered by the programming assignments. There will be four programming assignments: a quick warm-up exercise due in week #2 (and worth half of what the other three are worth), and then three larger assignments.
Exams and programming projects will be done individually and grades assigned on an individual basis. Students not already familiar with the CSU Honor Pledge should review this clear and simple pledge and always adhere to it.
Midterm and Finals: Make-up exams are only given for extraordinary circumstances (e.g., illness, family emergency). Students must consult with the instructor as soon as possible, preferably before the start of the exam. Course examination dates are listed in the syllabus; be aware of them and plan accordingly.
Projects: Always check the assignment page for due dates. Late assignments will not be accepted except in extraordinary circumstances (e.g. illness, family emergency).
Midterm | Wednesday, March 9th |
Final Exam | May 10th, 4:10-6:10pm |
The midterm and the final exam will be held in the same classroom as regular lectures. While no change to the midterm dates is anticipated, the instructor reserves the right to change these dates with a weeks notice.
All students taking this course are expected to participate actively. For all students, includes asking and responding to questions. For distance students, the mechanism for asking and responding to questions is the bulletin board on the RamCT site. The TA will note how many questions you ask! For on-campus students, questions may be asked or answered in class, during office hours, or on the same bulletin board the distance students use.
All students are expected to conduct themselves professionally. We (the instructors and GTAs) assume you are familiar with the policies in the student information sheet for the department. Additionally, you are computing professionals, albeit perhaps just starting. You should be familiar with the code of conduct for the primary professional society, ACM. You can read the ACM Code of Conduct HERE.
We work to maintain an environment supportive of learning in the classroom and laboratory. Towards that end, we require that you be courteous to and respectful of your fellow participants (i.e., classmates, instructors, GTAs and any tutors). In particular: