TRABAJO FIN DE GRADO Sistema Para La Vectorización De Imágenes
Total Page:16
File Type:pdf, Size:1020Kb
UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE INFORMÁTICA GRADO EN INGENIERÍA INFORMÁTICA TECNOLOGÍA ESPECÍFICA DE INGENIERÍA DE COMPUTADORES TRABAJO FIN DE GRADO Sistema para la vectorización de imágenes representadas en mapa de bits Dionisio Moreno Cañas Julio, 2018 UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE INFORMÁTICA Grupo Imaging. Leandro Guijarro Casado Departamento de Matemáticas. José Luis Espinosa Aranda TECNOLOGÍA ESPECÍFICA DE INGENIERÍA DE COMPUTADORES TRABAJO FIN DE GRADO Sistema para la vectorización de imágenes representadas en mapa de bits Autor(a): Dionisio Moreno Cañas Director(a): Leandro Guijarro Casado Director(a): José Luis Espinosa Aranda Julio, 2018 Sistema para la vectorización de imágenes representadas en mapa de bits © Dionisio Moreno Cañas, 2018 El escudo de Informática utilizado por este documento ha sido realizado por P. Moya, D. Villa e I. Díez, su inclusión debe respetar los derechos de autor y las licencias a las que se vea sometido. La copia y distribución de esta obra está permitida en todo el mundo, sin regalías y por cualquier medio, siempre que esta nota sea preservada. Se concede permiso para copiar y distribuir traducciones de este libro desde el español original a otro idioma, siempre que la traducción sea aprobada por el autor del libro y tanto el aviso de copyright como esta nota de permiso, sean preservados en todas las copias. Tribunal: Presidente: Vocal: Secretario: Fecha de defensa: Calificación: Presidente Vocal Secretario Fdo.: Fdo.: Fdo.: Dedicado a mis padres. Resumen n este Trabajo Fin de Grado (TFG) se desarrolla un sistema de vectorización de imágenes E representadas en mapa de bits para la empresa Indra Software Labs. Este sistema pretende ser el inicio de una línea de I+D en relación con el tratamiento de la imagen por computador. Este proceso de estudio y elección de una tecnología se considera clave ya que será la base sobre la que llegar a crear un módulo de tratamiento de imagen vectorial, el cual lleve a Indra a potenciar los objetos de negocio de visión articial. Cabe destacar que se ha profundizado en los formatos y tecnologías opensource, ya que ofrecen un amplio abanico de posibilidades. Los continuos avances en el sector de la visión por computador hacen que surja la necesidad de un procesamiento más abstracto de la información que permita agilizar su tratamiento. Es ahí donde entra en escena la vectorización. Entendemos vectorización como el proceso de transformación en el formato de representación de una imagen, pasando de un mapa de bits a una imagen vectorial. Con la imagen vectorial conseguimos tener mayor precisión en detecciones de objetos, mediciones de defectos y formas, lo que nos lleva a resolver problemáticas reales que existen en muchos casos de negocio en los que Indra tiene repercusión como industria, empresas aseguradoras, sector energético o smart cities. Gracias a esto, el módulo desarrollado tiene un road map de escalabilidad que llevará a Indra a poder afrontar casos de uso que aún no tienen resolución con las técnicas de visión articial basadas en imagen píxel, ni con los diferentes productos de mercado actuales, tales como los sensores que se usan para resolver casos de visión articial en 3D. Tras la investigación y comparación de las opciones estudiadas, se ha seleccionado la librería Potrace como núcleo de nuestro sistema de vectorización. Este sistema tiene como objetivo futuro formar parte de una Application Programming Interface (API) que sea consumible por distintos proyectos actuales y futuros. Palabras clave: Vectorización, imagen vectorial, mapa de bits. ix Abstract his TFG develops a vectorization system of bitmap images for the company Indra Software Labs. TThis system is intended to be the start of a line of I+D in connection with computer image processing. This process of study and choice of a technology is considered key as it will be the basis on which to create a vector image processing module, which will lead Indra to enhance their business possibilities on the articial vision area. It is worth noting that the formats and technologies used have been further developed, as they oer a wide range of possibilities. The continuous advances in the eld of computer vision are creating the necessity of improving the processing of information in order to speed up its treatment. That is where vectorization comes in handy. Vectorization is the process of transforming an image from bitmap format to a determined set of mathematical entities which conform a vector image. With the vector image it will be possible to achieve an improvement on the precision in object detection, defect measurement and shape, which could leads us to solve real problems that exist in many business cases in which Indra has an impact as industry, insurance companies, energy sector or smart cities. Thus, the developed module has a scalability road map that will allow Indra to face use cases that still have no resolution with the articial vision techniques based on pixel image, nor with the dierent current market products, such as sensors used to solve cases of articial vision in 3D. After researching and comparing current options studied, the Potrace library has been selected as the core of our vectorization system. This system is intended to be part of an Application Programming Interface (API) that can be used for several current and future projects. Keywords: Image tracer, vector image, bitmap. xi AGRADECIMIENTOS «Es de bien nacidos ser agradecidos» En primer lugar, agradecer enormemente a mi tutor José Luis toda la atención y disponibilidad prestada, inmejorable. En segundo lugar, a Indra S.L. y al grupo Imaging, por darme la oportunidad de trabajar y aprender en un ambiente que lo favorece. Y por último, y no por ello menos importante, sino todo lo contrario, a mi madre y a mi padre, por facilitarme todo lo que está a su alcance sin ningún tipo de reparo. GRACIAS. Dionisio Moreno Cañas xiii ÍNDICE GENERAL 1 Introducción 31 1.1 Motivación......................................... 32 1.2 Estructura del documento................................. 35 2 Objetivos 37 2.1 Objetivo Principal..................................... 37 2.1.1 Implementación de un algoritmo para la vectorización de imágenes..... 37 2.1.2 Despliegue de un sistema que implemente dicho algoritmo.......... 37 2.1.3 Desarrollo de una API que permita su utilización............... 38 3 Estado del Arte. Antecedentes 39 3.1 Mapa de bits........................................ 40 3.1.1 Modelos de color................................. 41 3.1.2 Formatos de imagen de mapa de bits...................... 42 3.2 Imagen vectorial...................................... 44 3.3 Comparación bit vs vector................................ 46 3.4 Comparación DXF-SVG.................................. 46 3.4.1 Drawing Exchange Format (DXF)........................ 46 3.4.2 Scalable Vector Graphics (SVG)......................... 48 3.4.3 Conclusiones de la comparativa......................... 50 3.5 Vectorización........................................ 51 3.5.1 Procedimientos teóricos. Algoritmos...................... 52 3.5.2 Software de vectorización............................ 54 4 Análisis y selección de las tecnologías 57 4.1 Potrace. PO-lygon TRACE-r................................ 57 4.1.1 MkBitmap. Preprocesamiento........................... 58 4.1.2 Algoritmo de Potrace............................... 63 4.1.3 API......................................... 67 xv xvi ÍNDICE GENERAL 4.2 MSYS2........................................... 73 4.2.1 MinGW...................................... 73 4.2.2 Qt......................................... 74 4.3 Visual Studio 2015..................................... 75 4.4 CMAKE........................................... 75 4.5 Dxib............................................ 75 4.6 OpenCV.......................................... 77 5 Fases de trabajo y metodología 79 5.1 Fases de trabajo...................................... 79 5.2 Medios y metodología de desarrollo........................... 79 5.2.1 Medios Hardware................................. 80 5.2.2 Medios Software................................. 80 5.2.3 Metodología de desarrollo............................ 81 6 Diseño del sistema 83 6.1 Requisitos del diseño................................... 83 6.1.1 Must have..................................... 83 6.1.2 Should have.................................... 83 6.1.3 Could have.................................... 83 6.1.4 Want have..................................... 84 6.2 HITOS........................................... 84 6.2.1 Hito 1....................................... 84 6.2.2 Hito 2....................................... 85 6.2.3 Hito 3....................................... 86 6.2.4 Hito 4....................................... 86 6.3 Arquitectura general.................................... 89 6.3.1 Diagrama UML.................................. 89 6.3.2 Diagrama de secuencia.............................. 90 7 Resultados y casos prácticos 93 7.1 Aplicación de vectorización de imágenes......................... 93 7.2 Sistema cliente-servidor para vectorización de imágenes................ 94 7.3 CASOS PRÁCTICOS.................................... 95 7.3.1 Detección de fallos en cadenas de montaje en el sector de la automoción... 95 7.3.2 Smart Retail. Detección de productos en supermercados............ 99 7.3.3 Detección de formas y patrones.......................... 99 7.3.4 Detección de objetos en entornos no controlados...............