Está en la página 1de 79

ASISTENTE DE NAVEGACIÓN PARA PERSONAS CON LIMITACIONES

VISUALES SOBRE PLATAFORMAS GPU EN ESPACIOS CERRADOS


CONTROLADOS

MARIO ALEJANDRO REYES MEDINA


GABRIEL FELIPE SILVA ESPEJO

UNIVERSIDAD PEDAGÓGICA Y TECNOLÓGICA DE COLOMBIA


FACULTAD DE INGENIERIA
ESCUELA DE INGENIERÍA ELECTRÓNICA
2021
ASISTENTE DE NAVEGACIÓN PARA PERSONAS CON LIMITACIONES
VISUALES SOBRE PLATAFORMAS GPU EN ESPACIOS CERRADOS
CONTROLADOS

MARIO ALEJANDRO REYES MEDINA


GABRIEL FELIPE SILVA ESPEJO

Trabajo de grado en la modalidad de participación activa en Grupo de Investigación


para optar al título de Ingeniero Electrónico

Director
ING.ROBERT ALEXANDER LIMAS SIERRA

Codirector
ING. WILSON JAVIER PÉREZ HOLGUÍN, PHD.

UNIVERSIDAD PEDAGÓGICA Y TECNOLÓGICA DE COLOMBIA


FACULTAD DE INGENIERIA
ESCUELA DE INGENIERÍA ELECTRÓNICA
2021
La autoridad científica de la Universidad reside en ella misma, por lo tanto, no responde por las
opiniones expresadas en este trabajo de grado.

Se autoriza su uso y reproducción indicando el origen.


Nota de aceptación:

Aprobado por el Comité de Currículo en cumplimiento de los requisitos exigidos por la


Universidad Pedagógica y Tecnológica de Colombia para optar al título de Ingeniero
Electrónico, actuando como jurados:

NOMBRES Y APELLIDOS DEL JURADO 1 (EN MAYÚSCULA)


Título Académico de mayor nivel

NOMBRES Y APELLIDOS DEL JURADO 2 (EN MAYÚSCULA)


Título Académico de mayor nivel

Tunja, fecha (día, mes, año)

4
DEDICATORIA

Esto es opcional y corresponde a una redacción donde el autor o autores dedican su trabajo.

5
AGRADECIMIENTOS

Esto es opcional y corresponde a la mención que los autores realizan de las personas o
entidades que contribuyeron en la realización del trabajo. No se debe confundir con la
dedicatoria.

6
CONTENIDO
pág.

1. INTRODUCCIÓN.......................................................................................................13
2. CAPÍTULO QUE CONTIENE EL MARCO DE REFERENCIA....................................15
2.1. Marco Conceptual...............................................................................................15
2.1.1. Limitación Visual...........................................................................................15
2.1.2. Gpu............................................................................................................... 15
2.1.3. Cuda............................................................................................................. 17
2.1.4. Imagen Digital...............................................................................................18
2.1.5. Espacios De Color........................................................................................20
2.1.6. Convolución..................................................................................................23
2.1.7. Filtros............................................................................................................ 24
2.1.8. Operaciones Morfológicas En Imágenes Binarias.........................................27
2.1.9. Mapa De Profundidad De Campo.................................................................30
2.1.10. Algoritmos De Inteligencia Artificial Ia.........................................................31
2.1.11. Algoritmos Secuenciales.............................................................................31
2.1.12. Pwm............................................................................................................ 32
2.1.13. Rpi Gpio......................................................................................................33
2.2. Estado Del Arte...................................................................................................33
2.2.1. Dispositivos No Basados En Cámaras..........................................................33
2.2.2. Dispositivos Basados En Cámaras...............................................................35
2.2.3. Dispositivos Híbridos.....................................................................................37
3. DESARROLLO........................................................................................................... 40
3.1. Materiales Y Técnicas.........................................................................................40
3.1.1 Hardware.......................................................................................................40
3.1.2 Firmware Y Software......................................................................................42
3.1.3 Técnicas.........................................................................................................42
3.2. Desarrollo............................................................................................................ 47
3.2.1 Determinación De Las Características Mínimas De Diseño...........................47
3.2.2 Definición Del Diseño De Alto Nivel Del Prototipo..........................................48
3.2.3 Selección De Hardware Necesario Para Funcionamiento Del Prototipo.........48
3.2.4 Estudio De La Arquitectura Y Tecnología Del Kit De Desarrollo Para GPU
NVIDIA Jetson........................................................................................................ 51
3.2.5 Sensores A Utilizar.........................................................................................52

7
3.2.6 Análisis, Revisión Y Selección De Los Algoritmos Para La Detección De
Objetos................................................................................................................... 54
3.2.6 Análisis Del Algoritmo Seleccionado Y Detección De Las Etapas Que
Intervienen En Su Funcionamiento.........................................................................56
3.2.7 Análisis De Los Requerimientos Por Etapas Del Algoritmo Seleccionado Para
Su Implementación En CUDA.................................................................................57
3.2.8 Diseño De Alto Nivel De Cada Una De Las Etapas Para Implementación En
CUDA 59
3.2.9 Implementación, Simulación Y Test Del Diseño Realizado Para Cada Etapa.
60
3.2.10 Verificación Y Validación Del Sistema Implementado Con Personas En
Condición De Discapacidad Visual.........................................................................66
4. PRESENTACIÓN Y ANÁLISIS DE RESULTADOS....................................................67
4.1. Identificar Los Algoritmos De Visión Artificial Más Empleados En La Detección De
Obstáculos................................................................................................................. 67
4.2. Seleccionar Y Realizar Pruebas A Nivel Software Del Algoritmo De Detección De
Obstáculos Tomando Como Parámetro De Desempeño El Menor Tiempo De
Ejecución.................................................................................................................... 68
4.3. Sintetizar El Algoritmo De Detección De Obstáculos Sobre El Kit De Desarrollo
Jetson Nano Mediante Cuda......................................................................................69
4.4. Verificar La Efectividad Del Prototipo Y Validar Su Funcionamiento En Condición
De Discapacidad Visual.............................................................................................70
5. CONCLUSIONES......................................................................................................74
6. RECOMENDACIONES..............................................................................................75
7. BIBLIOGRAFÍA.......................................................................................................... 76

8
LISTA DE TABLAS
pág.

Tabla 1 Etiquetas de identificación de funciones............................................................


Tabla 2 Clasificación de algoritmos secuenciales...........................................................
Tabla 3 Estado del arte....................................................................................................
Tabla 4 Generación PWM respecto a la distancia de detección....................................
Tabla 5 Tabla de selección hardware.............................................................................
Tabla 6 Tabla de comparación de Sensores RGB y Profundidad..................................
Tabla 7 de comparación de Sensores Ultrasónicos........................................................
Tabla 8 comparación del algoritmo YOLO en sus diferentes versiones.........................
Tabla 9 Tiempos de ejecución total y de cada una de las etapas del algoritmo............
Tabla 10 Tiempos obtenidos del prototipo anterior soportado en CPU i3 core de
segunda generación........................................................................................................
Tabla 11 Tiempos obtenidos del prototipo anterior soportado en CPU ARMv8.2 y
GPGPU NVIDIA Carmel..................................................................................................
Tabla 12 Tabla de comparación de prototipos realizados por el grupo GIRA................

9
LISTA DE FIGURAS

pág.

Figura 1 Arquitectura GPU..............................................................................................


Figura 2 Organización de hilos y bloques.......................................................................
Figura 3 Imagen digital con 256 niveles de intensidad y representación numérica
de un fragmento de 8x8...................................................................................................
Figura 4Imagen en escala de grises...............................................................................
Figura 5 Espacio de color RGB.......................................................................................
Figura 6 Representación del modelo HSV......................................................................
Figura 7 Representación del modelo HSI ......................................................................
Figura 8 Convolución Bidimensional...............................................................................
Figura 9 Mecanismo de filtro espacial lineal...................................................................
Figura 10 Máscaras del operador de Prewitt..................................................................
Figura 11 Ejemplo de erosión en una imagen binaria.....................................................
Figura 12 Ejemplo de dilatación en una imagen binaria.................................................
Figura 13 Ejemplo de apertura en una imagen binaria...................................................
Figura 14 Ejemplo de clausura en una imagen binaria...................................................
Figura 15 Mapa de profundidad generado por visión estéreo........................................
Figura 16 Mapa de profundidad generado por cámara con sensor de
profundidad......................................................................................................................
Figura 17 Grafica general PWM.....................................................................................
Figura 18 Pruebas de escalización.................................................................................
Figura 19 Seccionamiento de la imagen y matriz resultante de la detección de
objetos.............................................................................................................................
Figura 20 Calculo de distancia de discriminación...........................................................
Figura 21 Esquema general de la arquitectura interna del dispositivo de guía
para invidentes................................................................................................................
Figura 22 Identificación pixeles de igual valor.................................................................
Figura 23 Diseño de alto nivel del algoritmo seleccionado.............................................
Figura 24 Transferencia de datos entre el host y el divise..............................................
Figura 25 Diseño etapa de pre procesamiento ..............................................................
Figura 26 Diseño Etapa de Detección.............................................................................
Figura 27 Diseño Etapa post Procesamiento..................................................................
Figura 28 Imagen RGB y mapa de profundidad obtenidos por el Kinect........................
Figura 29 Valor pixel respecto a la distancia tomados con una resolución de 10
bits y 8 bits.......................................................................................................................
Figura 30 Barrido Umbralización por capas...................................................................
Figura 31 Detección de ruido sal y pimienta y eliminación del ruido mediante
operaciones morfológicas................................................................................................
Figura 32 Seccionamiento de la escena capturada para la ubicación espacial de
objetos.............................................................................................................................
Figura 33 Discriminación del suelo .................................................................................

10
Figura 34 Matriz resultante de detección de objetos......................................................
Figura 35 Vector de generación de alertas.....................................................................
Figura 36 Asistente de navegación................................................................................
Figura 37 Pista de obstaculos para las pruenas de validación.......................................
Figura 38 Grafica de comodidad al portar el prototipo (1 muy incómodo, 10
bastante cómodo)............................................................................................................
Figura 39 Grafica de preferencia de emisión de alertas.................................................
Figura 40 Grafica facilidad de interpretación de alertas por parte de los usuarios
(1 muy difícil de interpretar, 10 muy fácil de interpretar).................................................

11
LISTA DE ANEXOS

pág.

12
1. INTRODUCCIÓN

Cerca del 70% de información que obtiene el ser humano del entorno que lo rodea
proviene del sentido de la vista. Esto demuestra su importancia, ya que permite que las
personas puedan realizar actividades importantes para su vida diaria tales como la
capacidad de movilizarse de manera independiente y llevar a cabo diferentes tareas que
aporten a su desarrollo físico, mental y social(Novoa & Rojas, 2019). Según el Instituto
Nacional para Ciegos (INCI), para el año 2019, las personas con discapacidad visual
representan el 7,2% de la población total del país(Pulido, 2020). En Colombia, según el
censo realizado por el DANE para el año 2005, el 2,49% de la población total del país
presenta alguna discapacidad visual y representa el 43,2% del total de discapacitados
del país (censos de población y vivienda de 2005). De esta población, el 48,1%
considera que las actividades de movilidad (caminar, correr y saltar) son de gran
importancia, y para el 35,6%, las actividades con mayor relevancia son el aprendizaje
(estudiar). Este censo determinó que el aspecto con más relevancia para las personas
invidentes es la movilidad(Romero et al., 2018).

En la última década, la comunidad científica ha desarrollado dispositivos electrónicos


basados en distintas tecnologías para dar solución a la necesidad de movilizarse de
manera autónoma por parte de problemática que enfrentan las personas con algún
grado de discapacidad visual al momento de movilizarse, los cuales han ofrecido
soluciones que han logrado tener una aceptación del 86,7% por parte de los usuarios
(H. Zhang & Ye, 2016). Sin embargo, estos dispositivos se han enfrentado a diversos
inconvenientes, por ejemplo el tiempo de procesamiento de la información debido a las
limitaciones de las plataformas que los soportan, como se evidencia en los trabajos
realizados por (ARIZA et al., 2010; Plikynas et al., 2020; SEGURA & LOZADA, 2019)
donde se muestra que este problema afecta directamente la movilidad del usuario y
dificulta la reacción del mismo ante las variaciones del entorno que lo rodea. Además,
de la limitación del tiempo de procesamiento, también se presentan inconvenientes al
detectar de forma errónea objetos u obstáculos debido a la selección inadecuada de
algoritmos(Idrees et al., 2015; Romero et al., 2018), lo que ocasiona colisiones del
usuario con objetos que no son detectados o entorpecen el tránsito de la ruta al detectar
erróneamente objetos en caminos sin obstáculos. Otro de los inconvenientes es la
fuente de donde se recibe la información del entorno, entre las que se destacan los
sensores infrarrojos, sensores ultrasónicos y las cámaras de video, debido a que en
ocasiones, éstos se ven seriamente afectados por condiciones como luminosidad,
irregularidades del terreno, elementos reflectantes, entre otras(OBANDO &
SOTOMAYOR, 2015).

Para solventar de forma parcial o total algunos de los problemas de dichos dispositivos,
actualmente se dispone de diferentes plataformas como las Unidades de Procesamiento
Gráfico (Graphics Processing Units - GPU) con la que es posible brindar un menor
tiempo de procesamiento de la información(Owens et al., 2008). También se han usado
microcontroladores como fuente principal de procesamiento en los asistentes de
navegación. Sin embargo, estos últimos generan una barrera que es ocasionada por su
limitada velocidad de procesamiento y la baja complejidad de datos que pueden
analizar(Miño & GÁMEZ, 2020). Otra plataforma en la cual se han implementado este
tipo de asistentes son los Smartphone que a pesar de su gran variedad de sensores,
fácil asequibilidad y manejo por parte del usuario, tienen el problema de requerir un alto

13
consumo energético para su funcionamiento en operaciones de alto volumen de
procesamiento de datos como en éste caso(Murata et al., 2018).

En este proyecto se presenta el desarrollo de un prototipo de un asistente de


navegación para personas con limitaciones visuales sobre plataformas GPU, operando
en espacios cerrados controlados. Se inicia desde la investigación de herramientas
necesarias de la programación de GPU para realizar el procesamiento de las imágenes
capturadas y el control de los diferentes periféricos, hasta la prueba de funcionamiento
del asistente desarrollado y la validación de su funcionamiento con un grupo de
voluntarios participantes.

Este trabajo se divide en 6 capítulos. En el primer capítulo presenta la introducción, en


el segundo se encuentra la revisión bibliográfica en la que se resaltan los diferentes
aportes en este campo por la comunidad académica, además de los conceptos básicos
para sustentar el proyecto, en el tercer capítulo se encuentra el desarrollo del proyecto,
además de los materiales que conforman el asistente de navegación, en el capítulo
cuatro se presenta los resultados alcanzados, en el quinto capítulo se muestran las
conclusiones obtenidas en el proceso de evaluación del prototipo, mientras que en el
sexto capítulo se exponen las recomendaciones para el uso del asistente de navegación
y otras consideraciones.

14
2. CAPÍTULO QUE CONTIENE EL MARCO DE REFERENCIA

2.1. Marco Conceptual

2.2.1 Limitación Visual

El término de limitación visual hace referencia a cualquier daño ocasionado a la


agudeza visual del ojo y el campo visual del mismo. Este término también se usa para
referirse a los diferentes grados de pérdida visual hasta la pérdida total de la
visión(Giesteira et al., 2013). Se considera que existe una limitación visual cuando hay
una reducción severa de la agudeza visual o del campo visual del ojo aún con el uso de
lentes correctivas. Este daño puede ser causado por diferentes factores dentro de los
que se destacan el mal desarrollo de los órganos visuales (se puede dar en la gestación
o en la niñez), los accidentes o procedimientos quirúrgicos que afectan los ojos, vías
visuales o hasta el cerebro y las enfermedades como Cataratas, Glaucoma, Diabetes,
Tracoma o Ausencia de vitamina A (World Health organization, 2010).

Según la Clasificación Internacional de Enfermedades CIE, la visión se divide en cuatro


grupos:

 Visión normal
 Discapacidad visual moderada
 Discapacidad visual grave
 Ceguera

Se considera visión normal cuando la persona puede realizar tareas o actividades que
dependan totalmente o en su mayoría del sentido de la vista sin ningún tipo de
asistencia al momento de ejecutarlas y la facultad de percibir imágenes claras del
entorno que lo rodea. Por otro lado, la discapacidad visual moderada hace referencia a
la dificultad de percibir los objetos de manera clara lo que causa que se realicen tareas
de manera casi normal con algún tipo de asistencia visual como los lentes correctivos. A
diferencia de las dos definiciones anteriores la discapacidad visual grave se refiere a
aquella limitación para realizar tareas que requieren de una gran agudeza visual para
controlar detalles. Por último, la ceguera es la pérdida de la facultad de percibir
imágenes del ambiente, lo que dificulta realizar tareas básicas de orientación la cual no
se puede corregir con gafas o lentes de contacto (SEGURA & LOZADA, 2019).

Según (Bourne et al., 2021) entre los años de 1990 y 2020 los adultos mayores de 50
años presentaron una diminución de pérdida total de visión en un 28,5%. Sin embargo,
el número de personas que perdieron la vista aumentó en un 50,6% debido a la pérdida
progresiva de visión por edad avanzada; y para el año 2020 se estimó que 43.3 millones
de personas sufrían de pérdida total de la visión a nivel mundial, con lo cual se estima
que para el año 2050 el número total de personas que perderán la visión será de 61
millones. Esto demuestra la creciente tendencia a que las personas puedan sufrir de
discapacidad visual debido al envejecimiento y otros factores.

15
2.2.2 Gpu

La GPU (Graphics Processing Unit) es un acelerador multihilo que permite realizar


múltiples cálculos a través de flujo de datos de forma paralela de las aplicaciones
implementadas. Para mejorar su eficiencia este organiza los hilos en grupos en los
cuales se comparte el mismo contador de programa. De esta manera ejecuta una sola
instrucción en múltiples hilos y cada uno de estos hilos cuenta con registros de
propósito general los cuales pueden acceder a las diferentes memorias con las que
cuenta el acelerador (Villa et al., 2019).

Muchas de estas unidades usan una arquitectura constituida por varios cientos de
grupos de SM (Streaming MultiProcessors) y a su vez cada uno de los SM está
compuestos por SP (Stream Procesors). Un ejemplo de este tipo de arquitecturas es la
arquitectura Fermi (Ver Figura 1) de la compañía NVIDIA(Hernández et al., 2013).

Figura 1 Arquitectura GPU

Fuente (Hernández et al., 2013)

En los últimos años se han identificado diversas aplicaciones con requisitos


computacionales complejos las cuales han sido implementadas en una GPU con gran
éxito. Una de estas aplicaciones es la renderización o representación gráfica de

16
imágenes en las que es necesario procesar miles de millones de pixeles por segundo.
Para esto las GPU deben ofrecer una gran capacidad de procesamiento para satisfacer
aplicaciones complejas en tiempo real. Adicionalmente, cuentan con un proceso de
pipeline para realizar el paralelismo que a su vez es aplicable a muchos otros campos
computacionales (Owens et al., 2008).

2.2.3 Cuda

Es la sigla para Compute Unified Device Architecture. CUDA es una plataforma de


computación paralela e interface de programación de aplicaciones (API) que permite
tener acceso a las GPU diseñadas por NVIDIA mediante una extensión del lenguaje C
estándar. Incluye un compilador junto con un paquete de herramientas de desarrollo
proporcionadas por NVIDIA para realizar la codificación de algoritmos a ser ejecutados
por las GPU(Mainzer & Zachmann, 2015). Para noviembre de 2006 la compañía NVIDA
presentó una plataforma de cómputo paralela de propósito general que aprovecha el
motor de cómputo en las GPU para dar solución a problemas computacionales
complejos de una manera más eficiente que en una CPU (NVIDIA, 2021).

En cuanto al procesamiento de datos, CUDA tiene la noción de kernel. Un kernel o


núcleo hace referencia a funciones realizadas por el programador que serán ejecutadas
la cantidad de veces necesarias de manera paralela. Esta ejecución se realiza por una
cantidad determinada de hilos o Threads, según se requiera, en lugar de solo ejecutarse
una sola vez como una función normal de alto nivel (NVIDIA, 2021).

Figura 2 Organización de hilos y bloques

Fuente (Nvidia, 2011.)

Los hilos se pueden organizar en grupos, dado que pueden sobrepasar el numero
permitido para un bloque según lo defina la arquitectura de la GPU. El término bloque
(Block) hace referencia a un conjunto de hilos (Threads) los cuales también tienen un
límite de instancias para ser lanzadas durante la ejecución, cuyo valor está dado por la
arquitectura de cada dispositivo en particular. Los bloques de hilos están organizados
de manera conceptual en matrices de 1, 2 y 3 dimensiones denominadas cuadriculas
(Grids) según sea la necesidad de la aplicación. Estas Grids son útiles cuando se
necesita procesar grandes cantidades de datos en paralelo (Ver Figura 2) (NVIDIA,
2021).

17
Para obtener una alta eficiencia en la ejecución de los kernels se cuenta con el modelo
SIMT (Single Instruction-Multi Thread) que permite el manejo de cientos o miles de hilos
a ser ejecutados en paralelo. Su jerarquía en memoria por lo general se divide en dos
espacios direccionales: una memoria local que es pequeña y rápida, visible por un
subconjunto de procesos o hilos en ejecución, y una memoria global la cual es más
grande pero más lenta, que es visible por todos los hilos en ejecución. La desventaja del
modelo SIMT es que éste no es eficiente cuando hay la necesidad de sincronizar la
cantidad de hilos para garantizar una exclusión mutua en una sección critica (Villegas et
al., 2015).

CUDA ofrece las siguientes formas de acceder a los datos mediante múltiples espacios
de memoria durante la ejecución: 1) una memoria global que puede acceder a todos los
hilos ejecutados dentro del kernel; 2) una memoria compartida que posee una velocidad
de acceso intermedia y que permite acceder a todos los hilos en un bloque; y 3) una
memoria local que tiene el menor tiempo de respuesta y permite acceder a un hilo de
los que fue asignada esta memoria (NVIDIA, 2021).

Para administrar los modelos de memoria, NVIDIA proporciona diferentes etiquetas que
le permiten al compilador distinguir entre las funciones que se pueden ejecutar en la
CPU (host), o en la GPU (divice). Estas etiquetas se muestran en la Tabla 1.

Tabla 1 Etiquetas de identificación de funciones.

ETIQUETAS LLAMADA DESDE EJECUTADA EN


__host__ Host Host
__global__ Host Device
__device__ Device Device

Fuente.(NVIDIA, 2021)

2.2.4 Imagen Digital

Una imagen digital se define como una función bidimensional f (x , y ) donde x e y son
las coordenadas del plano que contiene un número finito de puntos o elementos
conocidos como pixeles que componen la imagen, y la función f (x , y ) es la amplitud en
el punto con coordenadas ¿, y ¿ la cual también es conocida como la intensidad o nivel
de gris que la imagen tiene en ese píxel. Se habla de una imagen digital si en la función
de la imagen hay valores de intensidad finitos y discretos(Dobernak, 2015).

Figura 3 Imagen digital con 256 niveles de intensidad y representación numérica de un


fragmento
de 8x8

18
Fuente (Dobernak, 2015)

Una de las características más importantes de una imagen es su resolución espacial, la


cual hace referencia a la cantidad de pixeles que la conforman. Es común expresar la
resolución de una imagen por medio de dos valores numéricos: el primero de ellos hace
referencia al número de columnas de pixeles o ancho de la imagen y el segundo a las
filas totales de pixeles o alto de la imagen (Dobernak, 2015).

Dentro de las imágenes digitales existe un tipo de imagen conocida como imagen en
escala de grises. Las imágenes de este tipo son arreglos bidimensionales los cuales
contienen información acerca de la intensidad de luz o luminancia que presenta cada
píxel de la imagen. Normalmente, los valores de cada pixel se encuentran codificados
en 8 bits, es decir, cada pixel puede tomar un valor entre 0 y 255, siendo 0 el valor
numérico correspondiente al color negro y 255 al color blanco.

Figura 4Imagen en escala de grises

Fuente(MatLab, 2022)

Existen varios métodos por los cuales es posible realizar la transformación de una
imagen en color a una imagen en escala de grises. La mayoría de estos métodos
utilizan el espacio RGB para pasar una imagen en color a su equivalente en escala de
grises debido a su simplicidad de manejo. Una de las formas más usadas es el
promedio de las tres componentes del espacio RGB (ver Ecuación 1) (Cortes Osorio et
al., 2011):

 R ( x , y ) canal rojo de la imagen a color


 G ( x , y ) canal verde de la imagen a color
 B (x, y) canal azul de la imagen a color
 ImGris( x , y) imagen en escala de grises resultante del promedio de los canales
de la imagen RGB

19
R ( x , y ) +G ( x , y ) , B( x , y)
ImGris(x , y)= (1)
3

2.2.5 Espacios De Color

Los espacios de color hacen referencia a los distintos planos espaciales con los cuales
se puede trabajar una imagen digital a color. Existen varias representaciones espaciales
entre ellas están el RGB, HSV, HSI y el modelo YCbCr.

El espacio RGB es uno de los modelos más utilizados por los sistemas informáticos
para crear y realizar la reproducción de colores en los monitores. La representación
gráfica del modelo establece los ejes R, G, B. Cada componente de color depende de
una coordenada especifica como se muestra en la Figura 5.

Figura 5 Espacio de color RGB

Fuente (Dobernak, 2015)

Las siglas HSV (Hue, Saturation, Value) hacen referencia al tono, saturación y valor
respectivamente. El sistema coordenado para este espacio es cilíndrico. La pirámide
hexagonal presentada en la Figura 6 corresponde al subconjunto en donde la
distribución de colores varía dependiendo a la ubicación dentro del plano espacial. En
este modelo los colores más brillantes están contenidos en el área hexagonal donde el
valor de la componente es V=1. Para medir el tono en este plano se usa el ángulo de
apertura tomando como referencia el eje S. El color rojo se sitúa a 0º, el verde a los
120º y el azul a los 240º, mientras que los colores complementarios se encuentran a
180° de su color primario. El vértice en donde las componentes S y V tienen un valor
igual a 0 corresponde al color negro, el color blanco corresponde a las coordenadas
donde S=0 y V=1.

Figura 6 Representación del modelo HSV

20
Fuente Tomada de: (Dobernak, 2015)

Este espacio puede ser obtenido a partir de una transformación no lineal del espacio
RGB, usando las siguientes expresiones (ver Ecuaciones 2 a 4):

 R canal rojo de la imagen RGB


 G canal verde de la imagen RGB
 B canal azul de la imagen RGB
 H componente H (tono) de la imagen HSV
 S componente S (saturación) de la imagen HSV

V componente V(valor) de la imagen HSV


1
( ( R−G )+( R−B))
−1 2 (2)
H=cos ¿
√(( R−G)¿ ¿ 2+(R−B)(G−B))
min ⁡( R , G, B)
S=1−3 (3)
R+G+ B
1
V = ( R+ B+G) (4)
3

Este espacio tiene la ventaja de ser invariante a las condiciones de luz. Sin embargo, la
alta complejidad computacional que requiere para ser implementada sobre todo en
plataformas como FPGA dificulta su uso (Dobernak, 2015).

El espacio HSI (Hue, Saturation, Intensity) tono, Saturación, Intensidad, es también una
transformación no lineal del espacio RGB el cual modifica el sub espacio del cubo
transformándolo en dos conos unidos por la base. Geométricamente, está compuesto
por las componentes S, H e I, que corresponden a una componente de saturación (S)
que es la distancia radial del cono y proporciona una medida del grado del color que se
mezcla con la luz blanca, la componente del tono (H) que es el ángulo respecto al eje
rojo y da una magnitud de la longitud de onda dominante, varía en 360° con
separaciones angulares de 120° entre cada color primario con igual separación para los
colores secundarios, la componente de intensidad (I) que es la distancia a lo largo del
eje perpendicular al plano de color e indica el valor del brillo y la información acromática,
valores bajos en este eje componente corresponden a los colores oscuros y los
superiores están asociados a los colores claros hasta llegar al blanco (ver Ecuaciones 5
a 8. Transformaciones no lineales del espacio RGB a HSI) (Dobernak, 2015).

21
Figura 7 Representación del modelo HSI

Fuente tomado de :(Dobernak, 2015)

 R canal rojo de la imagen RGB


 G canal verde de la imagen RGB
 B canal azul de la imagen RGB
 H componente H (tono) de la imagen HSI
 S componente S (saturación) de la imagen HSI
 I componente I(intensidad) de la imagen HSI

H=
{360−θ
θ si B ≤G
si B> G
(5)

{ }
−1 ( R−G ) +(R−B)
θ=cos 1 (6)
2
2 [ ( RG ) +( R−B)(G−B)] 2

3 min ⁡[R ,G ; B ]
S=1− (7)
(R+G+ B)
1
I = (R +G+ B) (8)
3

A pesar de las ventajas que este espacio ofrece, tiene la misma limitante que el modelo
HSV debido a que tiene una alta complejidad computacional para ser implementada
debido a sus transformaciones no lineales lo que lo hace poco práctico.

El modelo YCbCr es una codificación no lineal del espacio RGB, usada comúnmente
por los estudios de televisión europeos y en la compresión de imágenes. En este
modelo el color se representa por tres componentes o parámetros, uno de ellos es la
luminancia (Y) y dos valores diferentes de color (Cb y Cr) que son características del
color. L, en cuanto a la luminancia es la cantidad lineal de luz que es directamente
proporcional a su intensidad física. Puede ser calculada como una suma ponderada de
los componentes del espacio RGB.

22
Las características que tiene este modelo en cuanto a la separación de luminancia e
información cromática, hacen que éste tenga una mayor ventaja en cuanto a
compresión y transferencia de información de la imagen. Esto se debe a que la mayor
parte de información está contenida en la componente de luminancia y se transmite con
mayor precisión, lo cual causa que los valores de las componentes Cb y Cr disminuyan,
contribuyendo a disminuir la perdida de información.

En el caso de los sistemas digitales, la ventaja que tiene este modelo es que ahorra
recursos computacionales y ancho de banda para su transmisión. Sin embargo, este
espacio no ofrece buenos resultados con los algoritmos de visión por computadora
como por ejemplo en la segmentación de objetos por color (ver Ecuaciones 9 a 10.
Transformaciones no lineales del espacio RGB a YCrCb) (Dobernak, 2015).

 R canal rojo de la imagen RGB


 G canal verde de la imagen RGB
 B canal azul de la imagen RGB
 Y componente Y (luminancia) de la imagen YCbCr
 Cb componente Cb de la imagen YCbCr

Cr componente Cr de la imagen YCbCr


Y =0.299 R+ 0.587 G+ 0.114 (9)
Cr=R−Y (10)
Cb=B−Y (11)

2.2.6 Convolución

La convolución se define como un operador matemático el cual se encarga de


transformar dos funciones dando como resultado una tercera. Esta operación se puede
realizar en tiempo continuo o en tiempo discreto según las necesidades a solventar y se
define en el tiempo continuo como (Ver ecuación 12) (Gonzalez et al., 2009):

f(t)*h(t)¿ ∫ f ( τ ) h(t−τ )dτ (12)
−∞

Para realizar esta misma operación en tiempo discreto y con sistemas digitales se tiene
la siguiente expresión (Ver Ecuación 13) (Gonzalez et al., 2009).

y [ n]= ∑ h [ k ] x [ n−k ] (13)
k=−∞

En cuanto al uso de esta operación en el procesamiento digital de imágenes se realiza


una extensión de la convolución a dos dimensiones con lo cual esta operación se define
como (ver Ecuación 14) (Gonzalez et al., 2009):
a b
w ( x , y )∗f ( x , y )= ∑ ∑ w ( s , t ) f ( x−s , y−t ) (14)
s=−a t=−b

23
La convolución bidimensional discreta es la base de algunos procesamientos comunes,
como el filtrado de imágenes; al realizar la convolución entre una imagen y la máscara
espacial o ventana, el valor del pixel de salida se calcula en función de una suma
ponderada de los pixeles vecinos (Baron et al., 2002) .

Figura 8 Convolución Bidimensional

Fuente :(gimp org, 2021)

En la Figura 8 se muestra a la izquierda la matriz correspondiente a la imagen en la que


cada píxel está representado por su valor numérico. El píxel para el que vamos a
realizar la operación de convolución se presenta con borde rojo. El área de acción de la
ventana se presenta con borde verde. En el medio se muestra la ventana de
convolución y a la derecha se presenta el resultado obtenido. Para realizar esta
operación se realiza la multiplicación entre cada elemento de la ventana de la imagen y
la ventana de convolución. Para el ejemplo de la Figura 8 se obtiene:

Pixel resultado =( 40∗0 ) + ( 42∗1 ) + ( 46∗0 )+ ( 46∗0 ) + ( 50∗0 ) + ( 55∗0 ) + ( 52∗0 )+ ( 56∗0 )+ ( 58∗0 )=42
(15)

El resultado de esta operación se ubica un píxel desplazado en vertical de la posición


en la que se encuentra el pixel original, dando lugar a la imagen procesada al repetir
este proceso para toda la imagen.

2.2.7 Filtros

Los filtros son una de las principales herramientas en el procesamiento digital de


imágenes y son usados en este campo para el desarrollo de un gran número de
aplicaciones. El concepto de filtro se ha tomado prestado del procesamiento de señales
para ser usado en el campo del procesamiento de imágenes, debido a que este
concepto está asociado con permitir o rechazar componentes de frecuencia (Gonzalez
et al., 2009).

La aplicación de filtros en una imagen modifica o mejora características de esta, un


ejemplo de las modificaciones que estos realizan es resaltar o atenuar bordes, eliminar
ruido y destacar contornos. Dentro de los filtros existen dos tipos, los cuales son: filtros
lineales y filtros no lineales, los filtros lineales típicamente se usan para eliminar el ruido
y hacer variaciones en los niveles de intensidad o niveles de gris en la imagen (Baron et
al., 2002). Los filtros no lineales se emplean en otro tipo de aplicaciones dadas en el
dominio de la frecuencia, se usan si el objetivo a lograr es la reducción de ruido en la
imagen y no su difuminado (Gonzalez et al., 2009).

24
Figura 9 Mecanismo de filtro espacial lineal

Fuente :(Gonzalez et al., 2009)

Dentro de los filtros más comunes o usados en el procesamiento digital de imágenes se


destacan el filtro de Laplace, el filtro de Gauss, el filtro de Roberts y el filtro de Prewitt.

25
1.

2.

2.1.

2.1.1.

2.1.2.

2.1.3.

2.1.4.

2.1.5.

2.1.6.

2.1.7.

2.1.7.1. Filtro De Laplace

Este filtro se usa para destacar los bordes de una imagen. Usa el operador de Laplace
en la imagen, éste no es más que un operador isotrópico (es decir, es independiente a
la dirección de la discontinuidad en la imagen) por lo cual recibe este nombre. Éste filtro
está definido por la siguiente expresión (Ver ecuación 16):
2
∂ f
 2 calculo del gradiente en sentido de las columnas.
∂x
2
∂ f
 cálculo del gradiente en sentido de las filas.
∂ y2
2
 ∇ f vector gradiente.
2 2
2∂ f ∂ f
∇ f= 2+ 2 (16)
∂x ∂ y

En el caso de realizar la formulación del laplaciano este puede ser implementado de


forma digital de varias maneras la manera más frecuente de aplicar este filtro es la
siguiente (Ver ecuación 17):

 f ( x , y ) función de la imagen digital.


2
 ∇ f ( x , y ) vector gradiente.

∇ 2 f ( x , y )=[ f ( x +1 , y )+ f ( x−1 , y )+ f ( x , y +1 ) +f ( x , y −1 ) ] −4 f (x , y) (17)

26
Cabe resaltar que este filtro no se usa directamente en la práctica por ser muy sensible
al ruido que presente la imagen por lo que se aplica este filtro después de usar una
máscara para realzar los contornos (González et al., 2009).

2.1.7.2. Filtro De Gauss:

El filtro de gauss difumina las imágenes y eliminar ruido de éstas, este es similar al filtro
de media, pero se usa una máscara diferente que se obtiene por medio de la ecuación
18, logrando así un difuminado mucho más uniforme

 x coordenada de la columna del filtro


 y coordenada de la fila del filtro
 δ varianza
 g ( x , y ) imagen filtrada
2 2
−x + y
1 2δ
2

g ( x , y )= 2
е (18).
2 лδ

Las ventajas que tiene este filtro es que es separable lo que quiere decir que en vez de
realizar una operación bidimensional es posible realizar 2 operaciones unidimensionales
una de ellas se realiza en sentido horizontal y la operación restante en sentido vertical
(González et al., 2009).

2.1.7.3. Filtro De Roberts:

Este se define como como uno de los operadores para la detección de bordes, el filtro
de Roberts realiza la detección de bordes mediante el cálculo de la primera y segunda
derivada las cuales permiten identificar los puntos de interés en la imagen: estos
operadores son representados mediante la siguiente expresión (Ver ecuación 19):

 gx coordenada del pixel en sentido de las columnas


 gy coordenada del pixel en sentido de las filas
 ∇ f vector gradiente

[]
∂f
∇ f =grad =
gx
gy
=
[ ]
∂x
∂f
(19)

∂y

El operador de Roberts es el más simple de todos, este utiliza la dirección diagonal para
calcular el vector gradiente usado en su respectiva máscara o matriz(González et al.,
2009).

27
2.1.7.4. Filtro De Prewitt:

Este filtro u operador al igual que el de Roberts sirve para realizar la detección de
bordes, este operador expande la definición del gradiente a una máscara de 3x3 con lo
cual hace que sea más inmune al ruido, este utiliza las ecuaciones de Sobel, a
diferencia del operador de Sobel este no le da importancia a los pixeles de la imagen
que estén cercanos al centro de la máscara (Ver Figura 10) (González et al., 2009).

Figura 10 Máscaras del operador de Prewitt

Fuente :(González et al., 2009)

2.2.8 Operaciones Morfológicas En Imágenes Binarias.

Las operaciones morfológicas son herramientas muy utilizada en el procesamiento de


imágenes, estas operaciones pueden simplificar la información que contiene la imagen.
Comúnmente estas se usan para preservar aspectos relevantes de la imagen y eliminar
los elementos que no sea de interés con lo cual se puede realizar selección de objetos,
extracción de rasgos, detección de fallos entre otras aplicaciones, ligadas con los
contornos y formas del objeto de interés. Por esta razón se hace obvio el papel que
desempeña la morfología matemática al momento de realizar las aplicaciones
anteriormente mencionadas(Fernández, 2020).

También, estas operaciones se pueden usar para realizar la supresión de ruido o la


simplificación de formas, destacar la estructura de objetos y una descripción cualitativa
de objetos (área, perímetro, diámetro, etc.)(Fernández, 2020).

Las operaciones básicas en cuanto a morfología se refieren a erosión y dilatación, con


las cuales se pueden hacer operaciones cruzadas denominadas: apertura y cierre.

2.1.7.5. Erosión:

Consiste en eliminar todos los pixeles del objeto en donde al menos uno de sus pixeles
en su vecindad pertenezca al fondo, la aplicación de este filtro tiene el efecto de reducir
el objeto o eliminar objetos que sean muy pequeños (Ver Figura 11) (Fernández, 2020).

Figura 11 Ejemplo de erosión en una imagen binaria

28
Fuente tomado de:(Rafa Docencia, 2021.)

2.1.7.6. Dilatación:

Todos los pixeles que pertenezcan al fondo se convierten en pixeles del objeto si al
menos uno de los pixeles que este en su vecindad pertenece a dicho objeto. Esta
operación tiene como efecto aumentar el tamaño de los objetos o rellena agujeros que
puedan estar dentro del objeto a destacar (Ver Figura 12) (Fernández, 2020).

Figura 12 Ejemplo de dilatación en una imagen binaria

Fuente tomado de:(Rafa Docencia,2021.)

2.1.7.7. Apertura:

Consiste en aplicar primero erosión a la imagen y al resultado obtenido se le aplica la


operación de dilatación, este tiene como efecto eliminar elementos salientes,
conexiones finas o suavizar los contornos de un objeto (Ver figura 13) (Fernández,
2020).

Figura 13 Ejemplo de apertura en una imagen binaria

29
Fuente:(Rafa Docencia,2021.)

Esta operación se representa mediante la siguiente expresión (Ver ecuación 20):

 I imagen digital
 H ventana de operación

I ○ H =(I ⦵ H )⨁ H (20)

2.1.7.8. Clausura:

Para realizar esta operación se aplica en primer lugar dilatación, posterior a esto se
realiza erosión. La clausura fusiona dos objetos separados por un margen delgado,
además de eliminar pequeños orificios manteniendo el tamaño del objeto, rellenar o
suavizar el contorno (Fernández, 2020).

Figura 14 Ejemplo de clausura en una imagen binaria

Fuente:(Rafa Docencia,2021.)

La operación de clausura se puede representar mediante la siguiente expresión (Ver


ecuación 21):

 I imagen digital
 H ventana de operación

I • H =(I ⨁ H)⦵ H (21)

2.2.9 Mapa De Profundidad De Campo.

El mapa de profundidad de campo es el resultado del procesamiento de imágenes para


identificar un objeto o escena de interés, este mapa ofrece una amplia información
acerca del ambiente u objeto capturado como presencia de objetos en la escena, la
distancia de dichos objetos al punto de referencia de donde se toma la imagen, detalles

30
de los objetos a analizar entre otros. Este tipo de mapas se usan en aplicaciones como
visión artificial, navegación autónoma e inspección de partes mecánicas (Chang &
Maruyama, 2018).

Existen varios métodos por los cuales es posible generar este tipo de mapa; uno de
ellos es la técnica de visión estéreo, este se basa en tomar la imagen de la escena a
analizar usando dos cámaras puestas a la misma distancia, pero con una separación
entre ellas. Con esta técnica de visión estéreo se busca hacer una reconstrucción
geométrica de la imagen mediante la comparación de pixeles de las dos imágenes y
encontrando las equivalencias entre los pixeles de las dos imágenes capturadas,
además de determinar su distancia relativa entre los pixeles que coincidan entre si y de
esta manera generar un mapa de profundidad; la desventaja de este método es que
requiere mayor capacidad computacional para el análisis de las imágenes además de
tener que implementar algoritmos para dicho análisis (Ver figura 15)(Parissaki &
OTERO, 2019).

Figura 15 Mapa de profundidad generado por visión estéreo

Fuente (Parissaki & OTERO, 2019)

Otro método para obtener estos mapas es mediante cámaras que no solo cuentan con
señores RGB sino también sensores infrarrojos. En este método se lanza el rayo del
láser infrarrojo a la superficie del objeto y se realiza la grabación de la proyección del
láser para así determinar la geometría del ambiente. Una vez determinada la geometría
de entorno las coordenadas de la luz reflejada se pueden estimar por triangulación para
generar una nube de puntos con la cual se detecta movimientos en los tres ejes
espaciales (x, y, z) de los objetos escena o de la cámara. Esta nube de puntos se puede
proyectar en un espacio 2D en donde los pixeles del mapa que genera contienen los
valores de distancia en lugar de valores de intensidad. El uso de una cámara
generalmente suele ser suficiente; sin embargo, si el objeto esta ocluido en referencia a
la cámara el mapa generado puede quedar incompleto para solucionar este problema
se recurre al uso de varias cámara láseres (Ver Figura 16) (Parissaki & OTERO, 2019).

Figura 16 Mapa de profundidad generado por cámara con sensor de profundidad

31
Fuente (Xu & Fujimura, 2003)

2.2.10 Algoritmos De Inteligencia Artificial Ia

El concepto de inteligencia artificial puede variar dependiendo de la fuente que se tome


como referencia y el punto de vista que esta manifieste; sin embargo, lo que sí es claro
es que la IA estudia la inteligencia de los ordenadores o equipos de cómputo para
realizar actividades o tareas que por ahora son mejor realizadas a por los seres
humanos(Vasquez & Cardona, 2019).

Dentro del proceso de investigación de la IA, fueron creadas las redes neuronales con
las cuales surgió la posibilidad de realizar tareas cotidianas para las personas, pero
ahora con la asistencia de un equipo de cómputo. Tareas como el reconocimiento de
patrones, caracteres, voz, rostros y objetos, entre otras se han logrado efectuar con
este tipo de algoritmos (Vasquez & Cardona, 2019).

Uno de los mayores retos que se ha propuesto con el surgimiento de la IA es entender


el funcionamiento de los órganos que permiten interactuar a una persona con el mundo
exterior; y de esta manera tratar de imitar el funcionamiento de dichos órganos por
medio de tecnologías existentes buscando mejorar la calidad de vida de las personas.
De esta forma se ha hecho uso en conjunto de diversos algoritmos de visión por
computadora con el fin de realizar el procesamiento de imágenes y técnicas de IA, para
analizar los datos obtenidos en una aplicación especifica (Vasquez & Cardona, 2019).

Uno de los algoritmos más populares basado en IA, es el algoritmo YOLO (You Only
Look Once) este algoritmo hace uso de redes neuronales para realizar la detección de
objetos en tiempo real y ha sido muy utilizado en diversas aplicaciones como detectar
señales de tráfico, personas, parquímetros y animales y objetos (Jadhav et al., 2020).

2.2.11 Algoritmos Secuenciales

Este tipo de algoritmos se basan en el principio de acondicionar o pre procesar una


imagen con el fin de mejorar características de la imagen, para posteriormente realizar
la extracción de información de interés.

Este tipo de algoritmos puede dividirse en tres tipos: procesamiento a alto nivel,
procesamiento a nivel medio y procesamiento de bajo nivel. Para cada nivel en
particular se realiza un conjunto de operaciones diferentes como se muestra en la Tabla
2 (De Frías et al., 2019).

Tabla 2 Clasificación de algoritmos secuenciales

Nivel De Procesamiento Características Ejemplo


Se realizan operaciones que tienen Operaciones morfológicas simples,

32
Bajo en cuenta todos los pixeles de la filtrado, modificación del histograma,
imagen detección de bordes.
Se realizan operaciones más Segmentación de la imagen,
Medio complejas, usando bloques o grupos etiquetado de regiones, conectividad
de pixeles de pixeles.
Usa operaciones con alta Correlación, Matching, cálculo de
complejidad, son costosas distancia de objetos u obtención de
computacionalmente hablando y usa datos en 3 dimensiones
Alto pixeles concretos de la imagen

Fuente. Elaborada a partir de (De Frías et al., 2019)

2.2.12 Pwm

La modulación PWM (Pulse Width Modulation) es una técnica que consiste en realizar
la variación del ancho de pulso o ciclo de trabajo de una señal periódica (típicamente
cuadrada), el cual determinara el tiempo en el que la señal se encuentre en nivel alto o
bajo con respecto al periodo de la señal, este tipo de modulación tiene diversas
aplicaciones que van desde el control de brillo de leds, velocidad de motores hasta
aplicaciones de electrónica de potencia (Ver Figura 17)(Vanegas & MARULANDA,
2017).

Figura 17 Grafica general PWM

Fuente (Lucas Martin,2012)

Realizando su representación matemática (Ver Ecuación 22):

τ
D= (22)
T
En donde

 D es el ciclo de trabajo
 τ es el ancho de pulso
 T es el periodo de la señal

33
2.2.13 Rpi Gpio

Esta librería permite realizar el control de los puertos GPIO que poseen las tarjetas
Jetson nano de NVIDIA los cuales se pueden configurar como puertos entrada o salida
digital. Esta librería es compatible con las tarjetas Jetson debido a que el cabezal GPIO
es muy similar al de las Raspberry por lo cual es posible realizar la programación de
este puerto mediante el lenguaje de programación Python usando el paquete
JetsonGPIO, el cual tiene la misma API que la biblioteca RPIGPIO con el fin de facilitar
la migración de proyectos realizados en las tarjetas Raspberry(NVIDIA, 2019).

2.2. Estado Del Arte

Según la revisión de literatura, los investigadores han desarrollado diversos sistemas de


navegación para personas invidentes enfocándose principalmente en ambientes
cerrados controlados. Estos hacen referencia a entornos donde los cambios del
ambiente no son muy frecuentes, facilitando la detección de objetos a pesar de estar
expuestos a variaciones lumínicas como variable principal a considerar. Ejemplo de
estos ambientes son: casas, edificios, centros comerciales, entre otros (Patel et al.,
2018).

Además los investigadores en esta área clasifican los sistemas de asistencia y


navegación autónoma de acuerdo con las propiedades de las señales y algoritmos
empleados en dispositivos portátiles y en su posicionamiento en espacios cerrados o
abiertos (interiores y exteriores) (Tapu et al., 2013). Esta clasificación agrupa a los
dispositivos en: i) no basados en cámaras, ii) basados en cámaras y por último iii)
híbridos.

2.2.14 Dispositivos No Basados En Cámaras

Los sistemas no basados en cámaras son comúnmente usados en la industria y en


robots, apoyados en sistemas de navegación a partir de tecnologías como:
radiofrecuencia (Radio Frequency Identification - RFID), comunicación de campo
cercano (Near-field communication - NFC) y bluetooth de baja energía (Bluetooth Low
Energy - BLE). Los usuarios que usan este tipo de tecnologías portan un equipo
dedicado a realizar el rastreo (computador, smartphone) y mediante el uso de
algoritmos, calculan la posición de los usuarios con base en receptores infrarrojos
(Infrared - IR), además hacer uso también de sensores ultrasónicos y módulos GPS
(Global Positioning System – GPS) (Hameed & Ahmed, 2019).

Ejemplo de esto es el desarrollo de unos lentes a los cuales se les acondicionó un


sensor ultrasónico y por medio de un microcontrolador se realizaba la adquisición de
datos captados por el sensor y determinar si hay presencia de obstáculos en la ruta del
usuario; una de las ventajas de este sistema es la portabilidad que ofrece, Además este
tiene un alcance de detección de 0 a 3m. Sin embargo, la precisión de este dispositivo
es baja para los requerimientos de la aplicación, lo cual se puede corregir haciendo
mejoras al dispositivo o implementando sistemas más robustos (Sadi et al., 2014).

Por otro lado, existe un dispositivo electrónico de asistencia para personas invidentes,
el cual es un chaleco en el cual se ubican cuatro sensores ultra sónicos además de 2
microcontroladores uno de ellos el maestro que se encarga de recibir la información

34
proveniente de los sensores y enviar las alerta audibles, las cuales son mensajes
pregrabados que le informan al usuario acerca de lo que hay en su entorno; el otro
microcontrolador el esclavo se comunica con el maestro mediante un receptor
inalámbrico por comunicación serial RS232.Este último se encarga de generar las
alertas hápticas al usuario mediante seis motores vibratorios que se ubican en el
chaleco (OBANDO & SOTOMAYOR, 2015)

Otro dispositivo basado en este tipo de plataformas es un asistente el cual está


conformado por un sensor ultrasónico con un rango de detección de 17 a 30 cm y un
módulo GPS, el sensor ultrasónico es usado para realizar la detección de objetos en la
ruta que se traza por medio del GPS; este dispositivo genera una alerta háptica, la cual
varia su intensidad respecto a la distancia a la que se detecta el objeto; una de las
desventajas de este dispositivo es que en ambientes cerrados como edificios el módulo
GPS no hace una buena recepción de los datos para realizar su ubicación (Miño &
GÁMEZ, 2020).

Un proyecto con mayor aporte a este campo es el Smart Cane, este es un dispositivo
portable el cual consta de una red de sensores ultrasónicos, un sensor de humedad y
un microcontrolador con el cual se realiza el procesamiento de datos provenientes de
los sensores; para interactuar con el usuario este tiene una serie de motores hápticos y
un zumbador , este último realiza la detección de objetos en frente del usuario y de esta
manera enviar mensajes de audio y alertas hápticas al usuario para advertir de un
obstáculo (Vasquez & Cardona, 2019).

Además de las diferentes plataformas en las cuales se soportan los asistentes de


navegación existen también diversas tecnologías que pueden ser usadas para la
implementación de prototipos de asistencia de navegación. Una de estas tecnologías
es el BLE el cual trabaja realizando una red de etiquetas de navegación en el entorno,
tiene un alcance de 1 a 2 m dependiendo de la propagación de la señal, uno de los
ejemplos de dispositivos basados en esta tecnología es el asistente SUGAR el cual usa
etiquetas (BLE) para dar el posicionamiento del usuario (Plikynas et al., 2020).

Los sensores infrarrojos también han sido utilizados como una alternativa para el
desarrollo de dispositivos de navegación de interiores, estos son usados para medir la
distancia a la que se encuentran los objetos dentro de la escena en la que se encuentra
la persona con discapacidad visual; el rango dinámico de estos sensores oscila entre
0.2 a 14 metros. La desventaja de los sistemas basados en estos sensores, es que son
demasiado complejos e ineficientes en comparación con otros asistentes que usan otras
tecnologías de para este propósito (Plikynas et al., 2020).

También existen métodos poco convencionales para realizar asistentes de navegación


en interiores, un ejemplo de esto es utilizar el campo magnético para el
posicionamiento; este utiliza el paisaje magnético que generan las edificaciones creado
por sus estructuras internas y los materiales con los cuales están construidas. Estas
crean perturbaciones en el campo estable de la tierra y le dan forma al paisaje
anteriormente mencionado, dichas perturbaciones se usan para determinar la dirección,
un asistente que usa este método es GROPING; el cual usa el campo geomagnético
para generar mapas de interiores, para esto se toma la huella dactilar magnética y la
localización ligera luego se reconstruye el mapa magnético calcular la estimación de la
posición del usuario (Plikynas et al., 2020).

35
Sin embargo, los asistentes basados en estas tecnologías no han tenido gran acogida
en el mercado, dado a que estos pueden sufrir fallas además de que su interfaz de
comunicación transmite poca información del entorno, lo cual que puede generar un
peligro potencial de colisión (Vasquez & Cardona, 2019).

2.2.15 Dispositivos Basados En Cámaras.

Los sistemas basados en cámaras usan sensores RGB como fuente principal de
información, siendo capaces de reconocer objetos algunos de estos sistemas emplean
únicamente una cámara y se apoyan en sensores de códigos de respuesta rápida
(Quick Response code - QR)(Idrees et al., 2015).

Ejemplo de estos asistentes, es el desarrollo de un dispositivo de navegación asistida el


cual detecta obstáculos en un ambiente dinámico y ajusta la planificación de la ruta en
tiempo real para mejorar la seguridad mientras se realiza el recorrido; para esto el
asistente cuenta con un editor de mapas, para analizar la información geométrica de la
arquitectura del ambiente y generar r un mapa 2D, también aprovechando el
posicionamiento que ofrece el VPS (Visual Positioning Service) usado por Google
tango, se realiza un algoritmo para alinear los mapas y unirlo con un archivo de área
visual que genera el sistema, además de incorporar una cámara RGB-D para capturar
imágenes del ambiente y pasarlas por un filtro Kalman, con un sello de tiempo
realizando la detección de obstáculos, para la interacción con el usuario este sistema
cuenta con una interfaz HMI multimodal la cual interactúa por medio de canales de voz
y audio, y una robusta interacción háptica por medio de un Smart cane (Li et al., 2019).

Los Smartphone también han sido usados para el desarrollo de estos asistentes, para
los Smartphone con sistema Android, se ha desarrollado una aplicación la cual identifica
códigos QR; la ventaja de este es que no requiere ningún hardware adicional para su
funcionamiento, además los códigos QR están distribuidos en el piso a una distancia
determinada. Este código brinda información al usuario de su posición actual y solicita el
lugar de destino al cual se quiere dirigir para trazar la ruta óptima y así llegar al lugar de
destino; La aplicación cuenta con un rastreo de ruta para detectar desviaciones y enviar
alertas audibles al usuario, para ayudarlo a regresa a la ruta inicialmente trazada. Uno
de los inconvenientes es que se debe estar todo el tiempo en línea, pero con ayuda del
módulo GPS se espera poder suplir este inconveniente y que la aplicación pueda ser
usada no solo para interiores sino también para exteriores (Idrees et al., 2015)

Dentro de los prototipos desarrollados para el apoyo apersonas con limitación visual,
existe un asistente de navegación, el cual se compone de un sensor Kinect de
Microsoft, un teclado numérico un sensor táctil y finalmente un bastón blanco además
de otros dispositivos de retroalimentación; el sensor Kinect se usa para capturar
imágenes del entorno e identificar los objetos presentes en la imagen, y luego enviar
una retroalimentación al usuario mediante el sensor táctil, este cuenta con la capacidad
de reconocer varias clases de objetos como, sillas ,escaleras, entre otros objetos que
estén fuera de rango de detección del bastón, este está diseñado para enviar la
cantidad justa de información al usuario y de la manera más eficiente posible (Takizawa
et al., 2015).

Otro dispositivo diseñado dentro de este campo es ejecutado sobre la plataforma


Raspberry pi 3, el cual es capaz de reconocer las diferentes señales de tránsito entre

36
ellas los tres estados de un semáforo (rojo, amarillo, verde), este asistente primero
realiza una etapa de pre procesamiento con el fin de destacar la información de mayor
importancia, para dar más facilidad al seccionamiento de los objetos de interés. Luego
realiza una comparación y distinción de los objetos identificados y de esta manera
enviar un mensaje con la información obtenida por medio de notas audibles. La
desventaja de este prototipo es el tiempo que tarda entre la recepción de los datos a
analizar y el envío una alerta el cual es de 4.3 segundos en promedio. Lo cual hace que
la fluidez con la que el usuario transita por el entorno se vea afectada (SEGURA &
LOZADA, 2019)

Además de los dispositivos electrónicos ya mencionados, para la asistencia de


navegación de personas con limitación visual se han llevado a cabo el desarrollo de
aplicaciones web, ejemplo de esto es una aplicación web la cual pude ser usada en
Smartphone con sistema Android y en PC, esta aplicación hace uso de la cámara
integrada en el Smartphone y la cámara webcam del PC, las imágenes capturadas por
las cámaras son enviadas para ser analizadas en tiempo real por el algoritmo YOLO
con que se realiza la detección de objetos presentes en la imagen y que pueden
representar obstáculos potenciales para el usuario; una vez obtenida la información
necesaria se genera una alerta audible con la información de los obstáculos detectados
y la ruta a transitar. Al realizar las pruebas de funcionamiento, la aplicación obtuvo una
taza del 75% de aciertos en la detección de objetos y su posición en la imagen; por esta
razón se busca mejorar la aplicación para tener una mayor exactitud al momento de
realizar la detección y estimar la posición de dichos objetos (Jadhav et al., 2020).

Un aporte más al desarrollo de asistentes de navegación es un prototipo que cuenta con


dos tipos de alerta audible y no audible además de una cámara Kinect con la que se
toman las imágenes de a escena por donde el usuario se desplaza, además de estimar
la distancia de los objetos presentes en el ambiente en un rango de 50 a 250 cm, este
cuenta con 2 tipos de alertas, una no audible y una audible ; la alerta no audible consta
de tres dispositivos hápticos que se ubican en el abdomen de la persona, los que
indican en qué posición se encuentra el obstáculo (derecha, centro e izquierda) y la
alerta audible se genera como forma complementaria para brindar información como
distancia, ubicación, tamaño (ancho) de los objetos en la escena. Este dispositivo
presento limitantes en sus alertas hápticas, debido a que resultaron confusas además
de no ser cómodas al colocarlas en el área abdominal para el usuario haciendo
necesario ubicar estos actuadores hápticos en un lugar diferente del cuerpo. (Romero et
al., 2018).

Otro aporte realizado referente al desarrollo de asistentes de navegación para personas


en condición de limitación visual, es un dispositivo para detección de objetos en
ambientes cerrados, cuenta con una cámara para la captura de imágenes que permite
obtener información más precisa del ambiente que rodea a la persona. El algoritmo
empleado por este dispositivo es un está basado en la extracción de mínimos
cuadrados con el fin de calcular las pendientes de los contornos de los objetos en la
imagen para aplicar un filtro que resalte los contornos detectados en la etapa anterior,
identificando el objeto con gran eficiencia; sin embargo, el inconveniente de este
algoritmo es que no es capaz de distinguir una pared como un obstáculo, con una ruta
libre a pesar de presentarse una pared en la imagen (GUERRERO, 2018).

37
2.2.16 Dispositivos Híbridos

En cuanto a los sistemas híbridos, se mezclan los dispositivos no basados en cámaras


(RFI, BLE, NFC, …) y el procesamiento de imágenes (Nair et al., 2018), en estos
dispositivos emplean cámaras RGB para mejorar la identificación de objetos (Simoes et
al., 2018). Según los usuarios, el uso de varias tecnologías aumenta la precisión de los
prototipos , además de manifestar que el uso de dispositivos híbridos facilita la
navegación autónoma para llegar a su destinos (Plikynas et al., 2020).

La compañía Google también ha trabajado en este campo y ha desarrollado un sistema


que utiliza Bluetooth y Google tango la cual es una plataforma de realidad aumentada,
este sistema hibrido reduce las debilidades que estas 2 tecnologías presentan de
manera individual; este sistema funciona usando Dijikira para este algoritmo recibe por
parte del usuario el lugar de destino y mediante las imágenes tomadas por la
plataforma Google Tango y las marcas Bluetooth presentes en el ambiente, se traza la
ruta más corta desde el punto de partida al punto de destino. Este también cuenta con
un módulo vibro táctil con sensores infrarrojos los cuales realizan la detección de
objetos cercanos haciendo que se produzca una señal vibratoria proporcional a la
proximidad del objeto; es decir entre más próximo este el objeto u obstáculo en la ruta
trazada más intensa será la vibración. Una de las limitantes que presentaba este
dispositivo es el tiempo en el que tarda para realizar la abstracción de características
del entorno en el que se encuentra el usuario (Nair et al., 2018).

Otro dispositivo que integra varias tecnologías es un asistente de navegación que


incorpora dos formas de realizar el procesamiento de la información obtenida del
ambiente, la primera forma es un modo online que realiza la fusión de datos de radio
frecuencia junto con unos marcadores visuales, o solo por el wifi cuando uno de los
sensores se ve fuertemente afectado por ruidos u otras interferencias; la segunda forma
es el modo off line que consisten en el mapeo de interiores se realiza mediante la
fusión de datos de radiofrecuencia y marcadores visuales, construyendo una
representación del entorno por donde está transitando la persona portadora del
dispositivo (Simoes et al., 2018).

Las FPGA (Field Programmable Gate Array) han sido utilizadas con el fin de desarrollar
prototipos eficaces de asistencia de navegación para personas con discapacidad visual,
para ello se ha aplicado el uso de algoritmos de disparidad, y diferentes arquitecturas
de hardware eficientes para describir estos algoritmos sobre la FPGA; con los cuales es
posible estimar la distancia del obstáculo y enviar la alerta correspondiente al usuario
mediante señales audibles, la desventaja de esto es que para realizar un sistema veloz
se requiere el uso de muchos elementos lógicos a pesar de optimizar el algoritmo, por lo
cual ha recurrido a arquitecturas semiparalelas para reducir los elementos lógicos en la
implementación del sistema(Sekhar et al., 2016).

En cuanto a trabajos realizados en este campo por parte de la Universidad Pedagógica


y Tecnológica de Colombia (UPTC), en el año 2010, el Grupo de Investigación en
Robótica y Automatización industrial (GIRA), diseñó un sistema electrónico de guía para
personas invidentes en espacios cerrados controlados, como trabajo de grado dirigido
por el Ing. Wilson Javier Pérez Holguín. Este sistema estaba conformado por: dos
cámaras, dos sensores ultrasónicos, dos actuadores de vibración y una tarjeta de
adquisición basada en el microcontrolador PIC18F2550, que se conectaba a un
computador encargado de realizar la identificación de obstáculos a una distancia de

38
hasta 6 metros. Para distancias inferiores a 3 metros, la detección de obstáculos era
realizada mediante los sensores ultrasónicos que enviaban la información al
computador a través de la tarjeta de adquisición. Para distancias mayores a los 3
metros, la detección de obstáculos era realizada a través de las imágenes obtenidas por
las cámaras. Por último, los actuadores de vibración le indican al usuario la mejor ruta
de navegación. Una de las recomendaciones de este trabajo fue estudiar la viabilidad
de implementar el algoritmo general en un sistema embebido, con el fin de aumentar la
velocidad de procesamiento y la portabilidad del sistema. El dispositivo desarrollado en
el año 2010 no tenía las capacidades para detectar puertas de acceso, interruptores,
escalones, huecos y objetos pequeños. Además, de tener un tiempo de procesamiento
elevado, aproximadamente de treinta segundos por imagen, demostrando el principal
problema de esta implementación (ARIZA et al., 2010).

Tabla 3 Estado del arte

Tipo de sistema PLATAFORMA SENSORES TECNICA DE AUTOR


PROCESAMIENTO
Ultrasónico Eco localización (Sadi et al., 2014)
Microcontrolador
Ultrasónico Eco localización (Miño & GÁMEZ,
GPS Geolocalización 2020)
No basados en
cámaras Ultrasónico Eco localización (OBANDO &
SOTOMAYOR,
2015)
No registra BLE Beacon No registra (Plikynas et al.,
2020)

No registra Ultra sonido Eco localización (Vasquez &


Cardona, 2019)

No registra No registra Geoposicionamiento (Plikynas et al.,


2020)

No registra Cámara RGB-D VPS (Li et al., 2019)

Smartphone cámara Escaneo código QR (Idrees et al., 2015)


Raspberry pi Rasbpicam Visión por (SEGURA &
computadora LOZADA, 2019)
Raspberry pi Cámara Kinect Visión por (Romero et al.,
computadora 2018)

Basado en cámaras
Computador Cámara web
personal Cámara integrada Algoritmo YOLO (Jadhav et al., 2020)
Smartphone
Harris Corner detector-
Computador Cámara Kinect Visión stereo (Takizawa et al.,
2015)

Computador Cámara web Mínimos cuadrados (GUERRERO,


2018)

39
Cámara
No registra BLE Beacon Algoritmo de Dijkstra (Nair et al., 2018)
Google Tango

ultrasonido Eco localización


Híbridos Computador Cámara Disparidad (ARIZA et al., 2010)
personal
cámara Disparidad
Cámara Marcadores visuales
Raspberry wifi No registra (Simoes et al.,
2018)
Sensores de radio Marcadores de radio
frecuencia frecuencia

Fuente. Elaborada a partir de “Revisión bibliográfica realizada en el desarrollo del proyecto”.

3. DESARROLLO

1.
2.
3.1. Materiales Y Técnicas

3.1.1 Hardware

2.1.7.9. JETSON

Es un SOM (Sistem On Module) completo, con CPU, GPU, DRAM y almacenamiento


flash de alto rendimiento de formato pequeño, el cual cuenta con un SDK (software
development kit) NVIDIA JetPack™ para acelerar el software y un SDK de servicios y
productos para acelerar el desarrollo de programas ejecutados en la plataforma. Dentro
de las plataformas Jetson, se encuentra la Xavier Nx de Nvidia, la cual cuenta con las
siguientes especificaciones:

 puede ser alimentada con voltajes entre el rango de 9v a 20v.


 potencia de trabajo hasta los 15W otorgando altas tasas de frecuencias de
trabajo tanto de la CPU como de la GPU.
 una GPU volta con 348 núcleo Nvidia Core y de 48 hilos por núcleo.
 procesador ARM Carmel V8.2 de 64 bits.

40
 memoria DRAM de 8GB LPDDR4x.
 almacenamiento de 16GB de memoria eMMC 5.1.
 4 puertos USB 3.1.
 GPIO de 40 pines, donde varios de estos están dedicados a módulos
específicos como son dos módulos PWM.
 cuenta también con un conector HDMI.
 conector Gigabit ethernet (Nvidia, 2020b) (Gpu et al., 2020).

Para el funcionamiento del sistema operativo en la plataforma, fue necesaria la


instalación de Linux en su versión 18.4 sobre una memoria µsd (µ Secure Digital) de
64GB.

2.1.7.10. Microcontrolador Pic 12f675

Es un micro controlador con un encapsulado de 8 pines, potente y fácil de programar.


Cuenta con 4 canales para el conversor análogo digital con resolución de 10 bits y tiene
una memoria flash de 1.75 Kbytes la cual se usa como memoria de programa. Puede
ser alimentado con voltajes en el rango de 2 a 5.5 voltios (MICROCHIP, 2010).

2.1.7.11. Kinect

El sensor Kinect es un dispositivo desarrollado por la compañía Microsoft, el cual está


orientado principalmente a la industria de los videojuegos. este dispositivo está
constituido por una cámara RGB, un sensor infrarrojo o de profundidad, un micrófono
multiarray y un procesador personalizado propio de Microsoft. Posee también una base
graduable de entre 30° y –30° en el eje vertical (Guerrero & Villaluenga, 2013).

La cámara Depth o sensor de profundidad 3D funciona a partir de dos elementos, uno


de ellos es un proyector de luz de infrarrojos y un sensor de recepción de la misma luz,
el software del Kinect determina una matriz de 640*480 en la cual, cada uno de los
pixeles varia su valor dependiendo a que distancia se encuentre el objeto representado
con respecto al sensor (Z. Zhang, 2012).

Para el manejo de la cámara Kinect mediante el lenguaje de programación Python, se


realizó la correcta instalación del driver freenect y la descarga del repositorio libfreenect
donde se encuentra la librería propia en lenguaje C, debido a esto, fue necesaria su
“traducción” a lenguaje Python por medio de un módulo de extensión basado en el
compilador estático cython, módulo de extensión que se encuentra el mismo repositorio,
asegurando así la correcta comunicación, sincronización y envió de comandos que
permitieron controlar la calibración de la cámara y extracción de la información
suministrada por el dispositivo Kinect®.

Debido a que la comunicación del dispositivo con la plataforma Jetson, es por medio de
interfaz USB 2.0 también fue necesaria la instalación de la librería libusb-1.0, la cual
permitió acceder a la información proveniente del módulo USB de la Jetson.

41
2.1.7.12. Sensor De Ultrasonido Hrlv-Maxsonar-Ez0

El sensor de ultrasonido HRLV-MaxSonar-EZ0 permite hacer mediciones desde 30cm a


5m con una resolución de 1mm, los formatos de salida son: anchos de pulso, voltaje
análogo y digital, comunicación serial RS232 o TTL; cuando se usa la salida de voltaje
análogo, la distancia tiene un factor de escala dado por la ecuación 23:
Vin∗5 mm
distancia= (23)
1024
El rango de medición, depende de su voltaje de alimentación la cual varia de entre 2,2 a
5,5 voltios estables (MaxBotix Inc., 2021).

2.1.7.13. Módulo De Audio

El adaptador ALUMINIUM STEREO SOUND ADAPTER es un adaptador de tarjeta de


sonido y de audio3D con interfaz USB 2.0, el cual cuenta con un conector de salida
estéreo y uno de entrada para micrófono. Su más notable cualidad es la ser compatible
con todos los sistemas operativos convencionales (Windows, Mac, Linux), lo cual
permite ser usado con un sistema portátil o de escritorio (Sabrent, 2021).

2.1.7.14. Módulo De Vibración

El módulo de vibración fue dividió en dos secciones: La primera sección del módulo
constó en el uso de dos motores de referencia N20, el cual tiene una tensión de
alimentación entre 1.5 a 9v, El módulo de vibración fue dividido en dos secciones: La
primera sección del módulo consta en el uso de dos motores con referencia N20, los
cuales cuentan con una tensión de alimentación entre 1.5 a 9v y una corriente nominal
de 90mA logrando alcanzar velocidades de rotación hasta los 8800 RPM. La segunda
sección es el driver de potencia el cual está conformado por el módulo Arduino
DRV8833, este es un dispositivo el cual cuenta con un puente H dual para el control de
giro para motores DC, el cual cuenta con funciones de protección contra cortos y sobre
corrientes, un bloqueo por sub tensión y sobre calentamiento. Este puede ser
alimentado en un rango de tensión entre 3 v a 11.8 v y en sus entradas digitales
tensiones entre -0.5v a 7v (Texas, 2015).

2.2.17 3.1.2 Firmware Y Software

2.1.7.15. Herramientas

El sistema operativo Linux en su versión 18.4 es el recomendado por el fabricante de la


tarjeta de desarrollo, este SO (Operative System) permitió la instalación y uso del
software Python versión 3.8 siendo este el lenguaje de programación predilecto para la
descripción del programa principal del prototipo.

Para el desarrollo del programa del microcontrolador, se utilizaron herramientas en las


etapas de diseño, simulación y depuración tales como la interfaz de desarrollo del
código del controlador CCS en su versión 5.083 y el simulador funcional Proteus en su

42
versión 8.10 utilizado principalmente para la prueba y depuración del algoritmo descrito
para el microcontrolador.

2.1.7.16. PyCUDA

Es una interfaz de desarrollo que se desenvuelve alrededor de la interfaz de CUDA


debido a que tiene fácil acceso a Pythonic NVIDIA CUDA API. Esta interfaz permite
crear kernels descritos en leguaje C y ser llamados como funciones dentro del código
descrito en Python, lo cual brinda una gran ayuda puesto que ofrece la posibilidad de
ejecutar el kernel descrito en alto nivel fácilmente, además de trabajar con las diferentes
librerías que permiten manipular arreglos de datos que contiene el lenguaje Python
(Klöckner, 2021).

2.2.18 3.1.3 Técnicas

2.1.7.17. Escalización Del Sensor De Profundidad

La escalización del sensor de profundidad se basó principalmente en la obtención de su


ecuación característica, con el fin de encontrar una relación entre la distancia censada y
el valor de los pixeles que la representaban. El método realizado para la obtención de
dichos datos se muestra a continuación:

1. Se realizó la descripción de un algoritmo en Python, el cual fuese capaz de


calibrar el dispositivo para realizar la adquisición y posterior almacenamiento de
los datos correspondientes al mapa de profundidad en formato JPEG y CSV.

2. Se ubicó la cámara Kinect a una altura de 65 centímetros y con un ángulo de


inclinación de 30° para el dispositivo, 0 grados con respecto al suelo.

3. Un obstáculo con medidas 67cm x 106cm, como se muestra en la Figura 18, fue
ubicado frente a la cámara primeramente a una distancia mínima de 50cm,
siendo desplazado con variaciones de 10 cm hasta una distancia máxima de
350cm. Se almacenaron 8 datos por variación.

Figura 18 Pruebas de escalización

43
Fuente Tomada de (Autores)

4. Mediante la descripción de otro algoritmo en Python, fue posible acceder a los


datos resultantes del anterior paso, con el fin de documentar en una hoja de
cálculo el valor de los pixeles que corresponden al objeto identificado como
obstáculo.

5. Con los datos en la hoja de cálculo, se promediaron los 8 valores obtenidos por
cada distancia recorrida obteniendo así un valor representativo de pixel.

6. Con los resultados obtenidos, se realizó la gráfica de la Figura 29 representativa


de distancia vs valor de pixel, para luego agregar la línea de tendencia y
ecuación característica de esta (Ver ecuación 31).

Cabe resaltar que, se realizó la misma prueba en diferentes horas del día y con
variaciones en el nivel de luminosidad tabulando y promediando los resultados
obtenidos, llegando a una ecuación característica del funcionamiento general del
sensor.

2.1.7.18. Algoritmo Para La Detección De Obstáculos

El siguiente algoritmo es el resultado de la reestructuración planteada, basada en los


algoritmos: watershed y el utilizado por Romero et al., 2018 El proceso de
funcionamiento se describe en los siguientes pasos:

1. Se realiza la definición de tres variables las cuales representan el valor máximo


y el valor mínimo de los intervalos dinámicos de las distancias de interés,
además de un valor de incremento para dichos intervalos.

2. Se umbraliza el mapa de profundidad entregado por la cámara Kinect, aplicando


como límites de la umbralizacion, los valores máximos y mínimos de los
intervalos de distancia definidos anteriormente.

3. Se aplican operaciones morfológicas.

44
4. Se fracciona la imagen en 15 secciones y se evalúa el valor cada uno de los
pixeles que las componen, (Teniendo en cuenta que la imagen es binarizada) si
existe al menos un pixel en 1 se determina que hay presencia de un obstáculo
en determinada sección, logrando además identificar su posición en la imagen.
Los resultados serán plasmados en una matriz donde un 1 significa presencia de
un objeto y un 0 la ausencia del mismo por cada una de las secciones.

Figura 19 Seccionamiento de la imagen y matriz resultante de la detección de objetos

Fuente Tomada de (Autores)

(La grilla y los números para cada sección se realiza de manera representativa, debido
a que esto no será visualizado en ningún momento por el sistema)

5. Se aplica el aumento al intervalo de distancias y se realiza el mismo


procedimiento desde el paso 2 al 4 hasta ocupar todo el rango de distancias que
compone el mapa de profundidad. La cantidad de frames analizados, la
resolución y precisión dependerá del valor de incremento dado por la ecuación
(Ver ecuación 24).

¿ frames=∫ ( 255−valor alto ventana ¿¿¿ incremento )+ 1 (24)

6. Se sintetiza la información de los tres segmentos que componen cada columna


en la imagen, con el fin de identificar en cinco posiciones (muy izquierda,
izquierda, centro, derecha y muy derecha) la ubicación de los posibles
obstáculos. Se realiza este procedimiento por cada uno de los frames
correspondientes a los intervalos de distancias.

2.1.7.19. Discriminante De Suelo

El algoritmo para la discriminación del suelo se basó principalmente en la teoría de


perspectiva que tiene la imagen obtenida por la cámara, en este se tuvo en cuenta que
la cámara idealmente (Ver ecuaciones 25 y 26):

Figura 20 Calculo de distancia de discriminación

45
 Está situada a 0 grados
respecto al horizonte (Y = 90°)
 a = altura a la que se sitúa la
cámara es conocida
 β = apertura del lente de la
cámara es de 69°

Fuente Tomada de (Autores)

Donde:

a
c= (25)
cos β b=c∗sin β (26)

Por lo tanto, b es la distancia desde la cual se empezará a detectar el suelo como un


objeto, para obviar este parámetro fue necesario partir de la matriz resultante del
proceso 5 del algoritmo para la detección de obstáculos, donde: para las capas donde el
numero entero del intervalo de distancias (encontrado en las posiciones [x, 15]) sea
igual o mayor a la distancia obtenida b, si los valores de las secciones 6, 7 y 8, (las
cuales refieren a la parte baja central de la imagen) son 0, la sección correspondiente al
elemento de la fila inferior y que hace parte de la misma columna también serán
puestas en estado de no identificación de objeto o cero, de modo contrario, cada una
mantendrá su valor.

2.1.7.20. Trace Planning

El algoritmo para la creación de la ruta será el encargado de analizar la matriz


entregada por el algoritmo para la detección de obstáculos. Está diseñado
principalmente para seleccionar la ruta que presente ningún obstáculo o el obstáculo a
la mayor distancia del usuario. El proceso de funcionamiento se describe en los
siguientes puntos:

1. Se compara cual columna es la que presenta ausencia de carácter en 1, (el cual


indica presencia de objeto) o la que a mayor distancia se encuentra la presencia
de un carácter en 1, y se elige como ruta ideal para transitar.

2. Se genera un vector de 5 posiciones con la información necesaria para generar


la alerta organizado de la siguiente manera: En la posición 0 del vector se tiene
la información necesaria para encender o apagar el motor izquierdo según sea el
caso, en la posición 1 valor distancia mínima a la que se encuentra el obstáculo
por la izquierda, en la posición 2 contiene la información correspondiente al
encendido o apagado del motor derecho según la ruta a indicar, en la posición 3
se tiene el valor de distancia mínima de obstáculo por la derecha, en la posición
4 está la información concerniente a la información de ruta sugerida.

46
2.1.7.21. Filtro De Media Movil

El filtro de media móvil de orden 5 consiste en un filtrado de señales por medio de la


realización de la media aritmética entre la muestra actual y las cuatro muestras
anteriores.
n

∑ Si
(27)
i=n−4
Sn=
5

Donde Sn representa el promedio de las 5 últimas muestras de la señal.

2.1.7.22. Generacion De Alertas

 AUDIBLES

Para las alertas audibles se definió una función la cual selecciona la posición 4
del vector de alertas como entrada con el fin de reproducir una alerta pregrabada
correspondiente a la ruta sugerida para luego ser reproducida.

 HAPTICAS

Para estas alertas también se definió una función la cual generara una señal
PWM modificada que varía su ancho de pulso y su frecuencia. La salida de esta
señal se realiza por dos pines del GPIO de la siguiente manera:

1. Se selecciona las posiciones 1, 2, 3 y 4 del vector resultante del trace


planing.

2. Se compara el valor de On/Off de cada motor y, dependiendo de la


distancia a la que se encuentre el objeto por el lado en el que el motor se
encuentre encendido, se designa un valor de PWM a los motores.

3. Se cambia la frecuencia de los motores de acuerdo a los valores


seguidamente definidos.

Tabla 4 Generación PWM respecto a la distancia de detección

DISTANCIA DISTANCIA PWM (%) FREFCUENCIA


MINIMA (cm) MAXIMA (cm) (Hz)

50 100 100 2000

101 199 60 1000

200 300 30 25

Fuente. Elaborada a partir de “Trabajo experimental”.

47
3.2. Desarrollo

2.2.19 Determinación De Las Características Mínimas De Diseño

Tomando en cuenta el proyecto llamado: diseño e implementación de un sistema


electrónico de guía para personas invidentes en espacios cerrados controlados (blind
guidance system) realizado en el año 2012, los autores pusieron a consideración
algunas recomendaciones para trabajos futuros, algunas de estas fueron referente para
el desarrollo de este prototipo, siendo estas:

 Implementar el sistema de guía para personas invidentes en un sistema de


procesamiento embebido, de esta forma garantizando una ejecución en tiempo
real, mayor portabilidad y posible comercialización del dispositivo.

 Mejorar la percepción de las cámaras utilizadas o bien integrar este modelo a


sensores más precisos y menos sensibles a ruidos y luminosidad externa.

 Respecto al método de estimación de profundidad, es necesario realizar la


evaluación de nuevos métodos más robusto, que ofrezcan un mapa de
disparidad más confiable y con un menor costo computacional.

Teniendo en cuenta las consideraciones planteadas se define:

 El procesamiento del algoritmo será ejecutado sobre una GPGPU de marca


NVIDIA.

 El sistema garantizará un menor tiempo de ejecución al obtenido en el proyecto


pasado.

 El sistema será basado principalmente en el procesamiento de imágenes.

 El sistema se ejecutará sobre un dispositivo que permita el procesamiento


embebido, con el fin de facilitar su portabilidad.

2.2.20 Definición Del Diseño De Alto Nivel Del Prototipo

Una vez establecidas las características de diseño, el primer paso fue definir la
arquitectura interna del prototipo. Su definición fue de gran importancia debido a que,
partiendo de ésta, fue posible evaluar la selección de componentes, sensores y demás
elementos que la conforman.

Figura 21 Esquema general de la arquitectura interna del dispositivo de guía para invidentes

48
Fuente Tomada de (Autores)

En la Figura 21 se presenta el diseño de alto nivel correspondiente al funcionamiento


del sistema con los subsistemas establecidos, se procedió a definir una arquitectura
basada en una plataforma de desarrollo y componentes separados de hardware con
aplicaciones específicas como la alerta de punto ciego y sistema de interacción
humana. La plataforma debe encargarse de comandar los sistemas de adquisición y
generación de alertas además de llevar a cabo los algoritmos de detección de
objetos y generación de rutas.

2.2.21 Selección De Hardware Necesario Para Funcionamiento Del


Prototipo

Teniendo en cuenta las características mínimas del prototipo, en cuanto a Hardware, se


requirió trabajar sobre una plataforma que incluyera una GPGPU como soporte para el
procesamiento de datos, además de esto el dispositivo debe ser de marca Nvidia
debido a que son las únicas diseñadas para trabajar bajo CUDA.

De preferencia también, se tiene en cuenta que el sistema operativo que ejecute la


plataforma sea Linux debido a que otorga mayor control y libertad al momento de
supervisar y modificar aspectos clave en la ejecución de librerías y firmwares
necesarios para el prototipo, además de contar con licencia publica general, lo que
elimina el factor dinero de los softwares a implementar.

Por último, debe contar con diversas interfaces de periféricos, o que, en su defecto la
plataforma facilite la implementación de estas, debido a que es necesario contar con las
interfaces de comunicación necesarios para lograr una recepción y envío de datos con
los diversos componentes que componen el proyecto.

Tabla 5 Tabla de selección hardware.

Platafo GPU CPU Memoria Sistema Requerimient Interfaz de Dimensi Cost


rma Operati os de periféricos ones o
v operación

49
128 ARM RAM: Rango 1 puerto 69.6 mm
núcleos de Cortex-A57 2GB temperatura de para tarjeta x 45 mm
arquitectura (Quad o -25C°-97C° microSD
Maxwell Core) con Potencia de 5 4 Puertos
con soporte una 4GB
a 10W USB
Jetson para Open frecuencia
GL 4.6, maxima de Voltaje de 1 módulo
NANO alimentación PWM
Open GL- operación
ES, CUDA, de 1.43 Almacena de 5V 1 UART,
Vulkan1.1 GHz miento: dos
con una eMMC módulos
frecuencia 16 GB SPI
máxima de 1 conector
Operación para
921MHz rasbian
cam,
1 módulos
I2C
1 puerto
GPIO de 40
pines

384 ARMv8.2 Rango de 1 puerto 69.6 mm


núcleos, 48 (64-bit) 3x temperature para tarjeta x 45 mm
Tensor dual-core –25°C – 90°C microSD
cores con CPU RAM:
8GB Potencia 4 puertos
soporte clusters (six soportada de USB, 2
para- NVIDIA 10W a 15W módulos
OpenGL Carmel PWM, 1
Jetson 4.6, procesador Voltaje de
XAVIE Almacena alimentación: módulo
OpenGL cores SDIO, 2
R- NX ES 3.2, frecuencia miento: 9Va 20V
eMMC módulos
Vulkan, 1.1, máxima de SPI, 1
CUDA 10, operación 16 GB UART, 1
con una 1900 MHz módulo
frecuencia CAN, 2
máxima de módulos
operación I2C , 1
de 1100 conector
MHz para
rasbian
cam,
1 puerto de
40 pines
GPIO
PC 1280 RAM: 650 W 788
escritor nucleos 8GB
io CUDA
Window
Arquitectur s
a Pascal
Almacena
con una miento:
frecuencia SSD 512
máxima de GB & Linux
Operación HDD 2TB
1708MHz

Fuente. Elaborada a partir de “Hojas de especificaciones de las plataformas consultadas”.

Tomando como base la información presentada en la Tabla 5, se observa que las


características técnicas presentadas por las plataformas Jetson, cumplen a cabalidad
los requerimientos anteriormente planteados, además de que sus dimensiones físicas
son perfectas para su fácil implementación en dispositivos portátiles de bajo consumo.

50
Asimismo, en comparación a las otras plataformas consultadas estas dos presentan un
costo asequible en el mercado.

Sin embargo, es posible evidenciar una diferencia en cuanto a la cantidad de núcleos,


velocidad de frecuencia máxima y arquitectura que presentan los dispositivos GPU de
cada plataforma. Para realizar una correcta selección, es necesario entender las
características de interés que presentan cada dispositivo, explicación que será realizada
en la siguiente sección.

2.2.22 Estudio De La Arquitectura Y Tecnología Del Kit De Desarrollo


Para GPU NVIDIA Jetson

Se observa que cada una de las GPU integradas en las plataformas Jetson posee una
micro arquitectura diferente, siendo ésta la que define características cruciales del
funcionamiento del sistema, se procedió a realizar un estudio de aspectos clave de cada
una de ellas además de evaluar su importancia para el proyecto. obteniendo los
siguientes resultados:

 Como primera característica de interés, se observa que las dos micro


arquitecturas presentan una eficiencia energética que permite entregar su
máximo rendimiento en dispositivos con entornos de energía limitada

 La micro arquitectura Volta alcanza mayores frecuencias de funcionamiento a


diferencia de la micro arquitectura Maxwell.

 En la micro arquitectura Maxwell, cada SM esta particionado en cuatro bloques


de procesamiento lo cual reduce el consumo energético al momento de realizar
la ejecución de instrucciones además de optimizar el flujo de datos. Cada
Maxwell SM (llamado SMM) posee su propio búfer de instrucciones,
programador y 32 núcleos CUDA (NVIDIA, 2020).

En cuanto a la micro arquitectura Volta, cada SM esta seccionado en cuatro bloques de


procesamiento al igual que la arquitectura Maxwell sin embargo la arquitectura Volta se
diferencia en que cada uno de los SM tiene su propio buffer de instrucciones además de
núcleos CUDA, cada tensor le proporciona una matriz de procesamiento 4x4x4 para
realizar operaciones matemáticas de fusión de precisión mixta como multiplicación y
suma (FMA) (Nvidia, 2020a).

Con base en lo descrito, para cada micro arquitectura se observa que la cantidad y
características descritas para los SM son las diferencias más notables entre estas, y
teniendo en cuenta que, según (NVIDIA, 2017), la cantidad de SM es comúnmente
asociado a muchos más registros en general, por ende, mayor cantidad de hilos y
bloques de subprocesos, que a su vez ofrece importantes mejoras en el rendimiento, la
eficiencia energética y la facilidad de programación (Hernández et al., 2013). Teniendo
esto en cuenta, se selecciona la plataforma de desarrollo Xavier, debido a que sus
características en cuanto al hardware de su GPU brindarían el mayor rendimiento de
procesamiento y que además pese a ser más compleja internamente, se trabaja de
igual forma que la Jetson nano.

51
2.2.23 Sensores A Utilizar

De acuerdo a los antecedentes consultados y teniendo en cuenta las características


específicas nombradas al comienzo del capítulo, la forma de adquisición y
procesamiento de imágenes resulta ser la más precisa e idónea para identificar
variables del ambiente, esto claro, si se cuenta con un sensor capaz de entregar
imágenes con suficiente calidad e información de interés

Debido a esto, y con el objetivo de realizar la selección del dispositivo, se procedió a la


comparación de dos cámaras, cuya principal característica es la de poseer un sensor
infrarrojo con el cual genera un mapa de profundidad, además de haber sido ya
adquiridas y destinadas para el proyecto. A continuación, se muestra la tabla de
comparación:

Tabla 6 Tabla de comparación de Sensores RGB y Profundidad

Dispositivo Sensores Campo de vision Flujo de datos Fuente de Interfaz de


alimentació conexión
n
Color: sensor CMOS Campo de visión horizontal: 640 × 480 a 12 voltios
57 grados 16 bits de
profundidad
@ 30 FPS
(Frames Per
Second)
Profundidad: sensor Campo de visión vertical: 43 640 × 480 32- 12 vatios
CMOS y proyector de grados bit de color
Kinect luz IR @30 FPS USB 2.0

Micrófono multi- rango de inclinación física: ± Audio de 16-


arreglo 27 grados bit @ 16 kHz

Ajuste de sensor con Rango de profundidad del


motor de inclinación sensor: 50 centímetros – 3,5
metros
Giroscopio
Color: sensor Campo de visión horizontal: 640 × 480 a 5 voltios
Intel realsense cromático con ISP 71.5 grados 16 bits de
camera sr300 discreto profundidad
@60 FPS

USB 3.0
Profundidad: sensor Campo de visión vertical: 55 1920 × 1080 1.8 vatios
infrarrojo grados 32-bit de color
monocromático y @30 FPS
proyector de luz IR Rango de profundidad del
sensor: 10 centímetros – 1.5
metros

Fuente. Elaborada a partir de (Hojas de especificaciones de las cámaras consultadas).

Teniendo en cuenta la Tabla 6, la cámara Intel presenta ventajas tales como su bajo
consumo, un mayor y mejor flujo de datos además de un amplio campo de visión, sin
embargo, la cámara Kinect presenta mejores prestaciones en cuanto a conectividad, ya
que no necesita específicamente de un puerto 3.0 para funcionar. Sin embargo, este
último dispositivo presentó la característica de contar con un rango más amplio de
profundidad del sensor, lo cual se traduce en mayor tramo de distancia para la

52
detección de objetos en el entorno, mejorando la eficacia del sistema al momento de
entregar una ruta para transitar

De acuerdo al funcionamiento del proyecto anteriormente planteado, se observa que la


información del ambiente que será adquirido por los sensores debe ser suficiente para
abarcar de manera adecuada el espacio por donde el usuario desea transitar, con el fin
de detectar de manera adecuada los obstáculos que representen un riesgo para su
movilidad. Sin embargo, teniendo en cuenta la anatomía del cuerpo humano, el tamaño
peso y método de funcionamiento de la cámara anteriormente seleccionada, se
encuentra que el lugar óptimo para su ubicación dentro del prototipo es a la altura del
pecho del usuario. Esto debido a que esta zona del cuerpo: 1) puede cargar con un
peso ligero, sin presentar mayor molestia ni afectaciones para la salud, 2) presenta un
bajo movimiento oscilatorio al momento de realizar actividades que impliquen un
desplazamiento.

Sin embargo, debido a que la cámara del Kinect tiene un ángulo de apertura de 69°, al
estar ubicada a una altura considerable del suelo, genera un espacio con forma de
triángulo rectángulo tal como se muestra en la Figura 20 donde su área representa el
punto ciego del sensor, zona donde, cualquier objeto que se encuentre dentro de esta
genera un alto riesgo de colisión al usuario.

Para dar solución a este problema, nos remitimos inmediatamente al estado del arte,
donde se observó que los sensores de ultrasonido son ampliamente utilizados al
momento de realizar mediciones a cortas distancias, de forma precisa, sencilla y
económica (Tabla 3 Estado del arte). Una vez definido el tipo de tecnología, se consulta
con los fabricantes especializados y generales sobre el sensor adecuado que cumpla
con los requerimientos para la aplicación a desarrollar encontrando que

Tabla 7 de comparación de Sensores Ultrasónicos.

Fabricante Serie Rango Alimentación Taza de Comunicación


muestreo

OSEPP HC-SR04 5 voltios 52 Hz Lectura de tiempo


de ancho de pulso
Electronics 2cm a 15 miliamperios
400cm
Adafruit 4007 3 – 5 voltios

DFRobot MaxSonar-EZL0 30cm a 3.3 – 5.5 voltios 10 Hz Salida serial


750cm RS232
Lectura de tiempo
de ancho de pulso
Lectura análoga

MaxBotix MaxSonar-MB1003 30cm a 2.7 – 5 voltios


500cm

EV_MOD_CH201 5cm a 1.8 voltios 1 Hz


30cm
TDK
InvenSense SRF08 40cm a 5 voltios 26 Hz I2C
600cm 50 miliamperios

DFRobot 981 2cm a 5 voltios 47 Hz Lectura de tiempo


200cm 15 miliamperios de ancho de pulso

53
Fuente. (Hojas de especificaciones de los sensores consultados).

Al comparar los datos presentados en la Tabla 6, se observan diferencias en las


características de los sensores. Se encuentran para uso general con un bajo consumo,
pero con la desventaja de una única forma de comunicación, o baja tasa de muestreo.
Igualmente, se presentan otros sensores con buena taza de muestreo, rango dinámico
adecuado y gran variedad de métodos de comunicación, además de ser asequibles. Por
ello se determinó en la adquisición e implementación del sensor MaxSonar-MB1003 el
cual, a diferencia del MaxSonar-EZL0 permite una más óptima resolución para la
medida de su variable.

2.2.24 3.2.6 Análisis, Revisión Y Selección De Los Algoritmos Para La


Detección De Objetos.

Con el diseño de alto nivel ya planteado y los materiales elegidos, se procedió en la


búsqueda, análisis, comparación y selección de diferentes algoritmos enfocados al
reconocimiento de objetos, basados en imágenes RGB o mapa de profundidad.
Teniendo en cuenta la naturaleza del proyecto, además, es necesario que el algoritmo
seleccionado sea capaz de entregar la ubicación espacial y distancia a la que se
encuentra del usuario el o los posibles objetos identificados, esto con el fin de crear un
mapa de dos dimensiones el cual posibilite la elección de una ruta libre que garantice su
seguro desplazamiento. Debido a los requisitos planteados, es necesario que el
algoritmo deba estar o ser fácilmente descrito en el lenguaje de programación C nativo
CUDA para su codificación a la GPU de Nvidia, o bien, contar con wrappers los cuales
permitan que el algoritmo sea descrito en otros lenguajes tales como Python, Fortran,
Julia o Java

Tomando como base la anterior premisa y de acuerdo a los antecedentes consultados,


se observó que, habitualmente, los algoritmos elegidos para realizar la detección de
objetos son basados en programas secuenciales, debido a su fácil descripción e
implementación además del relativo bajo coste de hardware que requieren. Sin
embargo, han surgido en las últimas décadas otros algoritmos que “facilitaban” el
trabajo, los cuales son los basados en inteligencia artificial. Computacionalmente estas
últimas técnicas son muy costosas de realizar, necesitando una gran cantidad de
procesamiento, pero los resultados obtenidos son mejores que con los algoritmos
secuenciales(De Frías et al., 2019). Pese a esto, y con el fin de abordar el tema con
diferentes soluciones, se optó por estudiar algoritmos que entren en estos dos tipos.

 Inteligencia artificial

YOLO (You Only Look Once) es un sistema de código abierto, enfocado a la detección
de objetos en tiempo real, el cual hace uso de una única red neuronal convolucional
para detectar objetos en imágenes. Para su funcionamiento, la red neuronal divide la
imagen en regiones, prediciendo cuadros de identificación y probabilidades por cada
región; las cajas son ponderadas a partir de las probabilidades predichas. El algoritmo
aprende representaciones generalizables de los objetos, permitiendo un bajo error de
detección para entradas nuevas, diferentes al conjunto de datos de entrenamiento
(Ammar et al., 2019).

54
Otro algoritmo de IA usado para la detección de objetos es el algoritmo MobileNet este
al igual que YOLO está basado en una arquitectura de redes neuronales
convolucionales con la diferencia es que dichas redes están optimizadas para ser más
livianas y trabajar de mejor manera en las plataformas móviles, este algoritmo ha
tratado de obtener un buen equilibrio entre el volumen de cálculo y espacio de
almacenamiento, sin embargo al tratar de ser más liviano este ha reportado predicas en
la precisión de detección en comparación de otros algoritmos (Howard et al., 2017)

 Algoritmos secuenciales

Para el algoritmo secuencial, se planteó y estudió la implementación de un algoritmo


que, basado en el mapa de profundidad lograse la identificación de obstáculos, para ello
se toma como referencia el algoritmo llamado watershed. Según (Osma-Ruiz et al.,
2007), este algoritmo es una de las herramientas más valoradas en el campo de la
segmentación de imágenes digitales el algoritmo, cumple la función de realizar RL
(Region Labeling) considerando la imagen como una superficie topográfica donde cada
píxel es un punto situado a cierta altura en función de su nivel de gris, donde el color
blanco (gris nivel 255) se toma como la altura máxima y el color negro (gris nivel 0) la
mínima, el resto de los niveles de gris coinciden con una altitud asociada a la imagen
entre estos extremos.

Figura 22 Identificación pixeles de igual valor

Fuente: (Osma-Ruiz et al., 2007)

mediante valores definidos y otros obtenidos por el algoritmo, es posible individualizar


los pixeles que tengan características idénticas obteniendo como resultado un conjunto
de áreas bien delimitadas, como la observada en , por lo que, si consideramos que
estas áreas representan los objetos buscados, obtendremos una detección de bordes
precisa definida por un conjunto de píxeles conectados (Osma-Ruiz et al., 2007).

Los resultados obtenidos de las pruebas realizadas a cada algoritmo se muestran en el


siguiente capítulo. En estos se observa que las técnicas IA presentaron una muy baja
tasa de procesamiento y un alto tiempo de ejecución, por ende, se opta por la selección
del algoritmo secuencial, el cual basa su técnica en el etiquetado e identificación de
elementos cuyos pixeles comparten características.

55
2.2.25 Análisis Del Algoritmo Seleccionado Y Detección De Las Etapas
Que Intervienen En Su Funcionamiento

Teniendo en cuenta el algoritmo seleccionado, su funcionamiento y resultados. Conocer


la cantidad y área de objetos presentes en la imagen no es un dato de interés, más sí lo
es el de realizar la identificación de la presencia de un objeto, además de su ubicación
en el mapa espacial, por este motivo, se tomó como referencia dicho algoritmo y el
procedimiento de detección de obstáculos utilizado por (Romero et al., 2018) a los
cuales se les realizó un análisis y reestructuración, con el fin de asegurar un
funcionamiento deseado.

Como resultado, se propuso un algoritmo el cual fuese capaz de identificar objetos


desde una imagen en escala de grises. Sin embargo, y por facilidad en la aplicación del
método para la detección y reconocimiento de la distancia a la que se encuentra el
objeto encontrado, se requirió primero de una etapa donde se lograse adecuar la
imagen para la aplicación del algoritmo replanteado, donde, mediante un proceso
similar al ejecutado en el algoritmo watershed se obtuvo la identificación de objetos
además de sus coordenadas dentro de la imagen. Por último, se entregó una matriz la
cual plasmó el mapeo 2D de los objetos presentes en el ambiente,

Con base en el análisis del algoritmo, se reconocieron 3 etapas principales en la


ejecución del mismo y se planteó un diseño de alto nivel:

Figura 23 Diseño de alto nivel del algoritmo seleccionado

Fuente (Autores)

Con base en el análisis anteriormente planteado, se observó que, el algoritmo depende


de otras etapas para su correcto funcionamiento cada vez que sea ejecutado, por este
motivo se reconoce como “Algoritmo de detección de objetos” a la agrupación de las
tres etapas principales como se muestra en la Figura 40Además, con base en la Tabla 2
mostrada en el marco conceptual, se logra clasificar el algoritmo planteado de tipo:
secuencial nivel bajo debido a que para este algoritmo se analiza la imagen a nivel de
pixel, debido a que se aplicaran distintos filtros para la extracción de información de la
imagen, además de realizar distintas operaciones para realizar la detección de objetos
que solo se pueden llevar acabo analizando cada pixel individualmente.

56
2.2.26 Análisis De Los Requerimientos Por Etapas Del Algoritmo
Seleccionado Para Su Implementación En CUDA.

Teniendo en cuenta que el procesamiento de la información realizado por el device del


dispositivo, será llevado a cabo en los subsistemas que presentan mayor complejidad y
son críticos para el desempeño del sistema, es necesario establecer la secuencia que
se debe realizar entre el host y device, según las recomendaciones del fabricante, con
el fin de identificar los requerimientos necesarios para el correcto funcionamiento, tanto
del dispositivo de procesamiento GPGPU como de los algoritmos a ejecutar.

Figura 24 Transferencia de datos entre el host y el divise

Fuente (SONZA et al., 2019)

Con base en la Figura 40, se definieron los pasos base para cada uno de los procesos
que realicen el procesamiento en el device, de la siguiente manera:

 Definir arreglos matriciales con las mismas dimensiones de la imagen para


almacenar la información en la memoria del host y en el device.

 Realizar la descripción del kernel en el lenguaje nativo CUDA.

 Retornar a la memoria del Host los valores procesados para ser enviados a la
siguiente etapa del algoritmo.

Dependiendo de la etapa y el proceso que se esté ejecutando, la función del kernel


varia de la siguiente forma: en la etapa de preprocesamiento únicamente en el proceso
3, la descripción del kernel se realiza con el fin de aplicar las operaciones morfológicas
y en la etapa de detección, la descripción del kernel se orienta al fraccionamiento de la
imagen y análisis de cada uno de sus pixeles.

57
Para definir el arreglo matricial necesario para el almacenamiento y procesamiento de
los datos a trabajar, es necesario analizar el tipo y cantidad de datos que le ingresan al
subsistema observando que: los datos provenientes del sensor de profundidad son de
tipo vector de 8 bits, con un tamaño de 640 × 480 en un solo canal. Con el fin de
realizar el procesamiento de dichos valores se procedió a establecer los parámetros
para reservar el espacio en memoria en el device de la siguiente manera:

 El primer parámetro establecido fue el número mínimo de hilos por cada bloque
que se debieron lanzar para procesar la imagen, dicho valor se calculó mediante
las ecuaciones 28 y 29:
ancho de la imagen
¿ hilos ancho=
100
(28)

alto de la imagen
¿ hilos alto= (29)
100

¿ total de hilos por bloque=¿ hilos alto∗¿ hilos ancho (30)

Por medio de la ecuación 30, se obtuvo el número mínimo de hilos por bloque
requeridos para procesar la imagen, esta cantidad fue 30.72 hilos, debido a que
solo se pueden lanzar números enteros de hilos en cada bloque esta cantidad se
aproxima al valor entero siguiente, con lo cual el resultado fue 31 hilos por
bloque.

 Como segundo parámetro se estableció el tamaño del Grid necesario para


almacenar la imagen de profundidad proveniente del Kinect en la memoria del
device. Para almacenar los 307200 pixeles de la imagen, se determinó que las
dimensiones del Grid debían ser de 100 bloques de ancho y 100 bloques de alto
(esto debido al valor por el cual se dividen las dimensiones de la imagen), con lo
cual el total de hilos lanzados en el Grid fue de 310000 teniendo en cuenta la
aproximación que se realizó al calcular la cantidad mínima de hilos por bloque.

A demás de estos parámetros se definieron los pasos base para cada uno de los
procesos que realicen el procesamiento en el device, de la siguiente manera:

 Definir arreglos matriciales con las mismas dimensiones de la imagen para


almacenar la información en la memoria del host y en el device.

 Realizar la descripción del kernel en el lenguaje nativo CUDA.

 Retornar a la memoria del Host los valores procesados para ser enviados a la
siguiente etapa del algoritmo.

58
2.2.27 Diseño De Alto Nivel De Cada Una De Las Etapas Para
Implementación En CUDA

Partiendo de los procesos del algoritmo resultante, se procedió en el diseño de alto nivel
y descripción de cada etapa propuesta enfocada a su implementación en CUDA.

Pre procesamiento es la primera etapa donde se encuentran los procesos 1, 2 y 3 del


algoritmo, esta fue la encargada de realizar la adecuación de los datos provenientes del
mapa de profundidad ya que, debido a valores intrínsecos de la cámara la imagen
obtenida presenta una resolución de bits inapropiada para la precisa identificación de
distancias. Este cambio además facilita la umbralización de la imagen, sin embargo, por
factores propios del sensor y del ambiente, la imagen resultante presenta ruido que
puede provocar falsos positivos en la detección de objetos, para su eliminación, como
último paso, se aplican operaciones morfológicas mediante los requerimientos descritos
anteriormente, para la carga y procesamiento de datos sobre el device con CUDA.

Figura 25 Diseño etapa de pre procesamiento.

Fuente (Autores)

La segunda etapa es Detección; en esta intervinieron los procesos 4 y 5 del algoritmo,


en los cuales se hizo uso pleno de los núcleos y memoria del device para el
procesamiento de los datos, ya que el método definido por el algoritmo exige que sea
analizado el valor de cada uno de los pixeles de forma paralela, además de su
correspondiente posición en la imagen. Sin embargo, debido a las características del
sensor de profundidad y su ubicación en el prototipo, el suelo es detectado como un
objeto, por ello, fue necesario incluir en esta etapa la aplicación del algoritmo para la
discriminación del suelo.

Figura 26 Diseño Etapa de Detección

Fuente (Autores)

Para la última etapa solo interviene el proceso 6, en este, se optimizo la manera en que
se entregan los datos resultantes además de configurar los parámetros necesarios para
realizar de nuevo la ejecución del algoritmo.

59
Figura 27 Diseño Etapa post Procesamiento

Fuente (Autores)

2.2.28 Implementación, Simulación Y Test Del Diseño Realizado Para


Cada Etapa.

Para la implementación y simulación de la etapa de pre procesamiento, se tuvo en


cuenta que por medio de la función (Depth()) (que se encuentra dentro de la librería
freenect), fue posible la obtención de la imagen proveniente del sensor de profundidad,
la cual es de tipo vector con 11 bits de resolución Figura 28 B. Para la obtención de la
imagen correspondiente al sensor de color es necesaria la función (RGB()), usada con
el único propósito de facilitar la comprensión de los datos resultantes Figura 28A.

Figura 28 Imagen RGB y mapa de profundidad obtenidos por el Kinect

Fuente (Autores)

Sin embargo, cuando se realizó la escalización del sensor de profundidad con el fin de
encontrar su ecuación característica, se observó que la cuantización correspondiente a
los niveles de gris entregados por la cámara, no estaban dispuestos de manera
progresiva lineal, lo cual complicaba su cálculo, Ver Figura 29 A. Por recomendación del
autor de la librería, fue necesario realizar un reajuste de su resolución a 10 bits para
luego efectuar un desplazamiento de dos posiciones, eliminando los 2 bits de menor
peso y dio como resultado un vector donde el valor en cada posición fuese
representado en 8 bits de resolución. Gracias a este reajuste, los datos obtenidos
presentaron un comportamiento casi lineal, Ver Figura 29 B.

Figura 29 Valor pixel respecto a la distancia tomados con una resolución de 10 bits y 8 bits

60
VALOR PIXEL RESPECTO A LA DISTANCIA TOMADOS CON
UNA RESOLUCIÓN DE 10 BITS
330

280

230

180 A
130

80
40 90 140 190 240 290 340

VALOR PIXEL RESPECTO A LA DISTANCIA TOMADOS CON


UNA RESOLUCIÓN DE 8 BITS

280

230
B
180

130

80

30
100 120 140 160 180 200 220 240

Fuente (Autores)

Con base en las gráficas obtenidas y por medio del software de código abierto para
análisis de datos LibreOffice, fue posible hallar la ecuación característica, observando
que la ecuación resultante de Figura 29 B, cuya gráfica es un polinomio de orden 5 y
dado que en dicha grafica los pixeles aumentan su valor respecto al incremento de la
distancia, se obtiene la Ecuación 29:

ditancia=( 2∗10−5 x 5 )−( 1∗10−4 x 4 ) + ( 0.0026 x3 ) −( 0,2812 x2 ) +(11,861 x ) (31)

Partiendo del mapa de profundidad obtenido y la ecuación característica del sensor de


profundidad, se realiza la umbralización, únicamente, de los pixeles que corresponden a
los intervalos de distancias predefinidos, dando como resultado diversas imágenes (Ver
Figura 30), las cuales serán necesarias para la identificación de posibles objetos en
rangos de distancia predeterminados.

Figura 30 Barrido Umbralización por capas

61
F
uente (Autores)

(En la Figura 30 se observa la secuencia del barrido resultante de la umbralización por


capas donde: A comprende las distancias 150 cm a 160 cm e incrementa gradualmente
hasta llegar a I que comprende las distancias 230 cm a 240 cm)

Debido a factores externos al sensor, las imágenes resultantes de la umbralización por


capas, presentan ruido, tipo sal y pimienta (Ver Figura 31 A). Para su filtrado fue
indispensable la aplicación de operaciones morfológicas y con ellas se empleó una
ventana tipo cuadrada con dimensiones de 7x7, la cual fue seleccionada de manera
experimental. Gracias a la implementación del filtro, fue posible limpiar la imagen de
dicho ruido y además, acentuar las cualidades de los potenciales objetos detectados,
como se observa en la Figura 31 B.

Figura 31 Detección de ruido sal y pimienta y eliminación del ruido mediante operaciones
morfológicas.

62
Fuente (Autores)

Para la etapa de detección, fue necesaria la carga de cada una de las imágenes
provenientes de la anterior etapa, con el fin de ejecutar el kernel correspondiente al
algoritmo de detección. Como primer paso, mediante valores pre definidos, se fracciona
la imagen en tres partes verticales y cinco horizontales (para efecto representativo, esta
división es visualizada por la grilla verde, Ver Figura 32) con los cuales fue posible
designar la ubicación espacial en la que se encuentran los pixeles en la imagen,
considerando la distorsión de perspectiva del observador y el efecto túnel que esto
genera, es necesario también que esta varíe su tamaño de análisis conforme aumenta
la distancia que se analiza.

Figura 32 Seccionamiento de la escena capturada para la ubicación espacial de objetos.

A B C

D E F
Fuente: (Autores)

(En la Figura 32 se observa la secuencia del barrido para la estimación espacial de los
objetos).

Mediante la imagen binarizada por capas y fragmentada por regiones, al momento de


observar el valor de cada uno de los pixeles, es posible definir la presencia de un objeto
(pixel en blanco) y su ubicación espacial en la imagen, además de definir qué región no
presenta ningún objeto, la cual será definida como transitable o libre de obstáculos, de

63
no cumplirse esta condición, la región será identificada como riesgosa, además,
mediante la ecuación característica es posible definir la distancia que cada capa
representa y de manera directa se referencia la distancia a la que están los objetos
encontrados en cada una de ellas. Debido a que en el mapa de profundidad el suelo
también es representado como un objeto, fue necesario aplicar el algoritmo para su
discriminación, en el momento de realizar la detección, explicado en la sección de
técnicas (Ver Figura 33).

Figura 33 Discriminación del suelo

F
uente: (Autores)

(En la Figura 33 se observa, A Imagen de referencia, B umbralización a 197 cm


aproximadamente, C umbralización a 223 cm aproximadamente. El funcionamiento del
algoritmo discriminante de suelo se observa en la Figura 34 A, donde el resultado del
vector referente a 197 cm varia su análisis en las posiciones 10, 11 y 12
respectivamente)

Por cada capa analizada se genera un vector de 16 posiciones donde cada posición
representa el análisis de cada uno de los fragmentos y si éste está libre de objetos o no;
en la última posición se almacena la distancia en la que se realizó el análisis. Dado que
se generan múltiple cantidad de capas (donde por cada una se crea un vector
correspondiente), fue necesario anexar cada una a una sola matriz.

Debido a que se pueden detectar objetos solo en secciones intermedias o superiores de


la imagen (Figura 32 A, secciones del 0 al 9), por prevención, la columna completa se
considera como riesgo potencial. Para tener en cuenta este parámetro, se tabulan los
resultados de los valores de las secciones que componen cada una de las columnas
para cada capa, seguidamente, los resultados se plasman en una matriz de 6
posiciones, como se observa en la Figura 34 B, donde las primeras 5 son los valores
tabulados obtenidos y la última posición es el valor de distancia, finalizando de esta
manera la implementación del algoritmo para la detección de obstáculos.

64
Figura 34 Matriz resultante de detección de objetos.

Fuente: (Autores)

Además del algoritmo para la detección de obstáculos, se planteó y aplicó el algoritmo


de trace planning (perteneciente al subsistema de elaboración de rutas), el cual recibe
la matriz resultante del algoritmo de detección de objetos y entrega un vector con la
información necesaria para generar las señales hápticas y audibles en el subsistema de
generación de alertas.

Figura 35 Vector de generación de alertas

Fuente: (Autores)

Para el subsistema de alerta punto ciego, se implementó el sensor de ultrasonido, el


cual también fue el encargado de tomar la variable de distancia del entorno para la
detección de objetos que estén dentro de un rango definido. Este proceso fue realizado
por el microcontrolador en el cual fue necesario: definir el ADC a 10 bit de resolución,
habilitar la comunicación serial del dispositivo, ajustando el baudrate a 9600 y el tamaño
de bits a 8, asignar una función de interrupción por flanco ascendente a un pin definido.
Establecido lo anterior, cada 250 milisegundos el microcontrolador toma muestra del
valor análogo entregado por el sensor y aplica la ecuación 31 para obtener la distancia
sensada por este. Debido a la sensibilidad que el sensor presenta fue necesaria la
aplicación del filtro de media móvil a los resultados obtenidos en cada iteración. El
resultado del filtro será enviado por el puerto serial tan pronto se detecte una
interrupción por flanco.

La configuración del puerto serial que posee la tarjeta de desarrollo se realizó por medio
de la librería serial, donde se activa el puerto 1 y se ajustan los mismos parámetros para
la comunicación, establecidos en el microcontrolador. Cada vez, que en el programa
principal se genera un pulso por un pin del GPIO hacia el pin de interrupción del
microcontrolador, y si el valor recibido por el puerto serial, indica la presencia de un
obstáculo a una distancia igual o menor a 80 cm, se genera inmediatamente una alerta
de riesgo la cual tiene la prioridad de ser reproducida durante la ejecución del programa
principal. Debido a que la alerta puede ser disparada cuando el usuario se acerque

65
intencionalmente a un objeto o que incluso se encuentre con otra persona, la alarma
solo sonará tres vece seguidas y luego se pausará, hasta que detecte un cambio de
distancia por encima del umbral.

Por último, la creación de las alertas audibles fue realizada mediante la librería gtts
(Google text to speach) con la cual, mediante la función (gTTS()) se configuró el texto y
el lenguaje al que se deseó reproducir la indicación definida en formato de audio.
Puesto que para su funcionamiento se necesitaba conexión constante a internet, se
identificó que esta limitación disminuiría la autonomía del prototipo, por ello, se
generaron y se almacenaron los audios con las palabras que conforman la alerta por
separado. La función utilizada para la reproducción del audio, extrae el dato en formato
string, en la posición 4 del vector obtenido del subsistema de elaboración de rutas, el
cual, al adicionarle la terminación .mp3 coincide con el nombre del audio a reproducir.

2.2.29 Verificación Y Validación Del Sistema Implementado Con


Personas En Condición De Discapacidad Visual.

Para realizar las pruebas se tuvo en consideración la restricción de que la cámara


Kinect debía estar a la altura del pecho, para lo cual se confeccionó un arnés con el fin
de ubicar la cámara en el lugar adecuado del usuario, ya que el sensor debe realizar la
medición de forma paralela a la cámara. Si esta condición no se cumple, los datos
registrados no son útiles para orientar el correcto desplazamiento del usuario. Para
facilitar la portabilidad de la plataforma de procesamiento Jetson Xavier NX, se adaptó
una maleta la cual contendrá los demás elementos que conforman el prototipo. Una
diadema para escuchar las alertas emitidas por el asistente, también forma parte del
prototipo (Ver Figura 36).

Figura 36 Asistente de navegación

A B
Fuente: (Autores)

Debido a la contingencia generada por la pandemia de COVID19, no fue posible realizar


las pruebas de funcionamiento del asistente de navegación con personas con
discapacidad visual, lo que dificultó contar con la presencia de la población objetivo. Por
lo anterior, las pruebas se realizaron con personas dispuestas a colaborar, de manera
espontánea, por la temática desarrollada en el prototipo.

Las pruebas se llevaron a cabo en el edificio de laboratorios de la Universidad


Pedagogica y Tecnologica de Colombia UPTC, las cuales se basaron en transitar una

66
pista de obstáculos, usando los tres modos de emisión de alertas por parte del
asistente (alertas hápticas, audibles e híbridas). Para la prueba se contó con la
presencia de 6 particiapantes entre 20 a 25 años de edad, quienes firmaron un
consentimiento informado que se presenta en el Anexo xx.

Antes de ejecutar las pruebas, las personas recibieron un tiempo de entrenamiento de


aproximadamente 2 minutos, para identificar las alertas. Dicho entrenamiento consistia
en caminar con el asistente puesto, con los ojos sin vendar y reconociendo las
indicaciones del asistente caminando libremente. Una vez que los colaboradores
consideraron que interpretaban de manera correcta las indicaciones del asistente, se les
vendaron los ojos para simular de esta manera la condición de limitación visual o
ceguera total y que se dio inicio a la prueba.

La prueba constaba en realizar 3 recorridos, con el fin de identificar cuál de los


diferentes modos de emisión de alertas daba mejor resultado para guiar al ususario
durante el trayecto. Para esto se le pedia al voluntario recorrer una pista inicial con un
modo de alerta en epecífico hasta llegar al final de dicha pista (Ver Figura 37). Una vez
llegara al final de la pista, se le pedía al voluntario, esperar unos minutos mientas se
modificaba, de manera caprichosa la ubicación de obstáculos en la ruta, para volver a
realizar el tránsito con el fin de testear un modo diferente de alerta al empleado en el
primer recorrido. Este proceso se repetía hasta haber testeado todos los modos de
emisión de alertas por parte de los voluntarios de la prueba.

Figura 37 Pista de obstaculos para las pruenas de validación

Fuente: (Autores)

Al terminar la prueba se pidió a cada participante diligenciar una encuesta en donde se


manifestara la opinión sobre el funcionamiento del asistente y la comodidad al portar el
dispositivo, entre otros aspectos. La encuesta realizada se puede ver en el Anexo xx.

4. PRESENTACIÓN Y ANÁLISIS DE RESULTADOS

4.1. Identificar Los Algoritmos De Visión Artificial Más Empleados En La


Detección De Obstáculos.

Para el desarrollo del proyecto se identificaron diferentes algoritmos para la detección


de objetos, dentro de los cuales se tuvieron en cuenta los algoritmos: YOLO en sus

67
diferentes versiones, MobileNet y watershed, con los que se realizaron las pruebas en
software obteniendo los resultados que se muestran en la sección 4.2.

4.2. Seleccionar Y Realizar Pruebas A Nivel Software Del Algoritmo De Detección


De Obstáculos Tomando Como Parámetro De Desempeño El Menor Tiempo De
Ejecución.

Partiendo de los algoritmos identificados, se realizaron pruebas a nivel de software en la


plataforma anteriormente escogida, con el fin de realizar la selección del algoritmo el
cual presentase menos tiempo de ejecución y mayor exactitud al momento de detectar
los objetos presentes en la imagen. Para la ejecución de estos algoritmos, fue necesaria
la instalación de las librerías: Tensorflow en su versión 8.0.1.6 y Pycuda en su versión
2021.1, garantizando su correcta y optimizada ejecución sobre CUDA.

 YOLO

Debido a que esta técnica cuenta con diversas versiones (cada una con distintas
cualidades), se implementaron aquellas facilitadas por el desarrollador que
estuvieran enfocadas a plataformas móviles con sistema operativo Linux.

Tabla 8 comparación del algoritmo YOLO en sus diferentes versiones

Versión Variante Cambios FPS

yolov2 No presenta 6 FPS

Yolo v2
yolov2-tiny Variación en tamaño y ejecución 4 FPS
de yolov2

yolov2-tiny-voc Variación en tamaño y ejecución 5 FPS


yolov2-voc

yolov3 No presenta 5 FPS

Yolo v3
yolov3- Adición de activación SELU 6 FPS
openimages
yolov3-tiny-prn No presenta 5 FPS

yolov3_5l Variación de tamaños de imagen 4 FPS


aceptados

yolov4 No presenta 6 FPS

yolov4-tiny.cfg Variación en tamaño y ejecución 8 FPS


de yolov4
Yolo v4
yolov4- Adición de híper parámetros 5 FPS
tiny_contrastive
yolov4-p5 Pre entrenado con COCO 5 FPS

Fuente (Darknet/Cfg at Master · AlexeyAB/Darknet · GitHub, 2015.)

Tal como se muestra en la Tabla 8, cada versión cuenta además con variantes,
las cuales poseen algún cambio ya sea en el tamaño, distribución o arquitectura
de la red neuronal utilizada, así como en parámetros de entrada o en el tamaño
o método del set de entrenamiento. Pese a esto, se observa que ninguna

68
muestra un rendimiento óptimo para el sistema, además de que no entregan con
la suficiente certeza ni en su totalidad la identificación de los objetos de interés.

 Mobilenet

En las pruebas realizadas con algoritmo MobileNet, se encontró que este, no se


ejecutaba de manera correcta sobre la plataforma, puesto que pocas veces se
lograba recibir respuesta de la detección realizada por parte del algoritmo. Las
pocas ocasiones en que la plataforma ejecutaba MobileNet, solo lograba trabajar
a 3 FPS lo cual lo hace muy lento para los requerimientos del proyecto.

 Algoritmo watershed modificado

Luego de la descripción y test del algoritmo planteado en la sección de


materiales y técnicas, se obtuvieron los tiempos de ejecución para cada uno de
sus procesos Tabla 9, los datos presentados son el resultado del procesamiento
realizado solo para un frame.

Tabla 9 Tiempos de ejecución total y de cada una de las etapas del algoritmo

Proceso Tiempo de ejecución (seg)


Reajuste 0,000036954
Umbralización 0,001707792
Operaciones Morfológicas 0,059593461
Etapa de detección 0,005396697
Total 0,066734904

Fuente: pruebas realizadas por los autores

Al interpretar la Tabla 9, el tiempo obtenido resulta ser satisfactorio para su


implementación en el proyecto, en comparación con los otros testeados; esto se debe a
que el procesamiento realizado por los algoritmos de IA está enfocado también en la
identificación de las características del objeto detectado, información que, si bien puede
ser útil, no es de importancia para el proyecto.

Con base en estos resultados, se realizó la selección del algoritmo mostrado en el


capítulo anterior en la sección llamada Revisión y selección de los algoritmos para la
detección de obstáculos.

4.3. Sintetizar El Algoritmo De Detección De Obstáculos Sobre El Kit De


Desarrollo Jetson Nano Mediante Cuda.

Para la síntesis del algoritmo, fue necesario tener en cuenta los requerimientos para su
implementación en CUDA, además del análisis por etapas presentados en el anterior
capitulo. La síntesis resultante es presentada en la sección de anexos.

Con el fin de comprender la mejora obtenida en cuanto a tiempos de procesamiento, se


elaboró una tabla comparativa, confrontando los resultados obtenidos por ARIZA et al.,
2012 (Ver Tabla 10), con los resultados del presente proyecto (Ver Tabla 11), donde se

69
observa que en cuanto a tiempos de ejecución por cada función principal se
presentaron mejoras notables, mejoras dadas principalmente por el proceso de
obtención del mapa de profundidad. Sin embargo, se observa que el número de
llamadas realizadas a las funciones por parte del prototipo anterior fueron mucho
menos, comparadas con las del prototipo presente, esto se puede deber a la diferencia
del funcionamiento del algoritmo además del software utilizado para su ejecución.

Tabla 10 Tiempos obtenidos del prototipo anterior soportado en CPU i3 core de segunda
generación
Funciones principales Llamadas Tiempo (seg)

Guide 1 0
Pre procesamiento 1 0,125
Obtención disparidad 1 0,078
Post procesamiento 1 0,623
Ruta 2 0,235
Sonido (comando voz) 1 1,44

Fuente: (ARIZA et al., 2012)

Tabla 11 Tiempos obtenidos del prototipo anterior soportado en CPU ARMv8.2 y GPGPU
NVIDIA Carmel
Funciones principales Llamadas Tiempo (seg)
Sistema de adquisición 1 0,0016152
Pre procesamiento 16 0,0647164
Detección 16 0,0064916
Post procesamiento 16 0,0014233
Generación alertas 1 0,0031030

Fuente: Pruebas realizadas por los autores

Otro aspecto a resaltar, es el tiempo total de ejecución, además de la cantidad de


pixeles procesados por cada prototipo (Ver Tabla 12). Teniendo en cuenta que el
método para la detección de los objetos en ambos prototipos es similar, se observa que
el prototipo presente, pese a procesar una mayor cantidad de pixeles, su tiempo de
ejecución es mejor, lo cual es un resultado esperado, debido a la mejora en cuanto a
hardware para el procesamiento realizado.

Tabla 12 Tabla de comparación de prototipos realizados por el grupo GIRA

Prototipo Resolución utilizada Cantidad de capas procesada Tiempo obtenido


prototipo anterior 320 x 240 4 2,73
prototipo presente 640 x 480 16 1,166

Fuente: Autores

70
4.4. Verificar La Efectividad Del Prototipo Y Validar Su Funcionamiento En
Condición De Discapacidad Visual

Como se mencionó en el capítulo anterior, para aplicar las pruebas de validación del
proyecto desarrollado, se realizó una serie de recorridos con la ayuda de 6
participantes, dichas experiencias fueron consignadas en una encuesta la cual arrojó los
siguientes resultados.

Un primer parámetro de evaluación del proyecto es la comodidad al momento de portar


el prototipo; para esto se les pidió a los participantes de la prueba valorar la comodidad,
en cuanto a portabilidad del prototipo, en una escala del 1 al 10 (1 muy incómodo y 10
bastante cómodo), dichas valoraciones fueron tabuladas para determinar la puntuación
dada por la mayoría de los encuestados, obteniendo como resultado la gráfica de Figura
36

Figura 38 Gráfica de comodidad al portar el prototipo (1 muy incómodo, 10 bastante cómodo).

Fuente Tomada de (Autores)

Como se observa, la mayor parte de las personas encuestadas expresaron que el


prototipo era muy cómodo al momento de portarlo, por lo cual no hubo ninguna
sugerencia de mejora en cuanto a comodidad y portabilidad.

El segundo parámetro a evaluar fue el modo de emisión de alertas. Teniendo en cuenta


que el prototipo cuenta con tres tipos diferentes de alerta (notas de audio, alertas
hápticas y alertas híbridas) y que los voluntarios realizaron el recorrido utilizando los
tres tipos de alerta, se indagó sobre la alerta de su preferencia y la razón de su
elección. Los resultados obtenidos de dichas pruebas se muestran en la Figura 39

Figura 39 Gráfica de preferencia de emisión de alertas

71
Fuente Tomada de (Autores)

Como resultado de este parámetro, el 66,7% de las personas manifestaron mayor


preferencia por la emisión de alertas hibridas (audibles y hápticas simultáneamente),
debido a que este modo proveía mayor información acerca del ambiente que rodeaba al
sujeto de prueba y le proporcionaba más seguridad en su desplazamiento.

Al usar únicamente las alertas hápticas, el 33,3% de las personas manifestaron que
este tipo de alertas dieron mejores resultados en comparación a las alertas audibles al
momento dar guía a los voluntarios. Y el 0% prefirió las alertas audibles únicamente,
puesto que según los voluntarios estas no brindaban la información necearía para
transitar de manera correcta la pista de obstáculos, además de ser confusa al momento
de dar la guía en la ruta trazada por el dispositivo.

Otro parámetro evaluado en las pruebas realizadas del funcionamiento del prototipo, fue
la facilidad de la interpretación de las alertas. Para esto se le pidió a los participantes
dar una calificación en cuanto a la facilidad de interpretación de las alertas emitidas por
el dispositivo después de un breve tiempo de entrenamiento para entenderlas, esta
valoración también se dio en un rango de 1 a 10 (1 muy difícil de interpretar, 10 muy
fácil de interpretar), los resultados obtenidos de esta calificación se muestran en la
gráfica de la Figura 40

Figura 40 Gráfica facilidad de interpretación de alertas por parte de los usuarios (1 muy difícil de
interpretar, 10 muy fácil de interpretar)

72
Fuente: (Autores)

Como muestra la Figura 40, el 33,33% de las personas encuestadas manifestó que la
interpretación de alertas era bastante fácil e intuitiva, al 33,4% de las personas
encuestadas le resultó muy difícil y confusa la interpretación de las indicaciones dadas
por el asistente; el porcentaje restante manifestó que las alertas que provenían del
dispositivo eran bastante intuitivas para interpretar, las personas que manifestaron que
las alertas emitidas por el asistente fueron confusas al momento de indicar la ruta a
transitar. Recomendaron que al menos las alertas audibles fueran más descriptivas,
además de dar más información acerca de la ruta a transitar; también expresaron que
sería bueno modificar las alertas hápticas para hacer más fácil su interpretción.

Además de los parámetros expuestos anteriormente, los asistentes encontraron en el


prototipo, una herramienta útil, que contaba con una buena reacción ante obstáculos
cercanos. Sin embargo, manifestaron que el prototipo tendría algunas limitaciones, ya
que algunos de ellos, no pudieron evitar colisionar, levemente, con algunos obstáculos.

También comentaron que si tuvieran la posibilidad de adquirir este tipo de dispositivos lo


harían, puesto que, a pesar de ser un prototipo sujeto a mejoras, consideran que es una
herramienta de fácil manejo que brinda una mayor independencia al momento de
movilizarse.

5. CONCLUSIONES

Se observó que la cámara Kinect es una buena alternativa como dispositivo para
adquisición de imágenes en este tipo de aplicaciones, sin embargo, esta presenta una
limitante debido a su tamaño, siendo lo que afecta directamente, la portabilidad del
dispositivo.

En cuanto al funcionamiento del proyecto, se observó que éste presentaba mayor


sensibilidad de detección de objetos hacia el lado derecho de la imagen, debido a que
los lentes de la cámara estaban ubicados hacia ese lado, no obstante, este factor no
tuvo grandes repercusiones en el funcionamiento del proyecto. Por otro lado, el
dispositivo no detecta el techo como obstáculo debido a la ubicación de la cámara y
tampoco detecta objetos que estén paralelos al lente, además de esto se encontró que
para usuarios con estatura promedio (1.70 cm), el dispositivo no detectaba objetos que
tuvieran una altura inferior a 87 cm, si estaban ubicados a una distancia entre los 10 cm

73
y 80 cm. Cabe resaltar que estas medidas pueden variar en función de la altura de la
persona que porte el asistente.

En cuanto a la cámara de profundidad en ambientes oscuros, tiene un buen


funcionamiento, puesto que logra realizar una buena captura de los objetos presentes
en la escena. También se observó que no se registraron tiempos muertos en la emisión
de alertas, brindando información constante al usuario, sin embargo, las alertas
generadas pueden llegar a ser confusas para algunas personas, o saturar de
información al usuario afectando directamente la movilidad de este.

Al hacer la comparación del prototipo realizado por (ARIZA et al., 2012) con el
propuesto en el trabajo, se observa una notoria mejoría, en la cantidad de información
que este capta para procesar y la velocidad en la que lo hace. Sin embargo, a pesar de
estas mejorías es evidente que aún se pueden realizar optimizaciones para reducir aún
más los tiempos de procesamiento con el objetivo de dar mayor fluidez al usuario al
momento de realizar la navegación.

En cuanto al algoritmo, este ofrece un buen resultado en la detección de objetos, pese a


esto esté no brinda información específica al usuario del entorno que lo rodea.

6. RECOMENDACIONES.

Se recomienda complementar el prototipo haciendo uso de diferentes tecnologías como


GPS y plataformas soportadas en este (GoogleMaps) para obtener un mejor trazado de
rutas y de esta manera dar una guía más amplia y exacta al usuario.

También se recomienda usar plataformas con mayor capacidad de cómputo, con el fin
de mejorar el tiempo de procesamiento de datos y ofrecer a los usuarios una respuesta
en tiempo real, mejorando así su movilidad.

Para trabajos futuros se recomienda tener en cuenta la ubicación de los lentes del
Kinect para el mejoramiento del dispositivo, o hacer uso de una cámara con
características más pequeñas, pero con un menor tamaño para mejorar la portabilidad
del dispositivo.

74
7. BIBLIOGRAFÍA

Ammar, A., Koubaa, A., Ahmed, M., Saad, A., & Benjdira, B. (2019). Aerial Images
Processing for Car Detection using Convolutional Neural Networks: Comparison
between Faster R-CNN and YoloV3. 1–37.
https://doi.org/10.3390/electronics10070820
ARIZA, J., PÉREZ, W., & TALERO, G. (2010). ELECTRONIC GUIDE SYSTEM FOR
BLIND PEOPLE IN CONTROLLED INDOOR ENVIRONMENTS. 9.
ARIZA, J., TALERO, G., & PEREZ, W. (2012). DISEÑO E IMPLEMENTACIÓN DE UN
SISTEMA ELECTRÓNICO DE GUÍA PARA PERSONAS INVIDENTES EN
ESPACIOS CERRADOS CONTROLADOS (BLIND GUIDANCE SYSTEM).
Unioversidad Pedagógica y Tecnológica De Colombia.
Baron, D., Lino, M., Memoria, S., & Sanchez, F. (2002). Fundamentos de
Procesamiento de Imágenes Evento: CONATEC 2002. In Conatec 2002.
universidad Áutonoma De Baja California.
Bourne, R. R. A., Steinmetz, J. D., Flaxman, S., Briant, P. S., Taylor, H. R., Resnikoff,
S., Casson, R. J., Abdoli, A., Abu-Gharbieh, E., Afshin, A., Ahmadieh, H., Akalu, Y.,
Alamneh, A. A., Alemayehu, W., Alfaar, A. S., Alipour, V., Anbesu, E. W., Androudi,
S., Arabloo, J., … Vos, T. (2021). Trends in prevalence of blindness and distance
and near vision impairment over 30 years: An analysis for the Global Burden of

75
Disease Study. The Lancet Global Health; Elsevier Ltd.
https://doi.org/10.1016/S2214-109X(20)30425-3
Chang, Q., & Maruyama, T. (2018). Real-Time Stereo Vision System: A Multi-Block
Matching on GPU. IEEE Access, 6, 42030–42046.
https://doi.org/10.1109/ACCESS.2018.2859445
Cortes Osorio, J., Urueña, W., & Mendoza Vargas, J. (2011). Técnicas alternativas para
la conversión de imágenes a color a escala de grises en el tratamiento digital de
imágenes. Scientia Et Technica, XVII(47), 207–212.
https://doi.org/10.22517/23447214.533
darknet/cfg at master · AlexeyAB/darknet · GitHub. (n.d.). Retrieved April 6, 2022, from
https://github.com/AlexeyAB/darknet/tree/master/cfg
De Frías, C., HERNÁNDEZ, J., & MARTINEZ, S. (2019). Visión artificial aplicada en la
identificación de objetos y su parametrización geométrica [Universidad Carlos III
DE Madrid]. https://e-archivo.uc3m.es/handle/10016/29643
Dobernak, N. A. (2015). procesamiento de imágenes. 42–72.
Fernández, R. (2020). Aplicación de filtros morfológicos en imágenes.
https://riunet.upv.es/bitstream/handle/10251/145903/Ruiz - Aplicación de filtros
morfológicos en imágenes.pdf?sequence=1
Giesteira, C., Zattera, A., & V. Godall, P. (2013). La Enseñanza de la música para
personas con discapacidad visual. In CienciaUAT (Vol. 2, Issue 2).
http://www.once.es/new/servicios-especializados-en-discapacidad-visual/
publicaciones-sobre-discapacidad-visual/nueva-estructura-revista-integracion/
copy_of_numeros-publicados/numero-64/la-ensenianza-de-la-musica-para-
personas-con-discapacidad-visual-elabo
gimp org. (2021). 8.2. Matriz de convolución. https://docs.gimp.org/2.6/es/plug-in-
convmatrix.html
Gonzalez, R. C., Woods, R. E., & Masters, B. R. (2009). Digital Image Processing, Third
Edition. In PEARSON (Ed.), Journal of Biomedical Optics (THIRD EDIT, Vol. 14,
Issue 2). https://doi.org/10.1117/1.3115362
Gpu, V., Arm, C., Gb, G. B. L., & Cpu, C. (2020). NVIDIA Jetson Xavier NX System-on-
Module. 1–40.
Guerrero, D., & Villaluenga, L. (2013). Microsoft Kinect. In Universidad Politécnica de
Catalunya. Universidad Politécnica de Catalunya.
GUERRERO, J. (2018). DISEÑO DE UN SISTEMA DE DETECCIÓN DE
OBSTACULOS EN AMBIENTES CERRADOS PRA PERSONAS CON CEGUERA
TOTAL EN SAN JUAN DE PASTO (Vol. 2, Issue 1) [Universidad Autónoma De
Nariño].
http://link.springer.com/10.1007/978-3-319-76887-8%0Ahttp://link.springer.com/
10.1007/978-3-319-93594-2%0Ahttp://dx.doi.org/10.1016/B978-0-12-409517-
5.00007-3%0Ahttp://dx.doi.org/10.1016/j.jff.2015.06.018%0Ahttp://dx.doi.org/
10.1038/s41559-019-0877-3%0Aht
Hameed, A., & Ahmed, H. A. (2019). Survey on indoor positioning applications based on
different technologies. 12th International Conference on Mathematics, Actuarial
Science, Computer Science and Statistics, MACS 2018 - Proceedings, 1–5.
https://doi.org/10.1109/MACS.2018.8628462
Hernández, M., Guerrero, G. D., Cecilia, J. M., García, J. M., Inuggi, A., Jbabdi, S.,
Behrens, T. E. J., & Sotiropoulos, S. N. (2013). Accelerating Fibre Orientation
Estimation from Diffusion Weighted Magnetic Resonance Imaging Using GPUs.
PLoS ONE, 8(4). https://doi.org/10.1371/journal.pone.0061892
Howard, A. G., Zhu, M., Chen, B., Kalenichenko, D., Wang, W., Weyand, T., Andreetto,
M., & Adam, H. (2017). MobileNets: Efficient Convolutional Neural Networks for
Mobile Vision Applications. http://arxiv.org/abs/1704.04861
Idrees, A., Iqbal, Z., & Ishfaq, M. (2015). An efficient indoor navigation technique to find
optimal route for blinds using QR codes. Proceedings of the 2015 10th IEEE

76
Conference on Industrial Electronics and Applications, ICIEA 2015, 690–695.
https://doi.org/10.1109/ICIEA.2015.7334197
Jadhav, R., Anand, D. S., Gupta, A. K., Khare, S., Sharma, D., & Tapadiya, P. (2020).
Real-Time Object Detection for Visually Challenged. Advances in Intelligent
Systems and Computing, 1311 AISC(Iciccs), 281–296. https://doi.org/10.1007/978-
981-33-4859-2_28
Klöckner, A. (2021). Home - pycuda 2021.1 documentation.
https://documen.tician.de/pycuda/
Li, B., Munoz, J. P., Rong, X., Chen, Q., Xiao, J., Tian, Y., Arditi, A., & Yousuf, M.
(2019). Vision-Based Mobile Indoor Assistive Navigation Aid for Blind People. IEEE
Transactions on Mobile Computing, 18(3), 702–714.
https://doi.org/10.1109/TMC.2018.2842751
Mainzer, D., & Zachmann, G. (2015). GPU Computing and Applications. In Springer
(Ed.), GPU Computing and Applications. https://doi.org/10.1007/978-981-287-134-
3_9
MatLab. (2022). Tipos de imagen - MATLAB & Simulink - MathWorks América Latina.
https://la.mathworks.com/help/matlab/creating_plots/image-types.html
MaxBotix Inc. (2021). HRLV - MaxSonar ® - EZ TM Series. 1–17.
https://www.maxbotix.com/
MICROCHIP. (2010). Datasheet - PIC12F629 PIC12F675.
Miño, J., & GÁMEZ, B. (2020). Diseño De Un Dispositivo De Apoyo Para La Movilidad
De Personas Con Discapacidad Visual. Universidad Técnica Del Norte.
Murata, M., Ahmetovic, D., Sato, D., Takagi, H., Kitani, K. M., & Asakawa, C. (2018).
Smartphone-based Indoor Localization for Blind Navigation across Building
Complexes. 2018 IEEE International Conference on Pervasive Computing and
Communications, PerCom 2018, 1–10.
https://doi.org/10.1109/PERCOM.2018.8444593
Nair, V., Tsangouri, C., Xiao, B., Olmschenk, G., Zhu, Z., & Seiple, W. (2018). A Hybrid
Indoor Positioning System for the Blind and Visually Impaired Using Bluetooth and
Google Tango. Journal on Technology and Persons with Disabilities, 6, 62–82.
Novoa, K., & Rojas, L. (2019). La importancia de la comunicación no verbal en el
desarrollo de la comunicación efectiva del relacionador público en la organización.
Universidad Viña Del Mar, 53(9), 1689–1699.
Nvidia. (n.d.). CUDA Overview. Retrieved August 14, 2021, from
http://cuda.ce.rit.edu/cuda_overview/cuda_overview.htm
Nvidia. (2020a). Jetson Xavier Nx.
Nvidia. (2020b). XAVIER NX The World ’ s Smallest AI Supercomputer for Embedded
and Edge Systems.
NVIDIA. (2017). Nvidia Tesla V100 GPU Volta Architecture. White Paper, v1.1, 53.
http://images.nvidia.com/content/volta-architecture/pdf/volta-architecture-
whitepaper.pdf%0Ahttp://www.nvidia.com/content/gated-pdfs/Volta-Architecture-
Whitepaper-v1.1.pdf
NVIDIA. (2019). Jetson-gpio: una biblioteca de Python que permite el uso de GPIO de
Jetson. https://github.com/NVIDIA/jetson-gpio
NVIDIA. (2020). DATA SHEET NVIDIA Jetson Nano System.
https://developer.nvidia.com/embedded/jetson-nano-developer-kit
NVIDIA. (2021). Cuda C Programming Guide. Programming Guides, September, 1–261.
OBANDO, V., & SOTOMAYOR, N. (2015). DISEÑO Y CONTRUCCIÓN DE UN
SISTEMA DE ORIENTACIÓN PARA AYUDA EN LA MOVILIDAD DE PERSONAS
INVIDENTES. Escuela Politecnica Nacional.
Osma-Ruiz, V., Godino-Llorente, J. I., Sáenz-Lechón, N., & Gómez-Vilda, P. (2007). An
improved watershed algorithm based on efficient computation of shortest paths.
Pattern Recognition, 40(3), 1078–1090.
https://doi.org/10.1016/j.patcog.2006.06.025

77
Owens, J. D., Houston, M., Luebke, D., Green, S., Stone, J. E., & Phillips, J. C. (2008).
GPU Computing. GPGPU Programming for Games and Science, 33–120.
https://doi.org/10.1201/b17296-8
Parissaki, B., & OTERO, J. (2019). Desarrollo E implementación De Una Arquitectura
Hardware Para El Calculo De Mapas De Profundidad Para Visión Estereoscipica.
Universidad Politecnica De Madrid.
Patel, C. T., Mistry, V. J., Desai, L. S., & Meghrajani, Y. K. (2018). Environment for
Visually Impaired People. 2018 Second International Conference on Intelligent
Computing and Control Systems (ICICCS), Iciccs, 1–4.
Plikynas, D., Žvironas, A., Budrionis, A., & Gudauskis, M. (2020). Indoor navigation
systems for visually impaired persons: Mapping the features of existing
technologies to user needs. Sensors (Switzerland), 20(3), 18.
https://doi.org/10.3390/s20030636
Pulido, G. (2020). Las estadísticas, un insumo necesario. | Instituto Nacional para
Ciegos. https://www.inci.gov.co/blog/las-estadisticas-un-insumo-necesario
Rafa Docencia. (n.d.). Operaciones morfologicas . Retrieved September 14, 2021, from
http://eia.udg.es/~rafa/docencia/morfologia.pdf
Romero, D., Rodríguez, F., & Pérez, M. (2018). Diseño de un Sistema Portátil para la
Detección de Obstáculos por medio de Kinect, como Apoyo a Personas con
Limitaciones Visuales [Universidad Distrital Francisco José De Caldas].
http://repository.udistrital.edu.co/bitstream/11349/14039/3/RodriguezFernandezWil
marFelipe2018.pdf
Sabrent. (2021). Sabrent USB Aluminum External Stereo Sound Adapter | Black (AU-
EMCB) | AU-EMCB. https://www.sabrent.com/product/AU-EMCB/usb-aluminum-
external-stereo-sound-adapter-black/
Sadi, M. S., Mahmud, S., Kamal, M. M., & Bayazid, A. I. (2014). Automated walk-in
assistant for the blinds. 1st International Conference on Electrical Engineering and
Information and Communication Technology, ICEEICT 2014.
https://doi.org/10.1109/ICEEICT.2014.6919037
SEGURA, O., & LOZADA, P. (2019). DISEÑO Y CONSTRUCCIÓN DE UN SISTEMA
ELECTRÓNICO PARA PERSONAS NO VIDENTES COMO AYUDA PARA EL
CRUCE DE LAS CALLES URBANAS BASADO EN EL PROCESAMIENTO DE
IMÁGENES. Escuela Superior Pilitecnica De Chimborazo.
Sekhar, V. C., Bora, S., Das, M., Manchi, P. K., Josephine, S., & Paily, R. (2016).
Design and Implementation of Blind Assistance System Using Real Time Stereo
Vision Algorithms. Proceedings of the IEEE International Conference on VLSI
Design, 2016-March, 421–426. https://doi.org/10.1109/VLSID.2016.11
Simoes, W. C. S. S., Da Silva, L. M., Da Silva, V. J., & De Lucena, V. F. (2018). A
Guidance System for Blind and Visually Impaired People via Hybrid Data Fusion.
Proceedings - IEEE Symposium on Computers and Communications, 2018-June,
1261–1266. https://doi.org/10.1109/ISCC.2018.8538480
SONZA, M., STERPONE, L., RODRIGUEZ, J., DU, B., & PENAGLIA, C. (2019). Master
’ s Degree in Embedded Systems Master ’ s Thesis Reliability issues in GPGPUs
(Issue December). Politecnico Di Torino.
Takizawa, H., Yamaguchi, S., Aoyagi, M., Ezaki, N., & Mizuno, S. (2015). Kinect cane:
an assistive system for the visually impaired based on the concept of object
recognition aid. Personal and Ubiquitous Computing, 19(5–6), 955–965.
https://doi.org/10.1007/s00779-015-0841-4
Tapu, R., Mocanu, B., Bursuc, A., & Zaharia, T. (2013). A smartphone-based obstacle
detection and classification system for assisting visually impaired people.
Proceedings of the IEEE International Conference on Computer Vision, 444–451.
https://doi.org/10.1109/ICCVW.2013.65
Texas, I. (2015). DUAL H-BRIDGE MOTOR DRIVER. August.
Vanegas, E., & MARULANDA, J. (2017). Consideraciones de diseño para un circuito de

78
disparo de tiristores en un rectificador trifásico totalmente controlado. Universidad
Tecnológica De Pereira.
Vasquez, R., & Cardona, A. (2019, April). Dispositivos de asistencia para la movilidad en
personas con discapacidad visual: una revisión bibliográfica. Revista Politécnica,
15(28), 107–116. https://doi.org/10.33571/rpolitec.v15n28a10
Villa, O., Stephenson, M., Nellans, D., & Keckler, S. W. (2019). NVBit: A dynamic binary
instrumentation framework for NVIDIA GPUs. Proceedings of the Annual
International Symposium on Microarchitecture, MICRO, 372–383.
https://doi.org/10.1145/3352460.3358307
Villegas, A., Asenjo, R., & Plata, O. (2015). Memoria Transaccional Hardware en
Memoria Local de GPU.
World Health organization. (2010). Global data on visual impairments 2010.
https://www.who.int/emergencies/diseases/novel-coronavirus-2019?
gclid=CjwKCAjw092IBhAwEiwAxR1lRkDG_cAxXX61_wj1cEluDWtKYOrbEsyxU3nF
9UpkLXhpMSIR8A780RoC540QAvD_BwE
Xu, F., & Fujimura, K. (2003). Human detection using depth and gray images.
Proceedings - IEEE Conference on Advanced Video and Signal Based
Surveillance, AVSS 2003, 115–121. https://doi.org/10.1109/AVSS.2003.1217910
Zhang, H., & Ye, C. (2016). An indoor navigation aid for the visually impaired. 2016
IEEE International Conference on Robotics and Biomimetics, ROBIO 2016, 467–
472. https://doi.org/10.1109/ROBIO.2016.7866366
Zhang, Z. (2012). Microsoft kinect sensor and its effect. IEEE Multimedia, 19(2), 4–10.
https://doi.org/10.1109/MMUL.2012.24

79

También podría gustarte