UNIVERSIDAD SIMÓN BOLÍVAR DECANATO DE ESTUDIOS PROFESIONALES COORDINACIÓN DE TECNOLOGÍA E INGENIERÍA ELECTRÓNICA DISEÑO DE UN SISTEMA DE ADQUISICIÓN Y PROCESAMIENTO DE IMÁGENES CON LABVIEW Por: Leonardo Darı́o González Alarcón PASANTÍA LARGA Presentado ante la Ilustre Universidad Simón Bolı́var como requisito parcial para optar al tı́tulo de Ingeniero Electrónico Sartenejas, Junio de 2015 UNIVERSIDAD SIMÓN BOLÍVAR DECANATO DE ESTUDIOS PROFESIONALES COORDINACIÓN DE TECNOLOGÍA E INGENIERÍA ELECTRÓNICA DISEÑO DE UN SISTEMA DE ADQUISICIÓN Y PROCESAMIENTO DE IMÁGENES CON LABVIEW Por: Leonardo Darı́o González Alarcón Realizado con asesorı́a de: Tutor Académico: Gerardo Fernández Tutor Industrial: Oscar Garzón PASANTÍA LARGA Presentado ante la Ilustre Universidad Simón Bolı́var como requisito parcial para optar al tı́tulo de Ingeniero Electrónico Sartenejas, Junio de 2015 UNIVERSIDAD SIMÓN BOLÍVAR DECANATO DE ESTUDIOS PROFESIONALES COORDINACIÓN DE TECNOLOGÍA E INGENIERÍA ELECTRÓNICA DISEÑO DE UN SISTEMA DE ADQUISICIÓN Y PROCESAMIENTO DE IMÁGENES CON LABVIEW INFORME FINAL DE CURSOS DE COOPERACIÓN TÉNICA, PRESENTADO POR: Leonardo Darı́o González Alarcón RESUMEN Los sistemas de procesamiento de imágenes son necesarios para la optimización de espacio y tiempo de análisis de los datos. Con este proyecto se pretende incursionar en los sistemas de procesamiento de imágenes para periscopio, los cuales servirán de herramienta fundamental para ser utilizados por la Armada de Venezuela. El sistema de visión se dispone como una herramienta para la adquisición y manipulación de imágenes de barcos en un mismo sistema, todo ello a través de una interfaz sencilla desplegada en un panel táctil para el operador. Con el objetivo de ofrecer un producto de alta calidad se plantea la utilización de equipos de última generación para servir en un sistema stand-alone para el procesamiento y adquisición de imágenes dentro de un submarino. El software de adquisición, procesamiento y manejo de imágenes fue diseñado con NI LabVIEW y se implementó una base de datos en SQL con PostgreSQL. El presente informe tiene como objetivo exponer los procesos de análisis, diseño e implantación de las funcionalidades que ofrece el sistema, ası́ como de las tecnologı́as utilizadas. Como resultado de los procesos mencionados, se logró a través de NI LabVIEW generar una solución capaz de adquirir imágenes y video para su almacenamiento en una base de datos. Además se implemento un detector básico de objetos en la escena marı́tima, utilizando K-means. Palabras Claves: Adquisición de imágenes en tiempo real, sistemas de visión, detección automática, segmentación de imágenes. iv Índice general Resumen IV Índice general V Índice de tablas VIII Índice de figuras IX Introducción 1 Lista de Abreviaturas 3 1 Entorno empresarial 1.1 Descripción de la empresa 1.2 Misión . . . . . . . . . . . 1.3 Visión . . . . . . . . . . . 1.4 Estructura organizacional . . . . 4 4 4 5 5 . . . . . . . . . 6 6 7 8 9 9 10 11 12 13 . . . . . . . . . . . . 2 Marco teórico y tecnológico 2.1 Periscopio . . . . . . . . . . . . 2.2 Imágenes digitales . . . . . . . . 2.2.1 Espacios de color . . . . 2.2.1.1 RGB . . . . . . 2.2.1.2 HSL . . . . . . 2.2.1.3 CIELAB . . . . 2.2.2 Sensores de imagen . . . 2.2.2.1 Filtro de Bayer 2.2.3 Adquisición de imágenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3 2.4 2.2.3.1 USB3 Vision . . . . . . . . . . . 2.2.4 Formatos y compresión de imágenes . . . . 2.2.4.1 JPEG . . . . . . . . . . . . . . . 2.2.4.2 TIFF . . . . . . . . . . . . . . . 2.2.5 Procesamiento de imágenes digitales . . . 2.2.5.1 Filtrado en el dominio espacial . 2.2.5.2 Operadores morfológicos . . . . . 2.2.5.3 Envolvente convexa . . . . . . . . 2.2.5.4 Segmentación mediante K-means 2.2.5.5 Mediciones de partı́culas . . . . . 2.2.5.6 Transformada de Hough . . . . . Video digital . . . . . . . . . . . . . . . . . . . . . 2.3.1 Formatos y códecs de video . . . . . . . . 2.3.1.1 AVI . . . . . . . . . . . . . . . . 2.3.1.2 Códec Lagarith . . . . . . . . . . Tecnologı́as y herramientas utilizadas . . . . . . . 2.4.1 NI LabVIEW . . . . . . . . . . . . . . . . 2.4.1.1 NI Vision Development . . . . . 2.4.1.2 Database and connectivity toolkit 2.4.1.3 Machine learning toolkit . . . . . 2.4.2 PostgreSQL . . . . . . . . . . . . . . . . . 3 Desarrollo del proyecto 3.1 Arquitectura de hardware . . . . . . . . . . 3.2 Arquitectura de software . . . . . . . . . . . 3.2.1 Sistema de adquisición . . . . . . . . 3.2.1.1 Almacenado de imágenes . 3.2.1.2 Adquisición de video . . . . 3.2.2 Procesamiento de imágenes . . . . . 3.2.2.1 Enmascaramiento . . . . . . 3.2.2.2 Definición de ROI . . . . . 3.2.2.3 Pseudo-corrección de campo 3.2.2.4 Mejora de contraste . . . . 3.2.2.5 Filtrado de ruido . . . . . . vi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . plano . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 14 14 14 15 15 17 19 20 21 22 23 24 24 24 25 25 25 25 26 26 . . . . . . . . . . . 27 27 29 30 32 32 34 37 37 39 41 42 . . . . . . . . . . 43 44 46 47 47 50 50 51 54 55 4 Pruebas y resultados 4.1 Resultados de adquisición . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 Resultados del procesamiento de imágenes . . . . . . . . . . . . . . . . . . . 56 57 60 5 Conclusiones y recomendaciones 65 Bibliografı́a 67 3.2.3 3.2.4 3.2.2.6 Detección básica de horizonte . . . . . . 3.2.2.7 Segmentación de la imagen . . . . . . . 3.2.2.8 Filtrado de partı́culas . . . . . . . . . . Base de datos . . . . . . . . . . . . . . . . . . . . 3.2.3.1 Diseño . . . . . . . . . . . . . . . . . . . 3.2.3.2 Implementación . . . . . . . . . . . . . . Diseño de interfaz HMI . . . . . . . . . . . . . . . 3.2.4.1 Estructura . . . . . . . . . . . . . . . . 3.2.4.2 Administrador de marcadores . . . . . . 3.2.4.3 Módulo de envı́o de correos electrónicos vii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Índice de tablas 3.1 3.2 3.3 Caracterı́sticas de la cámara elegida para el sistema de visión. . . . . . . . . Caracterı́sticas del computador elegido para el sistema de visión. . . . . . . Diccionario de base de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 29 49 4.1 4.2 4.3 4.4 4.5 4.6 4.7 Caracterı́sticas del sistema utilizado para la simulación. . Tabla comparativa de formatos de imágenes . . . . . . . . Resultados de adquisición de video. . . . . . . . . . . . . . Tamaño de archivos para diferentes tiempos de adquisición. Eficacia del detector de horizonte . . . . . . . . . . . . . . Matriz de detección (Matching matrix ). . . . . . . . . . . . Resultados de detección detallados. . . . . . . . . . . . . . 56 59 60 60 61 63 63 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Índice de figuras 1.1 Estructura organizacional de Alter-info. . . . . . . . . . . . . . . . . . . . . . 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 2.10 2.11 Funcionamiento básico de un periscopio de espejos paralelos. . . . Ilustración de la propiedad aditiva de RGB. . . . . . . . . . . . . Representación cilı́ndrica del espacio HSL. . . . . . . . . . . . . . Gama de colores de CIELAB a una luminosidad del 75 %. . . . . . Patrón de filtro de Bayer. . . . . . . . . . . . . . . . . . . . . . . Convolución de una imagen. . . . . . . . . . . . . . . . . . . . . . Convolución de una imagen. . . . . . . . . . . . . . . . . . . . . . Ejemplos de operadores básicos morfológicos sobre una partı́cula. Envolvente convexa. . . . . . . . . . . . . . . . . . . . . . . . . . Pasos del algoritmo K-means. . . . . . . . . . . . . . . . . . . . . Espacio de Hough. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 9 10 11 12 16 17 19 20 21 23 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.12 Estructura del hardware diseñado. . . . . . . . . . . . . . . . . Jerarquı́a de rutinas creadas. . . . . . . . . . . . . . . . . . . . Diagrama de flujo de adquisición. . . . . . . . . . . . . . . . . Subrutina para almacenado de imágenes. . . . . . . . . . . . . Subrutina para almacenado de video. . . . . . . . . . . . . . . Diagrama de flujo del procesamiento empleado . . . . . . . . . Diagrama de bloques del enmascarado. . . . . . . . . . . . . . Enmascaramiento de visor del periscopio. . . . . . . . . . . . . Diagrama de bloques para la definición de ROI . . . . . . . . . ROI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Diagrama de bloques para pseudo-corrección de campo plano. Campo correctivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 30 31 32 34 36 37 37 38 38 39 40 . . . . . . . . . . . . . . . . . . . . . . . . 5 3.13 3.14 3.15 3.16 3.17 3.18 3.19 3.20 3.21 3.22 3.23 3.24 3.25 3.26 3.27 3.28 3.29 3.30 Pseudo correción de campo plano . . . . . . . . . Diagrama de bloques para mejora de contraste. . Mejora de contraste. . . . . . . . . . . . . . . . . Diagrama de bloques para filtrado de ruido. . . . Filtro de mediana. . . . . . . . . . . . . . . . . . Diagrama de bloques para detección de horizonte. Detección básica de horizonte. . . . . . . . . . . . Diagrama de bloques de segmentación. . . . . . . Segmentación utilizando K-means. . . . . . . . . . Diagrama de análisis morfológico utilizado. . . . . Posibles barcos detectados. . . . . . . . . . . . . . Diagrama entidad-relación de la base de datos . . Eventos de HMI. . . . . . . . . . . . . . . . . . . Pantalla de adquisición del sistema . . . . . . . . Pantalla del administrador de imágenes. . . . . . Pantalla de procesamiento del sistema . . . . . . . Pantalla del módulo de correo electrónico . . . . . Pantalla del módulo de correo electrónico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 41 41 42 43 43 44 45 46 46 47 48 51 52 53 53 54 55 4.1 4.2 4.3 4.4 Cuadros por segundo mostrados en el visor. . . . Tasa de cuadros durante adquisiciones de video. . Ejemplo de procesamiento a una imagen de barco. Distribución de pı́xeles para componente L y A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 59 62 62 x Introducción En la actualidad contamos con una avanzada tecnologı́a en cuanto a software y hardware para el procesamiento de imágenes. Esta área del análisis de señales digitales se ha visto potenciada en los últimos años por las capacidades cada vez mayores que tenemos de procesamiento computacional. El sistema de adquisición y procesamiento de imágenes tiene el propósito de satisfacer la necesidad que tiene la Armada de Venezuela, de un sistema integrado al visor de periscopio para la realización de registros de imágenes. Actualmente las imágenes son capturadas por una cámara comercial de alta resolución, que además no se encuentra fija en el visor del periscopio. Por ello, pese a la resolución de la cámara, las imágenes tomadas son de mala calidad, con presencia de ruido y un pobre despliegue de color. Se plantea ası́ la implantación de un sistema de visión integrando no sólo la adquisición de las imágenes, sino también su posterior procesamiento. Permitiendo al submarino adquirir información táctica de la escena marı́tima. El presente proyecto, busca solucionar los problemas actuales de adquisición ofreciendo más flexibilidad y usabilidad del sistema, ası́ como también una incursión en el procesamiento de imágenes para periscopio. 2 Objetivo general Diseñar una solución basada en el software LabView que permita almacenar y procesar las imágenes adquiridas a través de una cámara de alta resolución. Objetivos especı́ficos Investigar las opciones disponibles para la adquisición y procesamiento de imágenes. Diseñar el software y hardware de la herramienta de adquisición y procesamiento de imágenes. Desarrollar y programar la herramienta de adquisición y procesamiento de imágenes. Implementar un registro de las imágenes que permita generar una base de datos de las imágenes guardadas. Desarrollar una interfaz humano máquina (HMI). Implementar un módulo para el envı́o de correos electrónicos con las imágenes capturadas. Realizar pruebas a la herramienta desarrollada con imágenes reales. Lista de Abreviaturas ADO Objetos de datos ActiveX, del inglés: ActiveX Data Objects. API Interfaz de programación de aplicaciones del inglés: Application Programming Interface. AVI Siglas del inglés: Audio Video Interleave. DSN Nombre de origen de datos, del inglés: Data Source Name. EDA Arquitectura dirigida por eventos, del inglés: Event Driven Architecture. FPS Fotogramas o cuadros por segundo, del inglés: Frames per second. HMI Interfaz humano máquina, del inglés: Human Computer Interface. JPEG Grupo conjunto de expertos en fotografı́a, del inglés: Joint Photographic Experts Groupl. ODBC Conectividad abierta de base de datos, del inglés: Open DataBase Connectivity. ORDBMS Sistema de administración de base de datos objeto-relacional, del inglés: Object-Relational Database Management System. ROI Región de interés, del inglés: Region of Interest. SQL Lenguaje de consulta estructurado, del inglés: Structured Query Language. TIFF Siglas del inglés: Tagged Image File Format. Capı́tulo 1 Entorno empresarial 1.1 Descripción de la empresa Alternativas Informáticas Alterinfo C.A., es una empresa que se dedica a la ejecución de proyectos y servicios tecnológicos. Se encuentra constituida por un grupo de profesionales dedicados a dimensionar y construir soluciones de tecnologı́a en automatización y sistemas de control industrial, electrónica de potencia, integración de sistemas, y desarrollo de aplicaciones informáticas con seguridad basada en certificados y firmas electrónicas. 1.2 Misión Contribuir de manera eficiente a la solución de los problemas tecnológicos de sus clientes en las áreas que les compete, con un equipo humano altamente calificado y comprometido con la razón de ser de la Empresa; todo ello, bajo criterios de mejoramiento continuo de la calidad, productividad y excelencia, con un compromiso ético hacia las personas, clientes e instituciones con las cuales se relacione. 5 1.3 Visión Consolidarse como la mayor empresa latinoamericana de consultorı́a técnica y de integración de sistemas tanto en el área civil como militar, reconocida por la capacidad y profesionalismo de sus recursos humanos, por el impacto nacional e internacional de sus proyectos y por la calidad de los servicios que presta. 1.4 Estructura organizacional La estructura organizacional de la empresa se muestra en la figura 1.1. El pasante de ingenierı́a electrónica ocupo un puesto dentro del área de proyectos de la dirección de gestión técnica. Figura 1.1: Estructura organizacional de Alter-info. Capı́tulo 2 Marco teórico y tecnológico El siguiente capı́tulo tiene como finalidad presentar en detalle aquellos conceptos que son necesarios para la correcta comprensión del proyecto de pasantı́a. Estos conceptos abarcan tanto definiciones utilizadas en el proyecto, ası́ como tecnologı́as empleadas en el desarrollo de la solución planteada. 2.1 Periscopio El periscopio representa los ojos de un submarino. Es un instrumento utilizado para observar objetivos desde una posición camuflada o evitando la exposición del observador. En su forma más simple consiste de un tubo con un juego de espejos en los extremos, paralelos y en un ángulo de 45 grados respecto a la lı́nea que los une, como se muestra en la figura 2.1. 7 Figura 2.1: Funcionamiento básico de un periscopio de espejos paralelos. La principal función de un periscopio es dar a un operador una imagen del horizonte circundante a la nave, mientras esta permanece sumergida. Para ello es necesario que el tubo del periscopio sea lo suficientemente largo para alcanzar la superficie. También es importante que la parte del periscopio que se mantiene sobre el agua sea tan pequeña e imperceptible como sea posible, dándole ası́ al periscopio su caracterı́stica forma larga y angosta [1]. Los periscopios de submarinos suelen tener un visor principal y uno auxiliar, el último es utilizado comúnmente en conjunto con una cámara, para adquisición de imágenes. 2.2 Imágenes digitales Las imágenes digitales pueden ser principalmente de dos tipos, gráficos vectoriales o rasterizados, también llamados mapas de bits. Al hablar de imágenes digitales de ahora en adelante, nos estaremos refiriendo a estos últimos. Las mapas de bits pueden ser definidos como una función bidimensional f (x, y), donde 8 las coordenadas (x, y) son coordenadas espaciales del plano. La amplitud en un determinado punto de ese plano es a lo que llamamos intensidad, para una imagen monocrómatica esta amplitud representarı́a un tono de gris [2]. Este concepto se puede generalizar para imágenes a color. Todas las imágenes digitales están compuestas por un número finito de elementos fundamentales, llamados pı́xeles, cada uno de ellos con una posición y valor dentro del plano. Los pı́xeles guardan la información de color de la imagen en un determinado punto [3]. Una imagen no es más que un arreglo matricial o grilla de pı́xeles, donde su tamaño está definido por el número de pı́xeles de ancho (width) y alto (height) que la componen. Un pı́xel sólo puede representar una cantidad lı́mitada de colores, ello se debe a que cada pı́xel no es más que una representación númerica de color, y esta se ve limitada por la cantidad de bits utilizados para representarla, a esta resolución se le llama profundidad de color (del inglés color depth). En la mayorı́a de las imagenes a color, cada pı́xel es representado por tres valores numéricos. Una foto tomada por una cámara digital, por ejemplo, tendrá para un determinado pı́xel, tres valores distintos o canales, tı́picamente rojo, verde y azul. Cada canal contiene la misma cantidad de pı́xeles que la imagen completa, pero sólo representa la información de un determinado color. Existen distintas formas de representar estos canales, para distintos propósitos. 2.2.1 Espacios de color Los espacios de color son una forma de cuantificar matemáticamente el color. Están compuestas por tuplas numéricas, tı́picamente triplas donde cada uno de los componentes de la tupla es llamado canal. La profundidad de color está determinada por la representación númerica que se utilice para cada canal. Por ejemplo en la representación RGB, comúnmen- 9 te cada canal se representa con 8bits, dado que esta representación tiene tres canales, la profundidad de color resultante es de 24bits. 2.2.1.1 RGB RGB (de sus siglas en inglés Red-Gren-Blue) es el espacio de color utilizado por la mayorı́a de dispositivos de visualización que utilizamos en la actualidad. Es un espacio de color aditivo, esto significa que cualquier color en este espacio se entiende como una suma de sus componentes primarias: rojo (R), verde (G) y azul (B). Como resultado, la suma de sus tres componentes a su máxima intensidad produce el color blanco. Debido a que en RGB cada canal es comúnmente representado por ocho (8) bits, el rango de de la intensidad de cada canal está entre 0 y 255. Figura 2.2: Ilustración de la propiedad aditiva de RGB. 2.2.1.2 HSL El espacio de color HSL (de sus siglas en inglés Hue-Saturation-Luminance) plantea una representación cilı́ndrica del espacio de color RGB como se muestra en la figura 2.3. Sus componentes primarias son el matiz (H), saturación (S) y luminosidad (L). Para definir un 10 determinado color, elegir una suma de rojo, verde y azul, no resulta intuitivo, sin embargo, en HSL se elige un matiz o tono en el espectro de colores visibles, con la saturación se ajusta la intensidad o brillantez del color, que va desde un color totalmente saturado hasta un gris equivalente, y finalmente se define su luminosidad, haciéndolo mas cercano al blanco o negro. Esta forma de definir un color es mucho mas intuitiva y por ello su representación es muy utilizada en la edición de imágenes digitales. Figura 2.3: Representación cilı́ndrica del espacio HSL. 2.2.1.3 CIELAB El espacio de color LAB o CIELAB esta basado en el espacio de color CIE XYZ. Es un espacio tridimensional de números reales, ofreciendo virtualmente un número infinito de colores. La gama de colores de RGB representa solamente un 90 % de los colores perceptibles para el ojo humano, en cambio, el espacio de color CIELAB abarca su totalidad. Tı́picamente las componentes del espacio LAB son cuantificadas, con una resolución de 16 bits por canal. La componente L representa la luminosidad, mientras que las componentes a y b son canales opuestos de color que van entre rojo y verde, y entre amarillo y azul, respectivamente como se observa en la figura 2.4. La representación de colores de CIELAB esta diseñada con el fin 11 de adaptarse a la forma en que el ojo humano funciona y percibe el color, su componente L es muy similar a la luminosidad que percibimos con nuestra visión, produciendo ası́ un espacio de color que es percibido de forma más lineal. Esto se traduce en que cambios de cierta cantidad de color producen cambios de la misma importancia visual. Figura 2.4: Gama de colores de CIELAB a una luminosidad del 75 %. 2.2.2 Sensores de imagen Los sensores de imagen son elementos electrónicos que detectan y transmiten la información que constituye una imagen. Cada sensor está compuesto por una matriz de componentes fotosensibles que capturan la luz de un objetivo y la convierten en una señal eléctrica, que luego se transmite de forma analógica o digital. En las cámaras digitales actuales existen dos tipos de sensores predominantes, los CMOS (semiconductor complementario de óxido metálico, del inglés complementary metal-oxide-semiconductor ) y los CCD (dispositivo de carga acoplada, del inglés charge-coupled device) 12 2.2.2.1 Filtro de Bayer El filtro de Bayer o mosaico de Bayer es un arreglo de filtros de color dispuesto sobre la matriz de foto-sensores que compone el sensor de la imagen en una cámara. El mosaico de Bayer esta compuesto por 25 % de rojo, 25 % azul y un 50 % verde como se muestra en la figura 2.5, esta distribución se debe a la alta sensibilidad que tienen nuestros ojos a la percepción de luz en el rango entre los 500nm y 600nm. De esta forma cada pı́xel sólo graba uno de estos colores, y posteriormente decodifica los canales RGB completos, para ello se realiza una interpolación de los valores circundantes ponderados dependiendo del sensor. Figura 2.5: Patrón de filtro de Bayer. Algunas cámaras pueden almacenar directamente el mosaico de bayer y dejan al usuario la decodificación de la imagen. Esto puede llevar a mejoras en los algoritmos de decodificación, variando los pesos para cada uno de los filtros de color. Además, el mosaico de Bayer tiene virtualmente una profundidad de color equivalente a un tercio de la profundidad de color final. Esto quiere decir que para imágenes sin compresión se reduce a un tercio la tasa de bits necesaria para la transferencia de archivos. 13 2.2.3 Adquisición de imágenes La adquisición de imágenes es el proceso que comienza con la captura de una escena hasta su almacenado o transmisión a través de algún medio electrónico. La velocidad de captura de imágenes depende de las especificaciones utilizadas para un sistema de visión. Estas incluyen: Numero de cámaras. Resolución de la imagen. Cuadros por segundo a adquirir. Capacidad de transmisión del puerto. Velocidad de escritura en disco. 2.2.3.1 USB3 Vision USB3 Vision es un nuevo estándar de visión desarrollado sobre SuperSpeed USB también llamado USB 3.0. Este estándar es capaz de manejar tasas de transferencia de hasta 400 MB/s y 4.5 Watts de potencia a 5 V en el mismo cable. El estándar es desarrollado y administrado por la AIA (siglas del inglés Automated Imaging Association). Este define los mecanismos para la configuración, identificación y control de dispositivos que utilicen el estándar. USB3 Vision permite el uso de tecnologı́a plug-andplay entre un dispositivo compatible y una computadora con puerto USB 3.0. USB3 Vision está desarrollado y basado en estándares previos como GigE Vision. Una de las principales ventajas sobre estándares pasados, además de las altas tasas de transferencia, es la poca utilización de CPU necesaria para realizar una adquisición. 14 2.2.4 Formatos y compresión de imágenes Los formatos de archivos de imágenes son formas estandarizadas de almacenar imágenes. Existe una amplia gama de formatos de imágenes, cada uno desarrollado con un propósito especı́fico. Por ello es necesario entender las ventajas de los principales formatos de imágenes y sus aplicaciones. La formatos de imagen pueden realizar un almacenamiento de los datos descomprimidos, en cuyo caso son formatos de empaquetado (wrappers), o realizar algún tipo de compresión para ahorrar espacio de almacenamiento. Esta puede modificar de forma irreversible la información contenida en la imagen, en cuyo caso hablaremos de un formato con pérdidas (lossy), o bien comprimir la imagen sin modificarla de ninguna forma, en cuyo caso nos referimos a un formato sin pérdidas (loseless) [4]. 2.2.4.1 JPEG JPEG (del inglés Joint Photographic Experts Group) es un método de compresión con pérdidas ampliamente utilizado para el intercambio de archivos. El éxito de JPEG se debe a su capacidad para comprimir las imágenes sin presentar cambios observables a simple vista. 2.2.4.2 TIFF TIFF (del inglés Tagged Image File Format) es un formato de imágenes utilizado principalmente para el almacenamiento y edición. Una de sus ventajas es que permite guardar imágenes con y sin compresión. Dentro de los métodos de compresión para almacenar archivos TIFF se encuentran métodos con pérdidas y sin pérdidas como JPEG y ZIP respectivamente [4]. 15 2.2.5 Procesamiento de imágenes digitales El procesamiento de imágenes comprende una serie de métodos y algoritmos que realzan ciertas caracterı́sticas en la imagen, o extraen información valiosa de ella. El procesamiento de imágenes digitales es un campo en constante crecimiento dada la capacidad computacional cada vez mayor de la cual se dispone para el análisis de grandes sets de datos. Existen diversas definiciones de procesamiento de imágenes, principalmente con el propósito de diferenciarlo de técnicas de visión artificial, una rama de la inteligencia artificial que busca emular la visión humana. En nuestro caso utilizaremos la definición dada por González et al. [2], donde el procesamiento de imágenes digitales incluye procesos en los cuales la entrada y salida son imágenes, y procesos que incluyen la extracción de atributos de una imagen, ası́ como la detección de objetos en una escena. 2.2.5.1 Filtrado en el dominio espacial El filtrado de imágenes es una técnica utilizada para modificar o mejorar una imagen, con la finalidad de que esta sea mas adecuada para una aplicación especı́fica o se facilite la extracción de información de la misma. Las operaciones de filtrado en el dominio espacial utilizan la información que proveen una serie de pı́xeles distribuidos en una zona especı́fica del plano. Por lo tanto son los pı́xeles como unidad fundamental los que atraviesan el proceso de filtrado. Los pı́xeles se encuentran en la vecindad (neighbourhood) de un pı́xel central, sobre el cual se realiza la operación. Esta vecindad de pı́xeles es modificada por un elemento llamado kernel, como se muestra en la figura 2.6. El procedimiento del filtrado espacial consiste en mover esta ventana de pı́xel en pı́xel y calcular un nuevo valor central para cada punto del 16 plano, utilizando para ello información contenida en la ventana. Un filtro es lineal cuando su resultado es una combinación lineal de los valores en los pı́xeles para una ventana. Un ejemplo de un procedimiento lineal utilizado para filtrar imágenes es la convolución lineal. Para realizar la convolución de una imagen se calcula la suma balanceada (weighted sum) del producto de los valores de un kernel y los valores de la imagen en la zona que abarca dicho kernel para cada uno de los pı́xeles en una imagen. Algunos de los filtros más populares para el procesamiento de imágenes caen en esta categorı́a, como son: Filtros de suavizado (Gaussiano, promedio). Realce de bordes direccionales (Prewitt, sobel). Detección de bordes (Laplaciano). Figura 2.6: Convolución de una imagen. En contraste, los filtros no lineales no utilizan coeficientes pesados en sus ventanas. Se consideran filtros espaciales porque igualmente operan sobre una vecindad, pero utilizan 17 operadores no lineales para lograr su cometido. Un operador no lineal comunmente utilizado es el de la mediana, en la figura 2.7 se aprecia el funcionamiento de un filtro de mediana. Este filtro calcula la mediana dentro de una conjunto de pı́xeles circundantes (ventana) y reemplaza el valor central por el de la mediana. Figura 2.7: Convolución de una imagen. 2.2.5.2 Operadores morfológicos El filtrado morfológico de imágenes define una serie de operaciones que modifican la imagen a través de operadores lógicos con una forma geométrica predefinida. El lenguaje utilizado en el análisis morfológico de imágenes es aquel desarrollado por la lógica y la teorı́a de grupos. En el análisis morfológico de imágenes tı́picamente se utilizan imágenes binarias aunque su implementación es escalable a imágenes en escala de grises y colores. Las imágenes binarias son aquellas donde su completa gama de valores se puede representar con un único bit. Usualmente se utiliza el valor cero (0) para el negro y uno (1) para el blanco. Las operaciones morfológicas aplican elementos estructurales a estas imágenes y generan una imagen de salida del mismo tamaño. En una operación morfológica el tamaño 18 y forma del elemento estructural puede ser modificados para hacer la operación sensitiva a figuras especı́ficas en la imagen de entrada. El valor de un pı́xel en la imagen de salida esta determinado por la comparación con pı́xeles vecinos dentro de una ventana. Esta comparación no es más que una conjunción lógica entre los valores de la ventana que conforman un elemento estructural y los valores de la imagen. En la figura 2.8 se muestra un ejemplo de los principales operadores morfológicos. Los más básicos son las operadores de dilatación y erosión. La dilatación es equivalente a la conjunción lógica OR entre la ventana que define el elemento estructural y la imagen. El filtro morfológico de dilatación incrementa el tamaño o dilata el perı́metro de las figuras. La dilatación de una imagen I con un elemento estructural M resulta se puede expresar como: Dilatar(I) = I ⊕ M En el caso de la operación de erosión, esta reduce el area total de la figura, y su operador lógico equivalente es el AND. De forma equivalente la erosión de una imagen I con un elemento estructural M resulta: Erosionar(I) = I M En ambos casos, la cantidad de área que se expande o reduce una figura como resultado de un proceso morfológico es dependiente del tamaño y forma del elemento estructural utilizado. La mayorı́a de los filtros morfológicos resultan de una combinación de los filtros anteriormente mencionados. Los operadores abrir y cerrar (del inglés opening y closing), son una combinación de las operaciones de dilatación y erosión. Estos resultan útiles para eliminar pequeñas aberturas 19 en las partı́culas (closing) o remover ruido en las partı́culas de forma menos agresiva que la erosión(opening). Para una determinada imagen I se tiene: Closing(I) = Erosionar(Dilatar(I)) Opening(I) = Dilatar(Erosionar(I)). (a) Original (c) Erosión (b) Dilatación (d) Opening (e) Closing Figura 2.8: Ejemplos de operadores básicos morfológicos sobre una partı́cula. 2.2.5.3 Envolvente convexa La envolvente convexa de un conjunto de puntos en matemática se define como el polı́gono convexo, cuyos vértices pertenecen al grupo de puntos, y el resto de ellos se encuentra contenido dentro del polı́gono. En el procesamiento de imágenes el método de envolvente convexa es un operador morfológico que permite obtener un perı́metro formado por lı́neas convexas a partir de una determinada partı́cula. Un ejemplo de una envolvente convexa se muestra en la figura 2.9. 20 Figura 2.9: Envolvente convexa. 2.2.5.4 Segmentación mediante K-means La segmentación es un procedimiento que subdivide la imagen en regiones. El número de subdivisiones a realizar dependerá de la escena a estudiar. El fin último de la segmentación es el de aislar en una región bien definida al objeto de interés de análisis en un procesamiento. K-means es un algortimo de agrupamiento (Machine learning), de aprendizaje no supervisado, el cual es ampliamente utilizado para el análisis y minerı́a de datos. El criterio de agrupamiento utilizado por K-means es un criterio de distancia, entre los vectores que se desean agrupar con la finalidad de reducir la diferencia entre grupos [5]. Inicialmente se asignan k-centroides aleatoriamente y se particionan los datos en k-grupos, para ello se asignan las muestras al grupo con el centroide más cercano, luego se actualiza la media de cada grupo y esta se asigna como nuevo centroide del grupo. Se repiten los pasos de asignación y actualización, hasta que las asignaciones no cambian. En la figura 4.4 se muestra gráficamente cada uno de los pasos del algoritmo para un valor de k = 3 en un espacio bidimensional. 21 Figura 2.10: Pasos del algoritmo K-means. El objetivo de utilizar K-means en la segmentación de imágenes es el de generar un set de k-grupos de pı́xeles que sean muy parecidos dentro de cada grupo y lo mas distanciados posibles de otros grupos. Para ello es necesario utilizar un espacio de color que represente y cuantifique las caracterı́sticas que queremos segmentar y a su vez elegir un número k de colores o tonos a separar dentro de la imagen. K-means es un algoritmo de segmentación robusto y se ha demostrado que la segmentación que produce es equivalente a aquella producida por el algortimo de Otsu y no requiere del tiempo computacional de análisis que requiere este último [6]. K-means como herramienta de agrupamiento también resulta superior que otros métodos clásicos como Mean-shift, produciendo resultados similares a un costo computacional menor [7]. 2.2.5.5 Mediciones de partı́culas Una vez segmentadas las imágenes, estas se separan en valores nulos, que representan espacio vacı́o o el fondo de la imagen, y partı́culas. Estas imágenes son tı́picamente binarias, con un valor numérico de cero (0) para el fondo y de uno (1) para las partı́culas, sin embargo es posible separar y marcar label las partı́culas para su diferenciación. Definiremos ası́ a una partı́cula como un elemento de valores iguales dentro de la imagen, no nulo que se encuentra 22 rodeado de elementos nulos [8]. Existen una serie de mediciones que podemos realizar sobre cada partı́cula segmentada en una imagen, entre las más comunes tenemos: Largo y ancho. Momentos de inercia. Perı́metro. Orientación. Área. 2.2.5.6 Transformada de Hough La transformada de Hough, es un método utilizado para la búsqueda de curvas parametrizables dentro de una imagen. En el más simple de los casos, consiste en la detección de segmentos de lı́nea. Para el parametrización de rectas se utiliza la ecuación de una recta en coordenadas polares, ya que esta permite representar rectas verticales [9]. ρ = xcosθ + ysinθ Donde ρ es la distancia perpendicular, entre la recta y el origen y θ es el ángulo de la normal entre el origen y la lı́nea. Con esta parametrización se consigue que para un determinado punto (x, y) el grupo de todas las rectas que pasan por él se transformen en una sinusoide en el espacio definido por (ρ, θ) también llamado espacio de Hough. Un grupo de dos o mas puntos que forman lineas rectas, producirá sinusoides que se cruzan en (ρ, θ) para una determinada recta. De esta forma se reduce el problema de hallar puntos colineales, al problema de hallar intersección de curvas. En la figura 2.11 se aprecia 23 el espacio de hough para un valor de θ entre -90 y 90 grados, el punto señalado, marca la intersección de sinusoides que se corresponde con puntos colineales en la imagen. Figura 2.11: Espacio de Hough. 2.3 Video digital El vı́deo digital es una secuencia de imágenes digitales que representa escenas en movimiento. Cada imagen que compone el vı́deo es llamada cuadro. Al igual que las imágenes digitales cada cuadro de vı́deo esta definido por el número de pı́xeles que lo componen e igualmente la profundidad de color define el tamaño de cada pı́xel. Adicionalmente, una caracterı́stica que permite evaluar la fluidez de un video, es la cantidad de cuadros por segundo (frames per second ) que es capaz de reproducir. A mayor cantidad de cuadros por segun- 24 do la escena luce más fluida y en movimiento, donde para bajas tasas nuestra visión puede percibir las imágenes en el vı́deo como objetos quietos. La cantidad de cuadros necesarios para una reproducción fluida ha variado a través de los años con la introducción de nuevas tecnologı́as. Las transmisiones de televisión utilizan entre 24 (como 24p, 25p) y 30 (como por ejemplo 30p,60i) cuadros por segundo, con la introducción reciente de nuevos estándares para transmisiones entre 50 y 60 cuadros por segundo. 2.3.1 Formatos y códecs de video Al igual que los formatos de imágenes los formatos de video son estándares que definen una forma en la cual la información que contiene un video es organizada y almacenada en un archivo. Los códecs de vı́deo tienen por objeto codificar y decodificar los datos contenidos en un archivo de video. 2.3.1.1 AVI AVI del inglés Audio Video Interleave es un formato de archivos de videos que soporta una amplia gama de códecs. El formato fue desarrollado por Microsoft y sirve de contenedor a un archivo de video y de audio. 2.3.1.2 Códec Lagarith Lagarith es un códec de video sin pérdidas diseñado para el almacenamiento y la edición de video. Permite una tasa de compresión alrededor de 4:1 respecto del video sin compresión. Lagarith es uno de los mejores códecs sin pérdidas disponible de forma gratuita. El único problema con Lagarith resulta en que el tiempo necesario para codificar un video, suele ser mas largo que otros códecs sin pérdida comúnes, como HuffYUV [10]. 25 2.4 Tecnologı́as y herramientas utilizadas A continuación se ofrece una descripción de las herramientas y tecnologı́as utilizadas para la ejecución del proyecto de pasantı́a. 2.4.1 NI LabVIEW LabVIEW (acrónimo del inglés Laboratory Virtual Instrument Engineering Workbench) es una plataforma de software creada por National Instruments para el diseño y desarrollo de sistemas en un lenguaje gráfico propietario, llamado G. Su principal foco es el diseño de sistemas embebidos y de tiempo real, para el control y adquisición de datos a través de un lenguaje gráfico [11]. 2.4.1.1 NI Vision Development El Módulo NI Vision Development está compuesto por una serie de algoritmos y funciones de procesamiento de imágenes y visión artificial para la identificación de objetos en LabVIEW. Este módulo también incluye las interfaces de programación de aplicación o API (de sus siglas en inglés Application Programming Interface), IMAQ e IMAQdx. Estos API permiten la adquisición y configuración de cámaras de National Instruments y de otros fabricantes [12]. 2.4.1.2 Database and connectivity toolkit El juego de herramientas de base de datos y conectividad (Database and connectivity toolkit) para LabVIEW está compuesto por una serie de funciones para la edición, creación y manejo de bases de datos. Es compatible con bases de datos que utilicen el controlador ODBC o OLE DB, ası́ como también bases de datos que se adhieran al estándar ADO (de sus siglas en inglés ActiveX Data Object) [13]. 26 2.4.1.3 Machine learning toolkit El juego de herramientas de aprendizaje de máquinas para LabVIEW, incluye una serie de algoritmos de aprendizaje supervisado y no supervisado, ası́ como también una serie de herramientas de análisis de datos. 2.4.2 PostgreSQL PostgreSQL o Postgres es un sistema de gestión de bases de datos relacionales orientado a objetos (ORDBMS). Postgres es un proyecto de software libre y código abierto. Como servidor de base de datos su principal función es la de guardar datos de forma segura y permitir su recuperación (retrieval ) por parte de otras aplicaciones de software. Capı́tulo 3 Desarrollo del proyecto El presente capı́tulo expone el proceso de desarrollo del proyecto, en el que se especifican los procesos llevados a cabo para cumplir con los objetivos planteados, desde su diseño hasta su implementación. 3.1 Arquitectura de hardware El hardware propuesto para el sistema de visión del periscopio tiene que estar integrado por hardware de nivel industrial y ofrecer alto desempeño tanto en calidad de imagen como en poder computacional. Se eligió una cámara con el sensor CCD Sony ICX445 recomendada por National Instruments, similar a la mostrada en la figura 3.1. Esta se encuentra equipada con la nueva tecnologı́a EXview HAD de Sony, que aumenta la sensibilidad manteniendo un tamaño de sensor compacto [14]. Además utiliza el nuevo estándar de transmisión USB3 vision y es capaz de adquirir imágenes a color con una velocidad de treinta (30) cuadros por segundo. A su vez permite decoficar el mosaico de Bayer dentro o fuera de la cámara. Esta caracterı́stica 28 resulta importante ya que permite una reducción sustancial de la tasa de bits necesaria para la transmisión. Figura 3.1: Estructura del hardware diseñado. Sensor Resolución Tamaño de pixel Mono/Color Interfaz Profundidad de bits Relación focal Distancia focal Sony ICX445 1294x964 3.75 µm x 3.75 µm Color USB 3.0 Hasta 12 bits f /1.4 35mm Tabla 3.1: Caracterı́sticas de la cámara elegida para el sistema de visión. Por su parte el software de visión diseñado funcionará sobre una computadora industrial de alto desempeño con enfriamiento pasivo. Adicionalmente, se utilizará un panel táctil de quince (15) pulgadas para desplegar la interfaz HMI al operador. 29 Sistema operativo RAM Tarjeta de video Procesador Almacenamiento Windows 8.1 8 GB Intel HD 4600 Intel Core i7-4770TE Haswell 2.3GHz Western Digital 2.5”HDD 1TB 7200RPM Tabla 3.2: Caracterı́sticas del computador elegido para el sistema de visión. 3.2 Arquitectura de software El software está basada en un modelo dirigido por eventos o EDA (del inglés Event driven architecture). En este modelo cada uno de los actores responde cuando su correspondiente evento es activado y sólo si ese evento es activado. Los procesos a continuación descritos responden a una serie de eventos determinados, en su mayorı́a ejecutan una operación en respuesta a la interacción con el operador. Por ejemplo, el evento de adquirir imagen ocurre, únicamente cuando el botón para tomar una fotografı́a es presionado. 30 Figura 3.2: Jerarquı́a de rutinas creadas. 3.2.1 Sistema de adquisición El evento de adquisición es un evento condicional temporizado, este comprende la inicialización de variables y configuración de la cámara, captura de imágenes y/o video. Las imágenes adquiridas pueden estar codificadas con el mosaico de Bayer, en cuyo caso la decodificación de estas, se hará de forma ası́ncrona para ası́ reducir la tasa de bits necesaria para su escritura. De esta forma se adquieren y muestran imágenes a color a una tasa de treinta cuadros por segundo. Cabe destacar que estas imágenes constituyen la virtualización de un visor, y no son almacenadas en disco. 31 Figura 3.3: Diagrama de flujo de adquisición. 32 3.2.1.1 Almacenado de imágenes El evento utilizado para adquirir imágenes y grabarlas a disco esta controlado por un botón desplegado en la interfaz de usuario. Se guarda la imagen en un búfer y se almacena de forma ası́ncrona en el disco duro. Para no degradar la calidad de la imagen, esta se guarda en formato TIFF y en el espacio de color RGB, con una compresión sin pérdidas ZIP. Finalmente, se genera una entrada para registrar la adquisición en la base de datos. Figura 3.4: Subrutina para almacenado de imágenes. 3.2.1.2 Adquisición de video De forma similar a la adquisición de imágenes, el evento de adquisición de video esta manejado por un botón en la interfaz del operador. Dado que las inspecciones realizadas por un submarino cerca de la superficie deben ser cortas, se dispuso de un máximo de adquisición 33 de video de diez (10) minutos. De ser necesario un mayor tiempo de grabación, el operador deberá tomar un nuevo video. Para realizar la codificación de un archivo de video en LabVIEW es necesario que el archivo se encuentre completo, esto supone una limitación en la velocidad de la codificación ya que solo se puede comenzar la codificación una vez se termine la adquisición. Es por ello que se optó por escribir todas las imágenes adquiridas que conforman el video, directamente en disco y sin comprimir. Es aquı́ donde el mosaico de Bayer cobra importancia. Escribir las imágenes en disco sin decodificar el mosaico de Bayer, reduce la profundidad de color de 32 bits a 8 bits y requiere una tasa de bits de escritura en disco de Tasa de Bits= Profundidad de bits × Numero de Pixeles × Cuadros por segundo Tasa de Bits= 8bits × (1294 × 964)pixeles × 30f ps = 35,54M B/s Esta velocidad de transferencia es perfectamente manejable por discos duros actuales, sin necesidad de establecer configuraciones de redundancia como RAID 0. Sin embargo, la tasa necesaria para escribir la misma cantidad de información, con el filtro de Bayer decodificado, se cuadruplica limitando la adquisición en discos convencionales. Nótese que a la tasa de escritura actual, un archivo de video de diez (10) minutos pesará más de 20GBytes. Debido a ello se prefirió el almacenamiento en discos duros covencionales sobre discos de estado sólido, ya que ofrecen mayores capacidades de almacenamiento a bajo costo. Posterior a la adquisición, se realiza la codificación del video, utilizando el códec de Lagarith para ahorrar almacenamiento en disco. Es importante resaltar que mientras mayor sea el tiempo de adquisición, mayor será el tiempo necesario para codificar el video. Una vez el video se codifica, se guarda una entrada en la base de datos registrando la grabación y se hace disponible al operador a través de la interfaz HMI. 34 Figura 3.5: Subrutina para almacenado de video. 3.2.2 Procesamiento de imágenes En esta sección se explicarán todos los procedimientos relacionados con el mejoramiento y la extracción de información de imágenes de periscopio. La finalidad última es, a través de un algoritmo computacional, detectar la presencia de barcos en la escena marı́tima. 35 Para ello inicialmente se realiza un pre-procesamiento, en donde se determina una zona de interés o ROI (del inglés region of interest) para el análisis y se aplican una serie de filtros para facilitar la extracción de caracterı́sticas de la imagen. Posteriormente, se detecta la lı́nea del horizonte, y se segmenta la imagen con la información de color disponible. Por último un filtrado de partı́culas refina la búsqueda y nos deja con los posibles barcos en la escena. A continuación se explica con mas detalle cada una de las fases utilizadas. 36 Figura 3.6: Diagrama de flujo del procesamiento empleado 37 3.2.2.1 Enmascaramiento Una vez el procesamiento es iniciado, el primer paso es definir una región de interés dentro de la imagen. Para ello se debe enmascarar y definir el cı́rculo correspondiente al visor del periscopio. Se fijó un umbral en el histograma de la imagen, para dividir la sección oscura, bloqueada por el visor, y la información relevante. Luego se aplicaron filtros morfológicos para obtener una única gran partı́cula que corresponde al cı́rculo del visor. De esta se obtiene el área de la cáscara convexa (convex hull ) y el centro geométrico del mismo para cálculos posteriores. Figura 3.7: Diagrama de bloques del enmascarado. (a) Imagen original (b) Imagen enmascarada Figura 3.8: Enmascaramiento de visor del periscopio. 3.2.2.2 Definición de ROI La región de interés o ROI (del inglés Region of interest), es un subconjunto de la imagen enmarcado por una serie de primitivas. En el caso de nuestro sistema de visión para periscopio, 38 se define como ROI al rectángulo inscrito en el cı́rculo que compone el visor del periscopio como se muestra en la figura 3.10. Este rectángulo puede ser ajustado variando el ángulo α mostrado en la figura 3.10, entre 26 y 45 grados. El mı́nimo ángulo establece una sagita (segmento AB) en cada lado, inferior a un veinteavo del diámetro del periscopio, y el máximo ofrece una relación de aspecto 1:1. El ángulo por defecto es de 36 grados, y establece una sagita de un décimo del diámetro a cada lado. Esta reducción se hace para evitar el cı́rculo externo oscuro debido al visor del periscopio en análisis posteriores, y la forma rectangular trata de aprovechar la mayor cantidad de información en una escena marı́tima. Figura 3.9: Diagrama de bloques para la definición de ROI Figura 3.10: ROI 39 3.2.2.3 Pseudo-corrección de campo plano La correción de campo plano, es una correción que se realiza sobre imágenes que se encuentran iluminadas de forma dispareja, donde existe un efecto de viñeteado (vignetting), para corregir variaciones entre la sensibilidad de pı́xeles y eliminar polvo o rayas en el sensor CCD. Para ello se aplica una calibración de la imagen mediante captura de un cuadro oscuro y uno claro. Sin embargo, en la práctica se utilizó una pseudo-corrección (ver figura 3.11) debido a que la cámara que se utilizará en el sistema final no estaba disponible. La pseudo-corrección toma el canal de luminosidad de la imagen de entrada y aplica un filtro gaussiano de kernel grande, para obtener una versión difuminada de la imagen [15]. La versión difuminada de la imagen, se llama campo correctivo, y permite detectar y corregir la iluminación de la escena. En la figura 3.12 se muestra el campo correctivo generado para la imagen de periscopio mostrada en 3.13. Figura 3.11: Diagrama de bloques para pseudo-corrección de campo plano. 40 Figura 3.12: Campo correctivo En la práctica se utilizó un kernel de tamaño 51, y desviación estándar 20. Al campo correctivo se le hace una corrección de desplazamiento (maximización de brillo) y finalmente se divide de la imagen original. La pseudo-correción de campo plano se realizo sólo sobre el canal de luminosidad de la imagen en el espacio HSL. En la 3.13 se muestra un ejemplo de pseudo-corrección de campo plano, nótese como el efecto de viñetado se ve disminuido. (a) Imagen original (b) Imagen corregida Figura 3.13: Pseudo correción de campo plano 41 3.2.2.4 Mejora de contraste Se realizó una maximización del contraste mediante un estiramiento del histograma de la imagen. Para ello se dividió la imagen en canales, en el espacio HSL, y se analizó el histograma de cada uno de ellos, para realizar una modificación del rango dinámico que permitiera mapear los valores mı́nimos y máximos de cada canal, en los mı́nimos y máximos representables. En un canal de luminosidad de profundidad de 8 bits, esto significa que los valores más óscuros de la imagen y más claros de la imagen, se representan con el valor mı́nimo (0) y máximo disponible (255). Figura 3.14: Diagrama de bloques para mejora de contraste. Figura 3.15: Mejora de contraste. 42 3.2.2.5 Filtrado de ruido Para el filtrado de ruido se utilizó un filtro de mediana, con una ventana de tamaño reducido para evitar la difuminación de la imagen. El filtro de mediana se prefirió sobre un filtro pasa-bajo debido a que preserva mejor la información de los bordes cuando el tamaño de la ventana es pequeño [16]. Se implementó ası́ un filtro con un tamaño de ventana de 3x3 y se aplicó a todos los canales de la imagen en el espacio HSL. Un ejemplo del resultado obtenido se puede apreciar en la figura 3.17, a simple vista no parece haber cambio alguno respecto de la imagen original (izquierda en 3.13), sin embargo este filtro resulta de importancia para limpiar ruido que se hace mas visible durante la segmentación de la imagen. Aún ası́ se puede apreciar diferencias si se inspecciona la imagen con detalle, por ejemplo, la grilla del visor en la figura 3.17 sufre una transformación importante bajo este filtro. Figura 3.16: Diagrama de bloques para filtrado de ruido. 43 Figura 3.17: Filtro de mediana. 3.2.2.6 Detección básica de horizonte Los procesamientos vistos hasta ahora buscan corregir o realzar caracterı́sticas presentes en la imagen, sin embargo la detección básica de horizonte busca extraer información valiosa de ella. Para definir los objetos en la escena marı́tima era importante la detección de la lı́nea de horizonte con la finalidad de establecer una frontera sobre la cual buscar información. La salida del algoritmo de detección de horizonte, es un número entero, que representa la posición en la coordenada espacialy, en la cual este fue detectado. En la figura 3.18 se muestra un diagrama de bloques con los procedimientos utilizados para el algoritmo de detección. Figura 3.18: Diagrama de bloques para detección de horizonte. 44 Para ello se aplicó un filtro espacial laplaciano con la finalidad de resaltar los bordes dentro de la imagen. Luego se utilizó un filtro Canny para extraer los bordes en una imagen binaria y finalmente se empleo la transformada de Hough para buscar segmentos de recta dentro del conjunto de bordes. Una vez extraı́dos los segmentos se eligió el segmento con mayor puntuación, y se gráfico su posición para mejor visualización, este segmento es el horizonte detectado. La imagen 3.19 muestra el resultado obtenido por el algoritmo, el segmento de recta en color rojo marcado en la imagen, representa el horizonte encontrado. Figura 3.19: Detección básica de horizonte. 3.2.2.7 Segmentación de la imagen Para realizar la segmentación de la imagen se utilizó el algoritmo de agrupamiento no supervisado, K-means. Inicialmente se realizó una transformación del espacio RGB a CIELAB, y se convirtió la imagen en un arreglo matricial de tamaño N × 3, donde N es el número de pı́xeles que contiene la imagen. En el diagrama de la figura 3.20 se muestra el procedimiento básico utilizado. Este arreglo se agrupó utilizando K-means con un valor de k igual a cinco (5). Por ende la 45 imagen se se segmento en cinco (5) grupos, se utilizó un máximo de iteraciones predeterminado de cincuenta (50), este valor fija el número máximo de veces que el algoritmo de K-means asigna y clasifica muestras en el espacio. El parámetro de parada del algoritmo utilizado es el error de convergencia tolerado en el cálculo de nuevos centroides, si la posición de un centroide varia más que este valor, se vuelve a iterar hasta que el centroide varie menos que el error. Estas distancias son medida dentro del espacio de color CIELAB. El error minino de distancia elegido se fijó en 0.1. Figura 3.20: Diagrama de bloques de segmentación. Finalmente, cada uno de los arreglos se le asigno un valor númerico y se reconvirtió cada uno a una imagen. De esta forma se obtienen cinco (5) imágenes binarias. En la figura 3.21 se muestran las cinco (5) imágenes obtenidas para una escena marı́tima obtenida por el periscopio. Nótese la correcta segmentación de los barcos en la cuarta imagen de izquierda a derecha. 46 Figura 3.21: Segmentación utilizando K-means. 3.2.2.8 Filtrado de partı́culas Una vez segmentada la imagen, las cinco imágenes resultantes fueron sometidas a un filtrado morfológico de auto-mediana, también se aplicó un filtro morfológico para remover las partı́culas que no soportaran un cierto número de erosiones. Auto − mediana(I) = Opening(closing(opening(I))) ∧ closing(opening(closing(I))) Luego se utilizaron una serie de filtros de partı́culas para determinar si estas guardaban la posibilidad de ser un barco o bote. Se utilizaron una serie de caracterı́sticas como la relación entre perı́metro y área, la posición del momento cero de las partı́culas (centro de masa), y el número de orificios en la partı́culas [17]. Figura 3.22: Diagrama de análisis morfológico utilizado. 47 Figura 3.23: Posibles barcos detectados. 3.2.3 Base de datos La base de datos es una de las partes fundamentales para mantener la integridad del sistema. Ella brinda acceso a la herramienta de programación (LabVIEW) a las imágenes y videos adquiridos, y permite realizar búsquedas de forma rápida y eficiente. Esta se encontrara de forma local en el computador utilizado para adquisición y procesamiento, con un único usuario protegido por contraseña, al cual el operador no tiene acceso, mas que con la interfaz diseñada en LabVIEW. 3.2.3.1 Diseño Para el sistema de adquisición de imágenes para periscopio, se diseño una base de datos muy sencilla, que permitiese mantener datos relevantes de todas las adquisiciones y nos diese la posibilidad de clasificar estas en grupos a través de marcadores o tags. Estos pueden ser creados por el operador del sistema y asignados a cada imagen o video en particular. La búsqueda por marcadores, devuelve ası́ todas las imágenes pertenecientes a un determinado grupo. 48 En la figura 3.24 se muestra un diagrama entidad relación de la base de datos diseñada. La tabla de imágenes (llamada images) guarda cinco atributos de la imagen o video, entre ellos nombre (name) y dirección en disco de la adquisición (path). La tabla de asignación (asign) permite crear tuplas entre adquisiciónes y marcadores, no existe un máximo para la cantidad de relaciones que se pueden crear, sin embargo, cada marcador debe estar asignado mı́nimo a una imagen y cada imagen puede o no estar asignada a algún marcador. Por ultimo la tabla de marcadores (tags) guarda el nombre de un determinado marcador. En la tabla 3.3 se muestra una explicación detallada de cada atributo. Figura 3.24: Diagrama entidad-relación de la base de datos 49 Entidades Entidad Semántica Atributo images Imágenes y videos adquiridos id name path date time type tags Marcadores de imágenes o videos. id name Semántica del atributo Identificación de la entidad Nombre de la imagen o video Dirección del archivo Fecha y hora de adquisición Tipo video o imagen Identificación de la entidad Nombre del marcador Tipo SERIAL VARCHAR(250) VARCHAR(250) TIMESTAMP VARCHAR(50) SERIAL VARCHAR(250) Interrelacionales Entidad Semántica Atributo Semántica del atributo Tipo asign(i,t) Representa la asignación de un tag t a una imagen i id Identificación de la relación SERIAL Tabla 3.3: Diccionario de base de datos 50 3.2.3.2 Implementación La base de datos se creó utilizando PostgreSQL, debido a su simplicidad y robustez para desarrollo de bases en lenguaje SQL. Para ello se utilizó la interfaz gráfica que provee Postgres, llamada Pgadmin. PostgreSQL no tiene un tamaño máximo para bases de datos, cada tabla tiene sin embargo un máximo disponible de 32TB, cada fila, de 400GB, y un máximo de 250 columnas por tabla [18]. En nuestro caso particular, la tabla más grande tiene un total de 5 campos o atributos. En el peor de los casos, sin tomar en consideración la distribución y overhead que se introduce en una base de datos, los valores depositados en ella, no superan los 700Bytes (ver tabla 3.3 para tipos de datos almacenados). Dado que la base de datos funcionará sólo de forma local, se creó un único usuario y un archivo de configuración DSN (del inglés Data source name). Este último permite conectar el driver de la base de datos a través del estándar ODBC (del inglés Open database connectivity) con el entorno de programación de LabVIEW. 3.2.4 Diseño de interfaz HMI La interfaz HMI (del inglés Human machine interface) del sistema de adquisición y procesamiento de imágenes para periscopio, permitirá al operador monitorear y adquirir imágenes en tiempo real, ası́ como también grabar videos y modificar archivos dentro de la base de datos. El manejo de la interfaz se realiza a través de eventos que son activados por los controles presentes en la interfaz, desde un botón hasta el cambio de pestañas, en la figura 3.25 se listan los eventos utilizados en cada una de las ventanas. 51 Figura 3.25: Eventos de HMI. 3.2.4.1 Estructura La pantalla principal del sistema esta estructurada en tres secciones principales, divididas por pestañas. En la primera sección se encuentran los controles de adquisición acompañados de un visor. También se añadió la capacidad de importar imágenes del sistema de archivo, con la finalidad de facilitar las pruebas del sistema. La figura 3.26 muestra como luce la sección de adquisición en la interfaz diseñada. 52 Figura 3.26: Pantalla de adquisición del sistema La segunda sección llamada Administrador de imágenes, permite inspeccionar las imágenes y videos almacenados a través de un par de listas, una para imágenes y otra para videos. En estas se pueden seleccionar imágenes para su despliegue en el visor y cambiar el nombre por defecto de una imagen en particular. Dichas listas se pueden refinar a través de la búsqueda por marcadores incluida en la interfaz. También en esta sección se permite eliminar adquisiciones seleccionadas. Por último la pestaña de administración de imágenes brinda acceso al administrador de marcadores y al módulo de envı́o de correos electrónicos. En la figura 3.27 se muestra una captura de pantalla de la segunda sección. 53 Figura 3.27: Pantalla del administrador de imágenes. La tercera pestaña esta diseñada para albergar, manipulaciones o procesamientos que se quieran realizar sobre la imagen. Actualmente sólo se dispone de un control para aplicar el procesamiento descrito en este libro, y modificar parámetros sencillos como el brillo o contraste de una imagen seleccionada. Se dispone para ello de un visor de imágenes, y un control para el almacenamiento de una imagen procesada. La figura 3.28 muestra la pantalla de procesamiento descrita. Figura 3.28: Pantalla de procesamiento del sistema 54 3.2.4.2 Administrador de marcadores Adicionalmente a la pantalla principal, se diseñaron un par de ventanas de diálogo con finalidades mas especı́ficas. La primera de ellas es un administrador de marcadores, cuyo propósito es el de asignar a una imagen en particular un marcador. El administrador sólo puede ser desplegado una vez se haya seleccionado una imagen o video en la pantalla del administrador de imágenes (ver figura 3.27). Ello se debe a que el administrador de marcadores permite la modificación de marcadores en sólo una imagen a la vez. En la figura 3.29 se visualiza la interfaz creada para el administrador de marcadores. Ella permite la creación de marcadores nuevos, la asignación de alguno existente (a través del control Seleccionar Tag), o la remoción de estos, y muestra una lista con los marcadores actuales de la imagen. No se permite eliminar marcadores de forma global, dicha funcionalidad será manejada por la aplicación cuando un marcador sea eliminado de la última imagen a la cual se encuentra asignado. Figura 3.29: Pantalla del módulo de correo electrónico 55 3.2.4.3 Módulo de envı́o de correos electrónicos El módulo de envı́o de correos electrónicos ofrece flexibilidad al momento de transmitir información valiosa fuera del sistema de visión. Para ello se incluyo la funcionalidad de envı́o de imágenes a través de correo electrónico, utilizando el módulo de conectividad ofrecido por LabVIEW. En este se utilizó el protocolo SMTP para enviar correos desde una dirección pre-configurada, con la posibilidad de añadir hasta 10 imágenes por mensaje. Es importante destacar que las imágenes son convertidas a formato JPEG antes de ser enviadas, para reducir el tiempo de envı́o. Figura 3.30: Pantalla del módulo de correo electrónico Capı́tulo 4 Pruebas y resultados Para realizar las simulaciones del sistema de adquisición y procesamiento de imágenes, se utilizó una computadora portátil con las caracterı́sticas mostradas en la tabla 4.1. Cabe destacar que el poder de procesamiento entregado por ésta máquina es mucho menor, al diseñado para el sistema final. Sistema operativo Entorno RAM Tarjeta de video Procesador Almacenamiento Windows 7 LabVIEW 2014 4 GB Intel HD 3000 Intel Core i3-2310M Sandy Bridge @ 2.1 GHz Hitachi HDD 640GB 5400RPM Tabla 4.1: Caracterı́sticas del sistema utilizado para la simulación. En cuanto a la cámara, se utilizó la cámara integrada en la computadora portátil (webcam) para simular las tasas de transferencia necesarias. Ésta produce imágenes de una resolución más limitada y no permite la transferencia con el mosaico de Bayer. Debido a ello, la decodificación de Bayer se mantuvo desactivada en todas las adquisiciones. Al no estar codificadas, las imágenes enviadas por la cámara contienen la información 57 completa de los canales RGB, necesitando ası́ una mayor tasa de transferencia de bits, que compensó la baja resolución de la cámara para efectos de la simulación. Es importante resaltar que estas imágenes se corresponden a escenas dentro del entorno de trabajo, y su utilización pretende probar que se cumplan los requerimientos en cuanto a la tasa de bits necesaria para una correcta adquisición. Estas representan el tamaño de imágenes en un formato descomprimido, sin embargo no representan el tamaño final de los archivos comprimidos, ya que variaciones en la escena, modificarán la forma en la que ésta se comprima. 4.1 Resultados de adquisición Para medir la velocidad de adquisición, se gráfico la cantidad de cuadros por segundo que el visor de imágenes despliega, mientras el sistema estaba funcionando. La gráfica de la figura 4.1 muestra que el sistema sin estrés; ésto es sin almacenar ni procesar más de un archivo a la vez, mantiene alrededor de treinta (30) cuadros por segundo de forma constante. 58 Figura 4.1: Cuadros por segundo mostrados en el visor. Sin embargo, si se está realizando una grabación y codificando al mismo tiempo un vı́deo ya adquirido la cantidad de cuadros por segundo decae. Ello ocurre ya que la adquisición requiere una tasa de bits, que ahora tiene que compartir con la codificación de otro archivo en segundo plano. Nótese también que todas éstas pruebas fueron realizadas en un disco duro no dedicado, por lo cual ambos procesos, también tienen que compartir recursos con otros servicios del sistema operativo y otras aplicaciones. Además el disco duro presente en el computador portátil presenta prestaciones disminuidas respecto del diseñado (ver tabla 3.2). En el sistema de adquisición la captura de fotografı́as se realiza a través de un botón que el operador controla de forma manual. Para probar la capacidad del sistema de adquirir imágenes, se diseño una prueba fuera del sistema. En ella se modificó el evento relacionado con la toma de fotografı́as, y se configuró el sistema para adquirir y guardar imágenes en formato TIFF y JPEG a una resolución de 640x480 tan rápido como fuera posible. En la tabla 4.2 se puede observar que la velocidad de escritura tanto para TIFF (usado en almacenamiento) 59 como para JPEG (usado en el módulo de envı́o de correos) excede la cantidad de veces que el operador es capaz de accionar el evento de tomar fotografı́a. Tipo de Archivo JPEG TIFF Sin compresión TIFF ZIP Número de archivos generados por segundo 28,52 21,82 9,68 Tamaño de archivo (promedio) [KB] 28,2 900 476,3 Tabla 4.2: Tabla comparativa de formatos de imágenes También se hicieron pruebas con diferentes resoluciones de video para estresar el sistema y comprobar que se cumple con las velocidades de escritura en disco necesarias. Para ello, se procedió a grabar por un total de diez (10) minutos continuos. Como se puede ver en la tabla 4.3 y la figura 4.2, se mantuvieron valores alrededor de los treinta (30) cuadros por segundo para una tasa de bits similar a la diseñada. Para una tasa de bits superior, se pierden cuadros debido a limitaciones en la velocidad de escritura en disco, y como resultado la velocidad de adquisición se ve reducida. (a) Video 640x480 (b) Video 1280x720 Figura 4.2: Tasa de cuadros durante adquisiciones de video. 60 Resolución 640x480 1280x720 Tasa de bits requerida [MB/s] 35,2 105,5 Tasa de bits efectiva [MB/s] 35,1 68,2 FPS (promedio) FPS (mı́nimo) FPS (máximo) 29,9 19,4 24,9 5,6 30,4 24,9 Tabla 4.3: Resultados de adquisición de video. En la tabla 4.4 se muestran los resultados obtenidos para diferentes tamaños de archivos de video utilizando una tasa de bits similar a la diseñada. En esta se aprecia la capacidad del códec para comprimir archivos. Nótese que estos archivos, son grabaciones en el entorno de trabajo, y no videos reales, motivo por el cual, el tamaño del archivo comprimido puede variar a futuro. Tiempo de adquisición [s] 120 300 600 Tiempo codificando Lagarith [s] 148,3 341,1 860,4 Tamaño de archivo comprimido [GB] 0,864 2,16 4,45 Tamaño de archivo sin comprimir [GB] 4,08 10,2 20,45 Tabla 4.4: Tamaño de archivos para diferentes tiempos de adquisición. 4.2 Resultados del procesamiento de imágenes Para las pruebas de procesamiento se utilizaron catorce (14) imágenes con dieciséis (16) barcos en total. Estas imágenes fueron entregadas por la Armada de Venezuela, y adquiridas con una cámara comercial, actualmente dispuesta en el visor auxiliar del periscopio. Inicialmente se probó la eficacia del detector de horizonte, cuyos resultados se muestran en la tabla 4.5. 61 Total Imágenes 14 Horizonte detectado correctamente 7 Horizonte detectado erróneamente 7 Horizonte no detectado 0 Tabla 4.5: Eficacia del detector de horizonte El principal problema con éste detector, fueron las lı́neas del visor del periscopio. Éstas se encuentran en todas las imágenes, y se ubican en posiciones distintas para cada una de ellas lo cual dificulta su remoción. Ésto sumado a la falta de contraste existente entre el cielo y el mar, en muchas de las imágenes, provocó una detección errónea. Es importante destacar que para seis (6) de las siete (7) detecciónes erróneas, el horizonte fue confundido con una lı́nea horizontal en el visor. Sin embargo dicha detección no afectó de forma importante el procesamiento de las imágenes utilizadas, ya que en todos los casos la grilla del visor del periscopio se encontraba por encima del mar. Ésto provocó que en una imagen se obtuviera una partı́cula sobre el nivel del mar, pero nunca descartó la información relacionada a los barcos. A continuación se muestra la distribución obtenida en los datos segmentados. En la figura 4.4 podemos apreciar como se encuentra espaciada la información de color segmentada. Principalmente se aprecia que los centroides asignados se corresponden con una segmentación de la componente de luminosidad. Nótese que esta gráfica presenta la información en dos (2) para su mejor entendimiento, en el procesamiento diseñado, se utilizaron tres (3) coordenadas (L, a y b del espacio CIELab) 62 (a) Original (d) Segmentación (b) Pre-procesamiento (c) Detección de horizonte (e) Filtrado de partı́culas (f) Detección Figura 4.3: Ejemplo de procesamiento a una imagen de barco. Figura 4.4: Distribución de pı́xeles para componente L y A 63 Para evaluar la eficiencia obtenida con el sistema de detección es necesario tomar en cuenta los falsos positivos que éste pueda generar. En nuestro caso particular, llamaremos al complemento del objeto barco, no-barco. Todos las partı́culas que sobrevivan las erosiones morfológicas realizadas para filtrar objetos pequeños y alcancen la etapa de clasificación de partı́culas son barcos potenciales. La matriz mostrada a continuación permite evaluar las asignaciones a estos barcos potenciales, realizadas por el algoritmo de procesamiento diseñado. Reales Barcos No-Barcos Detectados Barcos 11 5 No-Barcos 5 – Tabla 4.6: Matriz de detección (Matching matrix ). De dieciséis (16) barcos, se detectaron correctamente once (11). Además cinco (5) objetos que no eran barcos, fueron detectados como barcos (falsos positivos). Los barcos detectados como no-barcos, corresponden a barcos no detectados (falsos negativos). Imagen ID 0 1 2 3 4 5 6 7 8 9 10 11 12 13 Detección ideal 1 1 2 2 1 1 1 1 1 1 1 1 1 1 Barcos detectados 1 1 2 2 1 1 0 0 0 1 1 0 1 0 Falsos positivos 0 0 0 0 0 0 1 0 0 0 1 2 1 0 Tiempo detectando [s] 18,3 22,6 9,5 20,1 25,1 21,1 50,9 54,2 52,2 36,3 49,6 51,4 48,2 34,3 Horizonte correcto 1 1 1 1 1 1 0 0 0 0 0 0 0 1 Horizonte errado 0 0 0 0 0 0 1 1 1 1 1 1 1 0 Tabla 4.7: Resultados de detección detallados. Segmentación correcta 1 1 1 1 1 1 1 1 0 1 0 0 1 0 64 En la tabla 4.7 se aprecia como los resultados se dividen principalmente en dos grupos, aquellos con un bajo tiempo de detección y una detección buena y aquellos con un alto tiempo de detección, que en general lograron resultados pobres. De los cinco (5) barcos no detectados, en dos (2) de los casos se debió a que la grilla del visor interfirió con la segmentación del objeto. Debido a ello, el objeto fue dividido en dos partes, y descartado posteriormente. En los otros tres casos el objeto, era muy pequeño y muy poco definido por efecto de la bruma presente en la imagen. Por su parte, los falsos positivos ocurrieron en imágenes donde el algoritmo de segmentación alcanzó su máximo de iteraciones sin alcanzar o converger a un error mı́nimo, ello provocó un mayor tiempo durante la segmentación y generó segmentaciones erradas que al llegar a la etapa de detección fueron erróneamente clasificadas como barcos. Ésto ocurrió cuando los datos utilizados para la segmentación en K-means carecen de contrate suficiente, lo cual se traduce en un bajo valor de varianza entre clases. Capı́tulo 5 Conclusiones y recomendaciones El proyecto de pasantı́a se culmina de manera exitosa, al lograr los objetivos necesarios para el desarrollo de un sistema de adquisición y procesamiento de imágenes con LabVIEW. Además se logró una primera versión de un detector de objetos en la escena marı́tima. La utilización de NI LabVIEW permitió un desarrollo rápido de subrutinas para poder realizar iteraciones sobre el desarrollo, que verificaran la funcionalidad del sistema en cada fase. A su vez PostgreSQL a través de su interfaz gráfica Pgadmin permitió la creación y modificación de la base de datos de forma sencilla. Se realizó con éxito la adquisición de imágenes en tiempo real. En el caso del video, las librerı́as de LabVIEW ofrecen poco soporte para su visualización, reduciendo el número de códecs y formatos compatibles. Además el video solo puede ser codificado luego de su completa adquisición, lo cual demora la capacidad del operador para inspeccionarlo. Se recomienda utilizar una unidad de disco exclusiva para el programa de adquisición, separada de la unidad donde se encuentre el sistema operativo. Esto permitirá el completo uso de la capacidad de escritura en disco cuando se realicen dos adquisiciones de video continuas. 66 Con éste proyecto de pasantı́a se hizo una primera incursión en los algoritmos para detección de óbjetos en la escena marı́tima. Los resultados obtenidos, muestran, limitaciones en las caracterı́sticas necesarias en la escena para una correcta detección. Las escenas con alto contraste y buena diferenciación llegaron en general a una detección exitosa, pero cuando la calidad de la imagen se veı́a deteriorada, la detección no existı́a o era errónea. Por ello resulta indispensable la correcta calibración de la cámara una vez se disponga en el visor del periscopio. Ésta se debe encontrar fija y bien enfocada, para permitir un mejor análisis de la escena, al eliminar la rejilla del visor. Es necesario también generar una librerı́a de procesamiento más amplia para LabVIEW a través de la inclusión de librerı́as dinámicas de OpenCV, ya que los recursos disponibles actualmente se encuentran muy enfocados a el procesamiento de imágenes en la industria, principalmente en lı́neas de producción. Finalmente se debe considerar la utilización de algoritmos supervisados de aprendizaje automático, una vez se tenga una base de datos de barcos más nutrida, con la finalidad de generar detectores más robustos que permitan la clasificación de barcos dentro de la escena marı́tima de forma automática. Bibliografı́a [1] N. 16165, Submarine Periscope Manual. Maritime Park Association, 1946. [Online]. Available: http://maritime.org/doc/fleetsub/pscope/index.htm [2] R. C. Gonzalez and R. E. Woods, Digital image processing 3rd edition. Prentice Hall, 2007. [3] A. C. Bovik, The essential guide to image processing. Academic Press, 2009. [4] T. Vitale, “Digital image file formats - tiff, jpeg, jpeg2000, raw and dng,” July 2007. [Online]. Available: http://cool.conservation-us.org/coolaic/sg/emg/library/pdf/ vitale/2007-07-vitale-digital image file formats.pdf [5] J. A. Hartigan and M. A. Wong, “Algorithm as 136: A k-means clustering algorithm,” Applied statistics, pp. 100–108, 1979. [6] D. J. Liu and J. Yu, “Otsu method and k-means,” in Hybrid Intelligent Systems, 2009. HIS’09. Ninth International Conference on, vol. 1. IEEE, 2009, pp. 344–349. [7] J. Li. (2012, March) On mean shift and k-means clustering. [Online]. Available: http://jamesxli.blogspot.com/2012/03/on-mean-shift-and-k-means-clustering.html 68 [8] National Instruments. (2011, June) Particle measurements. [Online]. Available: http://zone.ni.com/reference/en-XX/help/372916L-01/nivisionconcepts/particle measurements/ [9] ——. (2011, June) Edge detection concepts. [Online]. Available: http://zone.ni.com/ reference/en-XX/help/372916L-01/nivisionconcepts/edge detection concepts/ [10] B. Greenwood. (2011, December) Lagarith lossless video codec. [Online]. Available: http://lags.leetcode.net/codec.html [11] National Instruments, “What is labview?” Newsletter, August 2013. [Online]. Available: http://www.ni.com/newsletter/51141/en/ [12] ——, “Vision development module.” [Online]. Available: http://www.ni.com/vision/ esa/vdm.htm [13] ——, LabVIEW, Database Connectivity Toolkit User Manual, June 2008. [Online]. Available: http://www.ni.com/pdf/manuals/371525a.pdf [14] Basler. Aplication notes, comparison: aviator one megapixel vs. a102f, sca1400-17gm, sca1300-32gm, pia1000-48gm. [Online]. Available: https://www.baslerweb.com/media/ documents/BAS0911 Application Note Aviator and others.pdf [15] T. Collins, 2005. “Pseudo-flat [Online]. Available: field for imagej for microscopy manual,” March http://www.uhnres.utoronto.ca/facilities/wcif/imagej/ image intensity proce.htm [16] E. Arias-Castro and D. L. Donoho, “Does median filtering truly preserve edges better than linear filtering?” The Annals of Statistics, pp. 1172–1206, 2009. 69 [17] T. Acharya and A. K. Ray, Image processing: principles and applications. John Wiley & Sons, 2005. [18] PostgreSQL. About postgresql. [Online]. Available: http://www.postgresql.org/about/