List of Figures and Tables

Fig. 0-1. Prerequisite Structure By Chapter xxix

Fig. 2-1. The EventTester Frame 12

Fig. 2-2. The Hierarchical Menu 12

Table 2-1. Keyboard Shortcuts 17

Fig. 2-3. Keyboard Shortcuts Nested 17

Fig. 2-4. Three-Key Keyboard Shortcuts. 18

Fig. 2-5. The Petri Net Components 19

Fig. 2-6. Petri Diagram for Key Events 20

Fig. 2-7. The Petri Table 21

Fig. 2-8. The ExpandoLog Dialog 29

Fig. 2-9. ExpandoLog 32

Fig. 3-1. The ImageFrame 39

Fig. 3-2. A Packed Pixel 40

Fig. 3-3. Row Major vs. Column Major 45

Fig. 3-4. Relationship between Drawing Methods 48

Fig. 3-5. The SnellWlx Frame 56

Fig. 3-6. The GrabFrame 57

Fig. 3-7. Class Hierarchy for SnellWlx 59

Fig. 3-8. Test Pattern List 60

Fig. 4-1. Histogram of a Simple Image 63

Fig. 4-2. The PMF and the CMF 63

Fig. 4-3. The Mandrill 65

Fig. 4-4. Original Image with Linear Map 69

Fig. 4-5. The Negated Image 69

Fig. 4-6. Repeated Application of (4.14) 71

Fig. 4-7. Pow = 1.5, a Darkening Curve 72

Fig. 4-8. Image after Application of Darkening Curve 72

Fig. 4-9. Histogram Before and After Darkening 73

Fig. 4-10. Original and Linear Transformed Image 75

Fig. 4-11. Plot of Rescaled Range. 77

Fig. 4-12. Linear Grayscale Dialog Box with Defaults 77

Fig. 4-13. Automatic Linear Contrast Enhancement 78

Fig. 4-14. Effect of the UNAHE 83

Fig. 4-15. Effect of UNAHE on the Histogram 83

Fig. 4-16. UNAHE vs. Automatic Linear Transform 83

Fig. 4-17. Transform Table of the UNAHE CMF 84

Fig. 4-18. Look-up Tables for a ENAHE Image 87

Fig. 4-19. ENAHE Image with Histogram 88

Fig. 4-20. Negate the Image Before the ENAHE, Then Negate Again. 88

Fig. 4-21. Rayleigh Non-adaptive Histogram Equalization 89

Fig. 4-22. Adaptive Histogram Equalization 90

Fig. 4-23. Histograms: Original, NAUHE 91

Fig. 4-24. Adaptive Uniform Histogram Equalization 92

Fig. 4-25. The Class Summary Showing NegateFrame 94

Fig. 5-1. Sketch of a Human Eye 104

Fig. 5-2. Sampling System 111

Fig. 5-3. Quantizing with Fewer Bits Per Pixel 117

Fig. 6-1. Sketch Depicting the Relationship Between the Streams 122

Fig. 6-2. Application for a Buffered Stream 123

Fig. 6-3. A Sample Save File Dialog 125

Fig. 7-1. Save File Dialog 143

Fig. 7-2. The ProgressFrame 147

Table 7-1. Effect of GZIP 151

Fig. 7-3. Chart of RAM and CPU Speed 152

Table 7-2. Modem Milestones 153

Fig. 7-4. Modem Bit Rate 153

Fig. 7-5. Class Tree Showing OpenFrame 160

Table 7-3. Times for the Loop Interchange 167

Fig. 7-6. The ProgressFrame 170

Fig. 8-1. Example of a One-Dimensional Convolution 177

Fig. 8-2. Cyclic Convolution 180

Fig. 8-3. A Convolution, Ignoring the Edges 181

Fig. 8-4. A No-edge Convolution 182

Fig. 8-5. The Five Parts of the Image 183

Fig. 9-1. Mandrill, average 194

Fig. 9-2. A Gaussian Density 197

Fig. 9-3. Convolving the Mandrill 201

Fig. 9-4. Original and 3x3 Cross Median 206

Fig. 9-5. Before and After medianSquare3x3 207

Fig. 9-6. Before and After gauss3x3 207

Fig. 9-7. Before and After medianSquare5x5. 208

Fig. 9-8. Before and After medianOctagon5x5 209

Fig. 9-9. Before and After Application of the medianCross7x7 210

Fig. 9-10. Before and After Application of the medianDiamond7x7 211

Fig. 9-11. Before and After the Hybrid-Median Filter 211

Fig. 9-12. UNHE Emphasis of Hybrid-Median Filtering on Posterization 212

Fig. 9-13. Before and After 3x3 Median Filtering 213

Fig. 9-14. Before and After hp1 215

Fig. 9-15. Hp1 216

Fig. 9-16. Hp2 216

Fig. 9-17. Hp4 vs. hp5 217

Fig. 9-18. Imaging API, Including the SpatialFrame 220

Fig. 10-1. Before and After Application of laplacian3 and Thresholding 236

Fig. 10-2. laplacian3 237

Fig. 10-3. A 3x3 Gaussian 238

Fig. 10-4. laplacian3 vs. laplacian3Prewitt 239

Fig. 10-5. The Mexican Hat 241

Fig. 10-6. Before and After Application of the roberts2 244

Fig. 10-7. UNHE 245

Fig. 10-8. Before and After Sobel Filtering. 249

Fig. 10-9. Roberts on the Left, Sobel on the Right 249

Fig. 10-10. Roberts vs. Sobel 250

Fig. 10-11. Roberts vs. Sobel, UNAHE Pre-process, Then Thresholding 250

Fig. 10-12. The Sobel from 10-11 vs. a Gaussian Prefiltered Sobel 251

Fig. 10-13. Peppers 251

Fig. 10-14. Mean Filtering vs. Gaussian Filtering with Sobel Edge Detection 252

Fig. 10-15. Roberts 254

Fig. 10-16. Edge Man 255

Fig. 10-17. pixelDifference, sobel, separatedPixelDifference and prewitt 256

Fig. 10-18. Roberts vs. Pixel Difference 257

Fig. 10-19. Pixel Difference vs. Laplacian 257

Fig. 10-20. Before and After Frei-Chen 258

Fig. 10-21. Edge Man with Shot Noise vs. Roberts 259

Fig. 10-22. Before and After Pixel Difference 259

Fig. 10-23. Before and After laplacian3 260

Fig. 10-24. 3x3 Gaussian 260

Fig. 10-25. Frei-Chen, Prewitt and Separated-Pixel Difference 261

Fig. 10-26. Before and After medianSquare2x2 261

Fig. 10-27. Before and after laplacian3 262

Fig. 10-28. The Threshold Dialog 272

Fig. 10-29. Before and After a 4-Level Thresholding 272

Fig. 10-30. Before and After a 9-Level Thresholding 273

Fig. 11-1. Erosion 283

Fig. 11-2. The Dilated Mandrill 285

Fig. 11-3. Using (11.21) to Dilate 285

Fig. 11-4. Before and After the Close Filter 291

Fig. 11-5. Before and After Close(kSquare) on the Mandrill 291

Fig. 11-6. Before and after open(kSquare) on the Mandrill 291

Fig. 11-7. Mandrill 293

Fig. 11-8. Icons 294

Fig. 11-9. Before and After Application of Middle Contour 294

Fig. 11-10. The Array Assignment 298

Fig. 11-11. Before and After Skeletonization 302

Fig. 11-12. Before and After Skeletonization 303

Fig. 11-13. Before and After Skeletonization 303

Fig. 11-14. The Dual of the Skeleton 304

Fig. 11-15. Before and After Skeletonization 304

Fig. 11-16. A Sample Obstacle Course with Skeleton Showing Voronoi 305

Fig. 11-17. Erosion Alters the Voronoi 306

Fig. 12-1. A Box and Its Hough 317

Fig. 12-2. Hough Transform 319

Fig. 12-3. Before and After the Hough Lines 320

Fig. 12-4. Drawing 40 Lines from Hough Space 320

Fig. 12-5. A Tilted Box and 40 Lines from Hough Space 321

Fig. 12-6. Forty Point and 200 Point Hough Detection 321

Fig. 12-7. Edge Man with 20 and 200 Point Hough Detection 321

Fig. 12-8. Before and After the bugWalk. 325

Fig. 12-9. Before and After Polygon Thinning 326

Fig. 12-10. The Inverse Roberts Search Space 334

Fig. 12-11. Search for a Path Through the Skeleton 334

Fig. 12-12. Copy the Original Image to the Child Frame 344

Fig. 12-13. Make a Good Cost Function 344

Fig. 12-14. Select the Marker Icon 345

Fig. 14-1. The AffineFrame 383

Fig. 14-2. The Quadrilateral 383

Fig. 14-3. Before and After Scaling in x and y. 384

Fig. 14-4. Scale in x vs. Scale in y. 384

Fig. 14-5. Shear in x vs. Shear in y. 385

Fig. 14-6. Rotation 388

Fig. 14-7. Scale in the x vs. y Direction 388

Fig. 14-8. Shear 389

Fig. 14-9. Shear in the y Direction 389

Fig. 14-10. Inferring the Transform from 3 Points 392

Fig. 14-11. Mapping Quadrilaterals to Quadrilaterals 397

Fig. 14-12. Inferred 4 Point Bilinear Feedback 400

Fig. 14-13. Conformal Mapping 401

Table 15-1. Convolution Times 409

Fig. 15-1. Edge Man and His FFT 409

Fig. 15-2. The Xform Menu 410

Fig. 15-3. The Mandrill and the PSD of the FFT 411

Fig. 15-4. A Notch Filter and the Inverse FFT 411

Fig. 15-5. A Depiction of the Sub-Band Layout 419

Fig. 15-6. A Sub-Sampling Filter-Bank 419

Fig. 15-7. Before and After the Integer Haar Transform 426

Fig. 15-8. Backward Lossy Integer Haar Transform 427

Fig. 15-9. Using 25% of the Detail for a Reconstruction 427

Fig. 15-10. Using 75% of the Detail for a Non-Standard Reconstruction 428

Fig. 15-11. Using 25% of the Detail for a Non-Standard Reconstruction 428

Fig. 15-12. Using 12% of the Detail for a Non-Standard Reconstruction 428

Fig. B-1. The Magnifier Icon 438

Fig. B-2. Save As Binary Icon 439

Fig. B-3. Binary Icon Output as Java 439

Fig. B-4. The Kahindu Toolbar 440

Fig. B-5. Using the Magnifier 441

Fig. B-6. Elements of One Icon Can Be Used in Another 441

Fig. B-7. Hand Typing an Icon 442

Fig. C-1. Some of the Main Classes in the gui package. 446

Fig. C-2. The Relationship of the Frames in the gui Package. 447

Fig. C-3. The WindowListener Hierarchy 461

Fig. C-4. The ActionListener Hierarchy 462

Fig. C-5. The Dialog Hierarchy 463

Fig. C-6. The FloatPlane Hierarchy 463