Intelligent machine vision - techniques, implementations and applications

1 Machine vision for industrial applications.- 1.1 Natural and artificial vision.- 1.2 Artificial vision.- 1.3 Machine Vision is not Computer Vision.- 1.3.1 Applications.- 1.3.2 Does it matter what we call the subject?.- 1.4 Four case studies.- 1.4.1 Doomed to failure.- 1.4.2 A successful design.- 1.4.3 Moldy nuts.- 1.4.4 A system that grew and grew.- 1.5 Machine Vision is engineering, not science.- 1.6 Structure, design, and use of machine vision systems.- 1.6.1 Using an IVS for problem analysis.- 1.6.2 Structure of an IVS.- 1.6.3 Other uses for an IVS.- 1.7 Other design tools.- 1.7.1 Lighting Advisor.- 1.7.2 Prototyping kits for image acquisition.- 1.8 Outline of this book.- 2 Basic machine vision techniques.- 2.1 Representations of images.- 2.2 Elementary image-processing functions.- 2.2.1 Monadic pixel-by-pixel operators.- 2.2.2 Dyadic pixel-by-pixel operators.- 2.2.3 Local operators.- 2.2.4 Linear local operators.- 2.2.5 Nonlinear local operators.- 2.2.6 N-tupIe operators.- 2.2.7 Edge effects.- 2.2.8 Intensity histogram [hpi, hgi, hge, hgc].- 2.3 Binary images.- 2.3.1 Measurements on binary images.- 2.3.2 Shape descriptors.- 2.4 Binary mathematical morphology.- 2.4.1 Opening and closing operations.- 2.4.2 Structuring element decomposition.- 2.5 Grey-scale morphology.- 2.6 Global image transforms.- 2.6.1 Hough transform.- 2.6.2 Two-dimensional discrete Fourier transform.- 2.7 Texture analysis.- 2.7.1 Statistical approaches.- 2.7.2 Co-occurrence matrix approach.- 2.7.3 Structural approaches.- 2.7.4 Morphological texture analysis.- 2.8 Further remarks.- 3 Algorithms, approximations, and heuristics.- 3.1 Introduction.- 3.1.1 One algorithm, many implementations.- 3.1.2 Do not judge an algorithm by its accuracy alone.- 3.1.3 Reformulating algorithms to make implementation easier.- 3.1.4 Use heuristics in lieu of algorithms.- 3.1.5 Heuristics may actually be algorithmic.- 3.1.6 Primary and secondary goals.- 3.1.7 Emotional objections to heuristics.- 3.1.8 Heuristics used to guide algorithms.- 3.1.9 Heuristics may cope with a wider range of situations.- 3.2 Changing image representation.- 3.2.1 Converting image format.- 3.2.2 Processing a binary image as a grey-scale image.- 3.2.3 Using images as lookup tables.- 3.3 Redefining algorithms.- 3.3.1 Convolution operations.- 3.3.2 More on decomposition and iterated operations.- 3.3.3 Separated Kernel Image Processing using finite-State Machines.- 3.3.4 Binary image coding.- 3.3.5 Blob connectivity analysis.- 3.3.6 Convex hull.- 3.3.7 Edge smoothing.- 3.3.8 Techniques based on histograms.- 3.4 Approximate and heuristic methods.- 3.4.1 Measuring distance.- 3.4.2 Fitting circles and polygons to a binary object.- 3.4.3 Determining object/feature orientation.- 3.5 Additional remarks.- 3.5.1 Solving the right problem.- 3.5.2 Democracy: no small subset of operators dominates.- 3.5.3 Lessons of this chapter.- 4 Systems engineering.- 4.1 Interactive and target vision systems.- 4.2 Interactive vision systems, general principles.- 4.2.1 Speed of operation.- 4.2.2 Communication between an IVS and its user.- 4.2.3 Image and text displays.- 4.2.4 Command-line interfaces.- 4.2.5 How many images do we need to store in RAM?.- 4.2.6 How many images do we need to display?.- 4.3 Prolog image processing (PIP).- 4.3.1 Basic command structure.- 4.3.2 Dialog box.- 4.3.3 Pull-down menus.- 4.3.4 Extending the pull-down menus.- 4.3.5 Command keys.- 4.3.6 Journal window.- 4.3.7 Natural language input via speech.- 4.3.8 Speech output.- 4.3.9 Cursor.- 4.3.10 On-line documentation.- 4.3.11 Generating test images.- 4.3.12 PIP is not just an image-processing system.- 4.4 Advanced aspects of PIP.- 4.4.1 Programmable color filter.- 4.4.2 Mathematical morphology.- 4.4.3 Multiple-image-processing paradigms.- 4.4.4 Image stack and backtracking.- 4.4.5 Programming generic algorithms.- 4.4.6 Batch processing of images.- 4.4.7 Simulating a tine-scan camera.- 4.4.8 Range maps.- 4.4.9 Processing image sequences.- 4.4.10 Interfacing PIP to the World Wide Web.- 4.4.11 Controlling external devices.- 4.5 Windows image processing (WIP).- 4.6 Web-based image processing (CIP).- 4.7 Target (factory floor) vision systems.- 4.8 Concluding remarks.- 5 Algorithms and architectures for fast execution.- 5.1 Classification of operations.- 5.2 Implementation of monadic pixel-by-pixel operations.- 5.3 Implementation of dyadic pixel-by-pixel operations.- 5.4 Implementation of monadic neighborhood operations.- 5.5 Implementation of monadic global operations.- 5.6 SKIPSM - a powerful implementation paradigm.- 5.6.1 SKIPSM fundamentals.- 5.6.2 SKIPSM example.- 5.6.3 SKIPSM example.- 5.6.4 Additional comments on SKIPSM implementations.- 5.7 Image-processing architectures.- 5.8 Systems with random access to image memory.- 5.8.1 Systems based on personal computers or workstations.- 5.8.2 Systems based on bit-slice processors.- 5.8.3 Systems based on multiple random-access processors.- 3.9 Systems with sequential image memory access only.- 5.9.1 Classification of operations needed for inspection.- 5.9.2 Pipeline Systems.- 5.9.3 Single-board system capable of many operations in one pass.- 5.9.4 Hardware implementafions of SKIPSM.- 5.10 Systems for continuous web-based processing.- 6 Adding intelligence.- 6.1 Preliminary remarks.- 6.1.1 Basic assumptions.- 6.2 Implementing image-processing operators.- 6.3 Very Simple Prologs+ (VSP).- 6.3.1 Defining the # Operator.- 6.3.2 Device Control.- 6.3.3 VSP Control Software.- 6.4 PIP.- 6.4.1 System considerations.- 6.4.2 Why not implement Prolog+ commands directly?.- 6.4.3 Infrastructure.- 6.4.4 Storing, displaying, and manipulating images.- 6.4.5 Prolog-C interface.- 6.4.6 PIP infrastructure.- 6-4.7 Defining infrastructure predicates.- 6.4.8 Implementing pip's basic commands.- 6.5 WIP.- 6.5.1 WIP design philosophy.- 6.5.2 Host application.- 6.5.3 Command line function.- 6.5.4 Parser.- 6.5.5 Calling function.- 6.5.6 Interface function.- 6.5.7 Image function.- 6.5.8 Returning results and errors.- 6.6 Concluding remarks.- 7 Vision systems on the Internet.- 7.1 Stand-alone and networked systems.- 7.2 Java.- 7.2.1 Platform independence.- 7.2.2 Applets, applications, and servlets.- 7.2.3 Security.- 7.2.4 Speed.- 7.2.5 Interactive vision systems in Java.- 7.3 Remotely-Operated Prototyping Environment (ROPE).- 7.3.1 What ROPE does.- 7.3.2 Assistant.- 7.3.3 Vision engineers should avoid travel.- 7.3.4 Current version of ROPE.- 7.3.5 Digitizing images.- 7.3.6 Java Interface to the Flexible Inspection Cell (JIFIC).- 7.3.7 Other features of ROPE.- 7.4 CIP.- 7.4.1 Structure and operation of CIP.- 7.5 Remarks.- 8 Visual programming for machine vision.- 8.1 Design outline.- 8.1.1 Graphical user interface (GUI).- 8.1.2 Object-oriented programming.- 8.1.3 lava image handling.- 8.1.4 Image-processing strategy.- 8.2 Data types.- 8.2.1 Image.- 8.2.2 Integer.- 8.2.3 Double.- 8.2.4 Boolean.- 8.2.5 String.- 8.2.6 Integer array.- 8.3 Nonlinear feedback blocks.- 8.3.1 Feedback.- 8.3.2 FOR loop.- 8.3.3 IF ELSE.- 8.3.4 Nesting.- 8.4 Visual programming environment.- 8.4.1 Interpretation of graphics files.- 8.4.2 Plug-in-and-play architecture.- 8.5 Image viewer and tools.- 8.5.1 Horizontal and vertical scans.- 8.5.2 Histograms.- 8.5.3 Pseudocolor tables.- 8.5.4 3-D profile viewer.- 8.6 Sample problems.- 8.6.1 Low-level programming.- 8.6.2 High-level programming.- 8.6.3 Convolution.- 8.6.4 Fourier transform.- 8.6.5 Isolate the largest item in the field of view.- 8.6.6 Character detection using the N-tuple operator.- 8.7 Summary.- 9 Application case studies.- 9.1 Preliminary remarks.- 9.2 Taking a broad view.- 9.2.1 Automobile connecting rod (conrod).- 9.2.2 Coffee beans.- 9.2.3 Table place-setting.- 9.2.4 Hydraulics manifold.- 9.2.5 HydrauHcs cylinder for automobile brake system.- 9.2.6 Electrical connection block.- 9.2.7 Electric light bulb.- 9.2.8 Analysis of industrial X-rays.- 9.2.9 Highly variable objects (food and natural products).- 9.3 Cracks in ferrous components.- 9.4 Aerosol spray cone.- 9.5 Glass vial.- 9.6 Coin.- 9.7 Metal grid.- 9.8 Toroidal metal component.- 9.9 Mains power plug (X-ray).- 9.10 Conclusions.- 10 Final remarks.- 10.1 Interactive prototyping systems.- 10.2 Target vision systems.- 10.3 Design tools.- 10.4 Networked systems.- 10.5 Systems integration.- 10.6 Algorithms and heuristics.- 10.7 Concluding comments.- Appendix A Programmable color filter.- Representation of color.- Color triangle.- Mapping RGB to HSI.- Programmable color filter (PCF).- Software.- Appendix B A brief introduction to Prolog.- Prolog is different.- Declarative programming.- Facts.- Simple queries.- Rules.- Queries involving rules.- Backtracking and instantiation.- Recursion.- Lists.- Other features.- Further reading.- Appendix C PIP commands and their implementation.- References.- Further reading.