BOOKSBOOKSBOOKS
Practical Algorithms for Image Analysis, 2nd Edition
by Lawrence O’Gorman, Michael J. Sammon and Michael Seul Cambridge University Press, 2008
Reviewed by Jason Dowling |
The authors of this useful and well-written book (including Larry O’Gorman the IAPR Newsletter editor) have a wealth of experience in applying image processing to various tasks. This understanding is reflected in the practical cookbook style used in the second edition of this book As a student I found the first edition of this book (published in 2000) particularly useful as an introduction to a number of image processing topics. Coming from a programming background, I found it very useful to take an image, run one or more operations, view the results and then look through the C source code to see how it worked. The book doesn’t overwhelm the reader with details but has a logical and concise structure. Each of the six main chapters consists of four to eight page sections discussing a single image processing operation. Binary and source code for the programs discussed in each section are provided on the CD (Windows and Linux). The source code is written in C, which I think is a lot more useful than using Matlab or Java. The choice of the Visual C++ v6.0 workspace files for Windows users seems a little strange, but I think most users would read the code to learn from it rather than extend it. This new second edition has an additional 54 pages. Some typos and bugs have been fixed from the first edition and the index is now much improved. For those averse to the command line, a useful new addition on the CD is a Java GUI for running the book’s programs. The first chapter of the book provides an introduction, discusses the code organization and provides an annotated section overview for the book. The second part of this chapter provides an image analysis example (a “guided tour”) using various command line commands. Chapter two deals with a number of global operations for image analysis, including histogram transformations, operations for combining images (addition, subtraction, etc), geometric transformations (rotation, translation and interpolation) and colour transformations. The clear discussion and code for nearest neighbour and bilinear interpolation are highlights of this chapter. The third chapter focuses on grey-scale image analysis. Spatial domain convolution is discussed followed by sections on noise reduction, edge enhancement and flat fielding, edge detection (gradient filter masks, and the Boie-Cox algorithm), subsampling, multiresolution analysis and template matching. An additional section for this edition on Gabor wavelet analysis has been added, with an emphasis on texture and pattern detection. The final section presents binarization, with examples based on text image analysis (this edition also includes a new discussion of connectivity-preserving thresholding). Chapter four addresses binary image analysis. An introduction to mathematical morphology is given, followed by sections on binary noise removal, region detection and encoding, shape analysis (including moments and Fourier descriptors), convex hull construction, thinning, line width determination, global features, and finally a nice introduction to the Hough transform. The analysis of lines and line patterns is the focal point of the fifth chapter and covers chain coding, line features and noise reduction, polygonalization, detection of critical points (by curvature estimation), straight line fitting (least squares and eigenvector evaluation), cubic spline fitting, morphology and topology of line patterns (including segment cluster analysis). The sixth chapter focuses on the analysis of point patterns. The construction and display of Voronoi diagrams are discussed. Then the spatial statistics of point patterns are described (to assess the degree of randomness in an image), followed by a section on the topology and geometry of cellular patterns. Finally the k-nearest neighbour problem is discussed, including code to find the k-nearest neighbours based on Voronoi analysis or for each point in a list with given x-y coordinates. The focus of the final “algorithm chapter” (chapter seven) is frequency domain analysis. The first section is a very accessible introduction to the 2D Discrete Fourier Transform and the fast Fourier transform. The second part of this chapter discusses frequency domain filtering (image smoothing, edge detection, etc). A new addition for this edition is the list of program descriptions, sorted by chapter and title provided in chapter eight. The notes on each program and the interactions between each program and others are quite useful. For example, many of the line analysis programs in chapter five require input data in the primitives chain code format (which can be produced from the “pcc” program in section 5.1). Also in this edition a new eight page chapter has been added with suggested student projects. These appear to be reasonably simple (mainly using programs from the CD) and working through them should provide a useful introduction to various image processing applications. The book concludes with an appendix providing a more formal mathematical summary of some of the concepts presented earlier in the book (the Fourier transform, sampling theorem, special purpose filters, convolution, etc). I enjoyed reading through the new edition of this book and particularly like the writing style and logical layout of sections. Sample input and output from each program is either shown in the book or clearly explained. I didn’t notice any editing errors. References to original papers and further reading notes are well written. A minor criticism is that the website for the book (www.mlmsoftwaregroup.com) has not been updated for this edition. I think it would be great to have a future edition or separate volume that uses a similar style to introduce more advanced segmentation or registration methods. Also I think a chapter on 3D image processing could be useful, as would a section on B-spline image warping. I think this book would be excellent for a short course on image processing or as a supplementary text for students new to this field. I would recommend it also as a valuable reference for practitioners in this field.
|
Click above to go to the publisher’s web page where you see a Description of the book and can link to the Table of Contents, an Excerpt, the Index, Copyright information, and Frontmatter. |
Book Reviews Published in the IAPR Newsletter
The Dissimilarity Representation for Pattern Recognition: Foundations and Applications by Pekalska and Duin
Handbook of Biometrics by Jain, Flynn, and Ross (Editors)
Advances in Biometrics – Sensors, Algorithms, and Systems by Ratha and Govindaraju, (Editors)
Dynamic Vision for Perception and Control of Motion by Dickmanns
Bioinformatics by Polanski and Kimmel
Introduction to clustering large and high-dimensional data by Kogan
The Text Mining Handbook by Feldman and Sanger
Information Theory, Inference, and Learning Algorithms by Makay
Geometric Tomography by Gardner
“Foundations and Trends in Computer Graphics and Vision” Curless, Van Gool, and Szeliski., Editors
Applied Combinatorics on Words by M. Lothaire
Human Identification Based on Gait by Nixon, Tan and Chellappar
Mathematics of Digital Images by Stuart Hogan
Advances in Image and Video Segmentation Zhang, Editor
Graph-Theoretic Techniques for Web Content Mining by Schenker, Bunke, Last and Kandel
Handbook of Mathematical Models in Computer Vision by Paragios, Chen, and Faugeras (Editors)
The Geometry of Information Retrieval by van Rijsbergen
Biometric Inverse Problems by Yanushkevich, Stoica, Shmerko and Popel
Correlation Pattern Recognition by Kumar, Mahalanobis, and Juday
Pattern Recognition 3rd Edition by Theodoridis and Koutroumbas
Dictionary of Computer Vision and Image Processing by R.B. Fisher, et. Al
Kernel Methods for Pattern Analysis by Shawe-Taylor and Cristianini
Machine Vision Books
CVonline: an overview
The Guide to Biometrics by Bolle, et al
Pattern Recognition Books Jul. ‘04 [pdf] |