Computer Vision
Abstract
The seeds for this book were first planted in 2001 when Steve Seitz at the University ofWashington
invited me to co-teach a course called “Computer Vision for Computer Graphics”. At
that time, computer vision techniques were increasingly being used in computer graphics to
create image-based models of real-world objects, to create visual effects, and to merge realworld
imagery using computational photography techniques. Our decision to focus on the
applications of computer vision to fun problems such as image stitching and photo-based 3D
modeling from personal photos seemed to resonate well with our students.
Since that time, a similar syllabus and project-oriented course structure has been used to
teach general computer vision courses both at the University of Washington and at Stanford.
(The latter was a course I co-taught with David Fleet in 2003.) Similar curricula have been
adopted at a number of other universities and also incorporated into more specialized courses
on computational photography. (For ideas on how to use this book in your own course, please
see Table 1.1 in Section 1.4.)
This book also reflects my 20 years’ experience doing computer vision research in corporate
research labs, mostly at Digital Equipment Corporation’s Cambridge Research Lab and
at Microsoft Research. In pursuing my work, I have mostly focused on problems and solution
techniques (algorithms) that have practical real-world applications and that work well in
practice. Thus, this book has more emphasis on basic techniques that work under real-world
conditions and less on more esoteric mathematics that has intrinsic elegance but less practical
applicability.
This book is suitable for teaching a senior-level undergraduate course in computer vision
to students in both computer science and electrical engineering. I prefer students to have
either an image processing or a computer graphics course as a prerequisite so that they can
spend less time learning general background mathematics and more time studying computer
vision techniques. The book is also suitable for teaching graduate-level courses in computer
vision (by delving into the more demanding application and algorithmic areas) and as a general
reference to fundamental techniques and the recent research literature. To this end, I have
attempted wherever possible to at least cite the newest research in each sub-field, even if the
technical details are too complex to cover in the book itself.