This textbook is an excellent introduction to the fundamentals of digital image processing. It thoroughly blends basic theory and practical algorithms expressed in Java and ImageJ. It also provides a set of accessible exercises at the end of each chapter. It is suitable as a two-semester textbook for third-year undergraduates. This second edition reorganizes the material and adds nine new chapters dealing mostly with color images and mathematical techniques. The appendices are revamped: two are removed (one on ImageJ, for which substantial material can be found at the ImageJ website [1], and one on source code, which is provided on the book’s website [2]), and four, covering relevant mathematical basics, are added.

The 26 chapters that comprise the book can be approximately grouped into four major parts: (1) a general introduction (chapters 1 to 3); (2) binary image manipulation (chapters 4 to 11); (3) color image manipulation (chapters 12 to 16); and (4) mathematical preliminaries (chapters 17 to 26).

Chapter 1 is a light introduction intended to situate digital image processing with respect to other forms of image manipulation, such as editing, computer vision, and computer graphics. It describes several image file formats and their properties. Chapter 2 briefly introduces ImageJ and uses examples to illustrate its image analysis and processing capabilities and its relationship with Java. Chapter 3 covers histograms and image-related statistics. It describes their construction, properties, and interpretations in detecting issues with images and assessing the effectiveness of an image.

Part 2 covers binary image operations, such as point operations, filters, finding contours and edges, detecting corners and curves, morphological filters, regions, and thresholding. Point operations modify pixel values independently of other pixels. Intensity, brightness, and image inversion are examples of such operations. Histograms and point operations are strongly related. The importance of gamma correction, together with its mathematical formulation, application, and implementation, is thoroughly discussed. Unlike point operations, linear and nonlinear filters manipulate subsets of pixels in order to modify their values for the purpose of smoothing subregions of an image. Their properties, attributes, and implementation are introduced in this part. The chapter on finding contours and edges covers techniques that construct edges in an image using gradient-based edge detection approaches. One such approach, the Canny edge operator, is described in detail. Corner detection using the Harris corner detection algorithm and its implementation is briefly described in chapter 7. The following chapter covers the Hough transform, a method used to localize geometric shapes in images. The Java implementation of the Hough transform is described. In chapter 9, two morphological operators (dilation and erosion) to identify shapes are formally specified, and their implementations in ImageJ are used to illustrate their wide applicability. Chapter 10 introduces methods for finding objects in binary images. The reader is referred to the basic algorithms in the book’s library. The final chapter in this section covers approaches for finding optimal thresholding values to convert a grayscale image into a binary image. Histogram-based and statistical-based thresholding algorithms are elaborated.

Part 3, in some sense, mirrors Part 2. It covers color image themes, such as color spaces, color quantization, colorimetric color spaces, filters, edge detection, and edge-preserving smoothing filters. The first chapter introduces color images and describes thoroughly the various internal representations using RGB. It also describes the different color spaces and conversion methods among them. Several image manipulation algorithms in ImageJ are discussed. Two color quantization methods (scalar and vector) aimed at representing images with a reduced number of colors while preserving fidelity are described. Optimality in the general case is combinatorial; thus, three different algorithms (populosity, median-cut, octree) that achieve local optimality are illustrated in chapter 13. Colorimetric color spaces are covered in chapter 14. These are color spaces that are device-independent. Among the many standards, the Commission Internationale de l’Éclairage (CIE) [3] color space and some of its variants are described. Standard RGB (sRGB), an alternative color system developed specifically for computer graphics, is formally described. Adobe RGB extends sRGB to handle printing. The chapter on filters for color images shows how the filters used for grayscale images are adapted to color images and highlights the dependencies of these filters on the color spaces. Chapter 16 applies monochromatic techniques, used for grayscale images, to detect edges in color images and show that these techniques are satisfactory. One such technique, the Canny edge detector, is adapted to color images. The final chapter introduces edge-preserving smoothing filters and elaborates three classical filters: the Kuwahra-type filters, the bilateral filter, and the anisotropic filter. Their corresponding algorithms expressed in an abstract form are presented.

Part 4 briefly covers more advanced material and may require a stronger mathematical background. The themes covered include spectral techniques, geometric operations, pixel interpolation methods, image matching, local feature detection, and shape descriptors. Even though it is fundamental, this section seems a little bit out of place with respect to Parts 1 through 3.

There are six appendices, five of which contains basic information about various mathematical topics. The last appendix summarizes some common Java constructs.

More reviews about this item: Amazon