Professional Documents
Culture Documents
Director (a):
Ph.D Carlos Ivn Camargo Bareo
Resumen y Abstract
VII
Resumen
El siguiente trabajo busca ser el punto de partida de soluciones a problemas de visin de
mquina en sistemas embebidos de bajo costo. Para llevarlo a cabo se hizo uso de
herramientas nativas del kernel de Linux, as como se implementaron algoritmos de
procesamiento de imagen mejorando el tiempo de ejecucin en comparacin con tcnicas
convencionales. La segmentacin por color se realiz utilizando el espacio de color HSV
y el reconocimiento de forma mediante la caracterstica de compacidad para formas
geomtricas como crculos, cuadrados y tringulos en colores rojo, verde y azul en
principio, obteniendo resultados de precisin y exactitud mayores al 80 y 90%
respectivamente con una velocidad de procesamiento de 7,2 fps en la tarjeta Stamp-mini.
Abstract
This work aims to be the starting point in solutions to machine vision problems in low cost
embedded systems. To carry out this project there were used native Linuxs kernel tools,
as were also implemented image processing algorithms improving their execution time
compared to conventional techniques. Color segmentation was made using HSV color
space and the shape recognition by the compacity characteristic for circled, squared and
triangular shapes in red, green and blue colors as a beginning, obtaining precision and
exactitude results over 80 and 90% respectively with a processing speed of 7,2 fps in the
stamp-mini card.
Keywords: Embedded system, machine vision, objects classification, segmentation,
shape recognition.
Contenido
IX
Contenido
Pg.
Resumen ....................................................................................................................... VII
Lista de figuras .............................................................................................................. XI
Lista de tablas ............................................................................................................. XIII
Introduccin .................................................................................................................... 1
1.
2.
3.
4.
Resultados .............................................................................................................. 28
4.1
Introduccin ................................................................................................... 28
4.2
Matriz de confusin........................................................................................ 28
4.3
Tiempos de ejecucin .................................................................................... 30
5.
6.
Conclusiones ................................................................................................. 31
Recomendaciones......................................................................................... 32
Referencias ............................................................................................................ 33
Contenido
XI
Lista de figuras
Figura 1-1: Representacin RGB en sistema cartesiano [7] .......................................... 11
Figura 1-2: Representacin polar del espacio de color HSV [9]. .................................... 12
Figura 2-1: Plataforma de desarrollo Stamp [12]. .......................................................... 18
Figura 2-2: Interfaz de configuracion de la imagen del kernel de Linux. ........................ 19
Figura 2-3: Interfaz de configuracin del sistema de archivos. ...................................... 20
Figura 3-1: operacin de cierre...................................................................................... 24
Figura 3-2: aplicacin del algoritmo de Canny. .............................................................. 24
Figura 3-3: Aplicacin de Thinning a la imagen. ............................................................ 25
Figura 3-4: Conjunto de direcciones principales para construir el cdigo de cadena (a).
Construccin de la cadena de Freeman (b). [15] ............................................................ 26
Figura 3-5: Valores de compacidad para las formas seleccionadas. ............................. 27
XII
Contenido
XIII
Lista de tablas
Tabla 4-1: Matriz de confusin del proyecto. .................................................................. 29
Tabla 4-2: resultados de la matriz de confusin. ............................................................ 29
Tabla 4-3: Tiempos de ejecucin en diferentes plataformas. ......................................... 30
Contenido
XIV
Introduccin
Introduccin
En la actualidad existen diferentes tipos de robots capaces de llevar a cabo
procesos de clasificacin de objetos por caractersticas especficas mediante la
obtencin de imgenes, esto por medio de sensores pticos como cmaras. Sin
embargo, varios de ellos aunque estn desarrollados a partir de sistemas
embebidos, el proceso de clasificacin lo lleva a cabo un agente externo, gracias a
que tiene una capacidad de procesamiento superior, debido a que en estos casos
suele existir una gran complejidad en el algoritmo para llevarlo a cabo.
Por otra parte el uso de estos agentes ms potentes en cuanto a capacidad de
clculo, se ve traducido en un mayor costo para el proceso, por lo cual se propone
una solucin que se lleve a cabo directamente en el sistema embebido, las
aplicaciones de este tipo de robot pueden ir desde aplicaciones domesticas como
industriales, teniendo en cuenta las diferentes tareas que se llevan en la industria
y que muchas de estas pueden poner en riesgo la vida de las personas, por lo tanto
suele ser necesario muchas veces llevar a las personas a una distancia segura,
con respecto a los peligros, y en su lugar utilizar robots los cuales logrando anlisis
por visin de mquina podran realizar los procesos necesarios sin arriesgar vidas
humanas.
Al buscar procesos donde se necesiten menos recursos para llevar a cabo las
diferentes tareas que se puedan presentar, es posible reducir costos, y de esta
manera ayudar con el desarrollo tecnolgico, en el caso de poder implementar un
proceso para el reconocimiento por color y forma aplicando tcnicas de visin de
mquina aplicado en sistemas embebidos, se pueden extender las diferentes
aplicaciones en clasificadores automticos, o detectores automticos de posibles
peligros para poder reaccionar a tiempo y evitar problemas o inclusive para tareas
domsticas, teniendo un gran rango de posibles aplicaciones a costos asequibles.
Los alcances o aportes del proyecto esperados son los siguientes:
Introduccin
Fundamentos tericos
1. Fundamentos tericos
Los captulos son las principales divisiones del documento. En estos, se desarrolla el tema
del documento. Cada captulo debe corresponder a uno de los temas o aspectos tratados
en el documento y por tanto debe llevar un ttulo que indique el contenido del captulo.
Los ttulos de los captulos deben ser concertados entre el alumno y el director de la tesis
o trabajo de investigacin, teniendo en cuenta los lineamientos que cada unidad acadmica
brinda. As por ejemplo, en algunas facultades se especifica que cada captulo debe
corresponder a un artculo cientfico, de tal manera que se pueda publicar posteriormente
en una revista.
mquina para este tipo de dispositivos que permita reconocer objetos por color y
forma de manera que pueda ser ejecutado principalmente en un robot para
diferentes propsitos.
Para reconocer colores en una imagen en tiempo real se han desarrollado
algoritmos basados en histogramas aprovechando que de esta forma se obtiene
invariancia a escala y rotacin e inclusive se puede seguir reconociendo el objeto
aunque se encuentre parcialmente oculto como se puede ver en [1], el algoritmo
genera un histograma de un modelo de color segn la apariencia del objeto, luego
compara el histograma modelo con los histogramas de color obtenidos de las
siguientes secuencias logrando encontrar la ubicacin del objeto segn el valor
mximo de la operacin de comparacin, este algoritmo permite su ejecucin en
tiempo real segn como se estipula en el artculo, sin embargo aunque bajo las
condiciones de imgenes de 15 x 15 ejecutando el algoritmo en una FPGA se
obtienen una velocidad de hasta 81 fps, no es viable el reconocimiento de forma
con esta resolucin y con imgenes de 640 x 480 se disminuye la velocidad de
ejecucin considerablemente con un mximo de 9 fps y un mnimo de 0.15 fps
ejecutando en un computador con procesador Intel Pentium 4 (4.2 GHz), 1 GB DDR
SDRAM, lo cual no es ptimo ni viable para un sistema embebido, tambin se
tienen desarrollados algoritmos basados en el espacio de color para reconocer y
seguir el color en tiempo real como se puede ver en [2], en este caso se basan en
el espacio CFA en vez del comn RGB, logrando reconocer el color a pesar de
diferentes cambios en la iluminacin, inclusive variando la iluminacin a grandes
velocidades, en este caso teniendo imgenes de 1292 x 964 se obtienen
velocidades de ejecucin de hasta 30 fps, por lo tanto segn los algoritmos que se
pueden encontrar para el reconocimiento de color en video se puede tener tiempo
real de hasta 30 fps basando el reconocimiento segn el espacio de color bastante
ptimo para un sistema embebido.
En cuanto a los algoritmos para reconocimiento de forma se obtiene el contorno
del objeto y en base a este contorno se clasifica su forma, segn el algoritmo en
[3], una forma de encontrar la forma del objeto es primero aplicando un filtro de
canny sobre la imagen, luego un algoritmo de adelgazamiento de contornos, a
continuacin un algoritmo de extraccin de contornos, y luego un algoritmo para
deteccin de lneas y reconocimiento de polgono para poder clasificar la forma
segn el polgono encontrado, este algoritmo en el artculo se prueba en un
computador con Intel Pentium 4 de 3.06GHz y 512 MB de RAM, obteniendo un
reconocimiento de la forma por imagen en 50 ms, teniendo una velocidad de
ejecucin de 20 fps en esta arquitectura, otro algoritmo para reconocimiento de
forma puede ver en [4], el cual una vez que se extraen los contornos, basado en el
permetro del contorno y el rea que este encierra, se puede obtener la forma del
Fundamentos tericos
1.2 Cross-compilacin
Debido a los bajos recursos disponibles en un sistema embebido, y al uso de
arquitecturas arm en este tipo de sistemas tardara demasiado tiempo el compilar
el software y herramientas que el sistema necesita ejecutar, y muchas veces se
embebe un sistema operativo para administrar los recursos adems de generar el
sistema de archivos del sistema operativo y dems herramientas que vayan a ser
necesarias, por lo tanto para poder generar el binario para que la arquitectura
pueda ejecutar el sistema operativo junto con los drivers necesarios para los
perifricos que se puedan utilizar es necesario generarlos en mquinas con ms
recursos de procesamiento para aumentar la velocidad de compilacin, pero siendo
estas mquinas basadas en arquitecturas x86 con lo cual sus compiladores
generan binarios nicamente para el mismo tipo de arquitectura, es entonces
necesario herramientas de cross compilacin las cuales permiten compilar y
generar binarios para arquitecturas diferentes a la propia, es decir, en una
arquitectura x86 se pueden generar binarios para ser ejecutados en arquitecturas
arm, estos usualmente vienen con los toolchains (cadenas de herramientas), que
permiten generar todo un sistema de archivos junto con los cross compiladores
necesarios para ejecutar software en este mismo, incluyendo la compilacin del
kernel para iniciar el sistema operativo que administra el sistema de archivos
generado por el toolchain, los cuales son un conjunto de herramientas de desarrollo
de software que estn encadenadas para facilitar la creacin de la estructura en
donde se ejecutara el sistema operativo a embeber.
Una vez el sistema tiene a su disposicin todas las herramientas para poder
administrar los recursos, se inicia la ejecucin del algoritmo, cuando se busca
aumentar la velocidad de ejecucin de un algoritmo es indispensable analizar la
complejidad de este, por lo tanto es necesario entender las notaciones de
complejidad de los algoritmos.
Se busca siempre que los algoritmos tengan una complejidad constante, por
ejemplo si un algoritmo necesita siempre de solo 5 comparaciones para dar una
respuesta, en este caso no se dice que el algoritmo tenga complejidad de O(5),
sino O(1), puesto que en procesamiento de una mquina la diferencia en tiempo
de ejecutar 5 comparaciones con respecto a realizar 1 comparacin no tiene una
Fundamentos tericos
de esta manera para obtener el dato con el menor valor siempre se tiene una
complejidad de O(1), y en cuanto a la insercin y eliminacin se tiene una
complejidad de O(log n).
Para algoritmos con necesidad de velocidad de ejecucin mnima se suelen usar
algoritmos basados en rboles de bsqueda auto balanceados, dependiendo de la
necesidad del algoritmo, como ejemplo estn los siguientes [6]:
Fundamentos tericos
10
de un sub espacio, dentro de ese sistema, donde cada color puede ser
representado por un slo punto [7], la representacin del modelo RGB se puede
ver en la Figura 1-1.
0.257
[] = [0.148
0.439
0.504
0.291
0.368
16
0.098
]
[
]
+
[
128]
0.439
128
0.071
11
1.164
0
[ ] = [1.164 0.391
1.164 2.018
16
1.596
0.813] ([] [128])
128
0
El espacio YUV muchas veces, aprovechando que la sensibilidad del ojo humano
es ms sensible a la luminancia que al color, los dispositivos de captura utilizan un
formato de YUV llamado YUYV, esto con fines de minimizar los datos a enviar y
tratar, en este formato cada dos pixeles comparten los canales de color U y V, por
lo tanto, para los primeros dos pixeles, la luminancia es diferente de cada pixel,
pero el croma U y V es el mismo, y as sucesivamente para el resto de la imagen
cada dos pixeles.
Como se puede ver la matiz (H), define el color y en combinacin con la saturacin
(S) y el valor (V) se define el brillo y la intensidad del color, es un espacio de color
ideal cuando es necesario segmentar colores en una imagen.
La conversin entre espacios de color de RGB a HSV es de la siguiente manera:
Primero es necesario calcular ciertos parmetros:
= max(, , )
Fundamentos tericos
12
= min(, , )
=
Basado en los parmetros calculados la matiz (H) se obtiene:
(0) = 0
(
) 6 =
=
+ 2 =
{ + 4 =
= 60
={
0
Con base en el espacio de color que se trabaje, para poder extraer la informacin
de forma y color del objeto, se inicia aplicando filtros, cada filtro resaltar o reducir
caractersticas en la imagen para poder dar un resultado, en principio se busca
segmentar la imagen para diferenciar el objeto del resto de informacin en la
imagen.
1.6 Segmentacin
La segmentacin se refiere al proceso de particionar una imagen digital en
diferentes segmentos [10], por ejemplo, un conjunto de pixeles en una regin de
acuerdo a un criterio de homogeneidad como el color, intensidad o textura, para
localizar e identificar objetos y fronteras en la imagen.
13
El detector de bordes de Canny es ptimo para los bordes conocidos como bordes
de paso (step edges), los cuales consisten en bordes donde hay un cambio abrupto
en la intensidad en comparacin entre las dos regiones.
Fundamentos tericos
14
Suavizado
Para disminuir el ruido en una imagen que se puede generar, se aplica un filtro
gaussiano, el kernel o mscara de un filtro gaussiano con desviacin estndar de
1.4 es:
2 4
1 4 9
=
5 12
159 4 9
[2 4
5 4 2
12 9 4
15 12 5
12 9 4
4 2]
5
Encontrar Gradientes
El algoritmo bsicamente encuentra los bordes donde la intensidad en escala de
grises cambia con ms impacto, para poder lograr esto es necesario calcular los
gradientes de la imagen, los gradientes en la imagen son encontrado aplicando el
operador de Sobel, donde primero se aproxima el gradiente en la direccin X y la
direccin Y respectivamente aplicando los siguientes kernel:
1 0 1
= [2 0 2]
1 0 1
1 2 1
= [ 0
0
0]
1
2
1
El gradiente finalmente se puede calcular para cada pixel en la imagen segn su
magnitud as:
15
|| = 2 + 2
Aunque se tiene la magnitud del gradiente, an no se tiene la direccin de este,
para esto se puede calcular su ngulo de la siguiente manera:
= tan1
| |
| |
Doble umbralizacin
Los pixeles que fueron preservados del paso anterior, tienen an su magnitud de
gradiente intacta, y muchos de estos pixeles pueden pertenecer a un borde real en
la imagen, pero otros pueden ser solo ruido, por lo tanto para preservar nicamente
los pixeles que pertenecen a un borde real, se definen dos umbrales, de manera
que si la magnitud del gradiente en este pixel supera el umbral mayor, este
permanece y se marca como pixel de borde, si la magnitud del gradiente del pixel
Fundamentos tericos
16
Sistema embebido
17
2. Sistema Embebido
2.1 Introduccin
Una vez conocido todo lo anterior, se debe seleccionar el sistema embebido a utilizar y
seguido a esto, para comenzar con el desarrollo de aplicaciones de visin de maquina en
el sistema embebido es necesario realizar todos los pasos que correspondan para que
este sea capaz de llevar a cabo la tarea, es decir, darle soporte a las herramientas. Estas
herramientas son de tipo software y se dividen en el kernel (soporte a dispositivos), y en el
sistema de archivos (aplicaciones).
aplicaciones
que
involucren
procesamiento
de
imgenes
utilizando
Sistema embebido
18
Una vez escogida la plataforma embebida se debe realizar el soporte a las herramientas
de la misma.
2.3.1
Kernel
https://bitbucket.org/cicamargoba/mini-open/downloads
19
Una vez hecho esto parecer la interfaz mostrada en la Figura 2-1. Seguido a esto
se busca la siguiente ruta y se establece la configuracin mostrada a continuacin:
Device Drivers----->
Multimedia support----->
Vide Capture Adapters----->
V4l usb devices------>
<*>
USB Video Class (UVC)
[*]
UVC input events device
Con lo cual se habr dado soporte a los dispositivos de captura (cmaras usb), y
se debe proceder a la compilacin de la imagen del kernel con el siguiente
comando:
1
Sistema embebido
20
21
v4l2-compliance
v4l2-ctl
v4l2-dbg
Diseo de la aplicacin
22
3. Diseo de la aplicacin
3.1 Introduccin
En este captulo se presenta la elaboracin de la aplicacin, comprendiendo las
etapas de diseo, desarrollo y resultados, estos ltimos en cada parte del proceso
con el fin de ver el comportamiento del programa en cada una de sus etapas. Se
debe tener en cuenta que los objetos que se decidieron clasificar por color y forma
son figuras geomtricas bsicas como un crculo, un tringulo y un cuadrado de
color rojo azul y verde.
23
que en los primeros desarrollos el programa solo fuera capaz de procesar como
mximo un cuadro por segundo lo cual resulta ineficiente si se desean realizar
aplicaciones en tiempo real.
Por lo tanto para solucionar esto se decidi manipular directamente los datos en el
formato que entrega directamente el sensor. Para ello se implement un algoritmo
que obtiene los datos del sensor de forma directa, es decir, sin realizar compresin
y descompresin como anteriormente se dijo. Este algoritmo implementado se basa
en el API de video4linux2(v4l2), el cual permite una interaccin directa con el
dispositivo de captura.
La resolucin de la cmara se manej en 160x120 pixeles para mejorar la velocidad
y el formato que se manej fue el YUYV que es manejado por la cmara utilizada
y por una gran variedad de cmaras. Este formato entrega los valores de los pixeles
de la imagen en el espacio de color YCbCr, del cual solo es interesante el canal Y
debido a que este representa un nivel de intensidad de color de la imagen, es decir,
representa la imagen en una escala de grises que es lo que se necesita para un
tratamiento de en busca de caractersticas de forma.
Diseo de la aplicacin
24
Una vez transformada la imagen a HSV se buscan los pixeles con cierta intensidad
en busca de un color establecido por el usuario (rojo, verde o azul), y si corresponde
se establece como valor 255 de intensidad un pixel con las mismas coordenadas
en una imagen binarizada (pixeles de fondo con valor 0 y pixeles de objeto 255).
Una vez obtenida la imagen solida se aplica un filtro para obtener los bordes que
para el caso fue el filtro de Canny [14], debido a que basado en la experiencia es
el que mejor resultado ofreci. El resultado de esto se muestra en la Figura 3-2,
que como se puede observar separa los contornos pero se presentan puntos donde
el contorno tiene componentes que no estn conectadas.Figura 3-2
,
25
Diseo de la aplicacin
26
Figura 3-4: Conjunto de direcciones principales para construir el cdigo de cadena (a).
Construccin de la cadena de Freeman (b). [15]
Segn la Figura 3-4, comenzando por el punto sombreado se obtiene la cadena {6, 7, 7,
6, 7, 7, 7, 1, 2, 1, 3, 3, 3, 4, 3, 4, 4}.
Una vez obtenida la cadena se busca la cadena ms larga, y en base a esto se almacenan
los pixeles correspondientes a esta en la estructura de datos, enseguida se utiliza el
27
Forma
Compacidad
Circulo
1<C<14
Cuadrado
14<C<19
Triangulo
19<C<40
Resultados
28
4. Resultados
4.1 Introduccin
En este captulo se presentan los resultados del proyecto. En la primera parte se
muestra la matriz de confusin un mecanismo de evaluacin rpida para un
proceso de clasificacin en un sistema de visin de mquina [16]. Y finalmente se
muestran los tiempos de ejecucin del programa en diferentes plataformas.
29
Forma
Crculo
Cuadrado
Tringulo
Crculo
78
16
Cuadrado
90
Tringulo
97
cuenta que solo se seleccion una caracterstica para hacer la clasificacin por
forma (compacidad), y sin embargo valores como la precisin superan el 80% para
todas las formas, y se tiene una exactitud superior al 90%, y en todas las formas la
probabilidad de falsa aceptacin se mantiene por debajo del 10% que es un
resultado bastante bueno.
Circulo[%]
Cuadrado[%]
Triangulo[%]
Precisin
91,7647059
82,568807
91,509434
Error medio
9,6666667
9,666667
Sensitividad
78
90
97
Especifidad
96,5
90,5
95,5
PFA
3,5
9,5
4,5
90,3333333
90,333333
96
Exactitud
Resultados
30
Plataforma
Stamp-mini
Computador personal
31
Conclusiones y recomendaciones
32
5. Conclusiones y recomendaciones
5.1 Conclusiones
De acuerdo a los resultados se encontr que es posible realizar aplicaciones de
visin de mquina en sistemas embebidos de recursos limitados, optimizando la
complejidad de los algoritmos, las estructuras de datos y utilizando hilos, las cuales
pueden ser incluso en tiempo real.
As mismo, aunque las imgenes capturadas estaban en una resolucin muy baja
(160x120), la perdida de informacin no es tan significativa segn los resultados de
la matriz de confusin.
Tambin se puede establecer que aunque los resultados de la matriz de confusin
son aceptables, se debe tener en cuenta que la clasificacin nicamente se est
realizando con una caracterstica (compacidad), lo que indica que se seleccion
una buena caracterstica.
Por otra parte se ve que el proyecto en el estado actual es capaz de reconocer objetos de
cualquier color, pues se puede establecer cualquier color por el usuario para la
segmentacin y clasificarlos segn una forma circular, cuadrada o triangular.
33
5.2 Recomendaciones
El proyecto permitir el uso de algoritmos de visin de maquina en futuros
proyectos desarrollados en la materia sistemas embebidos que as lo requieran y
que hasta el momento no eran posibles.
A partir de lo existente se podrn implementar con mayor facilidad algoritmos de
visin de mquina que permitan expandir las funcionalidades del proyecto en su
estado actual.
Referencias
34
6. Referencias
[1] Uk Cho, J., Hun Jin, S., Dai Pham, X., Kim, D & Wook Jeon A Real-Time
Color Feature Tracking System Using Color Histograms, International Conference
on Control, Automation and Systems, 2007.
[2] Gonalves, T & Comport, A. I, Real-Time Direct Tracking of Color Images in the
Presence of Illumination Variation, Shanghai, China: IEEE International
Conference on Robotics and Automation, 2011.
[3] Song, G., Wang, H., Hao, M & Sun, Z, A Polygon Detection Algorithm for Robot
Visual Servoing, Beijing, China: Tsinghua National Laboratory for Information
Science and Technology, 2008.
[4] Firdaus Zakaria, M., Seng Choon, H & Azmin Suandi, S, Object Shape
Recognition in Image for Machine Vision Application, International Journal of
Computer Theory and Engineering, 2012.
[5] E. A. Lee & S. A. Seshia, Introduction to Embedded Systems A Cyber-Physical
Systems Approach, LeeSeshia.org, appendix B, 2011.
[6] Barnett, G & Del Tongo, L, Data Structures and Algorithms: Annotated
Reference with Examples, 2008.
[7] E. Martnez, Curso de Procesamiento Digital de Imgenes, Instituto de
Investigaciones en Matemticas Aplicadas y en Sistemas, Mexico.
[8] E. Dupuis, Optimizing YUV-RGB Color Space Conversion Using Intels SIMD
Technology, 2003.
35
Referencias
36