Lecture
Tues/Thurs 9:30-10:45am, WEBB 1100
Discussion sessions:
Mon 3:00-3:50pm, Phelp 1425
Fri 10:00-10:50am, Phelp 1425
Instructor
B. S. Manjunath, manj at ece. Rm 3157, Engineering I. Tel: 805.893.7112
Office hours: TTH 1045-1145am, or by appointment (or drop by and see if I'm available)Course web site: www.ece.ucsb.edu/~manj/ece181b or www.ece.ucsb.edu/~manj/cs181b
You must check the course web site regularly for assigned reading and homework, announcements, and any other relevant information. Normally anything important will be mentioned in class (e.g., "The midterm is next week"), but in case you fell asleep at that moment, the web site may save you. Lecture notes will be posted to the web site after each lecture, but keep in mind these are only notes - if you only read the lecture notes, you will miss important information discussed in class.
The only formal prerequisite is upper-division standing in CS or ECE. This implies that you have studied mathematics (calculus, linear algebra, differential equations), probability and statistics (including Bayes rule), and have experience in a high-level programming language such as Java or C/C++ or, at least, MATLAB. You will find this course difficult if you are not sufficiently prepared in these areas. Tutorials will be made available to help you review.
What is this course about?
An introduction to the field of Computer Vision (also known as Machine Vision or Image Understanding or Computational Vision). The aim of computer vision is to make computers "see" by processing images and/or video. By knowing such things as how images are formed, information about the sensors (cameras), and information about the physical world, it is possible (at least in some cases) to infer information about the world from an image or set of images. For example, one may wish to know the color of an apple, the width of a printed circuit trace, the size of an obstacle in front of a robot on Mars, the identity of a person's face in a surveillance system, the motion of an object, the vegetation type of the ground below, or the location of tumor in an MRI scan - automatically, from images. Computer vision studies how such tasks can be done, and how they can be done robustly and efficiently. Originally seen as a sub-area of artificial intelligence, computer vision has been an active area of research for almost 40 years.
People come to computer vision from of a variety of motivations. Some want to better understand biological vision - how people and animals see, how the eye and the brain work together to enable sight. Others want to build robots that can perceive and react to the environment around them. Others are interested in multimedia databases, image compression, human-computer interaction, security and surveillance, medical imaging, and other areas. Whatever the motivation or application, there are several topics that are fundamental to work in computer vision and are important to almost any application.
The tentative topics for S2004 are:
- Image formation - geometry, radiometry, camera calibration
- Stereo and multiple views
- Shape from shading
- Edge detection and filtering
- Optical Flow and Motion processing
Application to image registration, content based retrieval and image databases, and face recognition.
What you will learn
By the end of the course, you will understand what computer vision is all about - why it is a difficult and interesting problem (actually, set of problems), what can it be used for, and what are the main tools and techniques. You will gain experience both conceptually and practically, by homework assignments that involve solving problems and programming vision routines. You will see many examples of working vision systems and research projects pushing the state of the art.
This is not primarily a programming course - that is, the main goal is to learn the concepts, not to learn a programming language or particular programming techniques. However, coding examples of the concepts is the best way to demonstrate (and facilitate) your knowledge of them. We will use Matlab for programming assignments. No prior experience with Matlab is assumed, but you must be willing to learn it quickly.
Why study computer vision?
Computer vision is not as ubiquitous as, say, networking or signal processing or operating systems. There are not thousands of jobs on Monster.com advertising for people with computer vision expertise. Still, there are several good reasons to study computer vision. Besides just being interesting in and of itself (how does the brain do this thing?), computer vision has many practical applications in computer graphics, medical imaging, multimedia databases, robotics, etc. It combines applied mathematics with geometry, signal processing, algorithms, learning, and software engineering, and thus can provide valuable application experience in these areas. It is very relevant for future graduate work in AI, robotics, signal processing, multimedia, psychology, neuroscience, learning, etc. - and of course, computer vision.
Class attendance is highly recommended: you are responsible for everything that goes on in class. "I wasn't there" and "I didn't know" are not valid excuses for missing something important! Prepare in advance for class by reading and studying any assigned materials and by making sure you understand the previous lecture.
Weekly one-hour discussion sections, led by the TAs, will focus on (1) presenting supplementary material (such as practical examples) to the lectures and (2) answering questions (about lecture topics, homework problems, programming issues, etc.). It is expected that students attend these sessions - you are responsible for what goes on during the discussion session. Students are encouraged to give the TAs (and, if appropriate, the instructor) feedback regarding topics or issues they would like to have discussed during this time.
There is no required text for this course. The following book was used as a text during Spring 2003 and you are encouraged to refer to it.
David Forsyth and Jean Ponce, Computer Vision: A Modern Approach, Prentice Hall, 2003. (Otherwise known as CVAMA.) A web site for the text can be found at http://www.cs.berkeley.edu/~daf/book.html.
You may use the CSIL (Computer Science Instructional Lab, in Engr. I, 1138) computers, or the ECI lab, any other machine you prefer.
Why Matlab?
Matlab is a nice environment for processing images. It can be very slow compared with crunching images in C, but it is a nice development environment for prototyping. It has built-in functions for reading, writing, and displaying images, and the Image Processing Toolkit has lots of useful functionality.
Grades will be based on homework assignments, a midterm exam, and a final exam:
25% Homework assignments including programming assignments.
15% Midterm exam
20% Face recognition project. You can work individually or in groups not exceeding 4. A final report is needed.
40% Final exam (Tuesday, June 8th, 8-11am) - Yes, 8am!Homework will include both programming and non-programming assignments. For details on what to turn in, see the Assignments page.
All assignments must be submitted by 11:59pm on the due date. Late assignments will be penalized. If you didn't turn it in by 1159 pm on Day 1, you can turn it in by 1159pm on Day 2 for a maximum grade of 50%, and a maximum grade of 25% if you turn it in within 48 hours. After 48 hours, you will not receive any credit.
You may discuss homework assignments with classmates on a general level. However, you may not share answers/code or collaborate on solutions unless otherwise directed to do so. All work turned in (with the exception of the face recognition project) must be completely your own, including programming assignments. (See the Policy on Academic Integrity, below.)
There will be no makeup exams.
Since this course is cross-listed with CS and ECE, there will inevitably be areas where one or the other lends a certain advantage or disadvantage. The goal is for these to even out, and for CS and ECE students to get to know each other and help each other with general concepts (e.g., math, programming) when necessary.
The university, the department, and this instructor all take the issue of academic integrity very seriously. A university requires an atmosphere of mutual trust and respect. While collaboration is an integral part of many scholarly activities, it is not always appropriate in a course, and it is never appropriate unless due credit is given to all participants in the collaboration. This goes for both ideas and programming or other work.
Here are some examples:
Allowed: Discussion of lecture and textbook materials
- Allowed: Discussion of how to approach assignments, what techniques to consider, what textbook or lecture material is relevant
- Not allowed: Sharing ideas in the form of code, pseudocode, or solutions
- Not allowed: Turning in someone else's work as your own, even with that person's permission.
Not allowed: Allowing someone else to turn in your work as his or her own.
Not allowed: Turning in work without proper acknowledgment of the sources of the content (including ideas) contained within the work.
For some views on academic integrity at UCSB see:
- http://www.hep.ucsb.edu/people/hnn/conduct/acad_cond.html
- http://www.hep.ucsb.edu/people/hnn/conduct/cam_reg_stud_a.html
- http://www.kiosk.ucsb.edu/AcademicServices/academicdishonesty.asp
Summary: Academic integrity is absolutely required - dishonesty (cheating, plagiarism, etc.) benefits no one and will not be tolerated! If you are not sure whether or not something is appropriate, just ask the instructor or the TAs.
Please feel welcome to give feedback to the instructor and/or TAs regarding the course material, pace, assignments... whatever you wish. Don't just stew about it - let us know!