Subido por Juan Camilo

Técnica de segmentación de imágenes Técnica de umbralización para las personas que sufren Protanomalía-convertido

Anuncio
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
Descargar