Preface to the English Edition
This book provides a modern, self-contained, introduction to digital image processing. We designed the book to be used by both learners desiring a firm foundation to build on, and practitioners in search of critical analysis and modern implementations of the most important techniques. This is the first English edition of the original German language book which has been widely used by:
- Medical professionals, scientists, and engineers who use image processing as a tool and wish to develop a deeper understanding and create custom solutions to imaging problems in their field.
- IT professionals wanting a self study course featuring easily adaptable code and completely worked out examples enabling them to be productive right away.
Faculty and students desiring an example rich, introductory textbook suitable for an advanced undergraduate or graduate level course which features exercises, projects, and examples which have been honed during out years of experience teaching this material. While we concentrate on practical applications and concrete implementations, we do so without glossing over the important formal details and mathematics necessary for a deeper understanding of the algorithms.
In preparing this text we started from the premise that simply creating a recipe book of imaging solutions would not provide the deeper understanding needed to apply these techniques to novel problems, so instead our solutions are developed stepwise from three different perspectives: (a) in mathematical form (b) as abstract, pseudo code algorithms and (c) as complete Java programs. We use a common notation to intertwine all three perspectives, providing multiple, but linked, views of the problem and its solution.
Prerequisites
Instead of presenting digital image processing as a mathematical discipline, or strictly as signal processing, we present it from a practitioner's and programmer's perspective and with a view to replacing many of the formalisms commonly used in other texts with constructs more readily understandable by our audience. To take full advantage of the programming components of this book a knowledge of basic data structures and object oriented programming, ideally in Java, is required. We selected Java for a number of reasons, one of which is that Java is the first programming language learned by students in a wide variety of engineering curricula. Practitioners with knowledge of a related language, especially C or C++, will find the programming examples easy to follow and extend.
The software in this book is designed to work with ImageJ, a widely used, programmer extensible imaging system developed, maintained, and distributed by Wayne Rasband of the National Institutes of Health (NIH). ImageJ is completely implemented in Java and therefore runs on all major platforms and is widely used because its plugin based architecture enables it to be easily extended. While all examples run in ImageJ they have been specifically designed to be easily ported to other environments and programming languages.
Use in Research and Development
This book has been especially designed for use as a textbook, and as such features exercises and carefully constructed examples, which supplement the detailed synthesis of the fundamental concepts and techniques. As practitioners and developers we know that the details required for successful understanding and application of classical techniques are often difficult to find, and for this reason we have been very careful to provide the details, many gleaned over years of practical application, necessary to successfully apply these techniques. While this should make the text particular valuable to those in research and development, it is not designed as a comprehensive, fully cited scientific research text. On the contrary, we have carefully vetted our citations so that they can be obtained from easily accessible sources.
While we have only briefly discussed the fundamentals of, or entirely omitted, topics such as hierarchical methods, wavelets, or eigenimages because of space limitations, other topics have been omitted deliberately, including advanced issues like object recognition, image understanding or three dimensional computer vision. So while most techniques described in this book could be called "blind and dumb" it is our experience that straight forward, technically clean, implementations of these simpler methods are essential to the success of any further domain specific, or even "intelligent" approaches.
If you are only in search of a programming handbook for ImageJ or Java, there are certainly better sources. While the book includes a comprehensive ImageJ reference and many code examples, programming in and of itself is not our main focus. Instead it serves as just one important element for describing each technique in a precise and immediately testable way.
Why We Wrote this Book
Whether it is called signal processing, image processing or media computing the manipulation of digital images has been an integral part of most computer science and engineering curricula for many years. Today, with the omnipresence of all digital work flows it has become a natural part in the general skill set of professionals in IT and in many other disciplines.
Previous to the explosion of digital media it was often the case that a computing curriculum would offer only a single course, called "Digital Signal Processing" in engineering, or "Digital Image Processing" in computing, and likely only as a graduate elective. Today the topic has migrated into the early stages of many curricula where it now serves as a key foundation course.
This migration uncovered a problem, that many of the texts relied on as standards in the older, graduate level courses, were not appropriate for beginners. The texts were usually too formal for beginners, and at the same time did not provide detailed coverage of many of the most popular methods used in actual practice. The result was that educators had a difficult time selecting a single textbook, or even finding a compact collection of literature to recommend to their students. Faced with this dilemma ourselves, we wrote this book in the sincere hope of filling a need.
The contents of the following chapters can be presented in either a one or two semester sequence. Where it was feasible, we have added supporting material to make each chapter as independent as possible in order to provide the instructor with as much flexibility as possible when designing the course. Chapters 13 through 17 offer a complete introduction to the fundamental spectral techniques used in image processing and are essentially independent of the other material in the text. Depending on the goals of the instructor, and the curriculum, they can be covered in as much detail as required, or completely omitted. The road map (on page XX) provides a sequence of topics for a one or a two semester syllabus.
- A one semester course can be organized around one of the two following major themes: image processing or image analysis. While either theme integrates easily in to the early semesters of a modern computer science or IT curriculum, image analysis is especially appropriate as an early foundation course in medical informatics.
- When the content can be presented over two semesters the content has been designed so that it can be coherently divided (as described below) into two courses (Fundamentals and Advanced ) where the themes are grouped according to difficulty.
Supplement to the English Edition
This book was translated by the authors from the 2nd German edition (published in 2006), incorporating many enhancements throughout the text. In addition to the numerous small corrections and improvements which have been made, our presentation of histogram matching, geometric region properties based on moments, morphological filters, and interpolation methods have been completely revised. Also, a number of example programs, such as the single-pass region labeling and contour finding algorithm have been rewritten for improved clarity and to take advantage of the new language features in Java 5.
Online Resources
Use this website (www.imagingbook.com) to download supplementary materials including the complete Java source code for the examples, the test images used in the examples, and corrections. Additional materials are available for educators including a complete set of formulas and figures used in the text in a format suitable for inclusion in presentations. There is also a comprehensive Reference Manual for ImageJ programming.
Comments, questions, and corrections are welcome and should be addressed to imagingbook.