Computer Vision and Image Processing: A Practical Approach Using CVIPtools (BK /CD-ROM), First Edition

Scott E Umbaugh, Southern Illinois University at Edwardsville

Published by Prentice Hall Professional Technical Reference


True computer imaging for engineers!

Digital signal processing has long been the domain of electrical engineers, while the manipulation of image data has been handled by computer scientists. The convergence of these two specialties in the field of Computer Vision and Image Processing (CVIP) is the subject of this pragmatic book, written from an applications perspective and accompanied by its own educational and development software environment, CVIPtools. Illustrated with hundreds of examples, Computer Vision and Image Processing brings together the theory of computer imaging with the tools needed for practical research and development.

The first part of Computer Vision and Image Processing presents a system model for each of the major application areas of CVIP, relating each specific algorithm to the overall process of cess of applications development. The areas covered are:

Computer Vision and Image Processing's second half focuses on the use of the CVIPtools environment, the software developed especially by the author and included on the accompanying CD-ROM. These advanced chapters discuss:

CVIPtools is a GUI-based application, which includes an extended Tcl shell, that is ANSI-C compatible and runs on most flavors of UNIX and Windows NT/95.

To get the most out of Computer Vision and Image Processing, a basic background in mathematics and computers is necessary. Knowledge of the C programming language will enhance the usefulness of the algorithms used in programming, and an understanding of signal and system theory is helpful in mastering transforms and compression.

Engineers, programmers, graphics specialists, multimedia developers, and medical imaging professionals will all appreciate Computer Vision and Image Processing's solid introduction for anyone who uses computer imaging.


TABLE OF CONTENTS

PART I. COMPUTER VISION AND IMAGE PROCESSING FUNDAMENTALS.

Chapter 1. Introduction to Computer Vision and Image Processing.

Chapter 2. Image Analysis.

Chapter 3. Image Restoration.

Chapter 4. Image Enhancement.

Chapter 5. Image Compression.

PART II. CVIPtools.

Chapter 6. Using CVIPtools.

Chapter 7. CVIPtools Applications.

Chapter 8. Programming with CVIPtools.

Chapter 9. CVIPtools Library Functions.

PART III. APPENDICES.

A. The CVIPtools CD-ROM.

B. Setting Up and Updating Your CVIPtools Environment. Getting CVIPtools software updates. To get via the WWW.

C. CVIPtools Functions. Toolkit Libraries. Toolbox Libraries.

D. CVIPtcl Command List and Corresponding CVIPtools Functions.

E. CVIPtcl Function Usage Notes.

F. CVIP Resources.

Index.


PREFACE

Computer vision deals with the processing of image data for use by a computer. The automatic classification of blood cells in medical images and the robotic control of an unmanned lunar rover are examples of computer vision applications. Image processing involves the manipulation of image data for viewing by people. Examples include special effects imaging for motion pictures and the restoration of satellite images distorted by a fautlty lens. Computer imaging blends the techniques of both computer vision and image processing; Consequently, it is a rapidly growing and exciting field to be involved in today. This book presents a unique approach to the practice of computer imaging and will be of interest both to those who want to learn more about the subject and to those who just want to use computer imaging techniques.

Why Write This Book?

This book takes an applications-oriented approach to computer vision and image processing (CVIP) and brings together these two separate but related fields with an engineering perspective. Although a number of good theory-based textbooks are available, they are primarily of two types: those that were developed from an electrical engineering, specifically a digital signal processing perspective (image processing) and those that have evolved from a from a computer science perspective (computer vision). In recent years a few books have been written that combined these fields, but they, too, have been primarily theoretical in nature. I felt that there was a need for an application-oriented book that would bring these two perspectives together, and this book fills that gap. The book's development was initiated by my research experience while working toward a PhD in electrical engineering. I encountered two problems then. First, the research and development information available in the professional journals was often incomplete, too specific, or too esoteric. Second, I found that I spent a major portion of my time developing software, severely limiting time available for research and development. The first problem I hope to solve by writing this book - I have organized and clearly presented paradigms and methods for the development of CVIP applications. I attacked the second problem by developing a set of reusable software tools for CVIP applications and research and, in the process, developed a valuable environment for learning about computer imaging.

Who Will Use This Book?

Computer Vision and Image Processing: A Practical Approach Using CVIPtools is intended for use by working professionals in research and development, the commercial sectors, and the academic community. This includes practicing engineers, consultants, and programmers, as well as graphics artists, medical imaging professionals, and multimedia specialists, among others. The book can be used for self study and is of interest to anyone involved with developing computer imaging applications, whether they are engineers, geographers, biologists, oceanographers, or astronomers. At the university it can be used in any computer imaging applications-oriented course, typically in senior-level or graduate courses, or as a laboratory text in a standard computer vision and/or image processing course. It is essentially conceptual in nature, with only as much theory as is necessary to understand the use of the algorithms. The prerequisites for the book are an interest in the field, a basic background in computers, and a basic math background (algebra/trigonometry). Knowledge of the C programming language will be necessary for those intending to develop algorithms at the pro gramming level. Some background in signal and system theory is required for those intending to gain a deep understanding of the sections on transforms and compression. However, the book is written so that those individuals who do not have this background can learn to use the tools and achieve a conceptual understanding of the material.

Approach

Throughout the book I have opted to use what I call a just-in-time approach to learning. Instead of presenting techniques or mathematical tools when they fit into a nice, neat theoretical framework, topics are presented as they become necessary for practical applications. For example, the mathematical process of convolution is introduced when it is needed for an image zoom algorithm, and morphological operations are introduced when morphological filtering operations are needed after image segmentation. This approach provides you with the motivation to learn and use the tools and topics because you will see an immediate need for them. It also makes the book more useful to working professionals who may not work through the book sequentially but will refer to a specific section as the need arises.

Organization of the Book

The book is divided into two major parts: I. Computer Vision and Image Processing Fundamentals, and II. CVIPtools. The first part of the book contains all the basic concepts, definitions, models, and algorithms necessary to understand computer imaging. Each chapter includes numerous references and examples for the material presented. The material is presented in a conceptual and application-oriented manner, so that you will immediately understand how each topic fits into the overall framework of CVIP applications development.

Chapter 1 provides an overview of the computer imaging field as well as a basic background in computer imaging systems, human visual perception, and image representation.

Chapters 2-5 correspond to the major application areas of CVIP: image analysis, image restoration, image enhancement, and image compression. A system model is presented in the introduction to each of these chapters, which is used to help you understand how each specific algorithm relates to the overall process under discussion. The book follows a logical approach meant to model the processes an experienced CVIP applications developer follows. The second part of the book, CVIPtools, is all about the software.

Chapter 6 describes how to use the software, with examples, and Chapter 7 describes applications that have been developed with CVIPtools. The inclusion of applications that have been developed using the software provides insight into the applications development process.

Chapter 8 describes the software development environment provided with CVIPtools and includes programming and tutorial exercises. Including these exercises in the book should encourage you to become actively involved in the learning process and will provide some immediate practical experience.

Chapter 9 contains brief library descriptions and function prototypes to allow software developers to use all the CVIPtools functions, and thus develop their own applications. More extensive documentation on the functions, including examples, descriptions, and complete UNIX man (manual) pages are on the CD-ROM in standard UNIX format as well as HTML format.

The CVIPtools Software Development Environment

The software development environment includes an extensive set of C libraries, a skeleton program for using the libraries called CVIPlab, a Tcl shell called CVIPtcl, and a GUI-based program for the exploration of computer imaging called CVIPtools. The CVIPlab program and all the libraries are platform independent and all are ANSI-C compatible. The Tcl shell contains all the high-level CVIPtools functions, and Tcl scripts can be written for rapid prototyping. Initially developed for UNIX platforms, CVIPtools has recently been ported to Windows NT/95. The only difference between the Windows and UNIX versions is that the CVIPtools RAM-based image viewer requires X-windows and is thus UNIX specific. The CVIPtools software, the libraries, the CVIPlab program, the image files, and the associated documentation are included on the CD-ROM. The CVIPtools software has been used in projects funded by the National Institutes of Health and the U.S. Department of Defense.

Because it is a university-sponsored project, it is continually being upgraded and expanded, and updates are available via the information superhighway (World Wide Web). This software allows you to learn about CVIP topics in an interactive and exploratory manner and to develop your own programming expertise with the CVIPlab program and the associated laboratory exercises. With the CVIPlab program you can link any of the already defined CVIPtools functions, ranging from general-purpose input/output and matrix functions to more advanced transform functions and complex CVIP algorithms. Some of these functions are state-of-the-art algorithms because CVIPtools is constantly being improved by the Computer Vision and Image Processing Laboratory at Southern Illinois University at Edwardsville (SIUE).