You are on page 1of 51

Proceso de clasificacin de objetos

por color y forma desarrollado para


sistemas embebidos en robots
basado en tcnicas de visin de
mquina

David Santiago Diaz Cortes


Christian Arturo Bohrquez Garca

Universidad Nacional de Colombia


Facultad, Departamento Ingeniera elctrica y electrnica
Bogot, Colombia
2015

Proceso de clasificacin de objetos


por color y forma desarrollado para
sistemas embebidos en robots
basado en tcnicas de visin de
mquina

David Santiago Diaz Cortes


Christian Arturo Bohrquez Garca

Tesis como requisito parcial para optar al ttulo de:


Ingeniero Electrnico

Director (a):
Ph.D Carlos Ivn Camargo Bareo

Universidad Nacional de Colombia


Facultad de Ingeniera, Departamento Ingeniera elctrica y electrnica
Bogot, Colombia
2015

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.

Palabras clave: Clasificacin de objetos, reconocimiento de forma, segmentacin,


sistema embebido, visin de mquina.

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.

Fundamentos tericos ............................................................................................. 4


1.1
Estado del arte ................................................................................................ 4
1.2
Cross-compilacin ........................................................................................... 6
1.3
Complejidad algortmica .................................................................................. 7
1.4
Estructuras de datos ........................................................................................ 8
1.5
Espacio de color .............................................................................................. 9
1.5.1
Modelo YUV ........................................................................................ 10
1.5.2
Modelo HSV ........................................................................................ 11
1.6
Segmentacin ................................................................................................ 12
1.6.1
Algoritmo de Canny ............................................................................. 13

2.

Sistema Embebido ................................................................................................. 17


2.1
Introduccin ................................................................................................... 17
2.2
Plataforma utilizada ....................................................................................... 17
2.3
Soporte a las herramientas ............................................................................ 18
2.3.1
Kernel ................................................................................................. 18
2.3.2
Sistema de Archivos ........................................................................... 20

3.

Diseo de la aplicacin .......................................................................................... 22


3.1
Introduccin ................................................................................................... 22
3.2
Diseo del cdigo .......................................................................................... 22
3.2.1
Captura de la imagen .......................................................................... 22
3.2.2
Segmentacin por color ...................................................................... 23
3.2.3
Morfologa matemtica ........................................................................ 24
3.2.4
Segmentacin de forma ...................................................................... 25

4.

Resultados .............................................................................................................. 28
4.1
Introduccin ................................................................................................... 28
4.2
Matriz de confusin........................................................................................ 28
4.3
Tiempos de ejecucin .................................................................................... 30

5.

Conclusiones y recomendaciones ........................................................................ 31

Proceso de clasificacin de objetos por color y forma


5.1
5.2

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

Proceso de clasificacin de objetos por color y forma

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:

Este trabajo se va a desarrollar en el marco del proyecto de robtica mvil


desarrollado por Carlos Camargo Ph.D y Jorge Sofrony Ph.D, por lo que sugiere
una contribucin para el mismo.
Actualmente en la universidad no se tienen publicados desarrollos relacionados con
tcnicas de visin de mquina en sistemas embebidos de bajo costo.
Este trabajo puede potenciar el desarrollo de aplicaciones sencillas donde se
implementen tcnicas de visin de mquina en sistemas de bajo costo, que
permitan el desarrollo tecnolgico nacional (industrial y acadmico).

Proceso de clasificacin de objetos por color y forma

Contribucin en cuanto a metodologas de optimizacin de algoritmos en


arquitecturas con recursos limitados (Memorias, Capacidad de procesamiento,
etc).

Por lo cual se plantean los siguientes objetivos:


Objetivo general:
Desarrollar un proceso de clasificacin de objetos por color y forma centrado en
tcnicas de visin de mquina para sistemas embebidos en robots mviles en dos
dimensiones.
Objetivos especficos:

Investigar las diferentes tcnicas de visin de mquina para clasificacin de


objetos, funcionales en sistemas embebidos.
Agregar herramientas necesarias para la implementacin de tcnicas de visin de
mquina en el sistema embebido.
Implementar los algoritmos a nivel de software, aplicando las tcnicas de visin de
mquina para clasificacin de objetos por color y forma.

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.

1.1 Estado del arte


Hoy en da los sistemas embebidos son usados frecuentemente en el mundo
permitiendo disminuir el tamao de diferentes dispositivos para varios propsitos
que facilitan la vida diaria, dentro de estos dispositivos hay drones, Smartphone,
sistemas de vigilancia, y algunos incluidos en robots industriales y realizar tareas
segn es necesario, en todos estos dispositivos se suelen incluir sensores para
capturar imgenes y es por esta razn que se necesitan algoritmos de visin de
mquina para ejecutar en estos dispositivos, aunque ya existen libreras de
algoritmos de visin de mquina como opencv, embedcv, fastcv, simplecv, halcon,
visionpro, svl, no todas son de cdigo abierto, varias es necesario pagar una
licencia como fastcv, halcon, visionpro y svl, y otras estn diseadas para
computadores de propsito general como opencv y simplecv, y por ultimo embedcv
es una librera de cdigo abierto diseada para sistemas embebidos pero
abandonada en su desarrollo, y nunca fue completada para funcionar con video,
por lo tanto en este proyecto es necesario desarrollar los algoritmos por aparte.
Como es necesario ejecutar los algoritmos en sistemas embebidos, es necesario
buscar algoritmos de visin de mquina eficientes para ser ejecutados en
arquitecturas de bajos recursos y en tiempo real cuando es posible para realizar
diferentes tareas, en este caso se busca desarrollar un algoritmo de visin de

Proceso de clasificacin de objetos por color y forma

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

objeto segn una forma triangular, circular o cuadrada, teniendo nicamente la


necesidad de evaluar una formula segn las caractersticas extradas del contorno
para reconocer la forma del objeto.
El sistema embebido escogido para ejecutar el algoritmo est basado en una
arquitectura arm adems de contar con bajos recursos, lo cual destaca la
necesidad de cross compilar el software a ser utilizado en este sistema.

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.

Proceso de clasificacin de objetos por color y forma

1.3 Complejidad algortmica


La teora de complejidad [5], de un algoritmo es un rea de la ciencia de
computacin, sta estudia la eficiencia con la que un problema puede ser resuelto
por un computador, para un determinado problema pueden existir varios algoritmos
que solucionen el mismo problema, siendo de inters el algoritmo que lo solucione
con la menor complejidad, el nmero de pasos requeridos por un algoritmo es la
complejidad en tiempo, cada paso como una consulta, una condicin, operacin
matemtica bsica se toma como tiempo constante, al entrar en un ciclo dentro del
algoritmo la complejidad depender de cuantas veces repite las instrucciones
dentro del ciclo, en el caso de existir ciclos anidados en otro ciclo la complejidad de
dicha operacin ser el nmero de veces que repite el primer ciclo por el nmero
de veces que repite el segundo ciclo y as sucesivamente segn el nmero de ciclos
anidados, siempre se toma la complejidad ms alta de todos los procesos del
algoritmo como la complejidad del algoritmo, por ejemplo:
Un algoritmo de bsqueda lineal, comenzando al principio de la lista, y comparando
la entrada b contra cada uno de los elementos de la lista, si son iguales retorna
verdadero, en caso contrario continua con el prximo elemento de la lista, en el
peor caso el algoritmo tendr que comparar la entrada b con todos los elementos
de la lista, por lo tanto requerir n comparaciones antes de poder dar una
respuesta, siendo n el nmero de elementos en la lista, en este caso el algoritmo
tendra una complejidad en el peor caso de n.
Para resaltar la complejidad de un algoritmo se utilizan principalmente las
siguientes notaciones:

O grande: es utilizada para resaltar la complejidad del peor caso del


algoritmo nicamente, pero en el algoritmo no siempre se cumple el peor
caso, y es posible que casi nunca ocurra. Con respecto al ejemplo anterior,
utilizando la O grande, la complejidad del algoritmo sera denotada de la
siguiente manera: O(n).
Theta: es utilizada para resaltar la complejidad del algoritmo cuando tanto el
peor caso como el mejor caso tienen la misma complejidad, por lo tanto en
todas las ejecuciones del algoritmo, siempre va a tener la misma
complejidad, un ejemplo de notacin es cuando un algoritmo siempre tiene
una complejidad de n, entonces se denotara de la siguiente manera: (n).

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

diferencia que se necesite considerar, y en este caso el algoritmo tendra una


complejidad constante.
Existen las siguientes complejidades:

Tiempo constante: La complejidad no depende de ninguna manera del


tamao de la entrada. O(1).
Tiempo Logartmico: O(log n), para una entrada de tamao n.
Tiempo Lineal: O(n).
Tiempo cuadrtico: (2 ).
Tiempo polinomial: ( ), para cualquier m .
Tiempo exponencial: ( ), para cualquier m > 1.
Tiempo Factorial: O(n!) es la peor complejidad de todas, cuando se
requieren algoritmos de alta velocidad de ejecucin.

Las complejidades anteriores estn ordenadas de la ms rpida siendo en tiempo


constante a la ms demorada siendo en tiempo factorial.
Una forma de disminuir la complejidad de un algoritmo es usando estructuras de
datos las cuales organizan los datos de maneras convenientes para disminuir
tiempos de bsqueda, insercin o eliminacin de datos.

1.4 Estructuras de datos


Las estructuras de datos en programacin permiten el almacenamiento y anlisis
temporal de datos mientras se estn trabajando con estos en la ejecucin de un
algoritmo, diferentes tipos de estructuras de datos se han desarrollado
dependiendo de la necesidad del algoritmo, entre las ms usadas estn las
estructuras de datos FIFO (First In First Out) y LIFO (Last In First Out), en la primera
un ejemplo son las llamadas colas, las cuales consisten en tratar los datos como si
estuvieran realizando una fila o cola, de ah su nombre, de manera que el primer
dato que entra es tambin el primer dato en salir cuando se le solicita un dato a la
cola, en las segundas estn las pilas, las cuales van ingresando los datos uno tras
otro como formando una torre o pila de datos, y al momento de solicitar un dato a
la pila, esta devuelve el dato ms alto de la torre o pila, es decir el ltimo dato que
entro a la estructura, aunque son tiles este tipo de estructuras, usualmente se
manejan otros tipos de estructuras para disminuir la complejidad algortmica, por
ejemplo en caso de necesitar siempre el dato con el menor valor de una gran
cantidad de datos se puede utilizar una estructura de datos llamada min heap, esta
estructura trabaja como un rbol binario de bsqueda, con la diferencia de
reorganizar sus datos siempre que hay una insercin o eliminacin de manera que
siempre exista en su raz el dato con el menor valor de todos los datos del rbol,

Proceso de clasificacin de objetos por color y forma

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]:

Max heap: permite obtener el dato con el mayor valor en complejidad de


O(1) y la eliminacin e insercin en O(log n).
AVL tree: permite la insercin, borrado y bsqueda en complejidad de O(log
n).
rbol Rojinegro: todas las operaciones que se soliciten a la estructura
tienen una complejidad de O(log n).

Cada estructura se piensa segn lo necesite el algoritmo, por ejemplo en el caso


de necesitar el dato con el valor mayor continuamente pero otros valores muy rara
vez, entonces se puede pensar en un max heap, o inclusive una estructura de datos
con menor complejidad de implementar como una lista enlazada ordenada (Sorted
Linked List), la cual permite obtener tanto el dato de menor valor como el de mayor
valor en complejidad de O(1), y la insercin en complejidad de O(n).
Una vez definidas las estructuras de datos, dentro de los algoritmos de visin de
mquina es indispensable el espacio de color a manejar existiendo diferentes de
estos, y tanta variedad de dispositivos de captura de imagen usando distintos
espacios de color por defecto.

1.5 Espacio de color


Los espacios de color son modelos matemticos que describen la forma de
representar los colores como tuplas de nmeros, usualmente como tres o cuatro
nmeros, en algoritmos de visin de mquina el espacio ms usado es el RGB,
usualmente con una profundidad de 8 bits, esto significa que cada pixel en la
imagen tiene definido si color basado en tres valores, un valor de intensidad de rojo
R, intensidad de verde G e intensidad de azul B, y cada uno de estos valores con
8 bits de rango, lo que implica que tienen una variacin entre 0 y 255, siendo 0 con
ausencia del color, y 255 mxima intensidad del color, cuando un pixel tiene los
tres valores RGB en 0 el pixel es negro y cuando la intensidad de los tres valores
RGB es 255 el pixel es blanco, el espacio de color RGB se puede representar de
forma geomtrica en un sistema coordenado cartesiano como un cubo, donde la
posicin (0,0,0) es el negro intenso y la posicin (255,255,255) es el blanco puro,
en esencia un modelo de color es una especificacin de un sistema coordenado y

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.

Figura 1-1: Representacin RGB en sistema cartesiano [7]

1.5.1 Modelo YUV


Muchos dispositivos de captura de video trabajan con estndares de seales de
video para facilitar clculos a la hora de comprimir, y/o transmitir video, debido a la
naturaleza del espacio de color RGB, la cual no permite modificar el brillo de un
pixel con facilidad, puesto que para obtener el brillo de un pixel primero debe ser
obtenido de sus tres componentes RGB, y luego, para poder modificar el brillo, es
necesario computar los tres valores RGB de nuevo, lo cual consume ms tiempo
del necesario para poder procesar los datos, en el espacio YUV este problema es
eliminado, puesto que el brillo de los pixeles es separado de los canales de color,
teniendo a Y que representa la luminancia, o intensidad, y U y V la representando
el color, por lo tanto el canal Y viene siendo una representacin de la imagen en
escalas de grises, separado de sus componentes de color [8]. Muchas veces es
necesario pasar del espacio YUV a RGB o viceversa, esta conversin se puede
lograr de la siguiente manera:

0.257
[] = [0.148

0.439

0.504
0.291
0.368

16
0.098
]
[
]
+
[
128]
0.439
128
0.071

11

Proceso de clasificacin de objetos por color y forma

Y se puede obtener la conversin de YUV a RGB con la siguiente ecuacin:

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.

1.5.2 Modelo HSV


El espacio de color HSV [9], es la representacin cilndrica del cubo RGB, su
representacin se puede ver en la Figura 1-2.

Figura 1-2: Representacin polar del espacio de color HSV [9].

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

El valor se obtiene del mximo entre R, G y B:


=
Finalmente la saturacin se obtiene segn la siguiente ecuacin:
0 = 0

={
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

Proceso de clasificacin de objetos por color y forma

Existen diversas tcnicas de segmentacin, en donde se deben seleccionar segn


la naturaleza del problema, basado en las tecnologas, la segmentacin est
dividida en dos propiedades de la imagen:

Detectando discontinuidades: Consiste en particionar una imagen basado


en cambios considerables en la intensidad, en donde se incluyen algoritmos
para la deteccin de bordes.
Detectando Similaridades: Consiste en particionar una imagen en
regiones que sean similares de acuerdo a un criterio predefinido, en este se
incluyen algoritmos de segmentacin por umbralizacin, crecimiento de
regin, divisin y unin de regiones.

Centrando la atencin en detectar discontinuidades, se tiene el mtodo basado en


gradiente:
El gradiente es el primer derivativo de la imagen, cuando hay un cambio
considerable en la intensidad cerca de un borde y hay poco ruido en la imagen este
mtodo funciona bien. Este mtodo incluye la convolucin de operadores de
gradiente con la imagen, los valores altos en la magnitud del gradiente se obtienen
cuando se cambia de regin en la imagen, estos pixeles pertenecen al borde, los
cuales deben ser enlazados para formar las fronteras de las regiones, los
operadores comunes que usan este mtodo son el operador de Sobel, operador de
Canny, operador de Laplace, el operador Gaussiano del Laplaciano, y varios ms,
sin embargo el operador de Canny es el ms prometedor pero toma ms tiempo en
comparacin con el operador de Sobel.

1.6.1 Algoritmo de Canny


Es un algoritmo desarrollado por Jhon F. Canny en 1986 [11], a pesar de todo este
tiempo, an sigue siendo ampliamente usado incluyendo investigaciones. El
objetivo de Jhon F. Canny era desarrollar un algoritmo ptimo con respecto a los
siguientes criterios:

Deteccin: La probabilidad de detectar los puntos del borde debe ser


maximizada y la de encontrar falsos puntos de borde minimizada.
Localizacin: Los bordes detectados deben estar los ms cercanos
posibles a los bordes verdaderos.
Nmero de bordes: Un borde real no debe resultar en ms de un borde
detectado.

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

El algoritmo consiste en cinco pasos[11]:

Suavizado: Es necesario aplicar un filtro de suavizado en la imagen para


remover el ruido.
Encontrar gradientes: Los bordes deben ser resaltados donde los
gradientes de la imagen tienen el mayor valor.
Supresin de los no mximos: solo los mximos locales deben ser
resaltados.
Doble umbralizacin: Los bordes potenciales son determinados por
umbalizacin.
Rastreo de borde por histresis: Los bordes finales son determinados al
suprimir todos los bordes que no estn conectados a un borde real.

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

Proceso de clasificacin de objetos por color y forma

|| = 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

| |
| |

Supresin de los no mximos


Este paso busca resaltar los bordes reales, dejando nicamente todos los mximos
locales del gradiente en la imagen y eliminando todo lo dems, el algoritmo para
cada pixel en la imagen del gradiente es:
1. Redondear la direccin del gradiente al ms cercano a 45.
2. Compara la magnitud del gradiente en el pixel actual con la magnitud del
gradiente de los pixeles en las direcciones positivas y negativas del
gradiente actual.
3. Si la magnitud del gradiente en el pixel actual es mayor, preserva el valor de
la magnitud, sino se cumple, se elimina el valor de la imagen del gradiente.
Centrando la atencin en detectar similaridades, se tiene la tcnica de crecimiento
de regin:
El crecimiento de regin es un procedimiento que agrupa los pixeles de toda la
imagen en subregiones basados en criterios predefinidos, esta tcnica puede ser
en cuatro pasos:

Selecciona un grupo de pixeles semilla en a imagen original.


Selecciona un de criterios de similaridad como la intensidad en grises o el
color y se asigna una regla de parada.
Se crecen las regiones aadiendo pixeles vecinos que tienen propiedades
similares a la de los pixeles semillas.
Se detiene el crecimiento de la regin cuando no hay ms pixeles que
cumplan el criterio para ser incluidos en la regin.

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

actual no supera ni siquiera el umbral menor, su valor es removido, y si la magnitud


esta entre el umbra mayor y el menor, el pixel se marca como posible borde.
Rastreo de borde por histresis
Finalmente los pixeles marcados como pixeles de borde permanecen para denotar
el borde, mientras que los pixeles marcados como posible borde, pasan a ser parte
del borde nicamente si estn conectados directamente con un pixel de borde.

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).

2.2 Plataforma utilizada


La plataforma embebida que se seleccion para el desarrollo del proyecto fue la Stampmini, diseada por el profesor director Carlos Ivn Camargo Ph.D. La razn de esta
seleccin es que esta plataforma es utilizada actualmente en la materia sistemas
embebidos dirigida tambin por el profesor Carlos, y de tener xito el proyecto puede ser
introducido en la misma, adems dadas sus caractersticas no es apropiada para
desarrollar

aplicaciones

que

involucren

procesamiento

de

imgenes

utilizando

herramientas convencionales que es el objeto de estudio de este trabajo de grado.

En la figura 2-1 se puede observar un esquemtico de la plataforma utilizada. sta cuenta


con las siguientes caractersticas:

Procesador ARM IMX-233 454MHz de 32 bits, que permite embeber Linux.

Sistema embebido

18

El procesador no cuenta con unidad de punto flotante.

Memoria RAM de 64 MB.

Una vez escogida la plataforma embebida se debe realizar el soporte a las herramientas
de la misma.

Figura 2-1: Plataforma de desarrollo Stamp [12].

2.3 Soporte a las herramientas


Ahora bien se debe dar soporte a los dispositivos necesarios para la captura de informacin
por parte del embebido que en este caso son las cmaras para ello se requiere modificar
tanto el kernel como el sistema de archivos utilizado en el sistema.

2.3.1

Kernel

El paquete de herramientas utilizado se puede encontrar en el repositorio creado


por el profesor Carlos Camargo para el desarrollo de la materia sistemas
embebidos1. Por lo tanto Para la generacin de las herramientas de crosscompilacin y el sistema de archivos se us buildroot que es un paquete de
herramientas de compilacin para sistemas de Linux embebidos.
La versin de kernel de Linux utilizada fue la 2.6.35.3, y para la cual se debe realizar
la configuracin para los dispositivos ingresando en la carpeta de desacarga y en
terminal ingresar el siguiente comando:

https://bitbucket.org/cicamargoba/mini-open/downloads

19

Proceso de clasificacin de objetos por color y forma

[ ]$: make ARCH=arm CROSS_COMPILE=arm-linux- menuconfig

Figura 2-2: Interfaz de configuracion de la imagen del kernel de Linux.

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

[ ]$: make ARCH=arm CROSS_COMPILE=arm-linux-

Sistema embebido

20

2.3.2 Sistema de Archivos


Como se mencion en la seccin anterior la herramienta utilizada para la crosscompilacin tanto del kernel como del sistema de archivos fue buildroot, que para
este caso se us la versin actualizada de 2015. Una vez se ha descargado del
repositorio se accede a la carpeta de descompresin mediante terminal y se ejecuta
el siguiente comando:
1

[ ]$: sudo make menuconfig

Figura 2-3: Interfaz de configuracin del sistema de archivos.

Con lo cual aparece la interfaz de configuracin del sistema de archivos que se


muestra en la Figura 2-1. Para agregar todos los programas capaces de obtener la
informacin del sensor se deben realizar las siguientes configuraciones dentro de
la misma, buscando la ruta y cambiando los flags como corresponda y que se
muestran a continuacin:
Target Packages---->
Libraries------>
Hardware Handling----->
-*- libv4l
*** decode_tm6000 requires a GLIBC based toolchain ***
*** ir-keytable requires a GLIBC based toolchain ***

21

Proceso de clasificacin de objetos por color y forma


[*]
[*]
[*]

v4l2-compliance
v4l2-ctl
v4l2-dbg

Una vez hecho esto se podr cross-compilar el sistema de archivos ya teniendo el


soporte necesario para ejecutar la aplicacin con el siguiente comando en terminal:
1

[ ]$: sudo make

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.

3.2 Diseo del cdigo


Debido a las limitaciones presentes en la plataforma seleccionada, y en general en
los sistemas embebidos de recursos limitados se hizo necesario realizar el cdigo
en C, gracias a que es un lenguaje soportado ampliamente por estos sistemas, as
mismo es mejor comparado con otros lenguajes de programacin como Python,
C++ o Java tiene mayor velocidad de ejecucin as como un menor consumo de
memoria [13]. As mismo como el procesador de la placa utilizada no tena unidad
de punto flotante todos los algoritmos desarrollaron operaciones en entero.

3.2.1 Captura de la imagen


La captura de la imagen inicialmente se realiz con programas nativos de Linux
como ffmpeg, mplayer o fswebcam entre otros, pero la forma en que estos
programas manejan los datos del sensor (la cmara) resultaba problemtico en el
sentido de que incrementaba el tiempo de ejecucin del programa, esto debido a
que obtenan la imagen y realizaban una compresin en un formato de visualizacin
el cual para ser manipulado deba ser nuevamente descomprimido. Esto gener

23

Proceso de clasificacin de objetos por color y forma

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.

3.2.2 Segmentacin por color


Debido a que la captura se realiza en el espacio de color YCbCr, y que solo es
relevante el canal Y para la segmentacin por forma es necesario realizar una
transformacin en espacio de color a un espacio de color HSV que permite una
mejor manipulacin de los pixeles para su segmentacin por color.
La transformacin de YCbCr a HSV con operaciones en entero no es posible por
lo cual se requiri realizar una transformacin intermedia al espacio RGB y a partir
de esta una transformacin a HSV.

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).

3.2.3 Morfologa matemtica


Partiendo de la imagen binarizada se aplica una operacin de cierre la cual permite
eliminar puntos aislados indeseados y dejar objetos slidos como se muestra en la
Figura 3-1.

Figura 3-1: operacin de cierre

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
,

Figura 3-2: aplicacin del algoritmo de Canny.

25

Proceso de clasificacin de objetos por color y forma

Para solucionar el problema de componentes conectadas se aplic un algoritmo de


thinning que permite conectar componentes cercanas de la misma intensidad en
este caso puntos de contorno en la imagen. Como resultado se pueden ver los
contornos bien definidos en la Figura 3-3.

Figura 3-3: Aplicacin de Thinning a la imagen.

3.2.4 Segmentacin de forma

Una vez obtenidos los contornos, lo siguiente es proceder a obtener las


caractersticas de forma de la imagen. Para ello teniendo como base la imagen
donde se detallan los contornos gracias al algoritmo de Thinning se obtiene cada
contorno recorriendo la imagen de izquierda a derecha y de arriba hacia abajo
solamente dejando el contorno con mayor nmero de puntos. Cada contorno es
almacenado utilizando una estructura de datos de lista doblemente enlazada y
estos contornos son extrados usando cdigos de cadena [15], en donde la lnea
del contorno es aproximada mediante una secuencia de segmentos de direccin
en donde cada direccin queda codificada por un nmero como se puede ver en la
Figura 3-4 que para el caso resulta ser un algoritmo bastante sencillo de
implementar y as mismo permite una ejecucin rpida.

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

parmetro de compacidad, el cual relaciona el permetro de un objeto con su rea


como se muestra en la siguiente ecuacin:

El permetro se obtiene directamente del contorno extrado, y el rea encerrada por


el contorno se obtiene aplicando integrales para encontrar el rea entre dos curvas,
en donde se localizan los puntos extremos del contorno, y se toma la curva superior
como la primera mitad del contorno desde el pixel ms a la izquierda hasta el pixel
ms a la derecha, y la curva inferior como la segunda mitad del contorno limitado
por los mismos pixeles extremos.
Y se tiene que el parmetro de compacidad para las formas seleccionadas est
determinado como lo muestra la Figura 3-5, que como se puede observar tiene
rangos que comparten fronteras pero que como se mostrar en la prctica no llegan
a ser un problema.

27

Proceso de clasificacin de objetos por color y forma

Forma

Compacidad

Circulo

1<C<14

Cuadrado

14<C<19

Triangulo

19<C<40

Figura 3-5: Valores de compacidad para las formas seleccionadas.

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.

4.2 Matriz de confusin


La matriz de confusin es una buena medida del desempeo de un proceso de
clasificacin, especialmente utilizado para aquellos implementados en sistemas de
visin de mquina [3]. La matriz de confusin construida est basada tomando
objetos de diferente forma (circulo, triangulo y cuadrado), pero manteniendo el color
de segmentacin, esto debido a que este parmetro no afecta de forma sensible la
clasificacin (se presume que una buena segmentacin por color debera arrojar
los mismos resultados para cualquier color). Esta matriz se puede observar en la
Tabla 4-1, y muestra los resultados de clasificacin para las tres formas teniendo la

clasificacin de cien muestras por clase.

29

Proceso de clasificacin de objetos por color y forma

Forma

Crculo

Cuadrado

Tringulo

Crculo

78

16

Cuadrado

90

Tringulo

97

Tabla 4-1: Matriz de confusin del proyecto.

Los resultados de evaluacin de la matriz de confusin son los que se muestran en


la
Tabla 4-2. Como se puede observar es bastante bueno el resultado teniendo en

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

Tabla 4-2: resultados de la matriz de confusin.

Resultados

30

4.3 Tiempos de ejecucin


El tiempo de ejecucin se midi tanto en la tarjeta embebida empleada as como
en varios computadores personales para ver si se podan obtener tiempos que
permitieran el desarrollo de aplicaciones en tiempo real. Los resultados se pueden
observar en la Tabla 4-3. Como se puede observar la velocidad en varios
computadores personales donde fue siempre de 30 fps, que para el caso era la
mxima velocidad de captura del dispositivo. Por otra parte para la stamp-mini se
lleg a tener 7,2 fps que pueden entrar en el rango de tiempo real con algunas
limitaciones si se llevan a la prctica en algunas aplicaciones, pero que para el caso
es bastante bueno teniendo en cuenta las caractersticas del sistema embebido
utilizado (stamp-mini).

Plataforma
Stamp-mini
Computador personal

Cuadros por segundo


[fps]
7,2
30

Tabla 4-3: Tiempos de ejecucin en diferentes plataformas.

31

Proceso de clasificacin de objetos por color y forma

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.

Finalmente al comparar tiempos de ejecucin de algoritmos afines pero con


diferentes libreras se obtuvieron tiempos de ejecucin en la Stamp-mini de hasta
25 segundos por frame (embedcv), y 6 segundos por frame (opencv), por lo que se
puede observar que al sacrificar exactitud (clculos en entero) y espacio en
memoria (uso de hilos), se pueden obtener tiempos de ejecucin aceptablemente
buenos.

33

Proceso de clasificacin de objetos por color y forma

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

Proceso de clasificacin de objetos por color y forma

[9] M. Garrido Satu, Reconocimiento de Seales de Trfico para un Sistema de


Ayuda a la Conduccin., Espaa: Universidad de Sevilla, Departamento de
Ingeniera de Sistemas y Automtica, 2013.
[10] Dass, R., Priyanka & Devi, S, Image Segmentation Techniques, Chandigarh ,
India: Dept. of ECE, DCR University of Science & Technology, Murthal, Sonepat,
Haryana, 2012.
[11] Canny Edge Detection 09gr820, March 23, 2009.
[12] C. Camargo, Transferencia tecnolgica y de conocimientos en el diseo de
sistemas embebidos, Universidad Nacional de Colombia, Bogot, 2011.
[13] L. Prechelt., An empirical comparison of C, C++, Java, Perl, Python, Rexx, and
Tcl, Fakult at f ur Informatik, Universit at Karlsruhe D-76128 Karlsruhe, Karlsruhe,
Germany, 2000.
[14] J. Valverde, Deteccin de bordes mediante el algoritmo de Canny, Universidad
de Trujillo, Trujillo Per.
[15] J. Abreu, Deteccin de regularidades en contornos 2D, clculo aproximado de
medianas y su aplicacin en tareas de clasificacin, Espaa: Departamento de
lenguajes y sistemas informticos, Universidad de Alicante., pp. 10-11, 2012.
[16] F. Prieto, Otros tipos de redes neuronales. Tcnicas de inteligencia artificial.,
Universidad Nacional de Colombia, Bogot, 2014.

Referencias

36

You might also like