Técnica de segmentación de imágenes: Técnica de umbralización para las personas que sufren Protanomalía Image segmentation technique: Thresholding technique for people suffering from Protanomaly Técnica de segmentação de imagens: técnica de limiar para pessoas que sofrem de protanomalia Jhulian Alexander Delgado Herrera Andrés Felipe Quintero Suaza Línea temática principal: Procesamiento de imágenes utilizando métodos de segmentación Resumen El presente artículo se desarrolló para las personas que sufren Protanomalía, para que sepan si en una imagen u objeto hay color rojo, para la realización del presente, se debió tener conocimiento de que tipo de anomalía era Protanomalía, también se debía tener un conocimiento previo de visión computacional, ya que esta tiene unos métodos de segmentación y técnica de umbralizacion, para el proceso de detectar colores de un objeto. Palabras Clave: Reconocimiento del color, Protanomalía, visión computacionalde los caracteres, segmentación, umbralizacion. Abstract This article was developed for the recognition of the red color for people suffering from Protanomaly, for the realization of the present, it should have been aware of what type of anomaly was Protanomaly, a prior knowledge of computational vision should also be had, since this It has some segmentation methods and thresholding technique, for the process of detecting colors of an object. Keywords: Color recognition, Protanomaly, computational vision of the characters, segmentation, thresholding. Resumo Este artigo foi desenvolvido para o reconhecimento da cor vermelha para pessoas que sofrem de Protanomaly, para a realização do presente, deveria estar ciente de que tipo de anomalia era Protanomaly, um conhecimento prévio da visão computacional também deveria ser obtido, pois Possui alguns métodos de segmentação e técnica de limiar, para o processo de detecção de cores de um objeto. Palavras-chave: Reconhecimento de cores, Protanoma, visão computacional dos personagens, segmentação, limiar. 1 Introducción Para la implementación de la segmentación de colores fue necesario utilizar, MATLAB “es un lenguaje de alto desempeño diseñado para realizar cálculos técnicos”(Esqueda Elizondo, 2002), este tipo de programa permite resolver muchos problemas, especialmente aquellos que involucren matrices y vectores. Se encuentra disponible para las plataformas de Unix, Windows y Apple. Además, se pueden ampliar las capacidades de MATLAB con las cajas de herramientas (toolboxes). Para el caso de manipulación de imágenes se emplea el toolbox “Image Processing”. Una imagen es una exhibición visual de algo o alguien que se logra a partir de técnicas enmarcadas en la fotografía, el arte, el video u otras disciplinas. La imagen puede representar la realidad o ser simbólica. En este artículo se trabajó el método de umbralización para detectar el color rojo de alguno objeto utilizando MATLAB, el principal objetivo de esto, es ayudar a las personas con Protanomalía (Dificultad para diferenciar el color rojo). Encontramos una manera sencilla mediante un código que aplica resta, multiplicación, división, una conversión, binarización, permitiendo realizar segmentación de imágenes de una manera sencilla, sin recurrir a códigos complejos. 2 Referentes teóricos 2.1 Anomailías Cromáticas: Protanomalía Se conoce como percepción débil que tienes las personas mediante el color rojo, estas personas verán el cojo rojo palido, los verán con menos saturación o profundidad de color. 2.2 Detección de Objetos a Color en Tiempo Real con Técnicas de Visión Artificial y Arduino En el presente se detectaron los objetos de color RGB (rojo, verde y azul) utilizando imágenes obtenidas en tiempo real con una cámara de celular, permitiendo realizar el procesamiento de imágenes para marcar cada una de los objetos con su respectivo centroide, coordenadas, y mostrar también en tiempo real la cantidad de objetos detectadas de cada uno de los colores RGB (Rojo, Verde y Azul), al mismo tiempo que encuentra los objetos se desplegarán señales en 3 diferentes leds de colores RGB (Rojo, Verde y Azul), con el objetivo de indicar de manera visual y física que ha detectado algún color especificado. La implementación de este sistema está sujeta a ambientes controlados en donde los objetos a detectar posean (Andres jaramillo, cesar rodriguez, 2016)matices con nitidez alta. 2.3 Umbralización múltiple utilizando el método de otsu para reconocer la luz roja en semáforos Este artículo presenta un enfoque práctico de la implementación algorítmica del método de Otsu en el software Matlab, con la finalidad de determinar un umbral múltiple en imágenes de color y detectar el color rojo. De esta forma, se reconoce en imágenes capturadas de varios puntos de la ciudad durante el día, la luz roja mostrada por los semáforos. Para ello, se determinó tres umbrales en las imágenes de cada canal de color utilizando el método de Otsu, seguido de una operación lógica de intersección, para luego complementarlo con una operación morfológica de erosión y dilatación. Fue así que se logró identificar el semáforo con la luz roja encendida, permitiendo de esta manera proporcionar una ayuda al conductor en un momento de distracción. La técnica empleada fue aplicada a un total de 20 imágenes de diferentes lugares de la ciudad de Lima, y originó un error del 5% en el reconocimiento de la luz roja. 3 Metodología Para la realización de este trabajo, se implicó pasar por cinco etapas principales. En primera instancia capturamos tres imágenes en donde se evidencie el color rojo, estas imágenes fueron, una flor roja, una manzana y un cartel, estas se capturaron con cámara de celular. El segundo paso, fue convertir las tres imagines en sus tres composiciones de colores RGB (rojo, verde y azul). En la tercera etapa, se creó una imagen binaria. Luego, se creó una máscara, que sería la inversa de la imagen binaria, para finalizar se volvió a formar la imagen RGB. A continuación, se detalla cada una de las etapas desarrolladas. 3.1 Diagrama de procesos 3.2 Captura de la imagen. En esta etapa se capturaron tres imágenes en escenarios reales a objetos que tuvieran el color rojo en alguna parte. Tomadas con celular: Ilustración 1florgolgota: Color principal rojo, como plantas alrededor de color verde. Mural Flor golgota 2 3.3 3000x4000 3000x4000 Conversión de imagen en sus tres composiciones de colores RGB (rojo, verde y azul) Las imágenes capturadas se encuentran en un formato de color, fue necesario realizar la separación de cada canal para facilitar el procesamiento y así determinar el color de interés. Se procedió a utilizar un código de MATLAB. • Ilustración 2: Mural: Se identifica los colores amarrillo, azul, negro y el color principal rojo. • • • • Ilustración 3:flor golgota: Color principal rojo, como plantas alrededor de color verde. • Tabla 1: dimensiones: el tamaño de cada imagen • Nombre Flor golgota 1 Dimensión 3000x4000 Primero, para leer la imagen con extensión JPG Luego para convertirla en escala de grises Posteriormente para convertirla en sus tres composiciones de entrada (rojo, verde, azul) Se creó una imagen binaria para eliminar los números negativos y positivos, para tener resultado de unos (1) y ceros (0). Más adelante se debió aplicar la mediana de una imagen, para eliminar los ruidos y pixeles sueltos. Se desarrollo una máscara, que sería la inversa de la imagen binaria. Por último, visualizar las imágenes en una ventana que estén formato de grises, para identificar con facilidad la zona de color con tendencia a rojo. A continuación, se muestra el resultado de la separación y el código utilizado: Código: a=imread('flor.jpg'); imshow(a) I=rgb2gray(a); figure imshow(I) imR=double(a(:,:,1)); imG=double(a(:,:,2)); imB=double(a(:,:,3)); imagenR=imR-imG-imB; figure imshow(imagenR) Ilustración 4 imágenes en escala de grises Resultado de la detección del color rojo: Resultado en imágenes en grises: 3.4 Se creó una imagen binaria. En la ilustración 6 se puede observar las tres imágenes que presentan una zona blanca de pixeles que coincide con la luz roja de la imagen a color original. Esta imagen contiene valores positivos y negativos, lo que se quiere es que contenga valores de unos y ceros, porque esto permitirá para formar la imagen que queremos. imagenbinaria=imagenR > 30; figure imshow(imagenbinaria) La imagen de detección del color rojo se comparo con un umbral que va a determinar si los valores de imagen de detección (imagenR) van a valer ceros o unos, por ejemplo, se le coloco un umbral de 30, los pixeles de la imagenR que sobrepasen ese 30 se van a convertir en un uno y van a ser pixeles blancos, mientras que los valores que sean menores que 30 se convertirán en cero y van a ser pixeles negros. A continuación, se mostrará el resultado de la imagen binaria: Ilustración 5 detección del rojo en las imágenes Como se observa en las ilustraciones 6, se eliminan todos los colores que no tengan rojo. Lo que se encuentra en color blanco, es el color rojo de la imagen. Ilustración 6 a la derecha esta la imagen binaria Como se puede observar muchos de los pixeles blancos ya se eliminan y los objetos que contienen el color rojo van tomando mejores formas. Se debe de tener cuidado de no subir mucho el umbral porque toda la imagen se puede convertir en una imagen negra, porque ninguno de los valores de la imagen de detección o imagenR va a ser mayor a 200. A esta imagen se le agrego un filtro de mediana: imagenfiltrada= medfilt2(imagenbinaria); figure imshow(imagenfiltrada) Ilustración 7 imágenes con filtro de mediana La diferencia es que la imagen de la derecha los bordes de la imagen están más suavizado. 3.5 Creación de la máscara. Con la imagen binaria filtrada creamos una máscara que fue simplemente la inversa de la imagen binaria filtrada. Código: El filtro de mediana lo que va a hacer es eliminar ruido, pixeles sueltos (en este momento no tenemos pixeles sueltos) y también suavizar la imagen. Vamos a ver el resultado: mascara=1-imagenfiltrada; figure imshow(mascara) Resultado: A partir de esta composición roja, verde y azul se volverá a crear la imagen RGB. Simplemente se concatenar las tres composiciones (RGB). Código: imagenfinal= cat(3, imagenroja,imagenverde,imagenazul); figure imshow(imagenfinal) Ilustración 8 a la izquierda está la imagen binaria y a la derecha esta su inversa. 3.6 Se formar la imagen RGB. Ahora solo falta aplicar la máscara a la imagen gris, para eliminar las composiciones verdes y azules de la imagen, y que solamente quede la composición roja que contenga la imagen. Por eso, se creó tres variables para los colores rojo, verde y azul. Código: imagenroja=double(I)/255; imagenverde=double(I).*mascara/255; imagenazul=double(I).*mascara/255; Lo que hacen estos códigos que, al multiplicar la imagen gris por la máscara, todos los pixeles de la imagen gris que caigan sobre donde está el color rojo, van a ser multiplicados por (0) cero y la composición del píxel se va a eliminar y solamente van a quedar la composición roja. Ilustración 9. resultado identificación de la luz roja. 4 de la Resultados. En este artículo, se analizó los resultados desde una inspección en la fotografía la correcta detección del color rojo en objetos. De igual modo, la técnica que se planteo fue aplicada a 3 imágenes. Las imágenes fueron tomadas desde celular. Pero en una de ella no se obtuvo un reconocimiento total del color rojo. A continuación, en la ilustración 11, se observa la imagen que no fue posible el reconocimiento del color rojo: Ilustración 10 imagen que no reconoció en su totalidad el color rojo Esto quizás se deba a la poca variabilidad de intensidades de gris en la imagen del canal rojo. Por lo cual, sería necesario realizar un manejo de contraste para conseguir pixeles más claros y así facilitar la identificación. A continuación, se muestra una tabla que representa el resumen del resultado de la técnica propuesta para la identificación de la luz roja del semáforo. Por lo cual, el porcentaje de error alcanzado es del 95% por conseguir el reconocimiento del color rojo en 2 fotografías de un total de 1. N ° 1 2 IMAGENE S PORCENTAJE DE RECONOCIMIENT O Ilustraciones 100% 2,3 Ilustración 1 90% 5 Conclusiones La técnica de procesamiento digital de imágenes basado en umbralización permitió un reconocimiento del color rojo en un 95%. Debido a que solamente en una imagen no fue posible alcanzar tal objetivo. Principalmente este hecho se debió a que la imagen presentaba un contraste pobre en la parte superior, lo que no permitió diferenciar los pixeles blancos correspondientes a la luz roja, del fondo de la fotografía. Por otra parte en este tipo de proyecto también se tienen que tener en cuenta las que en ocasiones un objeto de color Rojo, Verde o Azul, para nosotros como seres humanos es fácil identificarlos en diferentes situaciones, pero para un sistema con procesamiento de imágenes, existen diferentes tipos de variables que no siempre pueden estar a nuestro favor, como lo es el reflejo de los objetos, las sombras, la luz del ambiente principalmente, provocando que en muchas situaciones se tenga que intentar ajustar lo mejor posible estas variables, como lo es en este caso el valor del umbral que se trabaja al convertir de escala de grises a binario. Por lo cual, se concluye que esta metodología planteada puede mejorarse si se realizan las pruebas para un número mayor de fotografías, considerando que la aparición de limitaciones puede ser subsanadas según el error que presenten. 6 Referencias Bibliográficas Andres jaramillo, cesar rodriguez. (2016). Técnicas de umbralización para el procesamiento digital de imágenes de GEMFoils . Scientia et Technica , 352-359. Cortés J., Muriel A. y Mendoza J. (2011). Comparación cualitativa y cuantitativa de las técnicas básicas de umbralización global basadas en histogramas para el procesamiento digital de imágenes. Scientia et Technica, pág. 49. Esqueda Elizondo, J. J. (08 de 11 de 2002). ftp.unicauca.edu.co. Recuperado el 02 de 10 de 2019, de Matlab e Interfaces Gráficas : ftp.unicauca.edu.co › Materias › matlab_seminar › docs › Matlab6xConatec FLORES MONTES, M. Á. (15 de febrero de 2017). Detección de Objetos a Color en Tiempo Real con Técnicas de Visión Artifical y Arduino. Revista de Prototipos Tecnologicos, 1-6. Garfia, u. B. (2015). Procesamiento de imágenes con MATLAB. Obtenido de http://personal.us.es/majiro/2014_1 0_10_clase2.pdf