Author: Kenny A. Hunt
Publisher:A K Peters/CRC Press
Aimed at: Java programmers interested in image processing
Pros: Readable introduction, covers many topics
Cons: Spread too thin
Reviewed by: David Conrad
This is lavishly produced and idiosyncratic book with a title that raises high expectations.
Roughly speaking it is more about Java and the "engineering" angle on image processing than the photographic or AI angle. This is odd as the book features lots of art works as examples of what the image processing being discussed achieves. What is more each of the art works is discussed at the end of each chapter. Although this is hardly on topic, I found the details fascinating. The biog of the author on the back explains the eccentricity:
"Although he aspired to become a famous artist, economic realities and the possession of a disadvantaged skill set pushed him in another direction"
After a brief discussion of what digital image processing is we move on to Chapter 2 and a refresher course on optics and human vision. Chapter 3 deals with the basics of representing images - the theory of color, color spaces and conversions and types of image. It is here we meet Java for the first time with a discussion of its basic image classes. Chapter 4 goes deeper into Java image handling and even questions of efficiency.
Chapter 5 is where the real image processing starts, with a look at point processes. The book is mostly organized according to the grade of linear theory in use - point processes, convolution and frequency domain operators. This first chapter is mostly about histogram methods and rescaling in general. The later part of the chapter considers binary operations such as image addition and alpha blending.
Chapter 6 is about regional processing and it is essentially an introduction to convolution filtering with a side order of non-linear operators such as median filtering. Here we also meet edge detection, but there is no real indication of what you might use it for other than enhancement. The chapter ends with an introduction to template matching.
Chapter 7 takes a slight detour from linear filtering type theory and looks at geometric operations. Matrix operations are introduced with general affine transformations. Interpolation as part of resampling is also introduced. The final part of the chapter deals with simple non-linear maps but more as special effects than as ways of correcting specific distortions. The next chapter moves on to image realization - printing and display technologies including half toning and dithering.
Finally we return to the main road of linear filtering with a look at the frequency domain.The general theory is followed up by the discrete cosine transformation, the DFT and filtering. The chapter finishes with a quick look at wavelets. The next chapter deals with image compression, lossy and non-lossy. After run-length coding and predictive coding, we eventually get to case studies explaining JPEG and GIF.
The penultimate chapter is something of an outline in that it deals with morphological processing of binary images - dilation, erosion, opening and closing. It then goes on to features and segmentation. Finally the book closes with a look at advanced Java programming.
Overall the style of the book is friendly and it is easy to read. There is a lot of math, but it is at the level of what you need to implement things; this is no pure math approach to image processing in the sense that you don't get any very theoretical introduction to linear theory or the connection between spatial and frequency domain operations. You do also need to be able to program in Java to follow the programs and appreciate some of the ideas.
The big problem with this book is that it is a little schizophrenic. Is it about Java and programming, or math and image processing, or image processing and art? The answer is that it is about all of them and as such doesn't really go very far with any of them.
This is a good but very basic introduction to image processing as an engineering task but it doesn't really give you very much idea as to what the purpose of the tasks are. It would make a reasonable text for an introductory course on practical image processing with Java, but it is difficult to recommend it to the general reader wanting to know what image processing is all about, or to a Java programmer trying to implement an application who needs to get to grips with images.