I am really excited to be able to write a foreword to Frank Nielsen's new book Visual Computing: Geometry, Graphics, and Vision. The fusion of computer graphics, computer vision, computational geometry, and discrete algorithms that this book presents is truly unique and, in afterthought, so obvious. Geometry, graphics, and vision all deal in some form with the shape of objects, their motions, as well as the transport of light and its interaction with objects --- yet historically they have been covered by separate courses in curricula, grown around a distinct set of conferences, and cultivated separate communities. This book clearly shows how much they have in common and the kinds of synergies that occur when a common core of material is presented in way that both serves and is enriched by all three disciplines.
Take coordinates and coordinate transforms as a simple example. Everyone needs the common math: homogeneous coordinates, matrix representations for transformations, quaternion representations for 3D rotations, parametrizations for other flats such as lines in 3-space, and so on. In a graphics course, transform hierarchies in modeling, or clipping and projection transforms for viewing may get more attention. In computer vision, epipolar geometry and the relations among multiple projections may get special treatment. In computational geometry, Plucker coordinates for lines in 3D may be studied to prepare for problems in stabbing and visibility. Yet every one of these topics can be very useful in each of the three disciplines: image-based rendering needs the math of multiview geometry, indexing lightfields requires the geometry of lines in space, and clipping is an essential geometric computation problem. The Visual Computing book manages to cover all three points of view in a coherent yet concise way, to the benefit of all sides.
I have taught an algorithms course for over a decade now and topics like dictionaries and priority queues are its bread-and-butter. It was truly refreshing to see these same topics introduced early in this book, but with novel effective examples all motivated by visual computing. The same happens later on with randomization, a topic that has been seriously studied across all these communities, but with different emphases. This text truly establishes bridges where they will make the most impact: early on in a student's education. I can see this book being used for a separate integrated course of its own, or as a supplement to existing courses and other texts covering algorithms, computational geometry, computer graphics, or computer vision --- thus providing a fruitful common ground between what are currently separate offerings.
The book can also benefit graduate students and researchers across all parts of computer science that deal with modeling or interacting with the physical world. The material is methodically organized, the exposition is rigorous yet well-motivated with plenty of instructive examples. Major techniques and algorithms are given in actual C++ code, and these programs and additional materials are available in a companion web site. Additional references to the literature are given at the end of each chapter.
Leonidas J. Guibas Professor of Geometric Computing Computer Science Department Stanford University May 2005