![[Book Cover]](../covergif/0139745777.jpg)
|
Image Processing In Java, 1/e
Douglas A. Lyon, University of Bridgeport, Bridgeport, Connecticut
Published March, 1999 by Prentice Hall PTR (ECS Professional)
Copyright 1999, 574 pp.
Paper Bound w/CD-ROM
ISBN 0-13-974577-7
|
Sign up for future mailings on this subject.
See other books about:
Image Processing-Computer Science
Image Processing-Electrical Engineering
|

(NOTE: Most chapters contain a Class Summary, Class Usage and Class
Implementation.)
List of Figures and Tables.
Acknowledgment.
Foreword.
Preface.
Why Should I Care About Java?
Who Should Read This Book?
Why Not Use the Advanced Imaging Package?
This Is Not Just a Textbook.
What Chapters Do I Need to Read?
How Can I Use the Web to Teach and Learn More Image Processing?
1. Introduction.
What is This Book About?
What is Image Processing? What is Java? Why Do Image Processing in
Java?
Who Should Read This Book? What Will You Learn?
2. Event Processing and the AWT.
The Frame Class. Interaction.
The EventTester. BooLog. ExpandoLog. Class Summary. Class Usage.
Summary. Suggested Projects.
3. Displaying and Filtering Images
Image Representation. Scalar Numeric Data Types. Arrays in Java.
Drawing in Java. The ImageFrame Class. The FilterFrame. The GrabFrame Class.
SnellWlx Class and Test Patterns.
4. Homogeneous Point Processing.
The Histogram Class. Homogeneous Point Processing Functions.
Using the Pow Function. Using Linear Transforms. The Uniform Non-
Adaptive Histogram Equalization. Maple and Exponential Non Adaptive Histogram
Equalization. Adaptive Histogram Equalization.
The TransformTable Class. The NegateFrame Class. Summary.
5. Digital Image Processing Fundamentals.
The Human Visual System. Overview of Image Processing.
Digitizing a Signal. Image Digitization. Image Display.
6. Input Streams.
Getting a FileName. File Input. The Stream Ubyte Class. The
StreamSniffer Class.
7. Image File Readers and Writers.
Getting a Filename and Writing a PPM File. Writing a Program That
Writes a Program. Writing Lossless 24-Bit Color Image Files. Reading GZIP
Compressed PPM Files. The SaveFrame Class. The OpenFrame Class. The Timer
Class.
Class Example: Loop Interchange.
The ProgressFrame. The WriteGif. The WritePPM Class.
The PPM. Class Example.
Summary. Projects.
8. Direct Convolution.
The Mathematical Basis of Convolution. The Cyclic Convolution,
Correctness and Speed. Generating Convolution Kernels - The Mat Class.
Implementing Direct Convolution. Summary.
9. Spatial Filters
Blurring. Median Filtering. High-Pass. The SpatialFilterFrame.
Summary. Suggested Projects.
10. Convolution-based Edge Detection.
Laplace Filter. Roberts. Sobel and the Double Templates. Comparing
Edge Detectors. Summary. Projects. EdgeFrame Class.
11. Morphological Filtering.
Set Theory. Erosion and Dilation. Opening and Closing. Outlining.
Thinning and Skeletonization. Summary. Projects. The MorphFrame.
12. Boundary Processing.
Hough Transform. Simple Edge Tracing. Edge Detection. Summary.
Projects. The BoundaryFrame. The MartelliFrame.
13. Chromatic Light.
Introduction to Color. Tristimulus.
RGB and XYZ for Illuminant D65. Sub-Sampling. YIQ and NTSC Encoders.
Linear Cut Color Reduction. The Median Cut Algorithm. Summary.
Projects. The ColorHash Class. The ColorFrame.
14. Warping.
Translation. Scaling. Rotation. Shear. The AffineFrame. Applying the
Transforms to an Image. Inferring a 3 Point Affine Mapping. Inferring a 4
Point Bilinear Map. Effects. Projects.
15. Unitary Transforms.
Introduction. The Discrete Fourier Transform. The Wavelet Transform.
The Haar Basis. Implementing the Two-Dimensional Haar Lifting. Writing a
Wavelet Encoded File. Summary. Projects.
Appendix A. Book Resources On-line.
Appendix B. The Kahindu Interface.
B.1. Icon Design.
B.2. Icon Design By Drawing.
B.3. Icon Design By Typing.
B.4. Saving the Icon as Java.
Appendix C. The Structure of Kahindu.
Appendix D. Index of Fields and Methods.
Literature Cited.
Index.
Colophon.
List of Figures and Tables.
Fig. 0-1. Prerequisite Structure By Chapter. Fig. 2-1. The
EventTester Frame. Fig. 2-2. The Hierarchical Menu. Table 2-1. Keyboard
Shortcuts. Fig. 2-3. Keyboard Shortcuts Nested. Fig. 2-4. Three-Key Keyboard
Shortcuts. Fig. 2-5. The Petri Net Components. Fig. 2-6. Petri Diagram for Key
Events. Fig. 2-7. The Petri Table. Fig. 2-8. The ExpandoLog Dialog. Fig. 2-9.
ExpandoLog.
Fig. 3-1. The ImageFrame. Fig. 3-2. A Packed Pixel. Fig. 3-3. Row
Major vs. Column Major. Fig. 3-4. Relationship between Drawing Methods. Fig.
3-5. The SnellWlx Frame. Fig. 3-6. The GrabFrame. Fig. 3-7. Class Hierarchy
for SnellWlx Fig. 3-8. Test Pattern List.
Fig. 4-1. Histogram of a Simple Image. Fig. 4-2. The PMF and the
CMF. Fig. 4-3. The Mandrill. Fig. 4-4. Original Image with Linear Map. Fig.
4-5. The Negated Image. Fig. 4-6. Repeated Application of (4.14). Fig. 4-7.
Pow = 1.5, a Darkening Curve. Fig. 4-8. Image after Application of Darkening
Curve. Fig. 4-9. Histogram Before and After Darkening. Fig. 4-10. Original and
Linear Transformed Image. Fig. 4-11. Plot of Rescaled Range. Fig. 4-12.
Linear Grayscale Dialog Box with Defaults. Fig. 4-13. Automatic Linear
Contrast Enhancement. Fig. 4-14. Effect of the UNAHE. Fig. 4-15. Effect of
UNAHE on the Histogram. Fig. 4-16. UNAHE vs. Automatic Linear Transform. Fig.
4-17. Transform Table of the UNAHE CMF. Fig. 4-18. Look-up Tables for a ENAHE
Image. Fig. 4-19. ENAHE Image with Histogram. Fig. 4-20. Negate the Image
Before the ENAHE, Then Negate Again. Fig. 4-21. Rayleigh Non-adaptive
Histogram Equalization. Fig. 4-22. Adaptive Histogram Equalization. Fig. 4-23.
Histograms: Original, NAUHE. Fig. 4-24. Adaptive Uniform Histogram
Equalization. Fig. 4-25. The Class Summary Showing NegateFrame.
Fig. 5-1. Sketch of a Human Eye. Fig. 5-2. Sampling System. Fig. 5-
3. Quantizing with Fewer Bits Per Pixel.
Fig. 6-1. Sketch Depicting the Relationship Between the Streams.
Fig. 6-2. Application for a Buffered Stream. Fig. 6-3. A Sample Save File
Dialog.
Fig. 7-1. Save File Dialog. Fig. 7-2. The ProgressFrame. Table 7-1.
Effect of GZIP. Fig. 7-3. Chart of RAM and CPU Speed. Table 7-2. Modem
Milestones. Fig. 7-4. Modem Bit Rate. Fig. 7-5. Class Tree Showing OpenFrame.
Table 7-3. Times for the Loop Interchange. Fig. 7-6. The ProgressFrame.
Fig. 8-1. Example of a One-Dimensional Convolution. Fig. 8-2. Cyclic
Convolution. Fig. 8-3. A Convolution, Ignoring the Edges. Fig. 8-4. A No-edge
Convolution. Fig. 8-5. The Five Parts of the Image.
Fig. 9-1. Mandrill, average. Fig. 9-2. A Gaussian Density. Fig. 9-3.
Convolving the Mandrill. Fig. 9-4. Original and 3x3 Cross Median. Fig. 9-5.
Before and After medianSquare3x3. Fig. 9-6. Before and After gauss3x3. Fig. 9-
7. Before and After medianSquare5x5. Fig. 9-8. Before and After
medianOctagon5x5. Fig. 9-9. Before and After Application of the
medianCross7x7. Fig. 9-10. Before and After Application of the
medianDiamond7x7. Fig. 9-11. Before and After the Hybrid-Median Filter. Fig.
9-12. Before and After Median Filtering on Posterization. Fig. 9-13. Before
and After 3x3 Median Filtering. Fig. 9-14. Before and After hp1. Fig. 9-15.
Hp1. Fig. 9-16. Hp2. Fig. 9-17. Hp4 vs. hp5. Fig. 9-18. Imaging API, Including
the SpatialFrame.
Fig. 10-1. Before and After Application of laplacian3 and Thresholding. Fig.
10-2. laplacian3. Fig. 10-3. A 3x3 Gaussian. Fig. 10-4. laplacian3 vs.
laplacian3Prewitt. Fig. 10-5. The Mexican Hat. Fig. 10-6. Before and After
Application of the roberts2. Fig. 10-7. UNHE. Fig. 10-8. Before and After
Sobel Filtering. Fig. 10-9. Roberts on the Left, Sobel on the Right. Fig. 10-
10. Roberts vs. Sobel. Fig. 10-11. Roberts vs. Sobel, UNAHE Pre-process, Then
Thresholding. Fig. 10-12. The Sobel from 10-11 vs. a Gaussian Prefiltered
Sobel. Fig. 10-13. Peppers. Fig. 10-14. Mean Filtering vs. Gaussian Filtering
with Sobel Edge Detection. Fig. 10-15. Roberts. Fig. 10-16. Edge Man. Fig. 10-
17. pixelDifference, sobel, separatedPixelDifference and prewitt. Fig. 10-18.
Roberts vs. Pixel Difference. Fig. 10-19. Pixel Difference vs. Laplacian.
Fig. 10-20. Before and After Frei-Chen. Fig. 10-21. Edge Man with Shot Noise
vs. Roberts. Fig. 10-22. Before and After Pixel Difference. Fig. 10-23.
Before and After laplacian3. Fig. 10-24. 3x3 Gaussian. Fig. 10-25. Frei-Chen,
Prewitt and Separated-Pixel Difference. Fig. 10-26. Before and After
medianSquare2x2. Fig. 10-27. Before and after laplacian3. Fig. 10-28. The
Threshold Dialog. Fig. 10-29. Before and After a 4-Level Thresholding. Fig.
10-30. Before and After a 9-Level Thresholding.
Fig. 11-1. Erosion Fig. 11-2. The Dilated Mandrill Fig. 11-3. Using
(11.21) to Dilate. Fig. 11-4. Before and After the Close Filter. Fig. 11-5.
Before and After Close(kSquare) on the Mandrill. Fig. 11-6. Before and after
open(kSquare) on the Mandrill. Fig. 11-7. Mandrill. Fig. 11-8. Icons. Fig.
11-9. Before and After Application of Middle Contour. Fig. 11-10. The Array
Assignment. Fig. 11-11. Before and After Skeletonization. Fig. 11-12. Before
and After Skeletonization. Fig. 11-13. Before and After Skeletonization. Fig.
11-14. The Dual of the Skeleton. Fig. 11-15. Before and After Skeletonization.
Fig. 11-16. A Sample Obstacle Course with Skeleton Showing Voronoi. Fig. 11-
17. Erosion Alters the Voronoi.
Fig. 12-1. A Box and Its Hough. Fig. 12-2. Hough Transform. Fig. 12-3. Before
and After the Hough Lines. Fig. 12-4. Drawing 40 Lines from Hough Space. Fig.
12-5. A Tilted Box and 40 Lines from Hough Space. Fig. 12-6. Forty Point and
200 Point Hough Detection. Fig. 12-7. Edge Man with 20 and 200 Point Hough
Detection. Fig. 12-8. Before and After the bugWalk. Fig. 12-9. Before and
After Polygon Thinning. Fig. 12-10. The Inverse Roberts Search Space. Fig. 12-
11. Search for a Path Through the Skeleton. Fig. 12-12. Copy the Original
Image to the Child Frame. Fig. 12-13. Make a Good Cost Function. Fig. 12-14.
Select the Marker Icon.
Fig. 14-1. The AffineFrame. Fig. 14-2. The Quadrilateral. Fig. 14-3.
Before and After Scaling in x and y. Fig. 14-4. Scale in x vs. Scale in y.
Fig. 14-5. Shear in x vs. Shear in y. Fig. 14-6. Rotation. Fig. 14-7. Scale in
the x vs. y Direction. Fig. 14-8. Shear. Fig. 14-9. Shear in the y Direction.
Fig. 14-10. Inferring the Transform from 3 Points. Fig. 14-11. Mapping
Quadrilaterals to Quadrilaterals. Fig. 14-12. Inferred 4 Point Bilinear
Feedback. Fig. 14-13. Conformal Mapping.
Table 15-1. Convolution Times. Fig. 15-1. Edge Man and His FFT. Fig.
15-2. The Xform Menu. Fig. 15-3. The Mandrill and the PSD of the FFT. Fig. 15-
4. A Notch Filter and the Inverse FFT. Fig. 15-5. A Depiction of the Sub-Band
Layout. Fig. 15-6. A Sub-Sampling Filter-Bank. Fig. 15-7. Before and After the
Integer Haar Transform. Fig. 15-8. Backward Lossy Integer Haar Transform. Fig.
15-9. Using 25% of the Detail for a Reconstruction. Fig. 15-10. Using 75% of
the Detail for a Non-Standard Reconstruction. Fig. 15-11. Using 25% of the
Detail for a Non-Standard Reconstruction. Fig. 15-12. Using 12% of the Detail
for a Non-Standard Reconstruction.
Fig. B-1. The Magnifier Icon. Fig. B-2. Save As Binary Icon. Fig. B-
3. Binary Icon Output as Java. Fig. B-4. The Kahindu Toolbar. Fig. B-5. Using
the Magnifier. Fig. B-6. Elements of One Icon Can Be Used in Another. Fig. B-
7. Hand Typing an Icon.
Fig. C-1. Some of the Main Classes in the gui package. Fig. C-2. The
Relationship of the Frames in the gui Package. Fig. C-3. The WindowListener
Hierarchy. Fig. C-4. The ActionListener Hierarchy. Fig. C-5. The Dialog
Hierarchy. Fig. C-6. The FloatPlane Hierarchy.
|