Modern Algorithms for Image Processing Computer Imagery by Example Using C# — Vladimir Kovalevsky Modern Algorithms for Image Processing Computer Imagery by Example Using C# Vladimir Kovalevsky Modern Algorithms for Image Processing: Computer Imagery by Example Using C# Vladimir Kovalevsky Berlin, Germany ISBN-13 (pbk): 978-1-4842-4236-0 https://doi.org/10.1007/978-1-4842-4237-7 ISBN-13 (electronic): 978-1-4842-4237-7 Library of Congress Control Number: 2018965475 Copyright © 2019 by Vladimir Kovalevsky This work is subject to copyright All rights are reserved by the Publisher, whether the whole or part of the material is concerned, specifically the rights of translation, reprinting, reuse of illustrations, recitation, broadcasting, reproduction on microfilms or in any other physical way, and transmission or information storage and retrieval, electronic adaptation, computer software, or by similar or dissimilar methodology now known or hereafter developed Trademarked names, logos, and images may appear in this book Rather than use a trademark symbol with every occurrence of a trademarked name, logo, or image we use the names, logos, and images only in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the trademark The use in this publication of trade names, trademarks, service marks, and similar terms, even if they are not identified as such, is not to be taken as an expression of opinion as to whether or not they are subject to proprietary rights While the advice and information in this book are believed to be true and accurate at the date of publication, neither the authors nor the editors nor the publisher can accept any legal responsibility for any errors or omissions that may be made The publisher makes no warranty, express or implied, with respect to the material contained herein Managing Director, Apress Media LLC: Welmoed Spahr Acquisitions Editor: Joan Murray Development Editor: Laura Berendson Coordinating Editor: Jill Balzano Cover image designed by Freepik (www.freepik.com) Distributed to the book trade worldwide by Springer Science+Business Media New York, 233 Spring Street, 6th Floor, New York, NY 10013 Phone 1-800-SPRINGER, fax (201) 348-4505, e-mail orders-ny@springersbm.com, or visit www.springeronline.com Apress Media, LLC is a California LLC and the sole member (owner) is Springer Science + Business Media Finance Inc (SSBM Finance Inc) SSBM Finance Inc is a Delaware corporation For information on translations, please e-mail rights@apress.com, or visit http://www.apress.com/ rights-permissions Apress titles may be purchased in bulk for academic, corporate, or promotional use eBook versions and licenses are also available for most titles For more information, reference our Print and eBook Bulk Sales web page at http://www.apress.com/bulk-sales Any source code or other supplementary material referenced by the author in this book is available to readers on GitHub via the book's product page, located at www.apress.com/9781484242360 For more detailed information, please visit http://www.apress.com/source-code Printed on acid-free paper Dedicated to my wife, Dr Baerbel Kovalevsky Table of Contents About the Author����������������������������������������������������������������������������������������������������� ix Acknowledgments��������������������������������������������������������������������������������������������������� xi Introduction����������������������������������������������������������������������������������������������������������� xiii Part I: Image Processing�������������������������������������������������������������������������������� Chapter 1: Introduction�������������������������������������������������������������������������������������������� Chapter 2: Noise Reduction�������������������������������������������������������������������������������������� The Simplest Filter������������������������������������������������������������������������������������������������������������������������ The Simplest Averaging Filter������������������������������������������������������������������������������������������������������� The Fast Averaging Filter�������������������������������������������������������������������������������������������������������������� The Fast Gaussian Filter������������������������������������������������������������������������������������������������������������� 14 The Median Filter������������������������������������������������������������������������������������������������������������������������ 17 Sigma Filter: The Most Efficient One������������������������������������������������������������������������������������������� 18 Suppression of Impulse Noise���������������������������������������������������������������������������������������������������� 23 Chapter 3: Contrast Enhancement�������������������������������������������������������������������������� 43 Automatic Linear Contrast Enhancement����������������������������������������������������������������������������������� 43 Histogram Equalization��������������������������������������������������������������������������������������������������������������� 45 Measuring the Lightness of Color Images����������������������������������������������������������������������������������� 49 Contrast of Color Images������������������������������������������������������������������������������������������������������������� 52 Manually Controlled Contrast Enhancement������������������������������������������������������������������������������� 53 Chapter 4: Shading Correction with Thresholding�������������������������������������������������� 65 Thresholding the Images������������������������������������������������������������������������������������������������������������ 75 Chapter 5: Project WFshadBinImpulse������������������������������������������������������������������� 81 v Table of Contents Part II: Image Analysis��������������������������������������������������������������������������������� 85 Chapter 6: Edge Detection�������������������������������������������������������������������������������������� 87 Laplacian Operator���������������������������������������������������������������������������������������������������������������������� 87 The Method of Zero Crossing������������������������������������������������������������������������������������������������������ 89 Are Zero Crossings of Laplacian Closed Curves?������������������������������������������������������������������������ 89 How to Eliminate Irrelevant Crossings���������������������������������������������������������������������������������������� 91 Noise Reduction Before Using the Laplacian������������������������������������������������������������������������������ 92 Blur During the Digitization and Extreme Value Filter����������������������������������������������������������������� 93 Fundamental Errors of the Method of Zero Crossing in the Laplacian���������������������������������������� 98 Chapter 7: A New Method of Edge Detection�������������������������������������������������������� 101 Means for Encoding the Edges������������������������������������������������������������������������������������������������� 102 The Idea of an Abstract Cell Complex��������������������������������������������������������������������������������������� 103 A Simple Method of Encoding Edges���������������������������������������������������������������������������������������� 105 Improvements of the Method of Binarized Gradient����������������������������������������������������������������� 107 Further Improvements of the Method of Binarized Gradient����������������������������������������������������� 120 The Edge Detector of Canny������������������������������������������������������������������������������������������������������ 122 Edges in Color Images�������������������������������������������������������������������������������������������������������������� 123 Conclusions������������������������������������������������������������������������������������������������������������������������������� 125 Chapter 8: A New Method of Image Compression������������������������������������������������ 127 Using a Cell Complex for the Encoding of Boundaries�������������������������������������������������������������� 128 Description of the Project WFcompressPal������������������������������������������������������������������������������� 131 The Project WFrestoreLin���������������������������������������������������������������������������������������������������������� 150 Chapter 9: Image Segmentation and Connected Components������������������������������ 167 Segmentation by Quantizing the Colors������������������������������������������������������������������������������������ 168 Connected Components������������������������������������������������������������������������������������������������������������ 168 The Graph Traversal Algorithm and Its Code����������������������������������������������������������������������������� 171 The Pseudo-Code of the Breadth-First Algorithm���������������������������������������������������������������� 172 vi Table of Contents The Approach of Equivalence Classes�������������������������������������������������������������������������������������� 173 The Pseudo-Code of the Root Algorithm����������������������������������������������������������������������������������� 177 The Project WFsegmentAndComp��������������������������������������������������������������������������������������������� 179 Conclusion�������������������������������������������������������������������������������������������������������������������������������� 186 Chapter 10: Straightening Photos of Paintings���������������������������������������������������� 187 The Principle of Straightening�������������������������������������������������������������������������������������������������� 189 Codes of Most Important Methods�������������������������������������������������������������������������������������������� 196 Conclusion�������������������������������������������������������������������������������������������������������������������������������� 203 Chapter 11: Polygonal Approximation of Region Boundaries and Edges������������� 205 The Problem of Polygonal Approximation��������������������������������������������������������������������������������� 205 Schlesinger’s Measure of Similarity of Curves������������������������������������������������������������������������� 206 Statement of the Approximation Problem��������������������������������������������������������������������������� 207 Algorithms for Polygonal Approximation����������������������������������������������������������������������������������� 207 The Split-and-Merge Method���������������������������������������������������������������������������������������������� 208 The Sector Method�������������������������������������������������������������������������������������������������������������� 209 The Improvement of the Sector Method������������������������������������������������������������������������������ 210 Replacing Polygons by Sequences of Arcs and Straight Lines������������������������������������������������� 211 Definitions and the Problem Statement������������������������������������������������������������������������������� 211 The Approximate Solution��������������������������������������������������������������������������������������������������� 212 The Project WFpolyArc�������������������������������������������������������������������������������������������������������������� 217 Methods Used in the Project WFpolyArc������������������������������������������������������������������������������ 218 Precision of the Calculation of the Radii����������������������������������������������������������������������������������� 225 Conclusion�������������������������������������������������������������������������������������������������������������������������������� 226 Chapter 12: Recognition and Measurement of Circular Objects��������������������������� 227 Mathematical Foundation of the Method���������������������������������������������������������������������������������� 228 The Project WFcircleReco��������������������������������������������������������������������������������������������������������� 232 The Form of the Project WFcircleReco�������������������������������������������������������������������������������� 233 vii Table of Contents Chapter 13: Recognition of Bicycles in Traffic������������������������������������������������������ 243 Mathematical Foundation of Ellipse Recognition���������������������������������������������������������������������� 243 The Project WFellipseBike��������������������������������������������������������������������������������������������������������� 247 Another Method of Recognizing the Direction�������������������������������������������������������������������������� 258 Chapter 14: A Computer Model of Cell Differentiation������������������������������������������ 261 Conclusion�������������������������������������������������������������������������������������������������������������������������������� 266 References������������������������������������������������������������������������������������������������������������ 267 Index��������������������������������������������������������������������������������������������������������������������� 269 viii About the Author Vladimir Kovalevsky received his diploma in physics from the Kharkov University (Ukraine), his first doctoral degree in technical sciences from the Central Institute of Metrology (Leningrad), and his second doctoral degree in computer science from the Institute of Cybernetics of the Academy of Sciences of the Ukraine (Kiev) where he headed the Department of Pattern Recognition for more than a decade Vladimir has been living in Germany since 1983 He was a researcher at the Central Institute of Cybernetics of the Academy of Sciences of the GDR, Berlin, a professor of computer science at the University of Applied Sciences Berlin, and a scientific collaborator at the University of Rostock. He has been a visiting researcher at the University of Pennsylvania, a professor at the Manukau Institute of Technology in New Zealand, and a professor at the Chonbuk National University in South Korea He has reviewed for the journals Applied General Topology, Computer Vision and Image Understanding, IEEE Transactions on Pattern Analysis and Machine Intelligence, and others Vladimir has been a plenary speaker at conferences in Europe, the United States, and New Zealand His research interests include digital geometry, digital topology, computer vision, image processing, and pattern recognition He has published four monographs and more than 180 journal and conference papers on image analysis, digital geometry, and digital topology ix Acknowledgments I wish to acknowledge valuable and fruitful discussions with Boris Flach, Reinhard Klette, Ulrich Koethe, Alexander Kovalevsky, Volkmar Miszalok, and Peer Stelldinger These discussions have significantly contributed to this work I would like to express my special appreciation to Alexander V Kovalevsky, who helped significantly as an experienced programmer in the development of my projects xi Chapter 13 Recognition of Bicycles in Traffic Figure 13-5 provides some examples of images with recognized bicycles Figure 13-5. Examples of images with recognized bicycles 260 CHAPTER 14 A Computer Model of Cell Differentiation This chapter does not belong to the area of image processing The reason for including it in this book is the broad and versatile interest circle of the author The topic of this chapter is related to biology One can ask how is it possible that cells of different types are developed during the growth of an organism in spite of the fact that they all have exactly the same deoxyribonucleic acid (DNA) It can be supposed that each cell must obtain some information indicating its position in the growing organism, perhaps some kind of coordinates The DNA must then contain different instructions for the development of cells having different coordinates The coordinates can be produced during the division of cells: A new cell adjacent to an old cell with coordinate set (X, Y, Z) must get the coordinate set in which one of the coordinates of the old cell has been increased or reduced by Which of the three coordinates is changed depends on the direction of the vector from the old cell to the new one Thus the two main ideas of this chapter are that cells must get some kind of coordinates and that DNA instructions specifying the properties of a cell must depend on its coordinates We have developed a project WFcellDivision in which a multicellular organism is modeled by an array Org (organism) of 63 × 63 cells (an odd number is better to exactly define the middle cell) The process of producing a new cell is simulated by specifying and saving its features Each cell can possess the coordinates X and Y as its features, a variable Property (which is a color index), and the array DNA[63×63] as its genetic information A cell is an object of the class CCelln © Vladimir Kovalevsky 2019 V Kovalevsky, Modern Algorithms for Image Processing, https://doi.org/10.1007/978-1-4842-4237-7_14 261 Chapter 14 A Computer Model of Cell Differentiation int const Cwidth=63, Cheight=63; class CCelln { public: int X, Y, Property; unsigned char DNA[Cwidth*Cheight]; } The aim of the project is to simulate the generation of one cell after another and the assignment of a value to the variable Property of each cell The value depends on the coordinates of this cell and on the contents of DNA saved in this cell Directly copying the values of DNA to Properties of all cells of Org is supposed to be impossible It is only possible to copy the DNA from one cell to the neighboring new originating cell and to copy inside the originating cell one certain value from the DNA of the cell to the Property of this cell The aim of the project is to demonstrate that in spite of these limitations, it is possible to assign correct values of Property to all cells of Org Let us describe the functioning of the project The method Form1 begins by defining and initializing the array Org possessing memory for 63 × 63 cells Initializing Org consists of setting the Property and the elements of the array DNA[63×63] of each cell of Org to −1, which means that the cell does not exist Then one of the cells in the middle of the array Org, namely that with the coordinates (31, 31), becomes “filled”: It obtains the coordinates X = 31 and Y = 31 Its array DNA is filled with the color indexes of a small digital Image of 63 × 63 pixels The image has been chosen arbitrarily to demonstrate that concrete content can be assigned to the properties of the cells The content of DNA becomes a copy of a digital image where each element is a color index, a number between and 255 that can be transformed to a color by means of a color table Palette In Palette a color (RED, GREEN, BLUE) is saved for each color index All other cells of the array Org initially have at the coordinates equal to −1 and the array DNA is empty (i.e., it is filled with −1) The method Grow is called next It simulates the growth of the organism while generating coordinates of cells starting with a cell adjacent to the central cell (31, 31) The coordinates are generated in such a way that all originating cells lie in a spiral turning around the central cell During the growth process, more and more cells obtain a copy of the array DNA from one of the neighboring cells They also obtain their coordinates and certain values of Property depending on the content of DNA and of the coordinates of a cell 262 Chapter 14 A Computer Model of Cell Differentiation The Property of the cell with the coordinates (31, 31) obtains the value of a single element of the array DNA (see Figure 14-1), DNA[31, 31], i.e the color index of the pixel (31, 31) Figure 14-1. The image copied to Org[31, 31].DNA The shape of the growing organism is specified by the boundary of the area with the black color assigned to some elements of DNA around the color area representing the growing organism This array contains a color index different from (0, 0, 0) in each element corresponding to a cell that should be present in the organism and an index pointing to (0, 0, 0) (black color) for each element corresponding to a cell that should not be present in the organism A cell of the array Org is filled if it has nonzero coordinates, a value of Property pointing to a color different from (0, 0, 0), and contents of DNA different from -1 When the growth process is started, each cell in the array Org that is adjacent to a filled cell obtains an exact copy of the array DNA that is the same for all cells The coordinates of this cell obtain values differing by from the coordinates of the filled neighbor cell For example, if the new cell lies to the right of a filled cell with coordinates (X, Y) then its X coordinate obtains the value X1 = X + and its Y coordinate Y1 the value Y The new cell obtains the standard copy of the DNA and its Property becomes equal to DNA[X1, Y1] where X1 and Y1 are the coordinates of the new cell 263 Chapter 14 A Computer Model of Cell Differentiation Here is the code for Grow int Grow(CCelln[] Org, int width, int height) { int cnt=0, i, k, x=(width-1)/2, y=(height-1)/2, nCount=1, X, Y; do { for (i=0; i