Full text
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Eduardo Fernández-Cantalejo Padial
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 2
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 3 DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Memoria presentada como parte de los requisitos para la obtención del título de Máster en Automática, Robótica y Telemática por la Universidad de Sevilla. 30 de noviembre de 2016 Tutelada por: D. Manuel Ruiz Arahal
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 4
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 1 Índice general Resumen / Abstract ................................................................................................................ 8 1 | Introducción ................................................................................................................... 10 1.1 Antecedentes .................................................................................................................. 11 1.2 Objetivos globales .......................................................................................................... 11 1.3 Objetivos específicos ..................................................................................................... 13 2 | Alcance ........................................................................................................................... 15 3 | Fundamentos .................................................................................................................. 17 3.1 Principios generales ...................................................................................................... 17 3.2 Tipos de nube ................................................................................................................. 17 3.3 Generación de imágenes .............................................................................................. 19 3.4 Análisis cromático ......................................................................................................... 23 3.4.1 Conversión entre espacios de color ................................................................... 23 3.5 Análisis de texturas ....................................................................................................... 25 3.6 Tipos de clasificador ..................................................................................................... 27 3.6.1 Métodos basados en distancias ........................................................................... 27 3.6.2 Medidas de similaridad para clustering de píxel ............................................. 32 3.6.3 Técnicas de reducción de dimensión ................................................................. 33 3.6.4 Métodos no lineales .............................................................................................. 35 3.7 Segmentación ................................................................................................................. 36 4 | Metodología .................................................................................................................... 37 4.1 Análisis ............................................................................................................................ 38 4.1.1 Colección de Imágenes ......................................................................................... 39 4.1.2 Procedimiento ........................................................................................................ 43 4.1.3 Normalización ........................................................................................................ 53 4.1.4 Clasificador ............................................................................................................. 53 4.1.5 Herramienta de análisis ....................................................................................... 54 4.1.6 Optimización de la algoritmia ............................................................................. 61 4.2 Segmentación ................................................................................................................. 62 4.3 Implementación ............................................................................................................. 63 4.3.1 Interfaz de usuario ................................................................................................ 63 4.3.2 Estación terrestre ................................................................................................... 64 4.3.3 Aplicación móvil.................................................................................................... 65 5 | Resultado del Análisis ................................................................................................... 66
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 2 5.1 Clustering por tipo de característica .......................................................................... 66 5.1.1 Características cromáticas ................................................................................... 66 5.1.2 Características texturales ..................................................................................... 67 5.1.3 Técnica mixta cromático-textural ...................................................................... 68 5.2 Tasas de error de los clasificadores ............................................................................ 69 5.2.1 Clasificador de mínima distancia ....................................................................... 69 5.2.2 Clasificador K-means ........................................................................................... 70 5.2.3 Clasificador de Red Neuronal ............................................................................. 70 5.3 Resultado final ............................................................................................................... 72 6 | Segmentación ................................................................................................................. 73 6.1 Metodología .................................................................................................................... 73 6.2 Resultados de la segmentación ................................................................................... 73 6.2.1 Resultados en imágenes SWIMCAT ................................................................. 73 6.2.2 Segmentación de imágenes independientes ..................................................... 75 7 | Interfaz de usuario ......................................................................................................... 76 7.1 Configuración ................................................................................................................. 77 7.1.1 Variables de configuración .................................................................................. 77 7.1.2 Macro ‘Generar Matrices’ .................................................................................... 78 7.1.3 Macro ‘Salvar Matrices’ ....................................................................................... 78 7.1.4 Macro ‘Cargar Matrices’ ...................................................................................... 79 7.2 Muestra de resultados ................................................................................................... 79 7.2.1 Variables de configuración .................................................................................. 79 7.2.2 Macro ‘Mostrar Resultados’ ................................................................................ 79 7.3 Generar Imágenes ......................................................................................................... 79 7.3.1 Variables de configuración .................................................................................. 79 7.3.2 Macro ‘Generar Imágenes’ .................................................................................. 80 7.4 Clasificación ................................................................................................................... 80 7.4.1 Variables de configuración .................................................................................. 80 7.4.2 Macro ‘Generar Tablas’ ....................................................................................... 80 7.5 Segmentación ................................................................................................................. 81 7.5.1 Variables de configuración .................................................................................. 81 7.5.2 Macro ‘Generar Prototipos’ ................................................................................. 82 7.5.3 Macro ‘Segmentar’ ................................................................................................ 82 8 | Desarrollo de plataforma terrestre ............................................................................... 83 8.1 Metodología .................................................................................................................... 83 8.2 Especificaciones técnicas ............................................................................................. 83
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 3 8.2.1 Plataforma hardware ............................................................................................ 83 8.2.2 Entorno de programación .................................................................................... 84 8.3 Montaje ............................................................................................................................ 84 8.4 Resultados de la Identificación “en línea” ................................................................. 85 8.4.1 Ejemplo con cielo despejado ............................................................................... 85 8.4.2 Ejemplo con nubes claras..................................................................................... 86 8.4.3 Ejemplo con nubes tipo velo ............................................................................... 87 9 | Desarrollo de aplicación móvil ..................................................................................... 89 9.1 Identidad visual .............................................................................................................. 89 9.1.1 Icono de lanzamiento ............................................................................................ 89 9.1.2 Pantalla de la aplicación....................................................................................... 90 9.2 Interfaz de usuario ......................................................................................................... 93 9.2.1 Espacios de color ................................................................................................... 94 9.2.2 Segmentación cromática ...................................................................................... 95 9.2.3 Otras segmentaciones ........................................................................................... 96 9.3 Especificaciones técnicas ............................................................................................. 96 9.3.1 Plataforma hardware ............................................................................................ 96 9.3.2 Entorno de programación .................................................................................... 96 10 | Conclusiones .................................................................................................................. 97 11 | Referencias ..................................................................................................................... 99 12 | Glosario ........................................................................................................................ 101 Anexo 1. Conversión entre espacios de color ....................................................................... 102 Anexo 2. Fórmulas de características texturales ................................................................... 104 Anexo 3. Resultados de la segmentación ............................................................................... 109 A3.1 Segmentación textural completa ................................................................................. 109 A3.2 Segmentación textural en cuadrícula ......................................................................... 113 Anexo 4. Publicaciones realizadas.......................................................................................... 117 Anexo 5. Código de las funciones propias en MATLAB ...................................................... 118
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 4 Índice de Figuras Figura 1. Arquitectura general del Sistema Automático de Identificación de Nubes ........ 10 Figura 2. Esquema P&ID de un campo solar del proyecto CODISOL .................................. 12 Figura 3. Arquitectura general de un campo solar del proyecto CODISOL ........................ 13 Figura 4. Objetivos específicos del proyecto ............................................................................. 14 Figura 5. Fases del proyecto ......................................................................................................... 15 Figura 6. Ampliaciones en el alcance del proyecto .................................................................. 16 Figura 7. Tipos de nube ................................................................................................................. 19 Figura 8. Imagen con filtro de Gabor aplicada ......................................................................... 21 Figura 9. Descomposición conforme a campos tensoriales .................................................... 22 Figura 10. Espacios de color RGB, CMY, HSV e YIQ ............................................................. 24 Figura 11. Mapa de color CIELab ................................................................................................ 25 Figura 12. Clasificador de mínima distancia ............................................................................. 29 Figura 13. Clasificador kNN ......................................................................................................... 29 Figura 14. Clasificador K-Medias ................................................................................................ 30 Figura 15. Clasificador mediante discriminante de Fisher ..................................................... 30 Figura 16. Clasificador por cuantificación vectorial ................................................................ 31 Figura 17. Clasificador mediante agrupamiento jerárquico ................................................... 32 Figura 18. Clasificación mediante Coeficiente de correlación de Pearson .......................... 32 Figura 19. Análisis de Componente Principal ........................................................................... 33 Figura 20. Análisis de Factor ........................................................................................................ 34 Figura 21. Metodología del proyecto .......................................................................................... 37 Figura 22. Esquema del Análisis .................................................................................................. 38 Figura 23. Tipos de nube conforme SWIMCAT ....................................................................... 39 Figura 24. Ejemplos de nubes descartadas ................................................................................. 40 Figura 25. Ejemplo de muestreo de imágenes ........................................................................... 40 Figura 26. Ejemplo de fraccionamiento de imágenes .............................................................. 41 Figura 27. Ejemplo de redimensionamiento de imágenes ...................................................... 41 Figura 28. Tipos de nube con filtro de contraste ...................................................................... 41 Figura 29. Tipos de nube con filtro de Laws ............................................................................. 42 Figura 30. Tipos de nube con filtro de Gabor ........................................................................... 42 Figura 31. Tipos de nube filtrado mediante campo tensorial ................................................. 42 Figura 32. Ejemplo de imagen independiente ........................................................................... 43 Figura 33. Esquema de extracción de características cromáticas .......................................... 43 Figura 34. Planos de color empleados ......................................................................................... 45 Figura 35. Cubo de truplas de color ............................................................................................ 45 Figura 36. Distancia de un píxel a la línea de gris en una trupla de colores ....................... 45 Figura 37. Esquema de extracción de características texturales ............................................ 46 Figura 38. Distancia de niveles de gris entre píxeles ............................................................... 48 Figura 39. Matrices de co-ocurrencia de gris de los tipos de nube........................................ 49 Figura 40. Efecto de la reducción de escala en la matriz GCLM ........................................... 50 Figura 41. Efecto de los diferentes planos de color en la matriz GLCM .............................. 50 Figura 42. Efecto del fraccionamiento de imagen en la matriz GLCM ................................ 51 Figura 43. Diferentes mapas de Laws de una imagen ............................................................. 52 Figura 44. Esquema de extracción de características mixtas ................................................. 52 Figura 45. Arquitectura de la aplicación desarrollada para la fase de Análisis .................. 55
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 5 Figura 46. Arquitectura de la aplicación desarrollada para la fase de Segmentación ....... 56 Figura 47. Entorno textural completo considerado durante la segmentación .................... 63 Figura 48. Entorno textural en cuadrícula considerado durante la segmentación ............. 63 Figura 49. Layout del interfaz de usuario .................................................................................. 64 Figura 50. Hardware del Sistema Automático de Identificación de Nubes ......................... 64 Figura 51. Ejemplo de clustering de características cromáticas ............................................ 66 Figura 52. Ejemplo de clustering de variables linealmente dependientes ........................... 67 Figura 53. Ejemplo de clustering para segregaciones casi completas ................................. 68 Figura 54. Agregación de características al clustering ............................................................ 68 Figura 55. Tiempos de computación de redes neuronales ...................................................... 72 Figura 56. Segmentación de nubes tipo “Cielo” y “Patrón” .................................................... 73 Figura 57. Segmentación de nubes tipo “Nubes Oscuras” y “Nubes Claras” ...................... 74 Figura 58. Segmentación de nubes tipo “Velo” ......................................................................... 74 Figura 59. Segmentaciones de nubes independientes .............................................................. 75 Figura 60. Layout del interfaz de usuario por secciones ......................................................... 76 Figura 61. Flujograma del botón “Generar Matrices”.............................................................. 78 Figura 62. Flujograma del botón “Salvar Matrices” ................................................................. 78 Figura 63. Flujograma del botón “Cargar Matrices” ................................................................ 79 Figura 64. Flujograma del botón “Mostrar Resultados” .......................................................... 79 Figura 65. Flujograma del botón “Generar Imágenes” ............................................................ 80 Figura 66. Flujograma del botón “Generar Tablas” ................................................................. 81 Figura 67. Flujograma del botón “Generar Prototipos” ........................................................... 82 Figura 68. Flujograma del botón “Segmentar” .......................................................................... 82 Figura 69. Montaje con Raspberry Pi 3 ...................................................................................... 84 Figura 70. Escala de gris de los cinco tipos de nube ................................................................ 85 Figura 71. Segmentación mediante Raspberry Pi de cielo despejado ................................... 85 Figura 72. Segmentación mediante Raspberry Pi de nubes claras (I) ................................... 86 Figura 73. Segmentación mediante Raspberry Pi de nubes claras (II) ................................. 87 Figura 74. Segmentación mediante Raspberry Pi de nubes tipo velo ................................... 88 Figura 75. Aplicación móvil – Icono de lanzamiento .............................................................. 89 Figura 76. Aplicación móvil – Pantalla de la aplicación ......................................................... 93 Figura 77. Aplicación móvil – Interfaz de usuario ................................................................... 94 Figura 78. Aplicación móvil – Espacios de color...................................................................... 95 Figura 79. Aplicación móvil – Segmentación cromática ........................................................ 95 Figura 80. Segmentación con procesamiento textural completa (I) .................................... 109 Figura 81. Segmentación con procesamiento textural completa (II) .................................. 110 Figura 82. Segmentación con procesamiento textural completa (III) ................................. 110 Figura 83. Segmentación con procesamiento textural completa (IV) ................................. 111 Figura 84. Segmentación con procesamiento textural completa (V) .................................. 111 Figura 85. Segmentación con procesamiento textural completa (VI) ................................. 112 Figura 86. Segmentación con procesamiento textural completa (VII) ............................... 112 Figura 87. Segmentación con procesamiento textural completa (VIII) .............................. 113 Figura 88. Segmentación con procesamiento textural en cuadrícula (I) ............................ 113 Figura 89. Segmentación con procesamiento textural en cuadrícula (II) ........................... 114 Figura 90. Segmentación con procesamiento textural en cuadrícula (III) ......................... 114 Figura 91. Segmentación con procesamiento textural en cuadrícula (IV) ......................... 115 Figura 92. Segmentación con procesamiento textural en cuadrícula (V) .......................... 115 Figura 93. Segmentación con procesamiento textural en cuadrícula (VI) ......................... 116 Figura 94. Segmentación con procesamiento textural en cuadrícula (VII)........................ 116
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 12 El sistema permitirá la detección de cúmulos nubosos y podrá predecir la fracción de campo solar que se verá afectada por la disminución de radiación consecuente del paso de las nubes. De esta forma, el sistema de control podrá anticipar el efecto de estas perturbaciones, lo cual tiene un impacto en la optimización y la eficiencia de la operación, permitiendo la manipulación de variables fundamentales y la previsión y planificación correctas de uso de fuentes de energía auxiliares para mantener la producción lo más cerca posible de la generación diaria prevista. La Figura 2 muestra el esquema P&ID básico del funcionamiento del sistema. CAMPO DE COLECTORES SOLARES Bucle 10 Bucle 1 T TIC T T F FIC (…) TANQUE DE ALMACENAMIENTO TÉRMICO Sistema de conversión de energía TFY SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES Figura 2. Esquema P&ID de un campo solar del proyecto CODISOL El desarrollo de este sistema tendrá un doble impacto en el sector. Por un lado, contribuirá al aumento de la competitividad de la energía solar frente a la generación de energía a partir de carbón y otros combustibles fósiles. Adicionalmente, contribuirá también a la mejora en la integración fiable de las plantas de energía solar en la red eléctrica, ya que este sistema hará posible una mejor regulación de la producción y un ajuste a la generación diaria prevista a pesar de las perturbaciones nubosas. Se desarrollarán modelos de predicción a partir de medidas meteorológicas, así como a partir de imágenes recogidas por un sistema de cámaras de ojo de pez. Una vez desarrollado el modelo, este sistema de cámaras se utilizará como una red de sensores distribuidos para predecir la radiación solar en la planta. Las distintas cámaras estarán conectadas entre ellas y con el sistema de control a través de una red inalámbrica, y utilizarán algoritmos de consenso para mejorar las predicciones. Se aplicarán técnicas de estimación distribuidos en red que tengan en cuenta los posibles retardos y pérdidas de paquetes en las comunicaciones.
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 13 Figura 3. Arquitectura general de un campo solar del proyecto CODISOL Para validar los algoritmos desarrollados, se pretende aplicar los resultados a dos instalaciones solares: una de ellas está disponible en los laboratorios del departamento de Ingeniería de Sistemas y Automática de la Escuela Técnica Superior de Ingeniería de Sevilla, con una arquitectura general similar a la mostrada en la Figura 3. La segunda batería de pruebas se realizará en las instalaciones de un socio industrial de amplísima experiencia en el sector, lo que permitirá que participe en las propuestas, valide los resultados y se difundan e implementen los resultados científicos de este proyecto de investigación, aumentando así su impacto nacional e internacional. Los subproyectos básicos asociados a Codisol se podrían asimilar a los siguientes: • Módulo de cálculo de la sombra proyectada. o Extracción de imágenes rectificadas a partir de la cámara con lente de ojo de pez. o Identificación del tipo de nube, que aportará en última instancia una estimación de la altura de la nube. o Cálculo de la distancia de la nube. o Cálculo de la sombra proyectada a partir de la distancia, la altura y la posición del sol. • Módulo de control de la planta solar. 1.3 Objetivos específicos Este proyecto aborda el problema de la identificación del tipo de nube, recorriendo las fases de análisis y segmentación sobre una plataforma de simulación para lograr una implementación sobre sistemas reales y funcionales.
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 14 APLICACIÓN MÓVIL ESTACIÓN TERRESTRE Figura 4. Objetivos específicos del proyecto Se proponen como objetivos específicos el desarrollo de dos aplicaciones reales a los resultados del análisis: • Una estación terrestre, sobre una plataforma hardware de reducidas dimensiones y económicamente viable para un despliegue notable de estaciones que cumplan con los objetivos del objetivo global que cumpla con los requerimientos del proyecto CODISOL. • Una aplicación móvil que haga disponible la aplicación a un mayor número de usuarios pero con funcionalidades limitadas. Este documento aborda cada asunto en secciones independientes. Así, la base teórica y fundamentos se recogen en la sección 3 del documento. La metodología de cada una de las etapas del proyecto y de cada implementación realizada se explican en detalle en la sección 4. Los resultados del Análisis y la Segmentación se recogen en las secciones 5 y 6 del documento, mientras que el diseño y desarrollo del Interfaz de Usuario (en MATLAB), la estación terrestre y la aplicación móvil ocupan las secciones 7, 8 y 9. Finalmente, la sección 10 aborda las conclusiones del proyecto en su conjunto, dando paso en las secciones 11 y 12 a las referencias y el glosario.
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 15 2 | Alcance El presente proyecto posee un objetivo triple, en el marco de la identificación de patrones de nube: • Análisis descriptivo de las características cromáticas y texturales que mejor describen cada tipo de nube; • Segmentación de imágenes almacenadas; y • Desarrollo de un clasificador que caracterice cada píxel de las imágenes en vivo. El objetivo último es, por tanto, el desarrollo de una aplicación que sea capaz de clasificar cada tipo de nube presente en el cielo en cada instante a partir de las imágenes captadas por una cámara colocada a la intemperie. La Figura 5 muestra las fases del proyecto, donde la Fase I representa el alcance original del presente TFM y las Fases II y III corresponden a ampliaciones realizadas “motu propio” para la obtención de un sistema plenamente funcional en estaciones terrestres y móviles. De hecho, se ha realizado una publicación en las XXXVII Jornadas de Automática de los resultados obtenidos del Análisis Básico (ver Anexo 4). Análisis Básico Análisis Ampliado Segmentación Interfaz usuario Implementación Fase I Fase II Fase III Figura 5. Fases del proyecto El alcance detallado del proyecto se muestra en la Figura 6. El alcance original consistía en el análisis de las imágenes del banco de imágenes del SWIMCAT y un muestreo de las mismas para la aplicación de las técnicas cromática, textural y mixtas y finalmente la implementación de un clasificador de mínima distancia para la comparación de dichos resultados. La Ampliación I ha consistido en el análisis de imágenes adicionales, derivadas siempre del banco de imágenes SWIMCAT, en búsqueda de preprocesamiento que potencialmente pudiera mejorar los resultados. Así mismo, se introdujeron una nueva técnica y dos clasificadores adicionales para, más allá del análisis, obtener imágenes segmentadas en las diversas combinaciones.
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 16 La Ampliación II introduce una Interfaz de Usuario en MATLAB para facilitar la aplicación del método descrito en este documento al análisis y segmentación de imágenes que pudieran proceder de otros bancos de imágenes. Finalmente, la Ampliación III convierte el análisis teórico en un sistema real sobre dos plataformas separadas con desarrollos independientes: la primera basada en el computador de placa reducida Raspberry Pi y la segunda una plataforma software para su ejecución en dispositivos con sistema operativo Android. Imágenes SWIMCAT Clasificador mínima distancia Car. texturales Car. cromáticas Im. Redimension. Im. Divididas Im. Muestreadas Im. Filtradas Mapas Law’s Mapas Gabor Campo Tensores Características Law’s Clasificador K- means Redes neuronales Estación terrestre Car. mixtas Segmentación Textural Segmentación Cromática Segmentación Mixta Alcance Original Ampliac. I Ampliac. II Interfaz de usuario MATLAB Aplicación móvil Ampliac. III Figura 6. Ampliaciones en el alcance del proyecto Este proyecto empleará un grupo de 784 fotografías diferentes tomadas con la cámara desde la que posteriormente se realizará el análisis en vivo y abordará el problema desde un punto de vista de la invariabilidad y robustez ante cambios de iluminación o tipo de cámara y, cuando esto no sea posible, emplear técnicas que minimicen en lo posible esta dependencia.
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 17 3 | Fundamentos 3.1 Principios generales Las nuevas generaciones de sensores aportan información e imágenes de diferente naturaleza o redundante que en la actualidad puede tratarse y fusionarse para la consecución de resultados mejorados respecto a los métodos clásicos que aún se emplean. Las imágenes multivariadas son un medio con el que propagar información compleja, masiva y heterogénea para la alimentación de sistemas de análisis de datos. El término genérico “imagen multivariada” incluye medios de información diversa (imagen en color, datos multimodales, datos multiespectrales e hiperespectrales, imágenes multi-fecha, datos heterogéneos y observaciones multifuente). En las imágenes multivariadas los datos pueden ser de diferentes tipos: • Datos multibanda: desde el caso más sencillo de imagen en color (p. ej. imágenes en RGB) a los casos más complejos de imágenes multiespectral (de 10 a 100 bandas espectrales), hiperespectrales (de 100 a 1000 bandas espectrales) o superespectrales (de más de 1000 bandas espectrales). • Datos multimodales: la noción de modalidad se refiere a la adquisición de datos describiendo la misma escena pero por diferentes protocolos. • Datos multivista: la misma escena se observa por el mismo sensor desde diferentes posiciones o por varios sensores usando la misma modalidad. • Datos heterogéneos: tenemos acceso a matrices por las que la comprensión de los modelos físicos asociados con estos parámetros es indispensable. Este estudio aborda el problema de la identificación de nubes desde un punto de vista de tratamiento de imágenes multibanda considerando todas las posibles bandas cromáticas extraídas a partir de las bandas RGB que se reciben directamente del sensor. 3.2 Tipos de nube En 1956 la Organización Meteorológica Mundial (OMM) clasificó los tipos de nubes que existen por géneros, os cuales se subdividen en especies y en variedades. A continuación, resumiremos los 10 géneros principales de nubes pertenecientes a la clasificación recopilada en el Atlas Internacional de Nubes de la OMM. 1. Cirrus (Ci): nubes formadas por filamentos que adoptan un aspecto fibroso y delicado. Adquieren formas estiradas o estilizadas a modo de fajas estrechas o ramificadas. Su constitución física es de cristales de hielo. 2. Cirrostratus (Cs): nubes traslúcidas en forma de velo, casi transparente, que dejan entrever el disco solar o lo pueden acabar cubriendo completamente. A estas nubes se asocian fenómenos ópticos como halos solares (o lunares), iridiscencias o parhelios. Están constituidas por cristales de hielo.
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 18 3. Cirrocumulus (Cc): nubes en forma de capa o manto delgado que adoptan formas de onda, rizos o gránulos, sin sombras propias. Están constituidas por cristales de hielo. 4. Altrostratus (As): nubes de tipo medio-alto, estratiformes y mixtas, es decir, compuestas por gotas de agua o cristales de hielo. Presentan partes bastante delgadas que permiten entrever el sol y adoptan una forma de capa nubosa grisácea. Este tipo de nubosidad puede llegar a dejar en la alta montaña alguna llovizna débil o algún copo de nieve. 5. Altocumulus (Ac): capa de nubes de aspecto fibroso o difuso en forma de anco o manto, de color grisáceo o blanco y gris mezclados, que tiene sobras propias y está compuesto por láminas o rodillos. 6. Nimbostratus (Ns): capa nubosa gris, frecuentemente sombría, de aspecto borroso debido a las precipitaciones intermitentes de lluvia o nieve que de ella se producen. Por debajo de este manto nuboso, aparecen nubes bajas desgarradas o soldadas o no con ella. Esta capa nubosa puede llegar a tapar completamente el sol debido a su espesor. 7. Stratocumulus (Sc): capa de nubes o manto gris o blanquecino compuesto por rodillos, losas o masas globulares alargadas, de aspecto no fibroso, soldados o no, que pueden llegar a cubrir el cielo en su totalidad. 8. Stratus (St): capa nubosa generalmente gris, con base bastante uniformes que puede dejar alguna llovizna débil o algún prisma de hielo. Cuando el sol es visible a través de la capa, su contorno es claramente discernible. 9. Cumulus (Cu): nubes densas, separadas entre sí, con contornos bien delimitados, que se desarrollan verticalmente, adoptando formas redondeadas, algodonosas o en forma de torres. En su parte superior se conserva una protuberancia a modo de coliflor. Cuando el sol las ilumina, adoptan una tonalidad blanca muy brillante, aunque su base acostumbra a ser oscura. 10. Cumulonimbus (Cb): es la nube de tormenta por excelencia, densa y de considerable desarrollo vertical, en forma de montaña o de enormes torres. Su parte superior acostumbra a ser lisa, fibrosa o estriada y casi siempre aplastada, adoptando una forma de yunque. Por debajo de la base de esta nube –muy oscura o casi negra– aparecen nubes bajas, desgarradas, soldadas o no a ella, o precipitaciones en forma de virga.
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 19 La Figura 7 muestra ejemplos de cada uno de los 10 tipos de nube descritos anteriormente. Nubes Altas Cirrus Cirrostratus Cirrocumulus Nubes Medias Altrostratus Altocumulus Nubes Bajas Nimbostratus Stratocumulus Stratus Cumulus Cumulonimbus Figura 7. Tipos de nube Según la altitud, las nubes se clasifican en altas, medias y bajas. Las nubes altas están situadas entre los 5 y los 13km de altura, las medias las encontramos entre los 2 y los 7 km y las bajas las veremos entre el nivel del suelo y los 2 km. 3.3 Generación de imágenes 3.3.1.1 Imágenes con filtro de contraste Las imágenes son filtradas para realzar su textura de manera que se esperarían ligeras mejoras en la identificación. La regla empleada para su conversión a escala de grises previa aplicación del filtro se realiza mediante la siguiente ecuación de ajuste: 0.29890.58700.1140
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 20 Posteriormente se aplicará un filtro de ajustes que mapea los valores de intensidad de la imagen en color I a la imagen en escala de grises J de tal manera que el 1% de los datos saturan a las intensidades menores y mayores de I . De esta manera se incrementa el contraste de la imagen de salida J . 3.3.1.2 Mapas de Laws Como se comenta en la sección 4.1.2.3, de los posibles mapas de Laws que se pueden generar se ha tomado el resultado de las convoluciones de las máscaras L5E5-E5L5. 3.3.1.3 Imágenes con filtro de Gabor Un filtro de Gabor se obtiene mediante la modulación de una senoide con una gaussiana. Para el caso de señales unidimensionales, una senoide 1D se modula con una gaussiana. Este filtro por tanto responderá a algunas frecuencias pero sólo en una parte localizada de la señal. Las señales bidimensionales, como las imágenes, consideran la senoide en una orientación determinada que, combinada con la gaussiana, obtiene un filtro de Gabor. Sea g(x, y, θ, φ) la función que define el filtro de Gabor centrada en el origen con θ como frecuencia espacial y φ como la orientación. Se pueden ver los filtros de Gabor como: ,,, !"#$%# &#' ()*+,"-./0$%/,102 Se demuestra que σ , la deviación estándar del núcleo gaussiano depende de la frecuencia espacial a medir, es decir, θ . La respuesta del filtro de Gabor a una imagen se obtiene mediante una operación de convolución 2D. Sea I(x,y) la imagen y G(x, y, θ, φ) la respuesta del filtro de Gabor con frecuencia θ y orientación φ a una imagen en el punto (x,y) en la imagen del plano, entonces G(.) se obtiene como: ,,,334,564,65,,74875 En la respuesta al filtro de Gabor, las zonas blancas indican una alta amplitud de respuesta, mientras que las zonas oscuras indican bajo nivel de respuesta. Una muestra del tipo de mapas creados por el filtro de Gabor en función de la orientación y la frecuencia se puede observar en la Figura 8.
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 21 Figura 8. Imagen con filtro de Gabor aplicada Esta imagen muestra una nube de tipo ‘Patrón’ en cinco escalas y ocho orientaciones diferentes, empleando un filtro de Gabor de dos dimensiones de 39 x 39. Las imágenes más claras denotan la orientación predominante de las nubes. En este estudio, y con el único objetivo de realizar un primer acercamiento a esta técnica, se empleará la componente de mayor escala y orientación -45º como conjunto de imágenes que podrían servir para la clasificación de imágenes. 3.3.1.4 Campo tensorial La votación tensorial es una técnica robusta cuyo objetivo es la extracción de información perceptual de nubes de puntos. Esta técnica es aplicable a nuestro proyecto mediante la transformación de las imágenes analizadas tratando de aislar las características texturales para una mejor detección. En 3D, la votación tensorial estima medidas de prominencia de la probabilidad de un punto a pertenecer a una superficie, una curva o un nudo, o si se trata de un caso aparte. Se basa en la propagación y agregación de las normales más probables mediante tensores de segundo orden que usan matrices simétricas semidefinidas positivas, a través de un proceso de votación similar a la convolución, asumiendo que los puntos vecinos pertenecen a la misma superficie suave. Esta técnica se ha mostrado versátil dado que ha sido adaptada a problemas más allá de los que originalmente se consiguieron excelentes resultados. La principal hipótesis hecha por el tensor estructural es que la orientación de los gradientes cambia lentamente en regiones con bordes y rápidamente en regiones con esquinas. Además, asume que el tamaño del gradiente es pequeño en regiones planas y grande en regiones con bordes o esquinas. Por tanto, el tensor estructural estima la estructura local de la imagen mediante una suma ponderada de gradientes en una vecindad. Para una imagen en escala de grises el tensor estructural J se define como la convolución de una función gaussiana con el gradiente tensorizado de la imagen. 9 : ;<;< =
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 28 • Distancia de Chebychev 7( , , R 2max ,WM..1 X U , 6 U ( R 2X • Distancia de Minkowski 7( , , R 2\AX U , 6 U ( R 2X 1 ,WM : ] M/: • Distancia de Mahalanobis 7( , , R 2_T U , 6 U ( R 2V ` B M T U , 6 U ( R 2Va La distancia de Minkowski es una generalización de las distancias Euclídea, Manhattan y Chebychev, donde un parámetro p debe ser definido. Si p = 1, es la distancia de Manhattan, si p = 2, es la distancia Euclídea y finalmente si p = ∞, es la distancia de Chebychev. Adicionalmente, la distancia Euclídea es un caso particular de la distancia de Mahalanobis: en la distancia Euclídea no se tiene en cuenta la correlación entre los atributos. Los métodos basados en distancias consideran que cada ejemplo corresponde a un punto en el espacio métrico y el rendimiento de sus predicciones, mediante la comparación de la proximidad, difieren, en gran parte, en la manera en que son elegidos los ejemplos. A continuación se hace una breve descripción de los métodos más comunes; el k-vecinos más cercanos, el discriminante de Fisher y el aprendizaje por cuantificación vectorial son métodos supervisados y la agrupación jerárquica y k-medias son métodos no supervisados. 3.6.1.1 Clasificador de mínima distancia Se ha optado por el clasificador más sencillo para validar los resultados ya que su funcionamiento será tanto más correcto cuanto más separados se encuentren los clusters entre s. De esta manera se está positivizando el distanciamiento entre las categorías de nubes. Sea E un conjunto dotado de una (pseudo)métrica d : E x E → R . Supongamos que se dan m prototipos p 1 , p 2 , … , p m ∊ E , tales que p i ∊ c i representa a la clase c i ( i = 1; 2; ;m), es decir, un prototipo por clase. Una clasificación por distancia mínima se define para cada x ∊ E como x ∊ c i ⇔ d(x, p i ) ≤ d(x, p j ); j = 1, 2, … , m donde d es la (pseudo)métrica definida en E .
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 29 p i p j p k c i c j c k x Figura 12. Clasificador de mínima distancia En este tipo de clasificador, la fase de aprendizaje consiste únicamente en la elección de un buen representante o prototipo de cada clase en el conjunto de prototipos que pertenecen a la misma. Normalmente el representante elegido suele ser aquel que se encuentra más centrado dentro de la distribución de los prototipos en la clase. La Figura 12 muestra la clasificación de un punto en un espacio con tres clases diferentes. 3.6.1.2 Método kNN También llamado método de k-vecinos más cercanos. Se trata de uno de los algoritmos más analizados en aprendizaje automático. Este algoritmo permite aproximar funciones de salida para valores discretos o continuos. Asume que las instancias corresponden a un punto en un espacio métrico n-dimensional. El valor de la función de salida para un nuevo ejemplo es estimado de los valores conocidos de los k ejemplos de entrenamiento más cercanos. La Figura 13 muestra el funcionamiento del clasificador kNN. Figura 13. Clasificador kNN 3.6.1.3 K-medias Los métodos de particionamiento son otro tipo importante de técnicas de agrupamiento. Los grupos son mejorados gradualmente de acuerdo con una función de optimización.
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 30 Entre ellos el más conocido es k-medias. Inicialmente un conjunto de centroides son elegidos al azar; luego, los ejemplos son asignados a su centroide más cercano formando grupos y el centriode de los grupos nuevos es calculado. Este proceso se repite hasta que los centroides no cambien. Aunque este algoritmo ha tenido éxito en aplicaciones industriales y científicas, tiene algunos inconvenientes; el más significativo es que su desempeño depende fuertemente de los supuestos iniciales y del número de centroides propuestos. La Figura 14 muestra la construcción del clasificador kNN. Figura 14. Clasificador K-Medias 3.6.1.4 Discriminante de Fisher Cada clase es representada por medio un centroide que es un punto que minimiza la suma de la distancia para los elementos que pertenecen a una clase; un nuevo ejemplo es marcado de acuerdo con la etiqueta de su centroide más cercano. Este método es ansioso y los ejemplos son removidos de la memoria una vez que el modelo (conjunto de centroides) haya sido obtenido. Dado que el espacio de representación está compuesto por truplas de datos nominales o numéricos, se puede derivar un modelo más expresivo. Los centriodes de las clases adyacentes son unidos por líneas rectas y la mediana de estas líneas son las reglas discriminantes. Figura 15. Clasificador mediante discriminante de Fisher
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 31 3.6.1.5 Aprendizaje por cuantificación vectorial (LVQ) El modelo aprendido es una colección de prototipos donde un ejemplo es clasificado de acuerdo con la proximidad a estos prototipos. Inicialmente los prototipos son elegidos al azar, y sus posiciones se actualizan hasta que se alcanza un umbral. Este proceso se realiza de manera iterativa. Primero, un ejemplo del conjunto de entrenamiento es elegido y el prototipo más cercano es determinado. Dependiendo de las etiquetas, tanto del ejemplo como las del prototipo, la posición del prototipo cambia. Si las ambas etiquetas emparejan, el prototipo se acerca más al ejemplo. Figura 16. Clasificador por cuantificación vectorial 3.6.1.6 Agrupamiento jerárquico Este algoritmo se basa en la construcción de un árbol en el que las hojas son los elementos del conjunto de ejemplos, el resto son nodos con subconjuntos de ejemplos que pueden ser utilizados como particionamiento del espacio. Este árbol de grupos es también llamado dendrograma. Existen dos métodos para construir el árbol: 1) Aglomerativo. El árbol se va construyendo empezando por las hojas, hasta llegar a la raíz. Inicialmente, cada ejemplo es un grupo y se van aglomerando los grupos para formar conjuntos más numerosos hasta la raíz, que contiene todos los ejemplos. 2) Desaglomerativo. Se parte de la raíz, que es un solo grupo conteniendo a todos los ejemplos, y se hacen divisiones paulatinas hasta llegar a las hojas que representa a la situaci´on en que cada ejemplo es un grupo. La forma en que los grupos son divididos o fusionados está guiada por el principio en que los elementos más cercanos deben permanecer en el mismo grupo. En consecuencia, es necesario conocer si dos grupos son cercanos. Teniendo en cuenta que la función de distancia es definida solo para un par de elementos, es necesario extenderla para medir la distancia entre grupos.
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 32 Figura 17. Clasificador mediante agrupamiento jerárquico 3.6.2 Medidas de similaridad para clustering de píxel 3.6.2.1 Ángulo espectral El ángulo espectral es la extensión d-dimensional del ángulo 2D. Si se consideran los píxeles como puntos de un espacio d-dimensional y si, para cada punto, se dibuja un vector al origen, entonces el ángulo espectral mide el ángulo entre parejas de tales vectores. Pequeños valores del ángulo espectral corresponden a buenas similaridad entre píxeles. Este método computa el ángulo espectral entre cada píxel y un espectro objetivo. Nótese que el ángulo espectral no es sensible a la diferencia entre iluminaciones de píxeles; esto es una importante desventaja dado que píxeles con diferentes intensidades pero buena correlación podrán reagruparse dentro de la misma clase. Desde otro punto de vista, el ángulo espectral es una herramienta importante para la medición de correlaciones lineales entre los espectros de píxeles. No es por tanto posible distinguir entre las correlaciones positivas y negativas. 3.6.2.2 Coeficiente de correlación de Pearson El coeficiente de correlación de Pearson consigue superar la desventaja de píxeles con diferentes intensidades, ya que considera la media de los datos extraídos. Se define como: El coeficiente de correlación de Pearson no puede distinguir entre píxeles con espectros similares pero diferentes intensidades. Figura 18. Clasificación mediante Coeficiente de correlación de Pearson
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 33 3.6.3 Técnicas de reducción de dimensión 3.6.3.1 Análisis de Componente Principal El análisis de Componente Principal (PCA) es la mejor técnica de reducción dimensional lineal en términos de error medio cuadrático. Se trata de un método de segundo orden basado en la matriz de covarianza de las variables. En otros campos también es conocido como Descomposición del Valor Singular (SVD), la transformada Karhunen-Loève o transformada Hotelling. En esencia, PCA busca reducir la dimensión de los datos hallando combinaciones lineales ortogonales (las Componentes Principales) de las variables originales con la mayor varianza. Su interpretación puede ser compleja ya que, aunque las variables incorreladas se construyen como combinaciones lineales de las variables originales, éstas no se corresponden necesariamente con magnitudes físicas dotadas de significado. Figura 19. Análisis de Componente Principal 3.6.3.2 Análisis de Factor El Análisis de Factor (FA), al igual que el PCA, es un método lineal, basado en sumatorios de datos de segundo orden. El FA asume que las variables medidas dependen de factores desconocidos comunes, a menudo no-medibles. El objetivo del FA es descubrir tales relaciones y por tanto pueda usarse para reducir la dimensión de los datos siguiendo el modelo de factor.
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 34 Figura 20. Análisis de Factor 3.6.3.3 Búsqueda de Proyección La Búsqueda de Proyección (PP, Projection Pursuit) es un método lineal que, a diferencia de PCA y FA, puede incorporar información de mayor de segundo orden, y por tanto es útil para conjuntos de datos no-gausianos. Es computacionalmente más intensivo que los métodos de segundo orden. Dado un índice de proyección que define el “interés” de una dirección, PP busca las direcciones que optimizan ese índice. Como la distribución gaussiana es la de menor interés (ya que tiene la menor estructura) los índices de proyección generalmente miden algunos aspectos no-gaussianos. 3.6.3.4 Análisis de Componente Independiente El Análisis de Componente Independiente (ICA) es un método de orden elevado que busca proyecciones lineales, no necesariamente ortogonales unas a otras, que sean tan estadísticamente independientes como sea posible. Mientras que PP sólo tiene en cuenta estadísticas de segundo orden, éste depende de todas las estadísticas de orden superior. ICA se puede considerar una generalización de conceptos de PCA y PP. Mientras que PCA busca variables no correladas, ICA busca variables independientes. Además ICA libre de ruido es un caso especial de PP. El modelo con ruido ICA es equivalente al modelo FA asumiendo datos no-gausianos. Las posibilidades de definición de la función objetivo son diversas: • Máxima probabilidad y entropía de red • Información mutual y divergencia Kullback-Leibler • Correlaciones cruzadas no lineales • PCA no-lineal • Tensores acumulados de segundo orden
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 35 • Negentropía • Acumulados de orden superior • Funciones de contraste general 3.6.4 Métodos no lineales 3.6.4.1 Curvas principales Las curvas principales son curvas suaves que pasan por el “centro” de los conjuntos de datos multidimensionales. Las curvas principales lineales son en realidad componentes principales, mientras que las curvas principales no-lineales generalizan el concepto. El concepto puede extenderse a superficies de dimensiones superiores pero el procedimiento de estimación se vuelve muy complejo. 3.6.4.2 Escalado multidimensional El escalado mutidimensional (MDS) se trata de una representación de los elementos en un nuevo espacio que mantiene las proximidades originales de los datos. Las proximidad mide las similaridades entre los elementos y, en general, es una medida de distancia: cuanto más similares sean dos elementos, menos será la distancia entre ellos. Las medidas de distancia populares incluyen la distancia Euclídea (norma L 2 ), la distancia Manhanttan (L 1 , norma absoluta) y la norma máxima. Los resultados de MDS son indeterminados con respecto a la traslación, rotación y reflexión. MDS se ha usado típicamente para transformar los datos a dos o tres dimensiones y visualizando el resultado para descubrir estructuras ocultas en los datos. 3.6.4.3 Mapas topológicamente continuos Hay diversos métodos basados en hallar un mapa continuo para transformar datos de altas dimensiones a entramados de bajas dimensiones de dimensiones fijas. Se pueden diferenciar dos tipos principales: • Mapas auto-organizados de Kohonen (KSOM) • Redes de densidad, con el mapeado topográfico generativo (GTM) como caso especial. 3.6.4.4 Redes neuronales Las redes de neuronas artificiales (denominadas habitualmente como RNA) son un paradigma de aprendizaje y procesamiento automático inspirado en la forma en que funciona el sistema nervioso biológico. Se trata de un sistema de interconexión de neuronas que colaboran entre sí para producir un estímulo de salida. 3.6.4.5 Algoritmos genéticos y evolucionarios Los algoritmos genéticos y evolucionarios (GEA) son técnicas de optimización basados en la teoría darwiniana de la evolución, empleando la selección natural y genética para hallar la mejor solución entre los miembros de una población compitiendo. Hay muchas
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 36 referencias de cómo los GEA pueden usarse para la reducción de dimensión. En esencia, dado un conjunto de soluciones candidatas, una función objetivo evalúa la idoneidad de los candidatos y los valores para los parámetros del algoritmo escogido, GEA busca el espacio candidato para el miembro con el ajuste óptimo. 3.7 Segmentación El objetivo de la segmentación es dividir una imagen en regiones, esto es, descomponer una imagen en sus partes constituyentes separando los objetos de interés entre sí. Cada una de las regiones tienen características homogéneas y constituye generalmente un objeto. Los métodos de segmentación se pueden agrupar en cuatro clases diferentes: a) Métodos basados en píxeles, que a su vez pueden ser: • locales (basadas en las propiedades de los píxeles y su entorno) • globales (basadas en la información global obtenida, por ejemplo, con el histograma de la imagen). b) Métodos basados en bordes. c) Métodos basados en regiones, que utilizan las nociones de homogeneidad y proximidad geométrica, como las técnicas de crecimiento, fusión o división. d) Métodos basados en modelos. Antes de pasar a estudiar cada uno de estos modelos vamos a ver técnicas para la detección de puntos, rectas, bordes y contornos, como herramientas previas.
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 37 4 | Metodología El proyecto se ha planteado como un proceso de análisis sistemático y exhaustivo de las mejores características para la descripción de cada tipo de nube, mediante un método que obtenga el mayor grado de independencia del tipo de imagen y las condiciones de luminosidad en el momento de la obtención de estas. Se proponen los siguientes principios sobre los que se cimentará el presente proyecto: • Colección de imágenes extensa, de forma que se incluya el mayor número de escenarios posibles en el estudio, dentro de una normalidad de funcionamiento, esto es, en los momentos entre el amanecer y el atardecer, pero sin incluir estos. • Normalización de las características obtenidas, para que todas se encuentren en el mismo entorno. • Clasificación empleando diferentes clasificadores para evaluar la bondad de cada uno de ellos y poder así seleccionar el que muestre el mejor comportamiento. La Figura 21 muestra los puntos principales de la metodología seguida en este proyecto. Análisis Segmentación 4 mejores caract. texturales Implementación Segment. K-means 2 mejores caract. cromáticas Segment. Red neuronal Segment. Mín. Dist. Imágenes SWIMCAT Imágenes propias Imágenes “in situ” Segmentación“en vivo” Figura 21. Metodología del proyecto El Análisis tiene como entrada las imágenes del banco de datos SWIMCAT y busca la obtención de las 2 mejores características cromáticas y las 4 mejores características texturales. Posteriormente, se emplearán las características seleccionadas durante la fase de Análisis para segmentar diversas imágenes, incluyendo algunas del SWIMCAT pero también otras realizadas con medios propios para verificar un comportamiento coherente ante fuentes diferentes de aquellas con las que se entrenó el algoritmo. Finalmente, se implementará una de las segmentaciones en un sistema real con análisis de imágenes “en vivo”.
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 44 cada imagen. La Tabla 1 muestras los espacios de color descritos en la sección 3.4 de este documento y cuáles se han seleccionado para el presente estudio. Tabla 1. Espacios de color incluidos en el análisis Familia Espacio Empleado Características Observación Tría tri-cromática RGB X 3 R-B X 1 R/B X 1 (B-R)/(B+R) X 1 Impresión CMY Tonalidad HSL Saturación HSV X 3 HSI HCI x 1 (Croma) Televisión YIQ X 3 YUV YCbCr YCC CIE CIELab X 3 CIELuv A continuación se muestran todas las conversiones seleccionadas para el estudio cromático aplicado a una misma imagen de nubes. La transformación de una nube en los diferentes espacios y posteriormente mostrados en espacio RGB se muestran en la Figura 34.
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 45 Figura 34. Planos de color empleados Entre las diferentes técnicas (índice de Pearson, Análisis de Componentes Principales, ...) se ha empleado el análisis de la Distancia Geométrica Euclídea (DGE) a la diagonal del espacio de color como descriptor cromático, pues se busca evitar generalizaciones que puedan distorsionar las características individuales de cada punto de la imagen. 0 255 255 Plano R Plano G Plano B Línea de gris (R 0 ,G 0 ,B 0 ) Distancia O Figura 35. Cubo de truplas de color El análisis de la DGE consiste en calcular la distancia de un píxel para cada trupla de las 16 características previamente definidas a la diagonal de un cubo formado por el máximo valor en cada uno de estas características, tal como muestra la Figura 35. Línea de gris (D) Oa Distancia (R 0 ,G 0 ,B 0 ) Posición de píxel (C) Figura 36. Distancia de un píxel a la línea de gris en una trupla de colores El cálculo de la distancia se basa en sencillas reglas geométricas, obteniendo la formula siguiente: bc|be|sin_iij_|kl6be|6|be|6|kl| 62|be||kl|aa donde de la Figura 36 se obtiene que los módulos: |be|m255 ) 255 ) 255 ) 441,67 |kl|m ) ) )
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 46 La distancia de cada pixel a la línea de gris para cada trupla de planos de color puede tratarse como una característica independiente. Las distancias normalizadas constituirán las características del vector de características que servirán de entrada al clasificador. ?icobc pqr ,bc pqs ,…,bc stu ,…v Cuando se emplean gran cantidad de datos estadísticamente distribuidos, es usual descartar los datos inferiores al cuartil 25% y superiores al 75 %, sobre todo cuando se emplearán estos datos para generar los prototipos de un clasificador basado en distancias. Los límites intercuartiles se han calculado como: • Distancia intercuartil: wbw N 6w M • Límite inferior: ww M 61,5wb • Límite superior: wBw N 1,5wb En este estudio se han considerado las 560 truplas de características cromáticas posibles para una muestra de 213.600 píxeles extraídos de las imágenes de la base de datos SWIMCAT. Por tanto, cada trupla supone una característica diferente en el clasificador de mínima distancia. Agrupando varios pares de truplas se mejoran los resultados de clasificación. La Figura 5 muestra las regiones de clasificación generadas por una sola trupla y agrupadas en parejas de truplas. 4.1.2.2 Características texturales – Matriz de Co-ocurrencia El objetivo del procedimiento de extracción de características texturales consiste en la obtención de un vector de características con una fila por imagen y tantas columnas como características se quieran estudiar. En nuestro caso estamos buscando las cuatro mejores características texturales, como se muestra en la Figura 37. 22 características texturales por imagen 125 x 125 píxeles [ T1, T2, T3, T4 ] Vector de Características Análisis en vectores de 4 componentes Figura 37. Esquema de extracción de características texturales Las características que se incluyen en el estudio, aunque no siempre de forma explícita, de todas las características descritas en la sección 3.5 se recogen en la Tabla 2.
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 47 Tabla 2. Características incluidas en el análisis Método Tipo Subtipo Empleado Características Estadístico Primer orden Media Desviación típica Varianza Segundo orden Matriz co-ocurrencia X 22 F. autocorrelación Geométricos Primitivas Modelos Campos Markov Fractales Tratamiento de señal Dominio tiempo Momentos Law's X 9 Dominio Fourier Gabor y ondículas Wavelets Filtro Gabor X 16 Espectro de potencia Espectros Las características texturales son magnitudes estadísticas extraídas del valor del entorno de un punto, a diferencia de las características cromáticas que solo depende del valor tonal de cada píxel de manera individual. Así, se asume que la información de contexto textural en una imagen se encuentra definida por la relación espacial general o media con la que los tonos de gris tienen unos con otros. Esta información textural se considera adecuadamente especificada por la matriz de frecuencias relativas P ij con la cual dos celdas vecinas separadas una distancia d tienen lugar en la imagen, una con un tono gris i y la otra con un tono de gris j. Tales matrices de frecuencias de tonos de gris con dependencia espacial son función de la relación angular entre las celdas vecinas como de la distancia entre ellas. Las características texturales que se han considerado son las definidas por Haralick (1973), Soh (1999) y Clausi (2002) que se construyen como Matriz de Coocurrencia de Niveles de Gris (GLCM), presentadas en la Tabla 3 y cuya formulación matemática se recoge en los Anexos 2 y 3. Tabla 3. Características texturales de Haralick, Soh y Clausi Nro. Abrev. Característica Haralick, 1973 Soh, 1999 Clausi, 2002 1 CON Contraste (Inercia) 2 2 5 2 COR Correlación 3 3 8 3 ENE Segundo momento angular (Energía) 1 1 2 4 HOM Momento de la diferencia inversa (Homogeneidad) 5 4 7 5 ACR Autocorrelación 6 6 CMC Coeficiente de máxima correlación 14 7 RDG Relevancia de grupo 9
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 48 Nro. Abrev. Característica Haralick, 1973 Soh, 1999 Clausi, 2002 8 TDG Tono de grupo 8 9 DIS Disimilaridad 7 4 10 ENT Entropía 9 5 3 11 DIN Diferencia inversa 6 12 PDM Probabilidad máxima 10 1 13 SCV Suma de cuadrados: Varianza 4 14 MDS Media de la suma 6 15 VDS Varianza de la suma 7 16 ENS Entropía de la suma 8 17 VDD Varianza de la diferencia 10 18 EDD Entropía de la diferencia 11 19 MIC1 Medidas informativas de correlación (1) 12 20 MIC2 Medidas informativas de correlación (2) 13 21 INN Diferencia inversa normalizada 9 22 IDN Momento de la diferencia inversa normalizada 10 Debe tenerse en cuenta que sólo aquellas características puramente estadísticas son independientes a cambios en el nivel de gris, esto es, no varían con el tono de gris. Son las características consideradas por Clausi en su artículo de 2002. Como se ha indicado, el resultado durante el tratamiento de textura mediante la matriz de coocurrencia depende de dos parámetros: distancia entre vecinos y ángulo entre vecinos. Este estudio considerara las vecindades de 1 píxel y cuatro ángulos: 0º, 90º, 135º y 270º, como se indica en la Figura 38. 0º 90º 135º 270º Figura 38. Distancia de niveles de gris entre píxeles En este estudio se han considerado todas las imágenes de la base de datos, siendo el entorno del punto la imagen completa, de tamaño 192x192 píxeles.
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 49 Haralick recoge en su artículo que un componente esencial del marco conceptual de la textura es una medida, o más preciso, cuatro medidas muy relacionadas de las que todas las características derivan. Estas medidas son matrices denominadas matrices de tono de gris de vecinos angulares dependientes del espacio. Estas matrices son función de una relación angular entre las celdas adyacentes así como de la distancia entre ellas. Este apartado analiza cada característica a una distancia d=1 en sus cuatro direcciones (0º, 45º, 90º y 135º). De las 22 características analizadas, 7 de ellas son independientes del ángulo: • Suma de cuadrados: Varianza • Media de la suma • Varianza de la suma • Entropía de la suma • Autocorrelación • Tono de grupo (cluster shade) • Relevancia de grupo (cluster prominence). Ninguna de estas características es, conforme a lo expuesto por Clausi, independiente del nivel de gris. En nuestro caso, el cálculo de la matriz de co-ocurrencia de grises da como resultado la generación de una matriz que puede expresarse como imagen en escala de grises, de manera que se pueda apreciar visualmente los diferentes tipos de ‘huella’ que cada tipo de nube imprime en dicha matriz, tal como se muestra en la Figura 39. Figura 39. Matrices de co-ocurrencia de gris de los tipos de nube
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 50 Así mismo, cada operación que se realice como pre-filtro de la imagen afectará al comportamiento de dicha matriz. Se representan a continuación el efecto de algunas de las operaciones efectuadas. • Reducción de escala Se observa que, al disminuir la escala, la ocurrencia de grises se difumina por lo que hay que tener controlada la escala. Figura 40. Efecto de la reducción de escala en la matriz GCLM • Tratamiento de la imagen como canales independientes Puesto que la imagen es la superposición de tres canales de color, y puesto que la matriz de co-ocurrencia requiere como paso previo la transformación al espacio de grises, podría tomarse un solo canal de color y realizar el estudio prescindiendo del efecto del resto. Esta conversión, sin embargo, no produce ningún cambio en la forma y distribución de la huella. En toda una pérdida de densidad que, a efectos prácticos, no se traduce en cambios en los resultados obtenidos. Figura 41. Efecto de los diferentes planos de color en la matriz GLCM
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 51 • División de la imagen Al dividir la imagen en varias subimágenes, el efecto que se produce es el mismo que la reducción de escala, si bien en otro tipo de nubes con bordes se produce la separación entre cielo y nube, por lo que las huellas pueden cambiar significativamente. Figura 42. Efecto del fraccionamiento de imagen en la matriz GLCM 4.1.2.3 Características texturales de Laws Laws observó que ciertos operadores de gradiente tales como los operadores laplaciano y de Sober acentuaban la microestructura subyacente de la textura en una imagen. Esta fue la base para un esquema de extracción de característica basado en una serie de matrices de respuesta impulsional a nivel de píxel obtenido de la combinación de los vectores que se muestran a continuación. Cada matriz de una dimensión se asociacon una microestructura subyaciente y etiquetada usando un determinado acrónimo. Las matrices se convolucionan con otras matrices de forma combinacional para general un total de 25 máscaras, típicamente etiquetadas como L5L5 para la máscara resultante de la convolución de dos matrices L5. Nivel L5 = [ 1 4 6 4 1 ] Borde E5 = [ -1 -2 0 2 1 ] Punto S5 = [ -1 0 2 0 1 ] Ola W5 = [ -1 2 0 -2 1 ] Onda R5 = [ 1 -4 6 -4 1 ] Estas máscaras son posteriormente convolucionadas con un campo textural para acentuar su microestructura obteniendo una imagen de la que se mide la energía de las matrices de la microestructura junto con otras variables estadísticas. La medida de la energía de una vecindad centrada en F(j,k) , S(j,k) se basa en la desviación estándar de la vecindad calculada a partir de la amplitud media de la imagen: Bx,y1 z ) {A Ao|x,y6}x,yv ) ~ •W ~ ~ •W ~ € M/)
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 52 donde WxW es la vecindad del píxel y la amplitud media de la imagen M(j,k) se define como: }x,y M •# ∑ ∑ |x,y ~ •W ~ ~ •W ~ . En este documento se han calculado nueve mapas de Laws a partir de estas máscaras, obteniendo para cada imagen de nube, tal como se muestra en la Figura 43. Figura 43. Diferentes mapas de Laws de una imagen De todos ellos se ha seleccionado el correspondiente a las convoluciones L5E5-E5L5 para su procesamiento dentro de una colección de imágenes. 4.1.2.4 Técnica mixta cromático - textural Las características texturales se han calculado a partir de 534 muestras de imágenes de la base de datos de SWIMCAT, lo que suponen 2136 características si tenemos en cuenta los cuatro ángulos y extraído cada una de las 22 características texturales, de manera que se obtiene un vector de 2136 x 22 características texturales. La construcción del vector de características se muestra en la Figura 44. 22 características texturales por imagen 125 x 125 Píxeles (15.625 total) 16 planos de color 560 características cromáticas por píxel [T1, T2, T3, T4] [C1_1, C2_1 C1_2, C2_2 … C1_15625, C2_15625] [ C1_1, C2_1, T1, T2, T3, T4 C1_2, C2_2, T1, T2, T3, T4 … C1_xx, C2_xx, T1, T2, T3, T4 ] SELECCIONADAS Vector de Características Figura 44. Esquema de extracción de características mixtas
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 53 Las características cromáticas se han extraídos de las mismas muestras que las características texturales, a razón de 1.000 píxeles por cada tipo de nube, por lo que se obtiene una muestra final de 213.600 píxeles y constituyendo un vector de características de dimensiones 213600 x 560 (las x columnas). Se puede identificar, por tanto, el valor cromático de cada píxel y el valor correspondiente de la textura asociada. A partir de esta información se pueden crear matrices de características de tal manera que cada columna corresponde a un píxel y cada la puede significar indistintamente una característica cromática o textural indistintamente. A partir de estas matrices se pueden generar los vectores prototipos de cada que servirán para evaluar cada píxel de cualquier imagen de forma individual. 4.1.3 Normalización Las características hasta el momento emplean una escala diferente para cada una de ellas. Para poder emplear prototipos y realizar comparaciones coherentes se hace necesario una normalización de las variables. Por un lado, las características cromáticas se mueven en el intervalo [0,255] por lo que su normalización se puede realizar mediante la asignación al blanco (255) del valor 1, obteniendo un intervalo de [0,1]. Sin embargo, en la búsqueda de la obtención de características robustas e independientes de las condiciones externas durante la toma de imágenes se ha optado por realizar dos tipos de normalización para llevar a cabo una comparación de los resultados. • Normalización lineal: bcƒ I/`KJ bc 255 • Normalización estadística: bcƒ I/`KJ bc6„ … ) 4.1.4 Clasificador La sección 3.6 de este documento describe los clasificadores más habituales. De todos ellos se han seleccionado tres para la realización de este análisis, conforme a la Tabla 4.
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 60 TFM_protot_Neural(·) Función de prototipado para un clasificador neuronal. TFM_clasif_MinDist(·) Función de clasificación para un clasificador de Mínima Distancia o K-means. TFM_clasif_Neural(·) Función de clasificación para un clasificador neuronal. • TFM_Segm_Protot_Crom(·), TFM_Segm_Protot_Txtl(·), TFM_Segm_Protot_Mixta(·) Funciones que generan los prototipos para la segmentación de imágenes conforme al emparejamiento configurable. • TFM_Segm_SegmIndiv_Crom(·), TFM_Segm_ SegmIndiv _Txtl(·), TFM_Segm_SegmIndiv _Mixta(·) Funciones para la segmentación de imágenes individuales o parte de una colección de imágenes. 4.1.5.4 Funciones de terceros Además de las funciones que tiene MATLAB instaladas por defecto, se han empleado como punto de partida otros archivos que completan las herramientas: • GLCM – aportación de Avinash Uppuluri: o Características GLCM GLCM_Features() • CIELab – aportación de Yossi Rubner: o Conversión al espacio de color CIELab RGB2Lab() • Gabor – aportación de Mohammad Haghighat: o Características de Gabor de una imagen gaborFeatures() o Banco de filtros de Gabor gaborFilterBank() • Laws – aportación de Lukas Tencer: o Filtros de imagen de Laws laws() Estas funciones han sido modificadas para cumplir con los propósitos de este proyecto; en especial la función GLCM_Features(·) que ha sido completamente replanteada para realizar el cálculo de forma matricial.
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 61 4.1.6 Optimización de la algoritmia 4.1.6.1 Formulación matricial frente a iterativa Los tiempos de procesamiento son muy importantes en este tipo de análisis que manejan gran cantidad de información y sometido a un procesamiento iterativo y recurrente. En estos algoritmos cualquier tipo de optimización se traduce en un ahorro importante de tiempos de procesamiento. Este proyecto está basado en algoritmos tomados de otros autores que han traducido de forma literal la formulación contenida en las definiciones teóricas. Como parte de este proyecto se ha convertido esta formulación cuya ejecución se basa en bucles de cálculo es una formulación matricial que obtiene el mismo resultado numérico pero consigue un ahorro significativo en tiempo de resolución. Sirva como ejemplo de optimización el caso de la Energía textural de una imagen: • Planteamiento iterativo: † M AA4,x ) R, • Planteamiento matricial: † M o1 … 1v‡k} 1.U• ‡k} 1.U• {1…1€ La colección completa de variables texturales en su forma matricial puede encontrarse en el Anexo 2 de este documento. Como resultado se han obtenido los siguientes tiempos de procesamiento de una imagen: Tabla 5. Tiempos de procesamiento según su formulación Algoritmo Tiempo f. iteración Tiempo f. matricial 22 carac. texturales considerando 1 ángulo 0.1050 s 3.0845 s 22 carac. texturales considerando 4 ángulos 0.1857 s 5.8927 s Si se tiene en cuenta que la colección de imágenes SWIMCAT que se está considerando es de 560 imágenes (caso de imágenes seleccionadas), el ahorro tras un análisis completo puede ser de 54 minutos. 4.1.6.2 Muestreo de características cromáticas Debido al elevado número de píxeles que se están considerando, y puesto que el número de características cromáticas se eleva a 560 cuando se consideran las distancias a la línea de gris tal como se explica en la sección 4.1.2.1 de este documento, se ha realizado un muestreo aleatorio de los píxeles a procesar.
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 62 En la generación de los prototipos de clasificación se han considerado únicamente un 5% sobre el total de las muestras. Estas muestras se eligen de manera completamente aleatoria dentro de la misma categoría de nubes, esto es, se mantiene la proporción de muestras para cada tipo de nube. Los porcentajes de clasificación resultantes serán, por tanto, diferentes cada vez que se analicen las muestras, si bien se espera un comportamiento coherente con porcentajes de clasificación similares. 4.2 Segmentación Este proyecto tiene como objetivo la segmentación basado en un método mixto que incluye al mismo tiempo una segmentación basado en propiedades locales de píxeles (descriptores cromáticos) y en propiedades basadas en regiones (descriptores texturales), conforme a la clasificación explicada en la sección 3.7 de este documento, si bien se obtienen segmentaciones cromáticas y texturales puras como pasos intermedios del proceso. Las imágenes se evaluarán empleando los clasificadores de mínima distancia, K-means y redes neuronales y como resultado se obtendrá una matriz con elementos enteros en el entorno de [1,5], que se corresponderán con las cinco clases de nubes en estudio. Tabla 6. Valores de píxel en la segmentación Tipo de nube Valor clasificación Escala de grises Negro - 0,00 Cielo 1 42,67 Patrón 2 85,33 Nubes oscuras 3 128,00 Nubes claras 4 170,67 Velo 5 213,33 Blanco - 255,00 La Tabla 6 incluye, además de los valores en escala de gris de cada nube, los colores negro y blanco para dar una referencia del tono de gris que aparecerán en las segmentaciones. De esta manera, el cielo tendrá un tono de gris muy oscuro y el velo será muy claro. Se han implementado dos tipos de segmentación mixta diferentes: 1. Segmentación basada en el procesamiento textural con entornos cuyo centro varía píxel a píxel. En este caso, la matriz resultante tendrá unas dimensiones menores que la imagen original debido a que la segmentación textural está basado en regiones y se perderán, por tanto, los bordes de la imagen por no disponer de información completa sobre su clasificación real, como se muestra en la Figura 47. El entorno analizado dependerá de las dimensiones del entorno de región que se configure durante el análisis textural de la imagen.
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 63 Figura 47. Entorno textural completo considerado durante la segmentación En este documento se han considerado entornos de 64x64 píxeles para las imágenes de 125x125 del banco de imágenes SWIMCAT. En este caso se estarían calculando 3.721 matrices GLCM, con lo que esto conlleva de procesamiento y tiempo de ejecución. 2. Segmentación basada en la división de la imagen en entornos separados e independientes entre ellos. En este caso, la matriz que se obtiene no presenta la pérdida de los bordes. Su resultado esperado será más impreciso que la segmentación textural completa, pero su ejecución será significativamente más rápida. La Figura 48 representa las áreas texturales consideradas durante la segmentación. Figura 48. Entorno textural en cuadrícula considerado durante la segmentación Las imágenes consideradas durante la ejecución de imágenes en vivo tienen dimensiones 320x240 píxeles y se emplean cuadros de 20x20 píxeles, con lo que se procesan únicamente 192 matrices GLCM. La sección 6 | de este documento recoge los resultados de las diferentes segmentaciones. 4.3 Implementación 4.3.1 Interfaz de usuario El interfaz de usuario recoge todas las técnicas empleadas durante las fases de Análisis y Segmentación bajo un mismo entorno de ejecución con el objetivo de presentar al usuario un interfaz amigable.
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 64 La Figura 49 muestra el “layout” del interfaz de usuario. Se encuentra dividida en 5 zonas, cuatro de las cuales corresponden a la fase de Análisis y la última a la de Segmentación. Figura 49. Layout del interfaz de usuario La sección 7 | de este documento desarrolla los procesos detrás de cada opción propuesta en el interfaz de usuario. 4.3.2 Estación terrestre La fase final del proyecto consiste en la implementación de los resultados sobre una plataforma real del sistema de identificación automática de nubes. Se ha optado por el SBC (Single Board Computer) de bajo coste Raspberry Pi 3, cuya potencia de cálculo es limitada pero precisamente por ello supone un reto de optimización de los algoritmos. Figura 50. Hardware del Sistema Automático de Identificación de Nubes
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 65 Se han implementado las tres formas de segmentación con una resolución reducida para conseguir tiempos de respuesta razonables. 4.3.3 Aplicación móvil
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 66 5 | Resultado del Análisis 5.1 Clustering por tipo de característica 5.1.1 Características cromáticas La aplicación del método de la Distancia Geométrica Euclídea a las 16 características cromáticas definidas anteriormente ofrece 560 combinaciones de distancias posibles, que es el número de características que se han estudiado por cada píxel. Debido al elevado número de variables y la dificultad de segmentar manualmente cada imagen se han tomado muestras significativas de cada tipo de nube para entrenar el clasificador. En esta investigación se han calculado de forma exhaustiva todas las posibles combinaciones para el clasificador de mínima distancia y se han obtenido tasas de error en la clasificación aceptables para 1 sola dimensión y buenos en caracterizaciones con dos distancias, como se observa en la Tabla 7. Tabla 7. Tasas de error globales de características cromáticas Clasificador 1 Característica 2 Características Mínima distancia 22,86% 10,52% K-means 30,39% 16,82% Red neuronal 19,46% 9,32% ( ** ) ( ** ) En el caso de las redes neuronales sólo se evaluaron 500 de las 156.520 muestras debido a los elevados tiempos de computación. La Figura 5 muestra la distribución de los píxeles caracterizados por lo que se puede observar las distancias que existen entre las cinco clases de nubes. Debe notarse que, debido al solapamiento se obtienen tasas de error altas para las clases B y E. Figura 51. Ejemplo de clustering de características cromáticas Algunas de las figuras obtenidas apuntan a la existencia de subclases de nubes, lo cual es positivo para clasificaciones más exigentes que requieras de categorías de nubes no incluidas en este estudio.
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 67 5.1.2 Características texturales Las características texturales empleadas son 22 variables que se han estudiado en emparejamientos de hasta cuatro variables, mejorando el rendimiento global con cada nueva característica que se empleaba en el clasificador. La Tabla 4 muestra los resultados para los mejores grupos de dos, tres y cuatro características texturales. Tabla 8. Tasas de error globales de características texturales Clasificador 1 Característica 2 Caract. 3 Caract. 4 Caract. Mínima distancia 39,46% 16,65% 12,23% 10,58% K-means 36,43% 28,21% 21,21% 19,24% Red neuronal 32,99% 10,09% 5,09% 4,32% Se ha representado las nubes de dispersión de cada uno de los cinco tipos de escenarios para cada una de las parejas de parámetros y se ha evaluado los que presentan una mayor segregación y por tanto candidatos, así como aquellos emparejamientos de parámetros linealmente independiente o cercano a esta situación. De las figuras obtenidas se observa que en la mayoría de los casos existe una dependencia entre estos parámetros ya que la representación en tres dimensiones presenta superficies o líneas en lugar de nubes. Ejemplos de la dependencia de variables se muestran en la Figura 52. Figura 52. Ejemplo de clustering de variables linealmente dependientes Por el contrario, otras agrupaciones presentan un gran potencial en cuanto a la segregación de parámetros, como se muestra en la Figura 53.
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 68 Figura 53. Ejemplo de clustering para segregaciones casi completas Debido a la relación entre variables se obtienen representación de clustering similares para distintos parámetros. Finalmente, la Figura 54 representa gráficamente la mejora en el clustering conforme se van introduciendo nuevas características. Esta figura parte de la Entropía de la Suma a la que añade la Varianza de la Suma y finalmente la Entropía de la Diferencia. Se observa que mientras que con una sola característica existe un fuerte acoplamiento entre las clases de nube, el clustering con tres características parecen estar completamente separadas unas clases de otras. Figura 54. Agregación de características al clustering 5.1.3 Técnica mixta cromático-textural La técnica mixta cromático-textural se basa en la clasificación de mediante el uso de cuatro características texturas y dos cromáticas. Puesto que las dimensiones del cluster es de 6 características su representación como forma de gráfico no es posible. Además, debido al elevado número de posibles combinaciones entre características una búsqueda exhaustiva de las características más óptimas requeriría varias semanas de cálculo, por lo que se ha optado por tomar las mejores características individuales y componer el clasificador a partir de éstas.
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 69 Con las características escogidas para cada uno de los clasificadores y entrenando las características cromáticas con el 100% de las muestras, en lugar del 5%, los resultados obtenidos mejoran notablemente, como muestras la Tabla 9. En el caso de las redes neuronales, además, se han empleado 50 neuronas, en lugar de las 25 en la fase de Análisis. Tabla 9. Tasas de error del clasificador cromático-textural Clasificador A B C D E Total Mínima Distancia 0,00 % 5,48 % 0,94% 8,25% 4,46% 3,65% K-means 0,00 % 43,34 % 1,27% 41,63% 44,02% 23,34% Red Neuronal 0,00 % 0.38 % 0,08% 0,75% 0,56% 0,35% 5.2 Tasas de error de los clasificadores 5.2.1 Clasificador de mínima distancia Las tasas de error obtenidas mediante el uso de clasificador de mínima distancia se presentan en la Tabla 10. Contiene también la evaluación de los otros clasificadores para los parámetros óptimos de éste. Tabla 10. Tasas de error del clasificador de mínima distancia Procedim. Selección Normalización Car#1 Car#2 Car#3 Car#4 MínDist K-means Redes Neur Cromático Muestras Lineal 80 226 10,52% 48,25% - SGLD Seleccionadas Lineal 7 10 14 18 10,58% 36,38% 10,85% SGLD Seleccionadas Estadístico 7 10 14 18 10,67% 37,01% 10,18% SGLD Fraccionadas Lineal 8 10 14 18 20,34% 34,76% 24,26% SGLD Redimensionadas Lineal 7 10 14 18 8,97% 38,93% 10,54% SGLD Muestras Lineal 4 6 14 22 15,72% 17,40% SGLD Mapas Law's Lineal 1 11 17 22 65,73% 75,38% 4,38% SGLD Filtro contraste Lineal 4 10 15 16 31,89% 55,80% 29,34% SGLD Mapas Gabor Lineal 6 20 14 21 33,44% 35,94% 27,23% SGLD Campos tensoriales Lineal 8 10 14 13 55,56% 68,95% 39,44% Law's Seleccionadas Lineal 2 4 7 8 33,39% 44,46% - Las características óptimas que se obtienen como resultado del análisis son: • 7 CPROM Cluster Prominence • 10 ENTRO Entropía • 14 SAVGH Media de la suma • 18 DENTH Entropía de la diferencia Nótese que las características escogidas hacen óptima la mayoría de los tipos de imagen empleados.
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 76 7 | Interfaz de usuario El interfaz de usuario es un diálogo programado en MATLAB que integra los diferentes pasos del Análisis y la Segmentación. La Figura 60 muestra el “Layout” del interfaz. Figura 60. Layout del interfaz de usuario por secciones Este interfaz se ha dividido en cinco áreas: 1. Configuración Área donde se configuran los parámetros iniciales que se emplean en las áreas 1 a 4. Se debe escoger el procedimiento (cromático, textural o mixto), las imágenes, la normalización (lineal o estadística) y el clasificador (mínima distancia, K-means y red neuronal). Una vez configurado se pueden generar las matrices para trabajar con ellas y además salvarlas para un uso posterior. 2. Muestra de resultados Área para la generación de los diagramas de 1D, 2D y 3D de clustering para la comparación de resultados. 3. Generación de imágenes
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 77 Si se desea, se pueden generar imágenes fraccionadas o redimensionadas para su posterior estudio y clasificación, a las ratios dados de 0.5 y 0.33 en caso de redimensionamiento y de 4 y 9 en caso de fraccionamiento. 4. Clasificación Área para la generación de las tablas de clasificación para los parámetros configurados. Este proceso consiste en la generación de prototipos y clasificación de las mismas imágenes con las que se han entrenado los algoritmos. Estos datos aportan una importante información acerca de la bondad de los prototipos generados. 5. Segmentación Área para la generación de prototipos específicos y la segmentación de imágenes individuales. 7.1 Configuración 7.1.1 Variables de configuración La Tabla 15 incluye todas las variables de configuración de este módulo. Las variables sombreadas corresponden a valores configurables desde los menús o textos. Tabla 15. Variables MATLAB de Configuración Variable Sección Valor Inicial Tipo handles.PROCED Configuración 0 Entrada handles.SELEC Configuración -1 Entrada handles.NORMALIZ Configuración 1 Entrada handles.CLASIF Configuración 0 Entrada handles.Inic_foto Configuración 'A_' Entrada handles.Fin Configuración 'img.pgn' Entrada handles.nroFotos Configuración 1 Interna handles.ANG Configuración 4 Interna handles.NroClases Configuración 5 Interna handles.FraccionaEN Configuración 0 Interna handles.RedimensionaA Configuración 0 Interna handles.Seleccion Configuración [] Interna handles.carpetaNubes Configuración [] Interna handles.carpeta_nubes Configuración [] Interna handles.Inic_foto Configuración [] Interna handles.Fin Configuración [] Interna handles.nroFotos Configuración [] Interna handles.NroParam Configuración [] Interna handles.Procedim Configuración [] Interna handles.TitleParam Configuración [] Interna handles.MC Configuración [] Salida
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 78 Variable Sección Valor Inicial Tipo handles.MCn Configuración [] Salida handles.MCn1 Configuración [] Salida handles.MuestrasAcum Configuración [] Salida handles.MuestrasAcum1 Configuración [] Salida handles.nroMuestras Configuración [] Salida handles.MAXe Configuración [] Salida 7.1.2 Macro ‘Generar Matrices’ La Figura 61 muestra el flujograma para la Generación de Matrices durante la fase de Configuración. Botón “Generar Matrices” TFM_ExtraeCarac (·) TFM_Normaliz (·) TFM_Minorac (·) ( Imágenes ) ( matriz MC ) ( matriz MCn ) ( matriz de características MCn1 ) Figura 61. Flujograma del botón “Generar Matrices” 7.1.3 Macro ‘Salvar Matrices’ La Figura 62 muestra el flujograma para salvar las matrices como archivo ‘.mat’ durante la fase de Configuración. Botón “Salvar matrices” Guardar matrices (.mat) Figura 62. Flujograma del botón “Salvar Matrices”
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 79 7.1.4 Macro ‘Cargar Matrices’ La Figura 63 muestra el flujograma para salvar las matrices como archivo ‘.mat’ durante la fase de Configuración. Botón “Cargar matrices” Cargar matrices (.mat) Figura 63. Flujograma del botón “Cargar Matrices” 7.2 Muestra de resultados 7.2.1 Variables de configuración La Tabla 16 incluye todas las variables de configuración de este módulo. Tabla 16. Variables MATLAB de Muestra de Resultados Variable Sección Valor Inicial Tipo handles.VISUAL_1D Muestra de resultados 0 Entrada handles.VISUAL_2D Muestra de resultados 0 Entrada handles.VISUAL_3D Muestra de resultados 0 Entrada handles.carpeta_figuras Muestra de resultados [] Entrada 7.2.2 Macro ‘Mostrar Resultados’ La Figura 64 muestra el flujograma para la Muestra de Resultados durante la fase de Configuración, consistente en diagramas de 1D, 2D o 3D de las nubes de clustering de cada una de las imágenes de nubes SWIMCAT. Botón “Mostrar Resultados” TFM_plot3 (·) ( Matriz de características ) Figura 64. Flujograma del botón “Mostrar Resultados” 7.3 Generar Imágenes 7.3.1 Variables de configuración La Tabla 17 incluye todas las variables de configuración de este módulo.
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 80 Tabla 17. Variables MATLAB de Generación de Imágenes Variable Sección Valor Inicial Tipo handles.TYPE Generar Imágenes [] Entrada handles.ESCALA Generar Imágenes [] Entrada 7.3.2 Macro ‘Generar Imágenes’ La Figura 65 muestra el flujograma para la Generación de Imágenes durante la fase de Configuración. handles.TYPE? SGLDsplit (·) SGLDresize(·) Botón “Generar Imágenes” Imágenes fraccionadas Imágenes redimensionadas 12 Figura 65. Flujograma del botón “Generar Imágenes” 7.4 Clasificación 7.4.1 Variables de configuración La Tabla 18 incluye todas las variables de configuración de este módulo. Tabla 18. Variables MATLAB de Clasificación Variable Sección Valor Inicial Tipo handles.CLASIF_1D Clasificación 0 Entrada handles.CLASIF_2D Clasificación 0 Entrada handles.CLASIF_3D Clasificación 0 Entrada handles.CLASIF_4D Clasificación 0 Entrada handles.CLASIF_xD Clasificación [0,0,0,0] Entrada 7.4.2 Macro ‘Generar Tablas’ La Figura 66 muestra el flujograma para la Generación de Tabla de clasificación como archivo Excel durante la fase de Configuración.
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 81 Botón “Generar Tablas” Guardar tablas en Excel (.xls) TFM_Clasif2 (·) Figura 66. Flujograma del botón “Generar Tablas” 7.5 Segmentación 7.5.1 Variables de configuración La Tabla 19 incluye todas las variables de configuración de este módulo. Tabla 19. Variables MATLAB de Segmentación Variable Sección Subsección Valor Inicial handles.SegmCrom Segmentación Prototipos 0 handles.SegmTxtl Segmentación Prototipos 0 handles.SegmMix Segmentación Prototipos 0 handles.SegmMinDist Segmentación Prototipos 0 handles.SegmKmeans Segmentación Prototipos 0 handles.SegmNeural Segmentación Prototipos 0 handles.CarCrom1 Segmentación Prototipos 226 handles.CarCrom2 Segmentación Prototipos 335 handles.CarTxtl1 Segmentación Prototipos 7 handles.CarTxtl2 Segmentación Prototipos 10 handles.CarTxtl3 Segmentación Prototipos 14 handles.CarTxtl4 Segmentación Prototipos 18 handles.CarMix_Crom1 Segmentación Prototipos 226 handles.CarMix_Crom2 Segmentación Prototipos 335 handles.CarMix_Txtl1 Segmentación Prototipos 4 handles.CarMix_Txtl2 Segmentación Prototipos 5 handles.CarMix_Txtl3 Segmentación Prototipos 8 handles.CarMix_Txtl4 Segmentación Prototipos 10 handles.Imag2segmentar Segmentación Segmentar [] handles.Imag2segmFin Segmentación Segmentar []
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 82 7.5.2 Macro ‘Generar Prototipos’ La Figura 67 muestra el flujograma para la Generación de Prototipos durante la fase de Segmentación. handles.SegmCrom? Botón “Generar Prototipos” handles. segmMinDist? handles. segmKmeans? handles. segmNeural? TFM_prototipos_ MinDist (·) TFM_prototipos_ Kmeans (·) TFM_prototipos_ RedNeur2 (·) Guardar prototipo (.mat) Guardar prototipo (.mat) Guardar prototipo (.mat) handles.SegmTxtl? handles.SegmMix? ( Igual que handles.SegmCrom ) ( Igual que handles.SegmCrom ) Figura 67. Flujograma del botón “Generar Prototipos” 7.5.3 Macro ‘Segmentar’ La Figura 68 muestra el flujograma para la iniciar el proceso de segmentación durante la fase de Segmentación. Botón “Segmentar” TFM_segmentarInd (·) Figura 68. Flujograma del botón “Segmentar”
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 83 8 | Desarrollo de plataforma terrestre 8.1 Metodología La implementación del Sistema Automático de Identificación de Nubes en una plataforma hardware que puede trabajar en la intemperie se ha realizado sobre el SBC de bajo coste Raspberry Pi. Se han programado en Python los algoritmos de identificación textural en cuadrícula, así como la segmentación cromática y la segmentación mixta. No obstante, no se ha implementado la técnica mixta con procesamiento textural completa debido a falta de recursos de la plataforma hardware. Durante el desarrollo de la aplicación se ha apreciado un óptimo manejo del cálculo matricial del sistema, pero extremadamente lento ante bucles recursivos, por lo que no se obtienen buenos resultados en términos de tiempos de procesamiento ante la implementación del sistema desarrollado en MATLAB durante las fases de Análisis y Segmentación. 8.2 Especificaciones técnicas 8.2.1 Plataforma hardware Característica Raspberry Pi 3, Modelo B SoC Broadcom BCM2837 (CPU + GPU + DSP + SDRAM + Puerto USB CPU 1.2GHz 64-bit quad-core ARMv8 Juego de instrucciones RISC de 32 bits GPU Broadcom VideoCore IV, OpenGL ES 2.0, MPEG-2 y VC-1 (con licencia), 1080p30 H.264/MPEG-4 AVC SDRAM 1 GB (compartidos con la GPU) Puertos USB 2.0 4 Entradas de vídeo Conector MIPI CSI que permite instalar un módulo de cámara desarrollado por la RPF Salidas de vídeo Conector RCA (PAL y NTSC), HDMI (rev1.3 y 1.4), Interfaz DSI para panel LCD Salidas de audio Conector de 3.5 mm, HDMI Almacenamiento integrado MicroSD Conectividad de red 10/100 Ethernet (RJ-45) vía hub USB, Wifi 802.11n, Bluetooth 4.1 Periféricos de bajo nivel 17 x GPIO y un bus HAT ID Reloj en tiempo real Ninguno Consumo energético 800 mA, (4.0 W) Fuente de alimentación 5 V vía Micro USB o GPIO header Dimensiones 85.60mm × 53.98mm
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 84 Característica Raspberry Pi 3, Modelo B Sistemas operativos soportados GNU/Linux: Debian (Raspbian), Fedora (Pidora), Arch Linux (Arch Linux ARM), Slackware Linux. RISC OS Sistema operativo empleado Debian 8.2.2 Entorno de programación El entorno de programación empleado ha sido Python. Por lo que se ha programado todo el código desde cero para su migración desde MATLAB. Adicionalmente se han empleado algunas librerías específicas para el tratamiento de imágenes y la obtención de características texturales: • OpenCV: librería para el tratamiento de imágenes • Numpy: librería de cálculo matricial • SciKit: librería que contiene la función para el cálculo de la matriz SGLD. Así mismo, se ha instalado la aplicación TightVNC para la conexión remota al dispositivo a través de la red inalámbrica. 8.3 Montaje El sistema, mostrado en la Figura 69, se compone de tres elementos: • Raspberry Pi 3, con WiFi integrado, con TightVNC operativo; • Cámara web; y • Fuente de alimentación. Cámara web Raspberry Pi 3 Transformador 230Vac/12Vdc Conexión WiFi Figura 69. Montaje con Raspberry Pi 3 La cámara web es ‘plug and play’ por lo que no necesita más configuración que la librería OpenCV para tener acceso a ésta.
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 85 8.4 Resultados de la Identificación “en línea” El objetivo final de la implementación en una plataforma hardware es la obtención de imágenes segmentadas “en vivo”. Las imágenes segmentadas se representan en escala de grises siguiendo las tonalidades empleadas durante la segmentación en Matlab. La Figura 70 muestra las cinco clases de nube, obtenidas directamente de la Raspberry, como verificación de la configuración. Cielo Patrón Oscura Clara Velo Figura 70. Escala de gris de los cinco tipos de nube 8.4.1 Ejemplo con cielo despejado A continuación, se muestra la Figura 71 como resultado de la segmentación “en vivo” de un cielo despejado, con obstáculos y cielo degradado con diferentes tonalidades de azul hasta casi blanco en el horizonte. Original Segmentación cromática Segmentación textural Segmentación mixta Figura 71. Segmentación mediante Raspberry Pi de cielo despejado
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 92 Un texto con mayor jerarquía sería aquel que se ubica como título principal de sección. Por otro lado, en la información contenida dentro de una fila en una lista, puede haber varias jerarquías, por ejemplo, en el caso de un correo, podría verse el nombre de la persona que lo envía, un resumen del contenido y la fecha de envío; todos estos elementos tienen diferente importancia y definirla es el primer paso para saber qué estilo tipográfico aplicar. • Color El color es un recurso vital en el diseño de una aplicación. Su uso abarca encabezados, textos, botones, fondos y muchos otros elementos que conforman la interfaz. En algunas ocasiones, está asociado a la identidad —color corporativo— y en otras, responde a criterios estéticos y decisiones de diseño. Un color por sí solo, salvo en el caso de colores reservados, no indica mucho. Como parte de un sistema cromático, el uso consistente, consciente y vinculado al contexto donde se aplica, es lo que lo llena de significado para el usuario. Hay ciertos colores que deben emplearse de forma cuidadosa porque tienen connotaciones que no pueden obviarse. Se llaman justamente «colores reservados» porque su uso debería limitarse especialmente a los nombrados a continuación: a. Rojo: Para errores y alertas importantes. Es un color que naturalmente indica peligro y llama la atención para centrarse inmediatamente en lo que está ocurriendo. b. Amarillo: Prevención. Señala que la acción que va a realizarse implica la toma de una decisión que ocasiona alguna consecuencia, por lo cual hay que estar alerta. c. Verde: Mensajes de éxito y confirmación de que una acción se ha realizado correctamente. • Lenguaje En una aplicación hay infinidad de lugares donde usar textos: en encabezados y títulos, botones, mensajes de error y avisos en pantallas vacías. En cada caso, las palabras son tan importantes como el elemento gráfico que las contiene o acompaña. Lenguaje textual y visual van de la mano, unidos para lograr una experiencia de usuario consistente en todos los sentidos. • Detalles visuales La diferencia entre aplicaciones radica en los detalles. Ellos pueden separar una aplicación regular de una genial. En una primera instancia no se presta atención a estos detalles que mejoran la experiencia del usuario e incluso, cambian su estado de ánimo; y es normal, al principio hay otros aspectos de diseño de los cuales hay que ocuparse. Pero a medida que la interfaz va llegando a su fin, es importante considerarlos para no pasar por alto algo que pueda arruinar el trabajo realizado.
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 93 Tras el recorrido sobre las principales características que debe cuidar una aplicación, se repasan los parámetros escogidos para esta aplicación, cuya pantalla se muestra en la Figura 76. Figura 76. Aplicación móvil – Pantalla de la aplicación Se observa que la retícula se distribuye de forma uniforme para las posibilidades y subtítulos. La integración del concepto jerarquía se consigue mediante el color de las fuentes y el tamaño en el caso del nombre de la aplicación. Las etiquetas del tipo “Radio” (opciones) tienen un tamaño mínimo de fuente de 14dp, mientras que el título de la aplicación se mantiene con un tamaño superior. El lenguaje empleado, en este caso limitado a los tipos de espacios de color y segmentación, se enfocan a ser al mismo tiempo escuetos y específicos, sin que quepa lugar a confusión. Finalmente, la atención a los detalles es ligeramente incorrecta, puesto que la imagen que muestra no llena la pantalla, conforme al diseño original que se hizo, sino que su resolución se limita a 640x480 píxeles por temas de estabilidad y robustez dada la potencia de cálculo de algunos móviles. 9.2 Interfaz de usuario El interfaz de usuario muestra cinco elementos principales, tal como se muestra en la Figura 77: • Barra de título, • Imagen del cielo “en vivo”, • Sección “Espacios de color”, • Sección “Segmentación”, y
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 94 • Botón “OBTENER”. De estas opciones solo las tres últimas son interactivas. El funcionamiento de la aplicación consiste en la selección de un único espacio de color o segmentación para que el móvil muestre en pantalla el resultado del proceso de filtrado o conversión. Figura 77. Aplicación móvil – Interfaz de usuario 9.2.1 Espacios de color La primera sección de la aplicación recoge los cuatros grandes espacios de color empleados en el desarrollo de la aplicación, si bien tras la selección de los mejores parámetros como resultado del análisis recogido en la sección 5 | de este documento limita las características a los tres primeros. La Figura 78 muestra los cuatro espacios de color disponibles: • RGB, • HSV, • CIELab, y • YUV, como equivalente al YIQ empleado en el análisis, ya que la plataforma de desarrollo no disponía de este segundo espacio.
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 95 Espacio RGB Espacio HSV Espacio CIELab Espacio YUV Figura 78. Aplicación móvil – Espacios de color 9.2.2 Segmentación cromática Finalmente se ha implementado la segmentación cromática como funcionalidad principal de la aplicación como se muestra en la Figura 79. Su funcionamiento es notablemente más lento que los espacios de color, teniendo los primeros una velocidad de refresco de unos 30 fps (frame per second) frente a los 1,5 fps de la segmentación. Figura 79. Aplicación móvil – Segmentación cromática El proceso de cálculo de la segmentación sigue las pautas del empleado en el análisis y se recoge en la Figura 45 y Figura 46.
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 96 9.2.3 Otras segmentaciones Ha resultado imposible la implementación de la segmentación textural debido a que la plataforma móvil sobre la que se ha programado la aplicación (Java) tolera mal los retrasos debido a iteraciones, obteniendo un producto inestable. 9.3 Especificaciones técnicas 9.3.1 Plataforma hardware Se ha empleado para las pruebas un móvil bq Aquarius M5 con la versión Android 6.0.1 (Marshmallow). El equipo de desarrolla se trata de un portátil Lenovo Z50-70, con procesador Intel Core i7-4510U y 16GB de RAM. El sistema operativo instalado es Windows 10. 9.3.2 Entorno de programación El entorno de programación empleado ha sido Android Studio 2.2.2, donde la programación se hace en JAVA, con las versiones JRE 1.8.0 y versión JVM OpenJDK 64- Bit Server VM. Adicionalmente se han empleado las librerías específicas para el tratamiento de imágenes: • HAXM para la aceleración del emulador, y • OpenCV 3.1.0: librería nativa para el tratamiento de imágenes.
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 97 10 | Conclusiones Este proyecto abarca las fases de Análisis, Segmentación e Implementación orientado al desarrollo de un Sistema Automático de Identificación de Nubes. Cada una de estas fases representa un proceso independiente del resto, en cuanto se han establecido entradas y salidas a cada una de ellas y, por tanto, segregable. La fase de Análisis busca las mejores características cromáticas y texturales que puedan emplearse para la identificación de nubes. Se han analizado 9 variantes diferentes de las imágenes tomadas del SWIMCAT, aplicando 3 procedimientos diferentes y evaluando las características obtenidas por 3 clasificadores separados. El resultado obtenido es un conjunto de cuatro características texturales y dos características cromáticas que minimiza las tasas de error al evaluar las mismas imágenes con las que se entrenó el algoritmo. Este análisis se ha realizado con la mayor exhaustividad posible, sumando más de 250 horas de procesamiento. No obstante, la reproductibilidad de estos resultados es complejo incluso empleando las mismas imágenes, ya que existen factores que pueden alterar los resultados. La metodología empleada en este trabajo comienza con una pre-selección de imágenes, eliminando aquellas que contengan objetos extraños. Además, para el estudio de características cromáticas se ha extraído muestras de imágenes. Estos dos hechos invalidan la repetibilidad de los resultados. Adicionalmente se minoraron las características cromáticas al 5%, por lo que existe una variabilidad intrínseca dentro del mismo estudio. Pese a las limitaciones, los resultados se consideran suficientemente generales. Las mejores características para los clasificadores de mínima distancia y de redes neuronales, cuyos resultados son significativamente mejores que los del clasificador K-means, contienen características en común. Esto refleja una coherencia en los resultados obtenidos. La fase de Segmentación toma como entrada los resultados de la fase de Análisis para construir los prototipos de cada clasificador y realizar una segmentación de imágenes SWIMCAT, así como imágenes tomadas con medios propios. Los resultados obtenidos son imágenes segmentadas con cierto criterio y por tanto se considera un buen resultado, si bien las segmentaciones se esperaba una mayor similitud entre los tres clasificadores mixtos. La fase de Implementación define los procesos de usuario e incluye, por un lado, un interfaz de usuario y, por otro, dos aplicaciones diferentes de segmentación con imágenes “en vivo”. El interfaz de usuario incluye todos los procesos de análisis y segmentación bajo una misma ventana. Este proceso presentación el proyecto como un producto terminado que funciona y cumple los requisitos para los que fue diseñado. El proyecto culmina con el Sistema Automático de Identificación de Nubes, esto es, la aplicación de segmentación “en vivo”, en dos dispositivos de naturaleza muy diferente sobre plataformas separadas y alcances desiguales.
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 98 Así, la estación terrestre tiene implementadas las identificaciones con características textural, cromática y mixta con cuadrículas. Su funcionamiento es bueno, si bien la falta de procesamiento de la plataforma hardware es insuficiente para la implementación del procesamiento textural completo, resultado una identificación algo pixelada. Finalmente, la aplicación móvil incluye únicamente la segmentación cromática, ya que el entorno de desarrollo JAVA no admite un procesamiento demasiado lento debido a su estabilidad. Por tanto, se han optimizado todos los algoritmos para trabajar sobre cálculos matriciales obteniendo al fin una aplicación funcional para la identificación de nubes sobre Android.
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 99 11 | Referencias • Libros: o Gonzalez, W., & Woods, R. E. (2004). “ Digital Image Processing Using MATLAB ”. Third New Jersey: Prentice Hall. o Shaefer, V. J. “ Guía de campo de la atmósfera. Con 336 ilustraciones en blanco y negro y 32 en color ”. Publicador: Omega. Barcelona. 1983. o Laidlaw, D. H., & Vilanova, A. (Eds.). (2012). “ New developments in the visualization and processing of tensor fields” . Springer Science & Business Media. o Collet, C., Chanussot, J., & Chehdi, K. (2010). “ Multivariate image processing ”. o Duda, R. O., Hart, P. E., & Stork, D. G. (2012). “ Pattern classification ”. John Wiley & Sons. o Morales, R. R., & Azuela, J. H. S. (2012). “ Procesamiento y análisis digital de imágenes ”. Alfaomega. • Artículos: o Arahal, M.R., Cepeda, A., Camacho, E.F. (2002). “ Input variable Selection for Forecasting Models ”. 15th IFAC World Congress on Automatic Control, Barcelone, Spain. o Arahal, M.R., Berenguel, M., Camacho, E.F., Pavón, F. (2009). “ Selección de variables en la predicción de llamadas en un centro de atención telefónica ”. Revista Iberoamericana de Automática e Informática Industrial RIAI 6 (1), 94- 104. o Clausi, D. A. (2002). “ An analysis of cooccurrence texture statistics as a function of grey level quantization ”, Canadian Journal of remote sensing, 28(1), pp 45-62. o Dev, S., Lee, Y. H. y Winkler, S. (2015) “ Categorization of cloud image patches using an improved texton-based approach ”, Image Processing (ICIP), 2015 IEEE International Conference on, pp 422-426. o Dev, S., Lee, Y. H., y Winkler, S. (2014) “ Systematic study of color spaces and components for the segmentation of sky/cloud images ”, IEEE International Conference on Image Processing (ICIP), pp. 5102-5106. o Fodor, I. K. (2002). “ A survey of dimension reduction techniques ”. o Ford, A. y Roberts, A. (1998). “ Colour Space Conversions ”. o Haralick, R. M. (1979) “ Statistical and structural approaches to texture ", Proceedings of the IEEE, 67(5), pp 786-804. o Mantelli Neto, S. L., von Wangenheim, A., Pereira, E. B., y Comunello, E. (2010). “ The use of Euclidean geometric distance on RGB color space for the classification of sky and cloud patterns ”. Journal of Atmospheric and Oceanic Technology, 27(9), pp 1504-1517.
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 100 o Medrano, M., Gil, A., y Martorell, I., y Potau, X., y Cabeza, L.F., (2010) “ State of the art on high-temperature thermal energy storage for power generation. Part 2-Case studies ”, Renewable and Sustainable Energy Reviews, 14 (1), pp 56-72. Elsevier. o Pawlowski, A., Mendoza, J.L., y Guzman, J.L., y Berenguel, M., y Acien, F.G., y Dormido, S., (2015) “ Selective pH and dissolved oxygen control strategy for a raceway reactor within an event-based approach ”, Control Engineering Practice, 44, pp 209-218. o Prasad, V. S. N., & Domke, J. (2005). “ Gabor filter visualization ”. J. Atmos. Sci, 13. o Soh, L. K., y Tsatsoulis, C. (1999). “ Texture analysis of SAR sea ice imagery using gray level co-occurrence matrices ”, Geoscience and Remote Sensing, IEEE Transactions on, 37(2), pp 780-795. • Base de datos de imágenes: o Singapore Whole sky IMaging CATegories (SWIMCAT) Database • Páginas web: o http://appdesignbook.com/es/contenidos/diseno-visual-apps-nativas/ • Artículos relacionados con el proyecto global CODISOL: o Arahal, Cirre, C.M., Berenguel, M. (2007). “ Serial grey-box model of a stratified thermal tank for hierarchical control of a solar plant ”. Solar Energy 82 (5), 441- 451. o Limon, D., Alvarado, I., Alamo, T., Ruiz, M., Camacho, E.F. (2008). “ Robust control of the distributed solar collector field ACUREX using MPC for tracking ”. IFAC Proceedings Volumes 41 (2), 958-963. o Schwartz, J.D., Arahal, M.R., Rivera, D.E., Smith, K.D. (2009). “ Control-relevant demand forecasting for tactical decision-making in semiconductor manufacturing supply chain management ”. IEEE Transactions on semiconductor manufacturing 22 (1), 154-163.
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 101 12 | Glosario Abreviatura Descripción CBR Razonamiento Basado en Casos CIE Commission Internationale de l’Eclairage CMY(K) Cyan Magenta Yellow (Black) CPU Central Processing Unit CRT Cathode Ray Tube DGE Distancia Geométrica Euclídea FA Análisis de Factor GEA Algoritmos Genéticos y Evolucionarios GLCM Matriz de Coocurrencia de Niveles de Gris GPIO General Purpose Input/Output GPU Graphics Processing Unit GTM Mapeado Topográfico Generativo HSV Hue, Saturation, Value ICA Análisis de Componente Independiente kNN k-Vecino más cercano KSOM Mapas auto-organizados de Kohonen LVQ Aprendizaje por cuantificación vectorial MDS Escalado Mutidimensional NTSC National Television System Committee OMM Organización Mundial de Meteorología PAL Phase Alternating Line P&ID Process and Instrumentation Diagram PP Búsqueda de Proyección RGB Red, Green, Blue RNA Redes Neuronales Artificiales SDRAM Synchronous Dynamic Random Access Memory SGLD Spatial Grey Level Dependence SoC System on Chip SWIMCAT Singapore Whole sky IMaging CATegories TFM Trabajo Fin de Máster USB Universal Serial Bus WMO World Meteorological Organization
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 108 Característica Fórmula Entropía † - o 6 1 … 6 1 v ∗ ‡k} ‡k } •1 ∗ { 1 … 1 € Varianza de la diferencia † M® o 0 … dim ‡k } 6 1 v . ) ∗ 4 " % Entropía de la diferencia † MM o 6 1 … 6 1 v ∗ 4 " % 4 j " % Medidas informativas de correlación (1) † M) † - 6 Ä "% M max ( ¯ Ä " , Ä % ² 2 Medidas informativas de correlación (2) † MN m 1 6 ) Ç ÈÉ # Ê Ë Coeficiente de máxima correlación † M— ij : 6 < " < % " % Autocorrelación † M¦ ij : Disimilaridad † M§ o 1 … 1 v ∗ | ij > 6 † > | k‡} ∗ { 1 … 1 € Tono de grupo (Cluster shadow) † M ¨ o 1 … 1 v ∗ ( ij > † > 6 < " 6 < % 2 . N ‡k} ∗ { 1 … 1 € Relevancia de grupo (Cluster Prominence) † M© o 1 … 1 v ∗ ( ij > † > 6 < " 6 < % 2 . — ‡k} ∗ { 1 … 1 € Probabilidad máxima † M- max 8 max ‡k} Diferencia inversa † )® o 1 … 1 v ∗ T ‡k} ( 1 ij > 6 † > . ) 2 M V ∗ { 1 … 1 € Diferencia inversa normalizada † )M o 1 … 1 v ∗ Å ‡k} _ 1 | ij > 6 † > | dim 8 ‡k} a M Æ ∗ { 1 … 1 € Momento de la diferencia inversa normalizada † ) ) o 1 … 1 v ∗ Å ‡k} _ 1 ij > 6 † > . ) dim ‡k} ) a M Æ ∗ { 1 … 1 €
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 109 Anexo 3. Resultados de la segmentación A3.1 Segmentación textural completa Figura 80. Segmentación con procesamiento textural completa (I)
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 110 Figura 81. Segmentación con procesamiento textural completa (II) Figura 82. Segmentación con procesamiento textural completa (III)
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 111 Figura 83. Segmentación con procesamiento textural completa (IV) Figura 84. Segmentación con procesamiento textural completa (V)
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 112 Figura 85. Segmentación con procesamiento textural completa (VI) Figura 86. Segmentación con procesamiento textural completa (VII)
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 113 Figura 87. Segmentación con procesamiento textural completa (VIII) A3.2 Segmentación textural en cuadrícula Figura 88. Segmentación con procesamiento textural en cuadrícula (I)
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 114 Figura 89. Segmentación con procesamiento textural en cuadrícula (II) Figura 90. Segmentación con procesamiento textural en cuadrícula (III)
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 115 Figura 91. Segmentación con procesamiento textural en cuadrícula (IV) Figura 92. Segmentación con procesamiento textural en cuadrícula (V)
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 116 Figura 93. Segmentación con procesamiento textural en cuadrícula (VI) Figura 94. Segmentación con procesamiento textural en cuadrícula (VII)
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 117 Anexo 4. Publicaciones realizadas Durante el desarrollo de este proyecto se ha realizado la publicación de los resultados del análisis con el clasificador de Mínima Distancia, localizable en Google Scholar: • Padial, E. F. C., & Arahal, M. R. CARACTERIZACION CONJUNTA CROMATICATEXTURAL EN LA IDENTIFICACION DE NUBES.
Cuadro 5: Resultado de la t´ecnica mixta. Caracter´ısticas Tasa de error en clasificaci´on T#1 T#2 T#3 T#4 A B C D E Global CON RDG ENS MDS 0,25 % 6,05 % 5,05 % 21,44 % 10,61 % 8,70 % B L R/B H I R/B ci´on textural se obtiene de magnitudes estad´ısticas aplicadas a subim´agenes de Nx×Nyp´ıxeles. La integraci´on de ambos tipos en una misma matriz de caracter´ısticas ha posibilitado esta clasificaci´on conjunta. En este an´alisis se han revisado t´ecnicas de manera exhaustiva conocidas a una base de datos extensa de im´agenes como validaci´on de los resultados previo a la aplicaci´on de la t´ecnica mixta. Referencias [1] Clausi, D. A. (2002). “An analysis of cooccurrence texture statistics as a function of grey level quantization”, Canadian Journal of remote sensing, 28(1) , pp 45-62. [2] Dev, S., Lee, Y. H. y Winkler, S. (2015) “Categorization of cloud image patches using an improved texton-based approach”, Image Processing (ICIP), 2015 IEEE International Conference on, pp 422-426. [3] Dev, S., Lee, Y. H., y Winkler, S. (2014) “Systematic study of color spaces and components for the segmentation of sky/cloud images”, IEEE International Conference on Image Processing (ICIP), pp. 5102-5106. [4] Gallego, A.J., Fele, F., Camacho, E.F. y Yebra, L. (2013) “Observer-based Model Predictive Control of a parabolic-trough field”, Solar Energy, 97, pp 426-435. [5] Haralick, R. M. (1979) “Statistical and structural approaches to texture”, Proceedings of the IEEE, 67(5), pp 786-804. [6] Lim´on, D., Alvarado, I., ´ Alamo, T. Arahal, M.R., y Camacho, E.F., (2008) “Robust control of the distributed solar collector field ACUREX using MPC for tracking”, IFAC Proceedings Volumes, 41(2), pp 958-963. [7] Mantelli Neto, S. L., von Wangenheim, A., Pereira, E. B., y Comunello, E. (2010). “The use of Euclidean geometric distance on RGB color space for the classification of sky and cloud patterns”. Journal of Atmospheric and Oceanic Technology, 27(9), pp 1504-1517. [8] Medrano, M., Gil, A., y Martorell, I., y Potau, X., y Cabeza, L.F., (2010) “State of the art on high-temperature thermal energy storage for power generation. Part 2-Case studies”, Renewable and Sustainable Energy Reviews, 14 (1), pp 56-72. Elsevier. [9] Pawlowski, A., Mendoza, J.L., y Guzm´an, J.L., y Berenguel, M., y Aci´en, F.G., y Dormido, S., (2015) “Selective pH and dissolved oxygen control strategy for a raceway reactor within an event-based approach”, Control Engineering Practice, 44, pp 209-218. [10] Soh, L. K., y Tsatsoulis, C. (1999). “Texture analysis of SAR sea ice imagery using gray level co-occurrence matrices”, Geoscience and Remote Sensing, IEEE Transactions on, 37(2) , pp 780-795.
Cuadro 6: F´ormula de caracter´ısticas texturales. Caracter´ıstica F´ormula Energ´ıa f1=PiPjp(i, j)2 Contraste f2=PNg−1 i=1 n2nPNg i=1 PNg j=1 p(i, j)o|i−j|=n Correlaci´on f3=PiPj(ij)p(i,j)−µxµy σxσy Suma de cuadrados: Varianza f4=PiPj(i−µ)2p(i, j) Homogeneidad f5=PiPj1 1+(i−j)2p(i, j) Media de la suma f6=P2Ng i=2 i·px+y(i) Varianza de la suma f7=P2Ng i=2 (i−f8)2px+y(i) Entrop´ıa de la suma f8=−P2Ng i=2 px+y(i) log (px+y(i)) Entrop´ıa f9=−PiPjp(i, j) log (p(i, j)) Varianza de la diferencia f10 =variance (px−y) Entrop´ıa de la diferencia f11 =−PNg−1 i=0 px−y(i) log (px−y(i)) Medidas informativas de correlaci´on (1) f12 =HXY −HXY 1 max{HX,HY } donde: HXY =−PiPjp(i, j) log (p(i, j)) HXY 1 = −PiPjp(i, j) log (px(i)py(j)) HXY 2 = −PiPjpx(i)py(j) log (p(i, j)) Medidas informativas de correlaci´on (2) f13 =1−e−2·(HXY 2−HXY )1/2 Coeficiente de m´axima correlaci´on f14 =[Segundo mayor autovalor de Q]1/2 donde: Q(i, j) = Pk p(i,k)·p(j,k) px(i)·py(j) Autocorrelaci´on f15 =PiPj(ij)p(i, j) Disimilaridad f16 =PiPj|i−j|·p(i, j) Tono de grupo (Cluster shadow) f17 =PiPj(i+j−µx−µy)3p(i, j) Relevancia de grupo (Cluster Prominence) f18 =PiPj(i+j−µx−µy)4p(i, j) Probabilidad m´axima f19 =Pi,j MAX [p(i, j)] Diferencia inversa f20 =PG i,j=1 Cij 1+|i−j| Diferencia inversa normalizada f21 =PG i,j=1 Cij 1+|i−j|2/G2 Momento de la diferencia inversa normalizada f22 =PG i,j=1 Cij 1+(i−j)2/G2
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 118 Anexo 5. Código de las funciones propias en MATLAB TFM_Analisis_Completo clear all; %% OPCIONES de ejecución % PROCED = 1; % Selecciona el procedimiento de extracción de características % 1 = Cromático (RGB, HSV, YIQ, Lab, R-B, R/B, R- B/R+B, Chroma) % 2 = Textural - GLCM, Haralick (22 parámetros: entropía, ...) % 3 = Law's % 4 = Gabor (NO OPERATIVO) % 6 = Clasificador K-means SELECTOR = 4; % Selecciona las imágenes que se emplearán % 1 = Originales % 2 = Imágenes fraccionadas % 3 = Imágenes redimensionadas % 4 = Muestra de imágenes (para análisis cromático) % 5 = Mapas de Laws % 6 = Filtro de contraste % 7 = Filtro de Gabor % 8 = Tensores NORMALIZ = 1; % Elige el tipo de normalización para los datos cromáticos % 1 = Normalización lineal (Cn = C / 255) % 2 = Normalización estadística (Cn = (C - media)/Varianza) CLASIFIC = 1; % Elige el tipo de clasificador % 1 = Mínima distancia % 2 = K-means % 3 = Redes neuronales GENERARim = 0; % Si se seleccionan imágenes fraccionadas o redimensionadas % las imágenes podrían exister o desear crearse nuevas VISUAL_1D = 0; % Gráficos de histograma individuales VISUAL_2D = 0; % Gráficos por parejas de parámetros VISUAL_3D = 0; % Gráficos por tríos de parámetros CLASIF_1D = 1; CLASIF_2D = 1; CLASIF_3D = 0; CLASIF_4D = 0; CLASIF_xD = [ CLASIF_1D, CLASIF_2D, CLASIF_3D, CLASIF_4D ];
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 119 TFM_Config; %% Extracción de características cromáticas o texturales % [ MC, nroMuestras, MuestrasAcum ] = TFM_CalculoCaract( PROCED, ... SELECTOR, NroClases, Inic_foto, Fin, nroFotos, FraccionaEN, RedimensionaA, ANG); %% Normalización % [ MCn, MAXe ] = TFM_Normaliz( MC, PROCED, NORMALIZ, [] ); %% Visualizaciones 1D, 2D y 3D % TFM_representacion; %% Reducción del número de muestras para el procedimiento Cromático [MCn1, MuestrasAcum1] = TFM_Minorac( PROCED, MCn, MuestrasAcum, minorac ); %% Clasificador [ MinE ] = TFM_Clasifica( PROCED, SELECTOR, NORMALIZ, CLASIFIC,... CLASIF_xD, MCn1, MuestrasAcum1 ); TFM_Config %% TFM_Config % % Script que define la configuración asociada a los parámetros de selección % básicos del scrip 'TFM_Analisis_Completo'. disp('Comenzando Configuración') %% Ubicación de carpetas carpeta_nubes = fullfile('Edu','TFM','Imagenes - Nubes'); carpeta_figuras = fullfile('Edu','TFM','Imagenes - Figuras'); NroClases = 5; ANG = 1; minorac = 1; %% Declaraciones conforme al tipo de imágenes % Base de datos SWIMCAT switch SELECTOR case 4 A_inic='A_'; A_nroFotos = 100; % SKY B_inic='B_'; B_nroFotos = 80; % PATTERN C_inic='C_'; C_nroFotos = 185; % DENSE-DARK D_inic='D_'; D_nroFotos = 115; % DENSE-LIGHT E_inic='E_'; E_nroFotos = 80; % VEIL case 6 A_inic='A_'; A_nroFotos = 224; % SKY
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 120 B_inic='B_'; B_nroFotos = 89; % PATTERN C_inic='C_'; C_nroFotos = 251; % DENSE-DARK D_inic='D_'; D_nroFotos = 135; % DENSE-LIGHT E_inic='E_'; E_nroFotos = 85; % VEIL case 7 A_inic='Gabor39_A_selec ('; A_nroFotos = 100; % SKY B_inic='Gabor39_B_selec ('; B_nroFotos = 80; % PATTERN C_inic='Gabor39_C_selec ('; C_nroFotos = 185; % DENSE-DARK D_inic='Gabor39_D_selec ('; D_nroFotos = 115; % DENSE-LIGHT E_inic='Gabor39_E_selec ('; E_nroFotos = 80; % VEIL case 8 A_inic='test_structureA_'; A_nroFotos = 62; % SKY B_inic='test_structureB_'; B_nroFotos = 62; % PATTERN C_inic='test_structureC_'; C_nroFotos = 62; % DENSE-DARK D_inic='test_structureD_'; D_nroFotos = 62; % DENSE-LIGHT E_inic='test_structureE_'; E_nroFotos = 62; % VEIL otherwise A_inic='A_selec ('; A_nroFotos = 100; % SKY B_inic='B_selec ('; B_nroFotos = 80; % PATTERN C_inic='C_selec ('; C_nroFotos = 185; % DENSE-DARK D_inic='D_selec ('; D_nroFotos = 115; % DENSE-LIGHT E_inic='E_selec ('; E_nroFotos = 80; % VEIL end % Para el análisis cromático se usan siempre las muestras de imágenes if PROCED == 1 SELECTOR = 4; warning(['Las imágenes seleccionadas no están optimizadas para un ',... 'análisis cromático. Se tomarán las muestras preparadas.']) minorac = 0.05; end switch SELECTOR case 1 carpeta_nubes = fullfile(carpeta_nubes, 'IMAG_SWIMCAT'); Fin = ').png'; FraccionaEN = 0; RedimensionaA = 0; Seleccion = 'Originales'; case 2 FraccionaEN = 9; % Número de partes en que se dividirán las imágenes carpeta_nubes = fullfile(carpeta_nubes, ['SplitS',num2str(FraccionaEN)]); A_inic='A_selec (0'; B_inic='B_selec (0'; C_inic='C_selec (0'; D_inic='D_selec (0';E_inic='E_selec (0'; Fin = ').png'; RedimensionaA = 1; Seleccion = ['Fraccion',num2str(FraccionaEN)]; case 3 RedimensionaA = 0.5; % Fracción de redimensionado de las imágenes carpeta_nubes = fullfile(carpeta_nubes, ['FractionS',num2str(RedimensionaA)]); % Fin = ').png'; Fin = [num2str(RedimensionaA),').png']; FraccionaEN = 0; Seleccion = ['Redimens',num2str(RedimensionaA)]; case 4 carpeta_nubes = fullfile(carpeta_nubes, 'Im_Segment');
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 121 A_nroFotos = 120; C_nroFotos = 120; D_nroFotos = 120; Fin = '_segimg.png'; FraccionaEN = 0; RedimensionaA = 0; Seleccion = 'Muestras'; case 5 carpeta_nubes = fullfile(carpeta_nubes, 'Laws'); Fin = ').png'; FraccionaEN = 0; RedimensionaA = 0; Seleccion = 'Originales'; case 6 carpeta_nubes = fullfile(carpeta_nubes, 'FiltroContraste'); Fin = '_FiltroContrasteimg.png'; FraccionaEN = 0; RedimensionaA = 0; Seleccion = 'Filtradas'; case 7 carpeta_nubes = fullfile(carpeta_nubes, 'Gabor'); Fin = ').png'; FraccionaEN = 0; RedimensionaA = 0; Seleccion = 'Gabor'; case 8 carpeta_nubes = fullfile(carpeta_nubes, 'Tensores'); Fin = 'img.png'; FraccionaEN = 0; RedimensionaA = 0; Seleccion = 'Tensores'; end % A_nroFotos=3; B_nroFotos=3; C_nroFotos=3; D_nroFotos=3; E_nroFo- tos=3; Inic_foto = {A_inic, B_inic, C_inic, D_inic, E_inic}; nroFotos = [ A_nroFotos, B_nroFotos, C_nroFotos, D_nroFotos, E_nroFo- tos ]; %% Declaraciones conforme al tipo de procedimiento switch PROCED case 1 NroParam = 16; % Número de parámetros cromáticos Proced = 'Cromatico'; case 2 NroParam = 22; % Número de parámetros texturales por Haralick ANG = 4; % Número de ángulos de parámetros GLCM Proced = 'Haralick'; case 3 NroParam = 9; % Número de parámetros de Law's Proced = 'Laws'; end if GENERARim == 1 switch SELECTOR case 2 for i=1:5 TFM_Fracciona(Inic_foto{i}, Fin, nroFotos(i),... FraccionaEN, carpeta_nubes); end case 3 for i=1:5 TFM_Redim(Inic_foto{i}, Fin, nroFotos(i),... RedimensionaA, carpeta_nubes); end
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 122 end end %% Características cromáticas switch PROCED case 1 Params ={'Plano R',... %1 'Plano G',... %2 'Plano B',... %3 'Plano H',... %4 'Plano S',... %5 'Plano V',... %6 'Plano Y',... %7 'Plano I',... %8 'Plano Q',... %9 'Plano L',... %10 'Plano a*',... %11 'Plano b*', ... %12 'Plano R/B',... %13 'Plano R-B',... %14 'Plano (R-B)/(R+B)',... %15 'Chroma'}; %16 i=0; TitleParam = {}; for j1 = 1:16 for j2 = j1+1:16 for j3 = j2+1:16 i = i+1; TitleParam{i} = ['Distancia ',Params{j1},' + ',... Params{j2}, ' + ', Params{j3}]; end end end clear Params %% Características de Haralick case 2 TitleParam ={'Contraste',... %1 'Correlación MATLAB',... %2 'Energía',... %3 'Homogeneidad MATLAB',... %4 'Autocorrelación',... %5 'Correlación [1,2]',... %6 'Cluster Prominence',... %7 'Cluster Shade',... %8 'Disimilaridad',... %9 'Entropía',... %10 'Homogeneidad',... %11 'Probabilidad Máxima', ... %12 'Suma de cuadrados: Varianza',... %13 'Media de la suma',... %14 'Varianza de la suma',.... %15 'Entropía de la suma',... %16 'Varianza de la diferencia',... %17 'Entropía de la diferencia',... %18 'Information measure of correlation1',... %19 'Information measure of correlation2',... %20 'Inverse difference normalized (INN)',... %21 'Inverse difference moment normalized'}; %22
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 123 %% Características de Law's case 3 TitleParam ={'L5E5/E5L5',... %1 'L5R5/R5L5',... %2 'E5S5/S5E5',... %3 'S5S5',... %4 'R5R5',... %5 'L5S5/S5L5',... %6 'E5E5',... %7 'E5R5/R5E5',... %8 'S5R5/R5S5'}; %9 end disp('Fin de Configuración') TFM_Fracciona(·) function [ im_nroN ] = TFM_Fracciona( im_inic, im_fin, im_nro, SplitInto, folder0 ) %TFM_Fracciona Función que fracciona las imágenes en subimágenes % Inicializaciones previas S0 = floor(sqrt(SplitInto)); folder = folder0; % Crea la carpeta if (exist(folder,'dir') == 0) mkdir (folder); end % Genera las imágenes fraccionadas for i=1:im_nro % Nombre de la imagen original im_i=[im_inic,num2str(i),im_fin]; % Carga la imagen f1=imread(im_i); [a,b,~]=size(f1); for j=1:S0 for k = 1:S0 % Extrae cada subimagen f3=imcrop(f1, [round((j-1)*a/S0), round((k-1)*b/S0), a/S0, b/S0]); file1 = [im_inic,num2str(0),num2str(i),num2str(j),num2str(k),im_fin]; file2 = fullfile(folder,file1); imwrite(f3,file2); end end end % Número de subimágenes totales im_nroN = im_nro * SplitInto; end
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 124 TFM_Fracciona(·) function [ im_nroN ] = TFM_Redim( im_inic, im_fin, im_nro, fracc, folder0 ) %TFM_Redim Función que redimensiona y salva las imágenes % Crea la carpeta para almacenar las imágenes redimensionadas if (exist(folder0,'dir') == 0) mkdir (folder0); end for i=1:im_nro % Nombre de la imagen im_i=[im_inic,num2str(i),im_fin]; % Carga la imagen y la redimensiona f1=imread(im_i); f2=imresize(f1,fracc); % Define el nombre de la nueva imagen y la salva file1 = [im_inic,num2str(i),num2str(fracc),im_fin]; file2 = fullfile(folder0,file1); imwrite(f2,file2); end % Número de nuevas imágenes im_nroN = im_nro; end TFM_CalculoCaract(·) function [ MC, nroMuestras, MuestrasAcum ] = TFM_CalculoCaract( PROCED, ... SELECTOR, NroClases, Inic_foto, Fin, nroFotos, Fracc, Redim, ANG) %TFM_CalculoCaract Función para el cálculo de características % Esta función extrae las características cromáticas y texturales en % función de los parámetros configurados. MC = []; MuestrasAcum = 0; % Selección del tipo de características en función del procedimiento switch PROCED % Característcas cromáticas case 1 disp('Procesando características cromáticas') % Definiciones previas nroMuestras = 400 * nroFotos; MuestrasAcum = [0, 400 * nroFotos]; % Características para cada clase for i = 1:NroClases MuestrasAcum(i+1) = MuestrasAcum(i) + MuestrasAcum(i+1); % TFM_Crom_Features %%%%%%%%% aaa = TFM_Crom_Features(Inic_foto{i}, Fin, nroFotos(i)); MC = [MC; aaa]; MuestrasAcum(i) = length(aaa); clear aaa; end % Características texturales case 2
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 125 disp('Procesando características texturales') % Definiciones previas para imágenes fraccionadas if Fracc ~= 0 MC = zeros(ANG * sum(nroFotos) * Fracc, 22); nroMuestras = ANG * nroFotos * Fracc; MuestrasAcum = [0, ANG * nroFotos * Fracc ]; else MC = zeros(ANG * sum(nroFotos), 22); nroMuestras = ANG * nroFotos; MuestrasAcum = [0, ANG * nroFotos ]; end % Características para cada clase for i = 1:NroClases MuestrasAcum(i+1) = MuestrasAcum(i) + MuestrasAcum(i+1); % TFM_GLCM_Coleccion %%%%%%%%% MC(MuestrasAcum(i)+1:MuestrasAcum(i+1),:) = ... TFM_GLCM_Coleccion( Inic_foto{i}, Fin, nroFotos(i), ... Fracc, Redim, ANG, SELECTOR ); end % Características de Laws case 3 disp('Procesando características de Laws') % Características para cada clase for i = 1:NroClases % TFM_Laws_Features %%%%%%%%% MC(MuestrasAcum(i)+1:MuestrasAcum(i+1),:) = ... TFM_Laws_Features(Inic_foto{i}, Fin, nroFotos(i)); nroMuestras(i) = length(MC) - MuestrasAcum; MuestrasAcum = length(MC); end % Características de Gabor case 4 disp('Procesando características de Gabor') for i = 1:NroClases % TFM_Gabor %%%%%%%%% MC(MuestrasAcum(i)+1:MuestrasAcum(i+1),:) = ... TFM_Gabor_Features(Inic_foto{i}, Fin, nroFotos(i)); nroMuestras(i) = length(MC) - MuestrasAcum; MuestrasAcum = length(MC); end end % Cálculo del vector de Muestras Acumuladas MuestrasAcum=zeros(5,1); MuestrasAcum(1)=nroMuestras(1); for i=2:5 MuestrasAcum(i) = MuestrasAcum(i-1) + nroMuestras(i); end end TFM_Crom_Features(·) function [ distancia ] = TFM_Crom_Features( im_inic, im_fin, im_nro ) %TFM_RGBAnalysis extrae las principales componentes (PCA) de una imagen. % Los espacios de color considerados en este estudio son: % * R, G y B % * H, S y V % * Y, I y Q
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 132 u_x(:,k) = sum(sum(colT.*glcm(:,:,k))); u_y(:,k) = sum(sum(filT.*glcm(:,:,k))); p_x(:,k) = sum(glcm(:,:,k)')'; p_y(:,k) = sum(glcm(:,:,k) )'; s_x(k) = (sum(sum(((colT - u_x(k)).^2 ).*glcm(:,:,k)))) .^0.5; s_y(k) = (sum(sum(((filT - u_y(k)).^2 ).*glcm(:,:,k)))) .^0.5; corp(k) = sum(sum(colT.*filT.*glcm(:,:,k))); corm(k) = sum(sum( (colT - u_x(k)) .* ( filT - u_y(k)) .* glcm(:,:,k) )); hx(k) = -sum(p_x(:,k)'*log(p_x(:,k)+eps)); hy(k) = -sum(p_y(:,k)'*log(p_y(:,k)+eps)); hxy1(k) = -sum(sum(glcm(:,:,k) .* log(p_x(:,k) * p_y(:,k)' + eps))); hxy2(k) = -sum(sum(p_x(:,k) * p_y(:,k)' .* log(p_x(:,k) * p_y(:,k)' + eps))); % Único cálculo no basado en matrices for k0 = 1:256 p_xplusy(k0:256+k0-1,k) = p_xplusy(k0:256+k0-1,k)' + glcm(k0,:,k); p_xminusy (k0,k) = sum(diag(glcm(:,:,k),-k0+1)) + sum(diag(glcm(:,:,k),k0-1)); end p_xminusy(1) = p_xminusy(1)/2; Am=log(p_xminusy(:,k)+eps*ones(size_glcm_1,1)); Ap=log(p_xplusy(:,k) + eps*ones(2*(size_glcm_1)-1,1)); % Cálculo de características texturales out.entro(k) = - sum(sum(glcm(:,:,k).*A)); hxy(k) = out.entro(k); out.denth(k) = - sum(p_xminusy(:,k) .* Am); out.cprom(k) = sum(sum(((colT + filT - u_x(k) - u_y(k)).^4).*glcm(:,:,k))); out.savgh(k) = filP * p_xplusy(:,k); out.contr(k) = sum(sum((abs(colT-filT).^2).* glcm(:,:,k))); out.dissi(k) = sum(sum((abs(colT-filT) ).* glcm(:,:,k))); out.energ(k) = sum(sum( glcm(:,:,k).^2) ); out.entro(k) = - sum(sum( glcm(:,:,k).*A) ); out.homom(k) = sum(sum( glcm(:,:,k) ./ ( 1 + abs(colT-filT) ))); out.homop(k) = sum(sum( glcm(:,:,k) ./ ( 1 + (filT-colT).^2 ))); out.sosvh(k) = sum(sum( glcm(:,:,k) .* ( (colT - glcm_mean(k)).^2 ) )); out.indnc(k) = sum(sum( glcm(:,:,k) ./ ( 1 + abs(filT- colT)/size_glcm_1 ) )); out.idmnc(k) = sum(sum( glcm(:,:,k) ./ ( 1 + ((colT- filT)/size_glcm_1 ).^2))); out.maxpr(k) = max(max(glcm(:,:,k))); out.senth(k) = - sum(p_xplusy(:,k) .* Ap); out.svarh(k) = (((filP) - out.senth(k)).^2) * p_xplusy(:,k); out.dvarh(k) = sum(((0:(size_glcm_1-1)).^2)'.*p_xminusy(:,k)); out.inf1h(k) = (out.entro(k) - hxy1(k)) / ( max([hx(k),hy(k)]) ); out.inf2h(k) = ( 1 - exp( -2*( hxy2(k) - out.entro(k) ) ) )^0.5; out.cprom(k) = sum(sum(((colT + filT - u_x(k) - u_y(k)).^4).* glcm(:,:,k))); out.cshad(k) = sum(sum(((colT + filT - u_x(k) - u_y(k)).^3).* glcm(:,:,k))); out.autoc(k) = corp(k); out.corrp(k) = (corp(k) - u_x(k)*u_y(k))/(s_x(k)*s_y(k)); out.corrm(k) = corm(k) / (s_x(k)*s_y(k)); end
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 133 TFM_Laws_Features(·) function StatsN = TFM_Laws_Features( im_inic, im_fin, im_nro ) %TFM_Laws_Features Función que extrae las características de Laws % % Cálculo de las características de Laws. %% Inicializaciones Tamanyo = 2; Pixel = 125 - (Tamanyo*2); statsIm2 = zeros( im_nro, 9 ); out = zeros(1,9); %% Extracción de las características de Laws for i=1:im_nro im_i=[im_inic,num2str(i),im_fin]; disp(['Analizando ', im_i]) f1=imread(im_i); % Extracción de los mapas de Laws mapz = laws( f1, Tamanyo); for kk = 1:9 out(kk) = sum(sum(mapz{kk}(1+Tamanyo:length(mapz{1})-Ta- manyo,... 1+Tamanyo:length(mapz{1})-Tamanyo)))/(Pixel*Pixel*128); end statsIm2(i,:) = out; end StatsN = statsIm2; end TFM_Gabor_Features(·) function StatsN = TFM_Gabor_Features( im_inic, im_fin, im_nro ) %TFM_Gabor_Features Función que extrae las características de Gabor % % Cálculo de las características de Gabor. %% Inicializaciones Tamanyo = 2; Pixel = 125 - (Tamanyo*2); statsIm2 = zeros( im_nro, 9 ); out = zeros(1,9); gaborArray = gaborFilterBank(5,8,39,39); [u,v] = size(gaborArray); %% Extracción de las características de Gabor for i=1:im_nro im_i=[im_inic,num2str(i),im_fin]; disp(['Analizando ', im_i]) f1 = imread(im_i); [gaborResult, featureVector] = gaborFeatures(f1,gaborArray,4,4);
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 134 statsIm2(i,:) = out; end StatsN = statsIm2; end TFM_Normaliz(·) function [ MCn, MAXe ] = TFM_Normaliz( MC, PROCED, NORMALIZ, MAXe_o ) %TFM_Normaliz Función que normaliza las características de clasificación % Inicializaciones previas [n,NroCarac] = size(MC); % Definición de matrices MAXe = zeros(NroCarac,1); MCn = double(zeros(n,NroCarac)); % Para cada tipo de característica for i=1:NroCarac if n == 1 MAXe(i) = MAXe_o(i); else % Selección del parámetro de normalización switch PROCED % Procedimiento cromático case 1 if NORMALIZ == 1 MAXe(i) = sqrt((255^2)*3); end % Procedimiento textural case 2 MAXe(i) = max(abs(MC(:,i))); % Procedimiento basado en Laws case 3 MAXe(i) = 1; end end % Proceso de normalización switch PROCED % Procedimiento cromático case 1 % Normalización lineal if NORMALIZ == 1 MCn(:,i) = double(MC(:,i))./double(MAXe(i)); % Normalización estadística elseif NORMALIZ == 2 MCn(:,i) = (double(MC(:,i)) - mean(double(MC(:,i))))... ./std(double(MC(:,i))); end % Procedimiento textural case 2 MCn(:,i) = abs(double(MC(:,i)))./double(MAXe(i)); % Procedimiento basado en Laws case 3 MCn(:,i) = abs(double(MC(:,i)))./double(MAXe(i)); end end end
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 135 TFM_Minorac(·) function [ MCn1, MuestrasAcum1 ] = TFM_Minorac( PROCED, ... MCn, MuestrasAcum, minorac ) %TFM_Minorac Función que reduce el número de muestras aleatoriamente k = 0; Muestras = [0; MuestrasAcum]; MCn1 = zeros(minorac * MuestrasAcum(length(MuestrasAcum)),size(MCn,2)); if PROCED == 1 for i = 1:length(MuestrasAcum) for j = 1:(Muestras(i+1)-Muestras(i))*minorac k = k + 1; aux = rand(); MCn1(k,:) = MCn(Muestras(i)+1+round(aux*(Muestras(i+1)- Muestras(i))),:); end end else MCn1 = MCn; end MuestrasAcum1 = MuestrasAcum * minorac; end TFM_representacion %%%%% TFM_representacion %%%%%% % %% Visualizaciones 1D - Histogramas close all; ejes2=linspace(0,1,20); MuestrasAcum0 = zeros(5,1); MuestrasAcum0(1) = nroMuestras(1); for i=2:5 MuestrasAcum0(i) = MuestrasAcum0(i-1) + nroMuestras(i); end if VISUAL_1D == 1 k = 0; folder=fullfile(carpeta_figuras,Proced,Seleccion,'1D'); for i=1:length(TitleParam) % for i=1:1 k = k+1; figure(k); plot(1*ones(nroMuestras(1),1),MCn(1:MuestrasAcum0(1),i),'rx'); hold on; plot(2*ones(nroMuestras(2),1),MCn(MuestrasAcum0(1)+1:MuestrasAcum0(2),i),'gx'); plot(3*ones(nroMuestras(3),1),MCn(MuestrasAcum0(2)+1:MuestrasAcum0(3),i),'bx'); plot(4*ones(nroMuestras(4),1),MCn(MuestrasAcum0(3)+1:MuestrasAcum0(4),i),'yx'); plot(5*ones(nroMuestras(5),1),MCn(MuestrasAcum0(4)+1:MuestrasAcum0(5),i),'mx'); xlim([0.7,7]) title(TitleParam{i});xlabel('Tipos de nube') legend('Cielo','Mosaico','Gris','Cúmulo','Capa') ylabel('Distancia a la diagonal')
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 136 zlabel('Nro de imágenes') file = fullfile(folder,[num2str(k),'.jpg']); saveas(k,file) close all end end clear hiMCA biMCA hiMCB biMCB hiMCC biMCC hiMCD biMCD hiMCE biMCE %% Visualizaciones 2D - Emparejamiento a dos variables k = 0; if VISUAL_2D == 1 folder=fullfile(carpeta_figuras,Proced,Seleccion,'2D') for i = 1:length(TitleParam) for j = i+1:length(TitleParam) k=k+1; figure(k); h1 = plot(MCn(1:MuestrasAcum0(1),j),... MCn(1:MuestrasAcum0(1),i),'rx',... MCn(MuestrasAcum0(1)+1:MuestrasAcum0(2),j),... MCn(MuestrasAcum0(1)+1:MuestrasAcum0(2),i), 'gx',... MCn(MuestrasAcum0(2)+1:MuestrasAcum0(3),j),... MCn(MuestrasAcum0(2)+1:MuestrasAcum0(3),i), 'bx',... MCn(MuestrasAcum0(3)+1:MuestrasAcum0(4),j),... MCn(MuestrasAcum0(3)+1:MuestrasAcum0(4),i),'yx',... MCn(MuestrasAcum0(4)+1:MuestrasAcum0(5),j),... MCn(MuestrasAcum0(4)+1:MuestrasAcum0(5),i), 'mx'); h1 = round(h1); title('Comparación por parejas') xlim([0,1.35]) legend('Cielo','Mosaico','Gris','Cúmulo','Capa') xlabel(TitleParam{i}); ylabel(TitleParam{j}); file = fullfile(folder,[num2str(k),'.jpg']); saveas(k,file) close all end end end %% Visualizaciones 3D - Emparejamiento a 3 variables if VISUAL_3D == 1 folder=fullfile(carpeta_figuras,Proced,Seleccion,'3D'); k = 0; for i1 = 1:length(TitleParam) for i2 = i1+1:length(TitleParam) for i3 = i2+1:length(TitleParam) k=k+1; figure(k); scatter3(MCn(1:MuestrasAcum0(1),i1),... MCn(1:MuestrasAcum0(1),i2),... MCn(1:MuestrasAcum0(1),i3),10,'r') hold on; scatter3(MCn(MuestrasAcum0(1)+1:MuestrasAcum0(2),i1),... MCn(MuestrasAcum0(1)+1:MuestrasAcum0(2),i2),... MCn(MuestrasAcum0(1)+1:MuestrasAcum0(2),i3),10,'g') scatter3(MCn(MuestrasAcum0(2)+1:MuestrasAcum0(3),i1),... MCn(MuestrasAcum0(2)+1:MuestrasAcum0(3),i2),...
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 137 MCn(MuestrasAcum0(2)+1:MuestrasAcum0(3),i3),10,'b') scatter3(MCn(MuestrasAcum0(3)+1:MuestrasAcum0(4),i1),... MCn(MuestrasAcum0(3)+1:MuestrasAcum0(4),i2),... MCn(MuestrasAcum0(3)+1:MuestrasAcum0(4),i3),10,'y') scatter3(MCn(MuestrasAcum0(4)+1:MuestrasAcum0(5),i1),... MCn(MuestrasAcum0(4)+1:MuestrasAcum0(5),i2),... MCn(MuestrasAcum0(4)+1:MuestrasAcum0(5),i3),10,'m') title('Comparación a tres'); xlabel(TitleParam{i1}); ylabel(TitleParam{i2}); zlabel(TitleParam{i3}); hold off; file = fullfile(folder,[num2str(k),'.jpg']); saveas(k,file) close all; end end end end TFM_Clasifica function [ MinE ] = TFM_Clasifica( PROCED, SELECTOR, NORMALIZ, CLASIFIC,... CLASIF_xD, MCn, MAcum ) %TFM_Clasifica Función que clasifica un vector de características % Definicion de matrices MinE = []; % Proceso de clasificación for numparam = 1:4 if CLASIF_xD(numparam) == 1 % Clasificación [~, Erel] = TFM_clasificaStipo( CLASIFIC, MCn, MAcum, numparam ); % Construcción del vector de errores mínimos MinE = [ MinE ; min(Erel(1:6,:)') ]; % Nombre del archivo file = ['Clas_','Pr',num2str(PROCED),'Sel',num2str(SELECTOR),... 'Norm',num2str(NORMALIZ),'Clasif',num2str(CLASIFIC), '_',... num2str(numparam),'D','.xls']; % Guardado parcial if length(Erel)>65000 for i = 1:ceil(length(Erel)/65000) xlswrite(file,Erel(:, ... int32((i-1)*65000+1) :... int32(min([i*65000,length(Erel)])))',... ['Error',num2str(numparam),'D_',num2str(i)]); end else
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 138 xlswrite(file, Erel',['Error',num2str(numparam),'D']); end clear Erel file end end end TFM_clasificaStipo function [ ErrorCtd, ErrorRel ] = ... TFM_clasificaStipo( CLASIFIC, MCn, MAcum, NroParam ) % TFM_clasificaStipo evalúa todas las combinaciones de características. % % Esta función evalúa todas las posibles combinaciones de características % de una colección de imágenes, generando los prototipos de cada clase y % generando un vector con los errores obtenidos, totales y relativos, para % cada clase. % Número de neuronas del clasificador de neuronas switch NroParam case 1 nroNeuronas = 10; case 2 nroNeuronas = 15; case 3 nroNeuronas = 20; case 4 nroNeuronas = 25; end % Número de emparejamiento de parámetros TotalParam = size(MCn,2); % Vector de emparejamientos posibles VectCar = combnk(1:TotalParam,NroParam); [ nroCombinaciones, ~ ] = size(VectCar); % Definición de matrices errores = zeros(6, 2, nroCombinaciones); % Clasificación de cada posible combinación de emparejamientos for i=1:nroCombinaciones disp(['CLASE ', num2str(VectCar(i,:))]); % Tipo de clasificador escogido switch CLASIFIC % Clasificador de mínima distancia case 1 % Generación de prototipo [ M, Prot ] = TFM_prototipos_MinDist2(MCn, MAcum,Vect- Car(i,:)); % Clasificación y tasa de errores [~, error1] = TFM_clasif_MinDist( M, Prot, MAcum ); errores(:,:,i) = error1; % Clasificador K-means case 2 % Generación de prototipo [ M, Prot ] = TFM_prototipos_Kmeans2( MCn, MAcum,Vect- Car(i,:)); % Clasificación y tasa de errores
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 139 [ ~, error1 ] = TFM_clasif_MinDist( M, Prot, MAcum ); errores(:,:,i) = error1; % Red neuronal case 3 % Generación de la red neuronal [ Y, T, ~, ~ ] = TFM_protot_Neural( MCn, MAcum,... VectCar(i,:), nroNeuronas ); % Clasificación y tasa de errores errores(:,:,i) = TFM_clasif_Neural( Y, T, MAcum ); % Debido a la lentitud, se salva cada 500 muestras if and(rem(i,500) == 0, NroParam == 2) file = ['Clas_','Pr',num2str(1),'Sel',num2str(4),... 'Norm',num2str(1),'Clasif',num2str(3), '_', ... num2str(2),'D_',num2str(i/500),'.xls']; ErrorRel1 = zeros(6+NroParam, nroCombinaciones); ErrorRel1(1:6,:) = errores(:,2,:); ErrorRel1(7:7+NroParam-1,:) = VectCar'; xlswrite(file,ErrorRel1(:,1:65000)',... ['Error',num2str(NroParam),'D']); end end end % Vector de errores en términos de casos fallados ErrorCtd = zeros(6+NroParam, nroCombinaciones); ErrorCtd(1:6,:) = errores(:,1,:); ErrorCtd(7:7+NroParam-1,:) = VectCar'; % Vector de errores en términos relativos ErrorRel = zeros(6+NroParam, nroCombinaciones); ErrorRel(1:6,:) = errores(:,2,:); ErrorRel(7:7+NroParam-1,:) = VectCar'; end TFM_protot_MinDist function [ M, Prototipos ] = TFM_protot_MinDist( MCn, MAcum, VectCar ) % TFM_protot_MinDist genera el vector de prototipos de mínima distancia. % % Construye la matriz de características M1 y la matriz de prototipos. % Los parámetros de entrada son: % - MCn: Matriz que contiene las características de la colección de fotos. % - MuestrasAcum: Vector que contiene la fila de comienzo de cada clase. % - VectCar: Vector que contiene las características específicas para las % que se generarán los prototipos. %% Inicializaciones NroParam = length(VectCar); NroClases = length(MAcum); NroCasos = MAcum(5); M = zeros(NroParam+1,MAcum(5)); %% Comprobaciones previas [n,m] = size(MCn); if n ~= NroCasos
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 140 warning('Las dimensiones de MCn y MuestrasAcum no son coherentes') end if m < NroParam warning('Exceso de características requerido en VectCar'); end if NroClases < 2 warning('El número de clases debe ser mayor de 1'); end %% CONSTRUCCIÓN DE LA MATRIZ DE PARÁMETROS DE CLASIFICACIÓN M(1:NroParam,:)=MCn(:,VectCar)'; M(NroParam+1,1:MAcum(1))=ones(1,MAcum(1)); for i = 1:NroClases-1 M(NroParam+1,MAcum(i)+1:MAcum(i+1)) = i+1; end %% CÁLCULO DE PROTOTIPOS % % Se emplean los valores medios (centroides) Prototipos = zeros( NroParam, NroClases); for clase = 1:NroClases abb = M(1:NroParam+1,find(M(NroParam,:) > 0)); Prototipos(:,clase) = mean(abb(1:NroParam,find(abb(NroParam+1,:)==clase))'); end end TFM_protot_Kmeans function [ M, Prototipos1 ] = TFM_protot_Kmeans( MCn, MAcum, VectCar ) % TFM_protot_Kmeans genera el vector de prototipos de K-means. % % Construye la matriz de características M1 y la matriz de prototipos. % Los parámetros de entrada son: % - MCn: Matriz que contiene las características de la colección de fotos. % - MuestrasAcum: Vector que contiene la fila de comienzo de cada clase. % - VectCar: Vector que contiene las características específicas para las % que se generarán los prototipos. %% Inicializaciones NroParam = length(VectCar); NroClases = length(MAcum); NroCasos = MAcum(5); M = zeros(NroParam,MAcum(5)); Muestras = [ 0; MAcum ]; %% Comprobaciones previas [n,m] = size(MCn); if n ~= NroCasos
DISEÑO DE UN SISTEMA AUTOMÁTICO DE IDENTIFICACIÓN DE NUBES BASADO EN VISIÓN ARTIFICIAL Página 141 warning('Las dimensiones de MCn y MuestrasAcum no son coherentes') end if m < NroParam warning('Exceso de características requerido en VectCar'); end if NroClases < 2 warning('El número de clases debe ser mayor de 1'); end %% CONSTRUCCIÓN DE LA MATRIZ DE PARÁMETROS DE CLASIFICACIÓN for i = 1:NroParam M(i,:) = MCn(:,VectCar(i)); end %% CÁLCULO DE PROTOTIPOS % % Se emplean los valores medios (centroides) [Clasif, Prototipos, SumD, Dist] = kmeans(M', NroClases); Prototipos = Prototipos'; % Conteo de aciertos de cada clase por clase conteo = zeros(length(MAcum),length(MAcum)); for i0 = 1:length(MAcum) for k0 = 1:length(MAcum) conteo(i0,k0) = length(find(Clasif(Muestras(i0) + 1 : Muestras(i0+1))... == k0))/(Muestras(i0+1)-Muestras(i0)); end end % Conteo agregado de aciertos VectCar0 = perms(1:5); for i0 = 1:length(VectCar0) conteo2(i0) = conteo(VectCar0(i0,1),1)+conteo(Vect- Car0(i0,2),2)+... conteo(VectCar0(i0,3),3)+conteo(VectCar0(i0,4),4)+conteo(Vect- Car0(i0,5),5); end % Selección del conjunto de características que maximiza los aciertos % globales seleccion = min(find(conteo2 == max(conteo2))); % Reordenamiento de las columnas de prototipos [n_0,m_0] = size(Prototipos); Prototipos1 = zeros(n_0,m_0); for i0 = 1:length(MAcum) Prototipos1(:,i0) = Prototipos(:,find(VectCar0(seleccion,:) == i0)); M(NroParam+1,Muestras(i0)+1:Muestras(i0+1)) = i0; end end