scieee AI-readable full text Open interactive document viewer

Entorno interactivo MATLAB para análisis de texturas mediante histograma de orientaciones de gradiente

Canela Florensa, Esther

Abstract

En los últimos años ha aumentado el número tecnologías que utiliza la visión artificial. Cada vez, tiene más importancia. La visión artificial se utiliza para percibir una imagen o una secuencia y comprenderla para poder actuar de forma adecuada a cualquier situación. En este proyecto se realiza un entorno interactivo para analizar las distintas características que utiliza el método de HOG (Histogram of Oriented Gradients) de una textura en imágenes digitales. Así pues, el entorno interactivo permite una interacción práctica y sencilla entre la computadora y el usuario.

Full text

Proyecto Fin de Máster Máster Universitario en Ingeniería Electrónica, Robótica y Automática Entorno interactivo MATLAB para análisis de texturas mediante histograma de orientaciones de gradiente Autor: Esther Canela Florensa Tutor: Manuel Ruiz Arahal Dpto. Teoría de la Señal y Comunicaciones Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2019 Proyecto Fin de Carrera Máster Universitario en Ingeniería Electrónica, Robótica y Automática Entorno interactivo MATLAB para análisis de texturas mediante histograma de orientaciones de gradiente Autor: Esther Canela Florensa Tutor: Manuel Ruiz Arahal Catedrático de Universidad Dpto. Ingeniería de Sistemas y Automática Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2019 Proyecto Fin de Carrera: Entorno interactivo MATLAB para análisis de texturas mediante histograma de orientaciones de gradiente Autor: Esther Canela Florensa Tutor: Manuel Ruiz Arahal El tribunal nombrado para juzgar el trabajo arriba indicado, compuesto por los siguientes profesores: Presidente: Vocal/es: Secretario: acuerdan otorgarle la calificación de: El Secretario del Tribunal Fecha: Agradecimientos La realización de un proyecto, ya sea un Trabajo de Fin de Carrera o un Trabajo de Fin de Máster conlleva mucha dedicación, tiempo y paciencia, ya que a veces las cosas no salen como nos gustaría. Por eso, quiero dar las gracias a todas esas personas que me han acompañado durante el transcurso de la realización del Trabajo Final de Máster en esta escuela. En primer lugar, dar las gracias a mi familia, por el apoyo que siempre recibo de ellos y por haber confiado en mí todos estos años. A todos mis compañeros y profesores, con los que he tenido la suerte de coincidir y aprender de ellos. Y finalmente, pero no por ello menos importante, a mi tutor Manuel Ruiz, que me ha proporcionado el tema que se trata en este Trabajo Final de Máster, reconociendo su esfuerzo y dedicación durante la realización de éste proyecto. Gracias. Esther Canela Florensa Sevilla, 2019 I Resumen En los últimos años ha aumentado el número tecnologías que utiliza la visión artificial. Cada vez, tiene más importancia. La visión artificial se utiliza para percibir una imagen o una secuencia y comprenderla para poder actuar de forma adecuada a cualquier situación. En este proyecto se realiza un entorno interactivo para analizar las distintas características que utiliza el método de HOG (Histogram of Oriented Gradients) de una textura en imágenes digitales. Así pues, el entorno interactivo permite una interacción práctica y sencilla entre la computadora y el usuario. III 1 Introducción y objetivos 1.1 INTRODUCCIÓN Cada vez, el procesamiento, el análisis y la interpretación de imágenes digitales, es más utilizado en la ingeniería en el campo de investigaciones forestales, científicas, tecnológicas... El análisis de texturas es una herramienta muy útil para obtener información sobre texturas en imágenes digitales. Se puede utilizar, como se ha dicho anteriormente, en imágenes médicas, en imágenes de zonas agrícolas y de montaña, en sistemas de visión artificial… Para el análisis de texturas, se debe tener en cuenta: - Caracterización de texturas. - Identificación de texturas. - Separación en una imagen digital de zonas con texturas diferentes. La textura es un elemento visual que posee cualidades ópticas y táctiles. La textura de una imagen caracteriza y da información acerca de la disposición espacial de las intensidades luminosas. Una textura es la repetición de un patrón. Una imagen, está formada por los elementos de esa imagen, llamados píxeles. Los píxeles, en una imagen 3-D, es decir, de color, son puntos de color, y en una imagen 2-D son puntos con valores de nivel de intensidad de gris, ya que la imagen es en blanco y negro. En este proyecto se utilizarán imágenes en 2-D, ya que es necesario para el análisis de texturas. Para clasificar texturas, se necesita asignar una clase a un objeto, dependiendo de unas ciertas características que tenga dicho objeto u/o textura. Para la clasificación de texturas o imágenes existen varios métodos. Una posible solución para el análisis de las texturas, es la implementación del algoritmo de HOG (Histogram of Oriented Gradient). Este algoritmo, se ha utilizado para el reconocimiento de objetos en imágenes digitales. Para realizar estas tareas, se ha desarrollado un entorno interactivo para manejar de forma más sencilla y clara los distintos parámetros. El entorno interactivo proporciona comunicación entre la computadora y el usuario, y al ser un programa visual, hace que sea más accesible para alguien que no entienda de programación. Este entorno interactivo se implementa mediante MATLAB. Este es un lenguaje de programación, especializado en computación numérica, muy utilizado en el sector de la industria y el sector académico. 2 Capítulo 1. Introducción y objetivos 1.2 OBJETIVOS El objetivo de este trabajo es proporcionar una ayuda para el análisis de texturas mediante una herramienta interactiva que permita realizar ese análisis de forma sencilla e intuitiva. Para ello, como se ha mencionado en el apartado 1.1., se debe realizar un entorno interactivo utilizando la herramienta GUIDE de MATLAB, que permite un control simple de las aplicaciones de software, lo que lo hace más accesible para aquellas personas que no conocen el lenguaje de programación en cuestión. Mediante este entorno interactivo que se ha creado, se debe analizar los distintos tipos de texturas. Para ello, se utilizarán los distintos parámetros del algoritmo de HOG. La implementación del descriptor HOG es la siguiente [1]: - Calcula el gradiente horizontal y vertical de los píxeles de una imagen. - Se calcula la orientación de los resultados obtenidos del gradiente. - Se dividen los píxeles de la imagen en celdas, siendo las celdas una matriz cuadrada. - Se normalizan las orientaciones obtenidas y se agrupan las celdas por bloques, siendo también los bloques, una matriz cuadrada. - El descriptor final combina los histogramas de orientaciones obtenidos. Para poder alcanzar los objetivos, se debe cumplir las siguientes tareas: - Estudiar y tener conocimientos de los sistemas de percepción y de tratamiento de imágenes digitales. - Conocer y entender el descriptor de HOG. - Diseñar un entorno interactivo en MATLAB utilizando la herramienta GUI. - Realizar las pruebas necesarias. - Presentar las conclusiones a las que se pueden llegar. Por lo tanto, un ejemplo de cómo se desea visualizar el entorno interactivo en cuestión es el siguiente: 2 Por lo tanto, lo que se va a tener serán 3 apartados con los que poder jugar y un apartado final que unirá todos los apartados anteriores para así poder crear la matriz con información sobre los histogramas de orientaciones obtenidos. Para visualizar los cambios que se realicen, aparecerán dos imágenes en pantalla, una que nos informará sobre la imagen actual sobre la que vamos a trabajar y la otra es la imagen que nos aparecerá al realizar un cambio en cualquier apartado, para así visualizar también los cambios que se van haciendo. La interfaz resultante, con todos los parámetros, se mostrará en el siguiente capítulo. 2 Metodología 2.1 SOFTWARE El software utilizado para este proyecto, como ya mencionado anteriormente, en el capítulo 1, es MATLAB. MATLAB [2] ofrece un IDE (Integrated Development Environment) disponible en plataformas Unix, Windows, Mac OS y GNU Linux. Tiene un lenguaje de programación propio. MATLAB es un software muy empleado en centros de investigación y desarrollo. MATLAB [3] incluye un interfaz gráfica o interfaz de usuario GUI. Para la creación de una GUI, existe el editor de diseño GUIDE que proporciona herramientas para el diseño de las interfaces gráficas. El editor, como aparece en la Figura 2, incluye controles cómo botones, menús, controles deslizantes, gráficas, barras de herramientas, etc, los cuales hacen que sea más fácil la creación de interfaces gráficas. Figura 2. Editor GUIDE de MATLAB. Figura 1. Aplicación Matlab. 6 Capítulo 2. Metodología 2.2 ENTORNO INTERACTIVO La interactividad se refiere a la relación que se establece de comunicación entre máquinas y seres humanos, es decir, la comunicación entre el usuario y la computadora. Un aspecto importante de los entornos interactivos es la apariencia visual. Éste tiene que ser sencillo y fácil de comprender. El entorno que se ha desarrollado en este proyecto puede ser utilizado tanto para usuarios con conocimientos de programación como usuarios sin estos conocimientos. La interfaz de usuario del entorno interactivo de este proyecto contiene las utilidades que permiten interactuar con los contenidos. Se debe desarrollar una interfaz simple y funcional para que únicamente con el uso del ratón pueda hacerse uso del entorno. Una buena interfaz [4] debe tener las siguientes características: - Facilidad de comprensión, de aprendizaje y uso. - Identificación de las partes y del objeto de interés. - Diseño ergonómico: debe contener menús, barras de acciones, botones e iconos de fácil acceso. - Las operaciones deben ser rápidas, incrementales y reversibles. - Existencia de herramientas de ayuda, como podría ser un manual de usuario. Por lo tanto, según lo mencionado anteriormente, la interfaz resultante se muestra a continuación: Figura 3. Interfaz resultante del proyecto. Como se ha mencionado anteriormente, se tendrían 3 apartados con los que variar los parámetros: el gradiente, la orientación y la normalización. Variando los parámetros de estos 3 apartados, se puede elegir, visualmente, cuales son los parámetros más ajustados para la realización del descriptor final, que es el apartado restante, en el que se eligen los parámetros para una posterior clasificación, la cual se explica a continuación, en el siguiente apartado. 6 2.3 CLASIFICACIÓN DE IMÁGENES Para poder llegar a clasificar una imagen con unos buenos resultados y obtener la matriz de confusión, que es una herramienta para evaluar visualmente el resultado de un algoritmo, se deben realizar diferentes pasos, que se muestran en la Figura 4 mediante un diagrama. El primer paso es, cargar la imagen al entorno interactivo. Una vez se tiene una imagen con la que poder trabajar, se realiza un tratamiento de la imagen. Es decir, si la imagen en cuestión es una imagen RGB, o sea es de color, se debe cambiar a escala de grises, o sea, blanco y negro. Una vez tratada la imagen, se pueden elegir los distintos tipos de parámetros que utiliza el Histograma de Orientaciones del Gradiente (HOG) para visualizar ciertas características mencionadas en el capítulo 1. Estas características son: - Aplicación de las características del gradiente, para observar que tipo de filtro y el tamaño de este se ajusta mejor a la imagen. - Aplicación de las características de orientación, para visualizar y poder elegir entre el mejor rango de orientaciones para una mejor clasificación. - Aplicación de normalización, como las de orientación pero normalizando las características obtenidas. - Aplicación del descriptor final, utilizando los parámetros anteriores para visualizar las características del descriptor HOG o bien para proceder al entrenamiento. Esto se haría para observar qué parámetros son mejores a la hora de proceder a la clasificación y una vez se tengan unos parámetros establecidos, puede proceder a realizarse el entrenamiento. Para realizar dicho entrenamiento, se deben seleccionar las imágenes deseadas para la clasificación, y, una vez seleccionadas y cargadas, se crean unos datos: - Una matriz con tantas columnas como celdas contengan todas las imágenes y tantas filas cómo número de intervalos de orientaciones se hayan elegido. Esta matriz contiene información sobre la orientación del gradiente. - Un vector de longitud igual al número de celdas que contengan todas las imágenes. Una vez creados los datos, se entrena el sistema para enseñarle que parámetros debe asociar a cada clase o textura y de nuevo se crean nuevos datos. Esta vez es una matriz con tantas columnas como tiene la matriz generada anteriormente y tantas filas como imágenes se hayan seleccionado. Utilizando estos datos generados, se procede a realizar la clasificación, es decir, se asigna cada muestra a un tipo de clase. Se debe tener en cuenta que existen muestras no clasificadas. Por eso, para obtener una mayor cantidad de muestras clasificadas se deben elegir bien los parámetros que se utilizan al llevar a cabo la clasificación. Figura 4. Datos generados. 8 Capítulo 2. Metodología Estos datos se pueden visualizar en una matriz de confusión, dónde cada columna representa el número de predicciones de cada clase, y cada fila representa las instancias en la clase real. Es una herramienta muy útil ya que facilita la visualización de la clasificación de las distintas clases. Figura 5. Diagrama del proceso de clasificación. Tras una posterior extracción de características para obtener la clasificación, es decir, la asignación demuestras a cada clase, se visualizarían unos resultados como los mostrados a continuación: Figura 6. Matriz de confusión. 8 3 Fundamentos teóricos Antes de nada, se debe introducir los fundamentos teóricos necesarios a la hora de realizar la interfaz y por supuesto a la hora de utilizarla tal y como se ha mencionado en apartado 1.2. para una buena comprensión de lo que se va a modificar y ver como resultado en el entorno interactivo. 3.1 TEXTURA Una textura es un elemento visual que cumple unas ciertas cualidades ópticas y caracteriza la superficie de una imagen dada. La textura de una imagen depende de: - La frecuencia de cambio de tono en los píxeles. - La dirección de cambio. - El contraste entre píxeles vecinos. La textura [5] nos da información acerca de la disposición espacial en una imagen. Se utiliza en segmentación, identificación de objetos o clasificación de imágenes. Las propiedades principales [6] de las texturas son las siguientes: Para el análisis de texturas [6] [7] hay tres tipos de métodos principales: Figura 7. Propiedades de textura. 16 Capítulo 3. Fundamentos teóricos Para 7x7: [3 2 1 0 -1 -2 -3]’ · [1 1 1 1 1 1 1] Para 9x9: [4 3 2 1 0 -1 -2 -3 -4]’ · [1 1 1 1 1 1 1 1 1] Para 11x11: [5 4 3 2 1 0 -1 -2 -3 -4 -5]’ · [1 1 1 1 1 1 1 1 1 1 1] CENTRAL El filtro Central [12], no es muy utilizado. Para la dirección y: 𝑑𝐼 𝑑𝑦=𝐼(𝑦+1)−𝐼(𝑦−1) 2 Dónde 𝑑𝐼 𝑑𝑦 es la derivada respecto del eje y de la imagen I. Para la dirección x, se calcula de la misma forma. INTERMEDIATE El filtro Intermediate [12], igual que el central, no es muy utilizado. Para la dirección y: 𝑑𝐼 𝑑𝑦=𝐼(𝑦+1)−𝐼(𝑦) Dónde 𝑑𝐼 𝑑𝑦 es la derivada de la imagen I respecto del eje y. La dirección x se calcula igual: 𝑑𝐼 𝑑𝑥. ROBERTS El filtro Roberts [12] es de la siguiente forma. Para una matriz 2x2, en los gradientes de la dirección y: 𝑑𝑖𝑟𝑒𝑐𝑐𝑖ó𝑛 𝑦=[1 0 0 −1] Y para la dirección x: 𝑑𝑖𝑟𝑒𝑐𝑐𝑖ó𝑛 𝑥=[0 1 −1 0] Para la normalización se usa un coeficiente equivalente a 1/2. Si se desea una dimensión mayor, de 3x3, la plantilla es de la siguiente forma para la dirección y: 𝑑𝑖𝑟𝑒𝑐𝑐𝑖ó𝑛 𝑦=[0 0 −1 0 1 0 0 0 0] Y para la dirección x: 𝑑𝑖𝑟𝑒𝑐𝑐𝑖ó𝑛 𝑦=[0 0 0 0 1 0 0 0 −1] 16 (3.16) (3.17) (3.18) (3.19) (3.20) (3.11) (3.22) (3.23) (3.24) 3.2.2 Orientación El cálculo de la orientación [1] se realiza para la realización de los histogramas de cada celda. Una celda es un conjunto de píxeles. La orientación se calcula utilizando el ángulo que existe en cada una de las celdas. Este ángulo puede ser sin signo [0º - 180º] o con signo [0º - 360º]. Para distribuir cada píxel de la celda en un intervalo del ángulo, se divide en intervalos k, estos intervalos pueden ir de 0 a 9. Por ejemplo, si el intervalo de ángulos es de 9 sin signo, las orientaciones se dividen de la siguiente forma: Figura 14. Intervalos de orientación para k=9. Según el estudio de Dalal y Triggs el mejor resultado para la detección de objetos es utilizando 9 intervalos. Los cálculos resultantes se agrupan en un histograma de orientaciones. Para ello se agrupa la magnitud del gradiente de cada píxel en el intervalo correspondiente. Para una mayor precisión, se calcula el peso proporcional del gradiente determinado de un píxel para los dos intervalos más cercanos. Para ello se calcula el peso de la orientación del gradiente (𝜔𝑘(𝑥,𝑦)): 𝜔𝑘(𝑥,𝑦)=max (0,1 − 𝜗(𝑥,𝑦)−𝜗𝑘 𝛿𝜃 ) Donde θ (x,y) es la orientación del gradiente a clasificar, θk es la orientación del punto medio de un intervalo y δθ es el valor de la orientación en un intervalo. Para una mejor interpretación se muestra en la Figura 13. Figura 15. Intervalos de orientaciónes y cálculo del peso de las orientaciones de los gradientes. (3.25) 18 Capítulo 3. Fundamentos teóricos Una vez se tiene el peso, se calcula el histograma (ℎ(𝑘)) para cada intervalo. ℎ(𝑘)=∑𝜔𝑘(𝑥,𝑦)·𝑔(𝑥,𝑦) (𝑥,𝑦) Donde g(x,y) es el gradiente de cada píxel. 3.2.3 Normalización Como se ha comentado en la introducción del descriptor HOG, para una mayor precisión, en caso de tener contrastes distintos en la imagen, es necesaria la normalización de los bloques. Un bloque es un grupo de celdas. 𝐵=𝑐×𝑐 Donde B es el bloque y c es el número de celdas. Se calcula un vector para cada bloque [1], concatenando los histogramas de las celdas: Figura 16. Cálculo de los histogramas en bloques para una posterior normalización. Se concatenan los histogramas de todas las celdas de un bloque, para crear el vector v. Una vez se tiene el vector 𝑣, se normaliza (𝑣′) utilizando la norma L2: 𝑣′=𝑣 √‖𝑣‖2 2+𝜀 Dónde 𝜀 es un valor muy pequeño, que sirve para evitar que el denominador sea cero y ‖𝑣‖2 𝑒𝑠: ‖𝑣‖2=√∑𝑥𝑖2 18 (3.29) (3.26) (3.28) (3.27) 3.2.4 Parámetros en conjunto del descriptor HOG Se ha comentado en el apartado 2.3., también, la forma en la que el descriptor se muestra, es decir, la configuración de la matriz resultante. En este apartado se verá que procedimiento sigue a la hora de llegar a esa matriz con ciertas filas y columnas. El descriptor HOG reúne todos los parámetros anteriores para medir las orientaciones. |𝐺|=√𝐺𝑥2+𝐺𝑦 2 𝐺=𝑎𝑟𝑐𝑡𝑔𝐺𝑥 𝐺𝑦 Una vez comentados los pasos para la realización del descriptor HOG, se definen los parámetros [1]: - Tamaño de celda, que son los píxeles en que se divide cada celda. - Número intervalos de orientaciones del gradiente, que puede ser de 0 a 9. - Signo del gradiente: sin signo [0º - 180º] o con signo [0º - 360º] - Número de celdas por bloque. Utilizando estos parámetros es posible calcular el HOG, donde 𝐻𝑂𝐺=𝑥1,....,𝑥𝑛 Y n se calcula de la siguiente forma: 𝑛=𝑛º 𝑏𝑙𝑜𝑞𝑢𝑒𝑠 ·𝑛º 𝑐𝑒𝑙𝑑𝑎𝑠 𝑏𝑙𝑜𝑞𝑢𝑒 ·𝑛º 𝑖𝑛𝑡𝑒𝑟𝑣𝑎𝑙𝑜𝑠 𝑛º 𝑏𝑙𝑜𝑞𝑢𝑒𝑠=𝑛º 𝑐𝑒𝑙𝑑𝑎𝑠− 𝑛º 𝑐𝑒𝑙𝑑𝑎𝑠 𝑏𝑙𝑜𝑞𝑢𝑒 +1 Para una mejor interpretación se realiza un ejemplo del cálculo y del resultado final gráfico para distintas imágenes con el mismo tamaño de píxeles: Para el cálculo, se tienen unas imágenes de 512x512 píxeles, con un tamaño de celda de 32x32 píxeles y 2x2 celdas por bloque, por lo tanto se tiene 16x16 celdas. El número de intervalos de histograma de orientaciones es 9 y sin signo, entonces la dimensión final del descriptor HOG es: 𝑛º 𝑏𝑙𝑜𝑞𝑢𝑒𝑠= 16−2+1=15 Y será igual tanto para los bloques en horizontal como en vertical. 𝑛=15𝑥15·2𝑥2 ·9=8100 Por lo tanto la dimensión del descriptor HOG será de 8100. |G| Gx Gy G (3.30) (3.31) (3.32) (3.34) (3.35) (3.36) (3.33) 20 Capítulo 3. Fundamentos teóricos El descriptor HOG como se ha visto, da información del intervalo de orientaciones en cada celda de la imagen. Esta información, se puede representar visualmente utilizando un tipo de estrella que indica en qué grado es mayor la orientación. Un ejemplo para una mayor comprensión se puede ver en la siguiente figura. Esta información se representa en una matriz y cada columna representa una estrella con tantas líneas como filas tenga la matriz. Figura 17. Matriz resultante del descriptor HOG representada graficamente. Utilizando estos datos obtenidos en la matriz, ya se puede efectuar la clasificación de las texturas. Se ha se ha calculado y representado el descriptor HOG para tres tipos de texturas distintas que se muestran en la Figura 15. a) b) c) Figura 18. Imágenes ejemplo. Para un tamaño de 8x8 píxeles por celda agrupadas en bloques de 2x2 celdas, con 9 intervalos de orientaciones de gradiente, se obtienen los siguientes resultados (mostrados en la Figura 16): 20 a) 22 Capítulo 3. Fundamentos teóricos b) 22 c) Figura 19. Descriptor HOG para el ejemplo 1. 24 Capítulo 3. Fundamentos teóricos Para un tamaño de 8x8 píxeles por celda agrupadas en bloques de 2x2 celdas, con 5 intervalos de orientaciones de gradiente, se obtienen los resultados de la Figura 17: a) 24 b) 32 Capítulo 3. Fundamentos teóricos Una vez se tiene calculada la nueva matriz, ya se puede proceder a clasificar las texturas, se asigna cada muestra al tipo de clase o textura que pertenezca como se muestra en la Figura 23. Figura 26. Distintas clases asignadas. En verde, clase 1, en azul clase 2 y en rojo clase 3. Tras aplicar el aprendizaje, la RNA debe tener el comportamiento deseado. Se debe tener en cuenta la existencia de muestras no clasificadas. Se debe tener en cuenta que, para un correcto funcionamiento, se debe elegir adecuadamente el número de capas ocultas. Finalmente, para la visualización del algoritmo de clasificación, se puede utilizar la matriz de confusión mencionada anteriormente. Una vez se tienen todos estos conceptos claros, se puede proceder a realizar el clasificador de texturas, que, como se ha ido comentado, se utilizará el software de MATLAB para crear un entorno interactivo para que sea más intuitivo y fácil de utilizar a la hora de ir probando distintos parámetros del gradiente, la orientación y la normalización para finalmente utilizar el descriptor final de HOG. Una vez obtenida la matriz con los distintos valores, es decir la información necesaria para la clasificación, se entrenará el sistema para que pueda finalmente, ser posible la clasificación de texturas. 32 4 Estado del arte A continuación se lleva a cabo un breve recorrido por los distintos estudios realizados sobre análisis de texturas. En 2005 Navneet Dalal y Bill Triggs, describieron y analizaron el descriptor HOG [9] para la detección de peatones. Existen también, libros dónde se habla sobre el análisis de texturas [15] [16] y aparecen distintos métodos de aplicación. También existen varios proyectos realizados que utilizan HOG: - Caracterización y extracción de las características de textura de los huesos [17]. - Clasificación de las texturas de imágenes utilizando SVM [18]. - Comparación de LBP, HOG y DF para la clasificación de imágenes histopatológicas [19]. Existe un libro [20], publicado en el año 2000, donde se habla de textura y distintas formas de clasificarla (LBP, Matriz de co-ocurrencia y aparece un ejemplo utilizando el filtro de Laws. Como conclusión, se menciona que la segmentación del color y la textura se pueden mejorar, por el contrario, la segmentación de las escenas de la naturaleza es un problema no resuelto. Las tres imágenes que muestra como ejemplo son las siguientes: a) b) c) Figura 27. Imágenes de muestra. 34 Capítulo 4. Estado del arte Y mediante el método de HOG, que se ha mencionado en el apartado 3.2., se obtiene el descriptor, o la matriz resultante de forma gráfica: a) b) 34 c) Figura 28. Resultado de las imágenes aplicando HOG. Se puede ver como la Figura 25 a) es la que menos se aprecia. Estos son varios ejemplos de artículos realizados para el análisis de texturas basadas en el descriptor de HOG. Aunque haya variedad, no es un tema del cual haya abundancia de artículos. 5 Experimentación En este apartado, como se ha mencionado en los capítulos anteriores, pero sobretodo centrándose en el capítulo 2, se utiliza MATLAB para la creación del entorno interactivo. En este capítulo se muestra la experimentación realizada: des de la obtención de la matriz resultante del descriptor final de HOG, a la clasificación de texturas mediante las RNA. Todo esto, se ha explicado detallamente en el capítulo 3. e observan diferentes matrices de confusión para distintos tipos de características aplicadas en el HOG. Para ello, se han seleccionado las mismas imágenes en todas las pruebas realizadas. Figura 29. Imágenes seleccionadas en azul para la realización de la matriz de confusión. Una vez las imágenes seleccionadas y se ha pulsado el botón Abrir, se crean unas variables llamadas xArray e yVector, que se pueden visualizar en el Workspace de Matlab. 38 Capítulo 5. Experimentación. Figura 30. Visualización de variables creadas en el Workspace de Matlab. Una vez se tienen las variables creadas ya es posible la realización del entrenamiento. Para realizar dicha experimentación, se modifican los parámetros del panel de HOG Features & Array Creation. Figura 31. Panel con los parámetros ajustables para el entrenamiento. Una vez los parámetros deseados, se puede proceder a la realización del entrenamiento y la posterior representación de la matriz de confusión pulsando en el botón Train & Confusion Matrix. Antes de ver la matriz de confusión, se muestra la herramienta de entrenamiento de redes neuronales (Figura 20), seguido del diagrama de la red neuronal (Figura 21) y finalmente la matriz de confusión. 38 Figura 32. Herramienta de entrenamiento de redes neuronales. Figura 33. Diagrama de la red neuronal. 40 Capítulo 5. Experimentación. Se procede a mostrar los distintos resultados para los casos mostrados a continuación. El primer caso será: - Plantilla utilizada: Sobel, con matriz de 3x3. - Tamaño de píxeles por celda: 8x8 - Número orientaciones: 9, sin signo. - Número de celdas por bloque: 2x2 En el segundo caso, se cambiará el signo del gradiente: - Plantilla utilizada: Sobel, con matriz de 3x3. - Tamaño de píxeles por celda: 8x8 - Número orientaciones: 9, con signo. - Número de celdas por bloque: 2x2 40 Figura 34. Caso 1 para la matriz de confusión. Figura 35. Caso 2 para la matriz de confusión. En el tercer caso, se cambiará el número de orientaciones: - Plantilla utilizada: Sobel, con matriz de 3x3. - Tamaño de píxeles por celda: 8x8 - Número orientaciones: 5, sin signo. - Número de celdas por bloque: 2x2 En el cuarto caso, se cambia el tamaño de la matriz: - Plantilla utilizada: Sobel, con matriz de 5x5. - Tamaño de píxeles por celda: 8x8 - Número orientaciones: 9, sin signo. - Número de celdas por bloque: 2x2 En el quinto caso, se cambiará la plantilla utilizada: - Plantilla utilizada: Central, con matriz de 3x3. - Tamaño de píxeles por celda: 8x8 - Número orientaciones: 9, sin signo. - Número de celdas por bloque: 2x2 Figura 36. Caso 3 para la matriz de confusión. Figura 37. Caso 4 para la matriz de confusión. Figura 38. Caso 5 para la matriz de confusión. Figura A-35. Matriz y vector creados al pulsar el botón Create Array. Figura A-36. Herramienta de formación de redes neuronales de Matlab. Figura A-37. Visualización de la estructura de la red. Figura A-38. Ventana que muestra la matriz de confusión. Figura A-39. Imagen original y manipulada al inicio del programa. Figura A-40. Imagen original a la izquierda e imagen modificada a la derecha. Figura A-41. Botón de Reset de la imagen manipulada. Figura A-42. 1) Indica las dimensiones de la imagen. 2) Informa del directorio de la imagen seleccionada. 3) Informa sobre la última acción realizada. Referencias [1] «Coursera,» UAB, [En línea]. Available: https://www.coursera.org/learn/deteccionobjetos/home/week/4. [2] MATLAB, «Wikipedia,» [En línea]. Available: https://es.wikipedia.org/wiki/MATLAB. [3] MATLAB, «MathWorks,» [En línea]. Available: https://es.mathworks.com/discovery/matlab-gui.html. [4] M. J. L. Lapuent, «Hipertexto,» [En línea]. Available: http://www.hipertexto.info/documentos/interfaz.htm. [5] M. d. Pilar, «e-REdING. Biblioteca de la Escuela Superior de Ingenieros de Sevilla.,» 2008. [En línea]. Available: http://bibing.us.es/proyectos/abreproy/11494/fichero/PROYECTO%252FCapitulo+3.pdf. [6] J. Cuadri, «e-REdING. Biblioteca de la Escuela Superior de Ingenieros de Sevilla.,» 2009. [En línea]. Available: http://bibing.us.es/proyectos/abreproy/11768/fichero/PROYECTO%252FCapitulo+3.pdf. [7] «Wikipedia,» [En línea]. Available: https://en.wikipedia.org/wiki/Image_texture. [8] «Wikipedia,» [En línea]. Available: https://ca.wikipedia.org/wiki/Histograma_de_gradients_orientats. [9] N. Dalal y B. Triggs, «Histograms of Oriented Gradients for Human Detection.,» International Conference on Computer Vision, pp. 886-893, Jun 2005. [10] «Stack Overflow,» [En línea]. Available: https://stackoverflow.com/questions/9567882/sobel-filter-kernel-of-large-size. [11] L. Guennadi, «Hlevkin,» [En línea]. Available: http://www.hlevkin.com/articles/SobelScharrGradients5x5.pdf. [12] Matlab, «Matlab,» [En línea]. Available: https://www.mathworks.com/help/images/ref/imgradientxy.html. [13] «Wikipedia,» [En línea]. Available: https://es.wikipedia.org/wiki/Red_neuronal_artificial. [14] U. Salamanca. [En línea]. Available: http://avellano.fis.usal.es/~lalonso/RNA/principal.htm. [15] R. W. Rafael C. Gonzalez, Digital Image Processing, 1992. [16] M. Tuceryan, Handbook of Pattern Recognition and Computer Vision, 1993. [17] S. Desuky, Abeer & Harb, Hany & Jennane y Rachid, «Histogram of Oriented Gradients and Texture Features for Bone Texture Characterization,» International Journal of Computer Applications, nº 165, pp. 23-28, 2017. [18] H. Demir, «Classification of Texture Images Based on the Histogram of Oriented Gradients Using Support Vector Machines,» Electrica, vol. 18, nº 1, pp. 90-94, 2018. [19] T. J. Alhindi, S. Kalra, K. H. Ng, A. Afrin y H. R. Tizhoosh, «Comparing LBP, HOG and Deep Features for Classification of Histopathology Images,» University of Waterloo, 2018. [20] L. Shapiro, de Computer Vision, Seattle, Washington, The University of Washington, 2000, pp. 235-248. Anexo A: Manual de Usuario A.i INTRODUCCIÓN Este entorno interactivo se ha diseñado mediante la GUI de MATLAB para realizar un análisis de texturas en imágenes digitales de manera sencilla e intuitiva y facilitar la interacción entre el usuario y el sistema operativo. Por lo tanto, esta interfaz gráfica se podrá utilizar en cualquier sistema operativo que tenga instalado el entorno de computación MATLAB en la versión R2016a o superior. A.i.i Inicio MATLAB Una vez MATLAB abierto, aparece una pantalla como la siguiente: Figura A-1. Pantalla de inicio MATLAB. Para poder acceder al archivo, se accede a la carpeta que lo contenga a través de la carpeta de trabajo que se muestra en la Figura A-2 señaladas en rojo, o bien pulsando en la carpeta para acceder al directorio deseado. 52 Anexo A. Manual de Usuario Figura A-2. Carpeta de trabajo de MATLAB. Cuando aparezca el archivo en la carpeta de trabajo, como se muestra en la Figura A-3 (marcada en rojo), ya será posible lanzar el programa. Para ello, se puede realizar de dos formas: 1) En la ventana Command Window (ventana de comandos), señalado en verde en la Figura A-3, se introduce el nombre del archivo a abrir (¡IMPORTANTE!: escribir HOG_GUI, porque utilizando HOG_GUI.m NO va a ejecutarse), y se pulsa Intro (↲). Figura A-3. Ventana de comandos de MATLAB. 52 Command Window 2) Otra forma de hacerlo, es utilizando la ventana Current Folder (ventana de trabajo, señalada en rojo en la Figura A-3). Se pulsa dos veces en el archivo .m y, seguidamente, en la pestaña EDITOR que aparece en la parte superior del programa se pulsa el botón Run, marcado en rojo en la Figura A-4. Figura A-4. Botón Run para inicializar el programa de MATLAB. A.ii BREVE INTRODUCCIÓN DEL ENTORNO A.ii.i Inicio Justo al abrir la interfaz, aparece el botón de seleccionar imagen, señalado en rojo, el cual abre un cuadro de diálogo para poder elegir la imagen deseada, una vez la imagen seleccionada, pulsar Abrir, y se cargará la imagen: Figura A-5. Botón de seleccionar imagen en la GUI. 54 Anexo A. Manual de Usuario A.ii.ii Imágenes Una vez se ha elegido una imagen y se ha aplicado una característica (gradiente, orientación, normalización y descriptor final) que se explica detalladamente en los siguientes apartados, se visualizan dos imágenes: la imagen seleccionada y la imagen con la característica seleccionada . Figura A-6. Visualización de las imágenes. A.ii.iii Panel con los distintos parámetros de HOG Uno de los paneles (imágenes, características, etc.) incluye sub-paneles con los distintos parámetros del algoritmo HOG: el gradiente, las orientaciones, la normalización y un descriptor final (los distintos paneles se explican en el apartado A.iii. Espacio de Trabajo). Cada característica tiene un botón llamado “OK” para realizar los cambios efectuados en el sub-panel elegido y se activa al seleccionar una característica del parámetro que se quiera modificar, el cual se explica a continuación. Figura A-7. Panel en verde y sub-panel en rojo. 54 1 2 2 1 SUB-PANEL PANEL La primera característica que aparece en el panel es el gradiente. En el gradiente se debe elegir, como se puede ver en la Figura A-8, entre calcular el gradiente en la dirección x e y, calcular la magnitud o la dirección, o bien la densidad de puntos (Dot density) de la imagen . Para elegir el umbral, a la hora de realizar el cálculo de la densidad de puntos, se debe pulsar el botón Change Threshold para añadirle un valor. Una vez elegido el tipo de gradiente, se elige también el filtro que se quiere emplear a la hora de realizar el cálculo del gradiente y se abre un cuadro de diálogo para elegir el tamaño de la plantilla. La imagen resultante aparece en el lado derecho como se ha mencionado en el apartado A.ii.ii. Figura A-8. Parámetros del gradiente en la GUI. Otra característica que aparece en el panel es la orientación. En la orientación se elige el filtro deseado , igual que en el gradiente y además se debe elegir el rango de orientaciones que se quiere representar, seleccionando entre si se quiere distinguir entre ángulos negativos y ángulos positivos. Para distinguir entre negativos y positivos se selecciona Signed Orientation, y si no se quiere distinguir entre negativos y positivos, seleccionar Unsigned Orientation. Figura A-9. Parámetros para el cálculo de la orientación. A continuación aparece el cálculo de la normalización, e igual que en la orientación se elige el filtro y el rango de orientaciones con (Signed Orientation) o sin (Unsigned Orientation) signo . Figura A-10. Parámetros para el cálculo de la normalización. 4 3 5 2 7 7 6 9 8 3 4 5 6 7 8 9 56 Anexo A. Manual de Usuario Finalmente se encuentra el apartado de las características en conjunto de HOG. Se puede elegir el tipo y tamaño de operador o filtro para el gradiente, el tamaño de celda , el número de intervalos de orientaciones y si se quiere con o sin signo y finalmente el número de celdas por bloque . Para más información sobre estos parámetros, se debe acceder al capítulo 3, apartado 2. Figura A-11. Características en conjunto del histograma de orientaciones del gradiente. También se puede guardar la recopilación de datos para un posterior entrenamiento y clasificación de las imágenes elegidas . El botón Create Array abre un cuadro de diálogo para poder elegir las imágenes deseadas. Una vez se seleccionen (siempre tiene que ser más de una), genera una matriz con tantas columnas como celdas contengan todas las imágenes y tantas filas cómo número de intervalos de orientaciones se hayan elegido, el cual cada valor contiene la información obtenida a la hora de realizar el HOG. También genera un vector el cual contiene tantos valores cómo celdas en total. Del total, las celdas de cada imagen contienen un número distinto, para así distinguir las distintas imágenes. Figura A-12. Datos generados al pulsar el botón "Create Array". Para más información, acceder al apartado 2.3 o bien en el apartado 3.2. donde se ha explicado más detalladamente el procedimiento de creación de esta matriz. 56 10 11 12 14 4 13 15 16 15 10 11 12 13 14 15 16 Una vez creada la matriz y el vector, se activa el botón Train & Confusion Matrix . Éste, tal como indica, entrena la matriz y clasifica las imágenes. Se abre una ventana que muestra la matriz de confusión obtenida (como la que se muestra en la Figura A-13). Para entender esta matriz de confusión, acceder al apartado X donde se explica más detalladamente en el capítulo 2. Figura A-13. Matriz de confusión resultante. A.ii.iv Panel informativo Existe otro panel que proporciona información como el de la Figura A-14, del cual el cuadro de texto señalizado en verde, muestra el tamaño de la imagen, el cuadro de texto señalizado en rojo, informa del directorio de la imagen en cuestión y el marcado en azul informa del cambio realizado por última vez. Figura A-14. Panel informativo. 16 64 Anexo A. Manual de Usuario A.iii.ii.iii Normalización Para elegir el valor de los intervalos de las orientaciones del histograma, para la realización de la normalización existen dos tipos de botones igual que en orientación: - El botón Signed Orientation , que utiliza intervalos de orientaciones teniendo en cuenta las orientaciones de símbolo negativo y positivo. - El botón Unsigned Orientation , utiliza intervalos de orientaciones sin distinguir entre orientaciones de símbolo negativo y positivo. Una vez seleccionado uno de los dos botones, aparece una ventana, como la que se muestra en la Figura A-26, en la cual se introducirá los valores que se quiere utilizar para representar el intervalo de orientaciones. Igual que en el apartado de Orientation, este vectores debe ir sin las corchetes [ ] y deben ponerse los valores diferenciándose unos de otros mediante un espacio. Una vez estén todos los valores introducidos, se pulsa OK. Figura A-26. Ventana para introducir el tamaño de la matriz. En el caso del filtro, igual que en el gradiente y la orientación, aparece una ventana, como la que se muestra en la Figura A-27, en la cual se elige el tamaño de la matriz de la plantilla, que debe ser un número impar, y este se debe elegir teniendo en cuenta el tamaño de la imagen, como más grande sea la imagen, es preferible un tamaño de la matriz más grande. Se introduce el valor deseado y se pulsa OK. Figura A-27. Ventana para introducir el tamaño de la matriz. Para ver el resultado de las características que se han introducido, se debe pulsar el botón OK situado dentro del panel de Normalization , que se habrá activado una vez se haya seleccionado alguno de los parámetros modificables en este sub-panel, y se mostrará un histograma con las orientaciones introducidas como el que aparece en la Figura A-28. 64 c c.1 c.2 c.4 c Figura A-28. Imagen de ejemplo resultante al realizar la normalización. A.iii.ii.iv Descriptor final Par el descriptor final hay los parámetros a elegir siguientes: - Tipo y tamaño de filtro para el cálculo del gradiente . - Tamaño de celda . - Número de intervalos de orientaciones . - Orientaciones con signo o sin signo . - Número de celdas por bloque . Para elegir el operador , es exactamente como en los sub-paneles anteriores. Aparece una ventana, igual que en la Figura A-29, en la cual se elige el tamaño de la matriz de la plantilla (introducir solamente un número). Se introduce el valor deseado y se pulsa OK. Figura A-29.Ventana dónde se introduce el tamaño de la matriz. d d.1 d.2 d.3 d.5 d.4 d.1 66 Anexo A. Manual de Usuario Para elegir el tamaño de celda se pulsa en el botón de Cell Size y aparece una ventana, en la cual se debe introducir los dos valores del vector del tamaño de celda. Se debe elegir una matriz que contendrá los píxeles introducidos que formarán una celda, por ejemplo, si se quieren 8x8 píxeles por celda, se debe introducir cada elemento de la matriz como se muestra en la Figura A- 30. Se introducen los valores deseados y se pulsa OK. Figura A-30. Ventana para introducir los valores del vector del tamaño de celda. Para elegir el número de intervalos de orientaciones se pulsa en el botón de Orientations y aparece una ventana en la cual se debe introducir un valor dentro del rango de [1 – 9] y se pulsa OK. Figura A-31. Ventana para introducir el número de intervalos de orientaciones. Para elegir si se desea orientaciones con o sin signo, es decir de 0º-360º o 0º-180º respectivamente, se selecciona con el botón derecho del ratón, un elemento de la lista que aparece en la Figura A-19. Para elegir el número de celdas por bloque de celda se pulsa en el botón de Cell Number donde aparece una ventana en la cual se debe introducir los dos valores del vector del número de celdas que se desea por bloque, es decir si se quiere juntar en bloques de 2x2 celdas, deben introducirse los valores como se muestra en la Figura A-32 y se pulsa OK. Figura A-32. Ventana para introducir los valores del vector del número de celdas por bloque. 66 d.2 d.3 d.5 d.4 Para ver el descriptor final, se debe pulsar el botón HOG Features , que se activa como se ha mencionado anteriormente al seleccionar alguno de los parámetros modificables, situado dentro del panel de HOG Features & Array Creation que se muestra en la Figura A-19. Figura A-33. Imagen de ejemplo resultante del descriptor final. Para guardar los valores de la matriz “x” y el vector “y”, mostrados en la Figura A-12, se debe pulsar el botón Create Array . Este también se activa al seleccionar alguno de los parámetros modificables de este sub-panel. Una vez seleccionado el botón se abre un cuadro de dialogo, como el mostrado en la Figura A-34 donde se debe elegir las imágenes que se quieran clasificar posteriormente. d.6 d d.7 68 Anexo A. Manual de Usuario Figura A-34. Cuadro de dialogo para elegir las imágenes para la creación de los datos. Se pulsa el botón Abrir una vez se hayan elegido las imágenes deseadas y se guardarán los datos conseguidos en el Workspace de Matlab tal como se muestra en la Figura A-35. Figura A-35. Matriz y vector creados al pulsar el botón Create Array. La matriz, como se ha mencionado en el apartado A.ii.iii, tendrá tantas columnas cómo celdas contengan todas las imágenes seleccionadas y tantas filas cómo número de intervalos de orientaciones se hayan elegido, es decir la matriz será: nº de intervalos de orientaciones x número total de celdas en todas las imágenes seleccionadas. 68 El vector, contiene tantos valores cómo celdas en total (de todas las imágenes elegidas), es decir, el número total de celdas en todas las imágenes seleccionadas. Por lo que la matriz y el vector tendrán el mismo tamaño. Una vez se han creado los datos, se activa el botón que dará paso a la clasificación y creación de la matriz de confusión para observar los resultados obtenidos: Train & Confusion Matrix . Éste botón abrirá tres ventanas: - La primera muestra la ventana de entrenamiento de la red neuronal como muestra la Figura A-36. Sirve para visualizar y manejar la actividad para el proceso de la clasificación. Figura A-36. Herramienta de formación de redes neuronales de Matlab. - La segunda ventana, como la mostrada en la Figura A-37, muestra la estructura de la red. Figura A-37. Visualización de la estructura de la red. d.8 70 Anexo A. Manual de Usuario - Finalmente, aparecerá la ventana de clasificación mediante la matriz de confusión como se muestra en la Figura A-38. Los valores en el recuadro rojo informan de los datos que no se han podido clasificar, mientras que los que están en el recuadro verde, son los clasificados. El recuadro en azul muestra el porcentaje total de datos clasificados en verde, y no clasificados en rojo. Figura A-38. Ventana que muestra la matriz de confusión. 70 A.iii.iii Imagen original y manipulada Al seleccionar una imagen cualquiera, justo después de abrir el entorno, aparece una imagen como la que se muestra en la Figura A-39. Figura A-39. Imagen original y manipulada al inicio del programa. Una vez se aplica alguna característica y se muestra dándole al OK como se ha explicado anteriormente, esta aparece justo al lado derecho como se muestra en la Figura A-40. Figura A-40. Imagen original a la izquierda e imagen modificada a la derecha. Si se quiere eliminar la imagen manipulable, se debe pulsar el botón Reset, como el que se muestra en la Figura A-41, que aparece en la parte superior izquierda del entorno interactivo en el que se está trabajando. Figura A-41. Botón de Reset de la imagen manipulada. Una vez pulsado, la imagen modificada, la de la parte derecha, desaparece. 72 Anexo A. Manual de Usuario A.iii.iv Panel informativo Hay un panel que contiene información como se muestra en la Figura A-39. - La primera línea, marcada en verde, informa sobre las dimensiones (ancho por alto) de la imagen. - La segunda línea, señalada en rojo, muestra el directorio de la imagen seleccionada. - Y finalmente, la tercera línea, marcada en azul. da información sobre la última acción que se le ha realizado a la imagen: o Informa de que se ha seleccionado una imagen. o Para el gradiente, dice que tipo de operación se la realizado: cálculo de la magnitud del gradiente, cálculo de la dirección del gradiente, cálculo de la densidad de puntos… o Para la orientación, dice que se ha realizado el cálculo de la orientación. o Para la normalización, como en la orientación, informa que se ha realizado el cálculo de la normalización. o Para el descriptor final, informa de si se ha realizado el cálculo de las características de HOG para visualizar las orientaciones, si se han asignado las variables en el Workspace y el directorio de las imágenes elegidas y por último si se ha realizado la matriz de confusión. Figura A-42. 1) Indica las dimensiones de la imagen. 2) Informa del directorio de la imagen seleccionada. 3) Informa sobre la última acción realizada. 72