Pattern Recognition and Image Processing in C++

I Introductions.- 1 Pattern Recognition.- 1.1 Images and Sound.- 1.2 Applications of Pattern Recognition.- 1.3 Environment, Problem Domain, and Patterns.- 1.4 Characterization of Pattern Recognition.- 1.5 Recording of Speech Signals.- 1.6 Video Cameras and Projections.- 1.7 From Continuous to Digital Signals.- 1.8 Sampling Theorem in Practice.- 1.9 Visualization and Sound Generation.- 2 From C to C++.- 2.1 Syntax Notation.- 2.2 Principle of C++ Compilation.- 2.3 Function Calls and Arguments.- 2.4 Declaration and Definition of Variables.- 2.5 Unix-File Access via Standard Functions.- 2.6 Formatted Input and Output.- 2.7 Main Program.- 2.8 Preprocessor Directives.- 2.9 Conditional Compilation.- 3 Software Development.- 3.1 Software for Pattern Recognition.- 3.2 Principles of Software Development.- 3.3 Modular and Structured Programming.- 3.4 Comments and Program Layout.- 3.5 Documentation.- 3.6 Teamwork.- 3.7 Efficiency.- 3.8 Tools for Software Development with Unix.- 3.9 PUMA.- 4 Expressions, Statements, Functions.- 4.1 Instructions and Expressions.- 4.2 Logical Values and Conditionals.- 4.3 Function Definition.- 4.4 Loops.- 4.5 Declarations and Scope.- 4.6 Switches.- 4.7 Linkage.- 4.8 Programming with Modules.- 4.9 Control Structures.- 5 Classification and Pattern Analysis.- 5.1 Classification.- 5.2 Preprocessing.- 5.3 Feature Extraction.- 5.4 Analysis.- 5.5 Image Segmentation.- 5.6 Speech Segmentation.- 5.7 Pattern Understanding.- 5.8 Active Vision and Real Time Processing.- 5.9 Top-Level Loop for Speech Analysis.- 6 Arrays and Pointers.- 6.1 Vectors and Matrices.- 6.2 Pointers.- 6.3 Vectors vs. Pointers.- 6.4 Vector Initialization.- 6.5 Strings.- 6.6 Pointers Operations and Allocation.- 6.7 Pointer and Array Arguments.- 6.8 Pointer to Pointer.- 6.9 Main Function Arguments.- 7 Statistics for Pattern Recognition.- 7.1 Axioms.- 7.2 Discrete Random Variables.- 7.3 Continuous Random Variables.- 7.4 Mean and Variance.- 7.5 Moments of a Distribution.- 7.6 Random Vectors.- 7.7 Statistical Features and Entropy.- 7.8 Signal-to-Noise Ratio.- 7.9 Histograms.- 8 C++ as a better C.- 8.1 Type Declaration.- 8.2 Type Conversion for Pointers.- 8.3 Bit- and Shift-Operations.- 8.4 Type Specifiers and Variable Declaration.- 8.5 Type-Safe Linkage.- 8.6 Overloaded Function Names.- 8.7 Return Value and Arguments.- 8.8 Macros and Inline Functions.- 8.9 Function Pointers.- II Object-Oriented Pattern Analysis.- 9 Object-Oriented Programming.- 9.1 Object-Oriented Software Techniques.- 9.2 Basic Concepts.- 9.3 Data Abstraction and Modules.- 9.4 Inheritance.- 9.5 Abstract Classes.- 9.6 Object-Oriented Classification.- 9.7 Polymorphism.- 9.8 Other Object-Oriented Concepts.- 9.9 Class Libraries.- 10 Classes in C++.- 10.1 Structures.- 10.2 Methods and ADT's.- 10.3 Class Declarations.- 10.4 Object Construction.- 10.5 Destruction of Objects.- 10.6 Overloaded Operators.- 10.7 Advanced Methods and Constructors.- 10.8 Vector Class.- 10.9 Class Design.- 11 Intensity Images.- 11.1 Array Class.- 11.2 Templates in C++.- 11.3 Images.- 11.4 External Data Formats.- 11.5 Binary Images.- 11.6 Color Images.- 11.7 Sub Images.- 11.8 Image Transformation and Registration.- 11.9 Neighborhood.- 12 Inheritance in C++-Classes.- 12.1 Motivation and Syntax.- 12.2 Base Class Access.- 12.3 Construction and Destruction.- 12.4 Pointer to Objects.- 12.5 Virtual Functions.- 12.6 Abstract Classes.- 12.7 Image Class Hierarchy.- 12.8 Multiple Inheritance.- 12.9 Implementation Issues.- 13 Edge Detection and Edge Images.- 13.1 Motivation.- 13.2 Strategies.- 13.3 Discrete Derivative of the Intensity.- 13.4 Sobel and Prewitt Operator.- 13.5 Bit Fields in C++.- 13.6 Unions in C++.- 13.7 Edge Class.- 13.8 Edge Images.- 13.9 Color Edge Operators.- 14 Class Libraries.- 14.1 Stream Input and Output.- 14.2 NIH Class Library.- 14.3 Dynamic Class Descriptions.- 14.4 Static Class Members.- 14.5 Input and Output for Objects.- 14.6 Strings.- 14.7 Container Classes.- 14.8 Time and Date.- 14.9 More Classes.- 15 Hierarchy of Picture Processing Objects.- 15.1 General Structure.- 15.2 Hippos Object.- 15.3 Images and Matrices.- 15.4 Chain Code Class.- 15.5 Enumerations and Scope Resolution.- 15.6 Polygonal Representation.- 15.7 Atomic Objects.- 15.8 Segmentation Objects.- 15.9 External Representation.- 16 Spectral Features and Speech Processing.- 16.1 Fourier Series and Fourier Transform.- 16.2 Discrete Fourier Transform.- 16.3 Fast Fourier Transform.- 16.4 2D Fourier Transform.- 16.5 Short time Fourier analysis.- 16.6 Linear Predictive Coding.- 16.7 Dynamic Time Warping.- 16.8 Hidden Markov Models.- 16.9 Different Types of Hidden Markov Modells.- III Pattern Recognition Algorithms.- 17 An Image Analysis System.- 17.1 Data Flow.- 17.2 Design of ANIMALS.- 17.3 XDR.- 17.4 Display and Capture.- 17.5 Graphical User Interfaces.- 17.6 Geometric Distortions.- 17.7 Polymorphic image processing.- 17.8 Efficiency.- 17.9 Image Segmentation Program.- 18 Synthetic Signals and Images.- 18.1 Synthetic Sound.- 18.2 Geometric Patterns.- 18.3 Pixel Noise.- 18.4 Gaussian Noise.- 18.5 Salt-and-Pepper Noise.- 18.6 Different Views of a 3D Polyhedral Object.- 18.7 Digits and Letters.- 18.8 Single Stereo Images.- 18.9 Spectrogram.- 19 Filtering and Smoothing Signals.- 19.1 Mean-Filter and Gaussian-Filter.- 19.2 Median-Filter.- 19.3 Smoothed Median-Filter.- 19.4 Edge Preserving Smoothing.- 19.5 K-Nearest Neighbor Averaging.- 19.6 Conditional Average Filter.- 19.7 Linear Reconstruction.- 19.8 Elimination of Noisy Image Rows.- 19.9 Resolution Hierarchies.- 20 Histogram Algorithms.- 20.1 Discriminant and Least Squares Threshold.- 20.2 Histogram Entropy Thresholding.- 20.3 Multithresholding.- 20.4 Local Histogram Equalization.- 20.5 Lookup Table Transformation.- 20.6 A Class for Histograms.- 21 Edge Images.- 21.1 Robert's Cross.- 21.2 Second Derivative.- 21.3 Edge Model Masks.- 21.4 Alternative Methods.- 21.5 Thinning of Edge Images.- 21.6 Edge Thresholding.- 21.7 Non Maxima Suppression.- 21.8 Non Maxima Absorption.- 21.9 Class Edge Revisited.- 22 Line Detection Algorithms.- 22.1 Line Detection.- 22.2 Local Connectivity.- 22.3 Hysteresis Thresholds.- 22.4 Closing of Gaps.- 22.5 Zero crossings in Laplace-Images.- 22.6 Hough Transform.- 22.7 Canny Line Detection.- 22.8 Shen and Castan.- 22.9 Representation as Segmentation Objects.- 23 Chain Codes.- 23.1 Length of a Chain.- 23.2 Smoothing.- 23.3 Digital Linear Lines.- 23.4 Similarity.- 23.5 Intersections.- 23.6 Rotation.- 23.7 Conversion.- IV Appendix.- A Basics of C++.- A.1 History.- A.2 Identifier and Constants.- A.3 Basis Data Types in C and C++.- B Software Development Tools.- B.1 Groups and ID's with Unix.- B.2 Program Building with make.- B.3 The Use of Libraries.- B.4 Version and Access Control with rcs.- C Source Codes and Tools.- C.1 List of Tools.- C.2 How to get the sources.- C.3 X11.- C.4 Slides.- C.5 Addresses.- C.6 Headers and Source Files.- C.7 Dummy Definitions.- C.7.1 Listing of animals/dummy/Dictionary.h.- C.7.2 Listing of animals/dummy/OIOxdr.h.- C.7.3 Listing of animals/ dummy/Represent.h.- C.7.4 Listing of animals/dummy/SeqCltn.h.- C.7.5 Listing of animals/dummy/Set.h.- C.7.6 Listing of animals/dummy/dummies. C.- References.- Figures.- Tables.- Index for Exercises.

[1]  Roland T. Chin,et al.  Quantitative evaluation of some edge-preserving noise-smoothing techniques , 1983, Comput. Vis. Graph. Image Process..

[2]  M. Nagao,et al.  Edge preserving smoothing , 1979 .

[3]  Olle Seger,et al.  Generalized and Separable Sobel Operators , 1990 .

[4]  Edward H. Adelson,et al.  The Laplacian Pyramid as a Compact Image Code , 1983, IEEE Trans. Commun..

[5]  Andri Ariste,et al.  Pattern analysis and understanding , 1990 .

[6]  Gerald Holzmann,et al.  Beyond Photography: The Digital Darkroom , 1988 .

[7]  Horst Bunke,et al.  Advances In Structural And Syntactic Pattern Recognition , 1993 .

[8]  A. Rosenfeld,et al.  Edge and Curve Detection for Visual Scene Analysis , 1971, IEEE Transactions on Computers.

[9]  Jun Shen,et al.  Further results on the DRF method for edge detection , 1988, [1988 Proceedings] 9th International Conference on Pattern Recognition.

[10]  Alberto Martelli,et al.  An application of heuristic search methods to edge and contour detection , 1976, CACM.

[11]  Jun S. Huang,et al.  Statistical theory of edge detection , 1988, Comput. Vis. Graph. Image Process..

[12]  Yoshiaki Shirai,et al.  Three-Dimensional Computer Vision , 1987, Symbolic Computation.

[13]  Gregory K. Wallace,et al.  Overview of the JPEG (ISO/CCITT) still image compression standard , 1990, Other Conferences.

[14]  Owen Robert Mitchell,et al.  Edge Location to Subpixel Values in Digital Imagery , 1984, IEEE Transactions on Pattern Analysis and Machine Intelligence.

[15]  John M. Prager,et al.  Extracting and Labeling Boundary Segments in Natural Scenes , 1980, IEEE Transactions on Pattern Analysis and Machine Intelligence.

[16]  David Marr,et al.  VISION A Computational Investigation into the Human Representation and Processing of Visual Information , 2009 .

[17]  Alton L. Gilbert,et al.  Finding Edges in Noisy Scenes , 1981, IEEE Transactions on Pattern Analysis and Machine Intelligence.

[18]  Dietrich Paulus Object oriented image segmentation , 1992 .

[19]  Brian Randall,et al.  ALGOL 60 implementation , 1964 .

[20]  P ? ? ? ? ? ? ? % ? ? ? ? , 1991 .

[21]  Elmar Nöth Prosodische Information in der automatischen Spracherkennung: Berechnung und Anwendung , 1991 .

[22]  R A Kirsch,et al.  Computer determination of the constituent structure of biological images. , 1971, Computers and biomedical research, an international journal.

[23]  Nikolaus Schneider Kantenhervorhebung und Kantenverfolgung in der industriellen Bildverarbeitung , 1990 .

[24]  N. Goodman,et al.  Languages of art : an approach to a theory of symbols , 1979 .

[25]  Bjarne Stroustrup,et al.  The C++ programming language (2nd ed.) , 1991 .

[26]  Heinrich Niemann,et al.  Fraktale Dimension der Kontur endoskopisch ermittelter Farbbilder von Geschwüren des Magens , 1993, DAGM-Symposium.

[27]  Didier Le Gall,et al.  MPEG: a video compression standard for multimedia applications , 1991, CACM.

[28]  Manfred H. Hueckel A Local Visual Operator Which Recognizes Edges and Lines , 1973, JACM.

[29]  Lawrence R. Rabiner,et al.  Mathematical foundations of hidden Markov models , 1988 .

[30]  Peter Wegner,et al.  Dimensions of object-based language design , 1987, OOPSLA '87.

[31]  An Luo Helligkeitsbasiertes Rechnersehen zur direkten Ermittlung räumlicher Eigenschaften , 1994 .

[32]  Heinrich Niemann,et al.  Klassifikation von Mustern , 1983 .

[33]  Meilir Page-Jones,et al.  The practical guide to structured systems design , 1980 .

[34]  G. S. Roinson Edge Detection by Compass Gradient Masks , 1989 .

[35]  D. Rubin,et al.  Maximum likelihood from incomplete data via the EM - algorithm plus discussions on the paper , 1977 .

[36]  K. Ramesh Babu,et al.  Linear Feature Extraction and Description , 1979, IJCAI.

[37]  Herbert Freeman,et al.  ANALYSIS AND MANIPULATION OF LINEAL MAP DATA , 1980 .

[38]  Ioannis Pitas,et al.  Parallel Algorithms for Digital Image Processing, Computer Vision and Neural Networks , 1993 .

[39]  J. Canny A Computational Approach to Edge Detection , 1986, IEEE Transactions on Pattern Analysis and Machine Intelligence.

[40]  Rachid Deriche,et al.  Fast algorithms for low-level vision , 1988, [1988 Proceedings] 9th International Conference on Pattern Recognition.

[41]  Thomas S. Huang,et al.  The Effect of Median Filtering on Edge Estimation and Detection , 1987, IEEE Transactions on Pattern Analysis and Machine Intelligence.

[42]  New York Dover,et al.  ON THE CONVERGENCE PROPERTIES OF THE EM ALGORITHM , 1983 .

[43]  Sanjit K. Mitra,et al.  A New Algorithm for Image Edge Extraction Using a Statistical Classifier Approach , 1987, IEEE Transactions on Pattern Analysis and Machine Intelligence.

[44]  Robert M. Haralick,et al.  Context dependent edge detection , 1988, Proceedings CVPR '88: The Computer Society Conference on Computer Vision and Pattern Recognition.

[45]  Siegfried Kunzmann Die Worterkennung in einem Dialogsystem für kontuierlich gesprochene Sprache , 1991 .