diseño de sistema de adquisición y procesamiento de

35
Facultad Ingeniería Carrera de Ingeniería Electrónica Trabajo de Investigación “Diseño de sistema de adquisición y procesamiento de imágenes utilizando plataformas reconfigurables FPGA para el reconocimiento de obstáculos en espacios interiores” Autor: Luis Enrique Tejada Villagaray – 1533383 Para obtener el Grado Académico de Bachiller en: Ingeniería Electrónica Lima, Julio 2019

Upload: others

Post on 25-Jun-2022

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Diseño de sistema de adquisición y procesamiento de

Facultad Ingeniería

Carrera de Ingeniería Electrónica

Trabajo de Investigación

“Diseño de sistema de adquisición y procesamiento de imágenes utilizando

plataformas reconfigurables FPGA para el reconocimiento de obstáculos en espacios

interiores”

Autor: Luis Enrique Tejada Villagaray – 1533383

Para obtener el Grado Académico de Bachiller en:

Ingeniería Electrónica

Lima, Julio 2019

Page 2: Diseño de sistema de adquisición y procesamiento de

(firma)

Page 3: Diseño de sistema de adquisición y procesamiento de

RESUMEN

En el presente trabajo de investigación académica se utiliza el uso de visión artificial, esto es

procesamiento de imágenes e inteligencia artificial, para determinar la identificación de

obstáculos en interiores mediante la adquisición de imágenes en conjunto con una red neuronal

multicapa con propagación hacia atrás sobre una arquitectura FPGA. Para ello, se propone una

arquitectura que aproveche las capacidades de las plataformas reconfigurables FPGA, es decir

la implementación de un hardware optimizado para el procesamiento en paralelo, la alta

concurrencia y el rendimiento. Bajo estas condiciones se propone el uso de arquitecturas

basadas en arreglos sistólicos y se compara con soluciones basadas en plataformas x86 y

MATLAB.

Page 4: Diseño de sistema de adquisición y procesamiento de

DEDICATORIA

Dedico este trabajo a mi familia, quienes me motivaron, apoyaron y fueron mi soporte durante

mi formación. Gracias por su paciencia, enseñanzas y guía incondicional.

Page 5: Diseño de sistema de adquisición y procesamiento de

ÍNDICE

• INTRODUCCIÓN 1

• CAPÍTULO 1: ANTECEDENTES DE LA INVESTIGACIÓN. 2

1.1 Descripción de la realidad 2

1.2 Objetivos de la investigación 3

1.2.1 Objetivo general 3

1.2.2 Objetivos específicos 3

1.3 Alcance de la investigación 4

1.3.1 Delimitación espacial 4

1.3.2 Delimitación temporal 4

1.4. Justificación e importancia 4

• CAPÍTULO 2: MARCO TEÓRICO. 5

2.1 Problemas similares y soluciones empleadas 5

2.2 Bases teóricas 6

2.2.1 Visión artificial 6

2.2.2 Adquisición de imágenes 6

2.2.3 Procesamiento de la imagen 7

2.2.4 Espacio de color: escala de grises 8

2.2.5 Espacio de color: YCbCr 9

2.2.6 Filtro espacial 9

2.2.7 Filtro mediana 10

2.2.8 Operaciones morfológicas 11

2.2.9 Redes neuronales 11

Page 6: Diseño de sistema de adquisición y procesamiento de

• CAPÍTULO 3: PLANTEAMIENTO DE LA SOLUCIÓN. 12

3.1 Adquisición de la imagen y descripción del hardware utilizado 12

3.1.1 Protocolo de comunicación 13

3.1.2 Desarrollo de la arquitectura de comunicación en VHDL 14

3.1.2.1 Baudrate 14

3.1.2.2 Debounce 15

3.1.2.3 Edge detector 15

3.2 Procesamiento y convolución de la imagen 16

3.2.1 Convolución de la imagen 16

3.2.2 Convolución de la imagen con máscaras múltiples 17

3.2.2.1 Paralelismo vertical y horizontal 17

3.3 Arquitectura de procesamiento paralelo 19

3.3.1 Arquitectura sistólica 20

• CAPÍTULO 4: ANÁLISIS DE LOS RESULTADOS DE INVESTIGACIÓN. 21

4.1 Planteamiento de evaluación 21

4.2 Análisis de los resultados de investigación 21

• CONCLUSIONES Y RECOMENDACIONES. 24

• BIBLIOGRAFÍA 25

• ANEXO 1: FICHA DE TAREA DE INVESTIGACIÓN. 27

Page 7: Diseño de sistema de adquisición y procesamiento de

1

INTRODUCCIÓN

El trabajo de investigación académica tiene como principal objetivo el desarrollo de un sistema

que permita a personas con una degradación visual severa reconocer la presencia de objetos u

obstáculos a distancia mediante la adquisición de imágenes y procesamiento por un FPGA. Para

ello, se empleará la visión artificial, que consiste en la adquisición de imágenes, su

procesamiento, extracción de información y clasificación, de modo que permita la toma de

decisiones. En este proyecto de investigación, la recolección de información se realizará con la

cámara integrada en el ordenador y el procesamiento de imágenes y su interpretación con un

FPGA (Field-Programmable Gate Array).

El FPGA o matriz de puertas programables es un dispositivo electrónico que permite la

implementación de arquitecturas diseñadas mediante un lenguaje de descripción de hardware;

el lenguaje seleccionado para el proyecto de tesis planteado es VHDL debido a la experiencia

previa que se posee en dicho lenguaje y a la disponibilidad de módulos para este. Además, los

FPGA son dispositivos versátiles debido a que se puede modificar una arquitectura ya

implementada múltiples veces sobre el mismo módulo, de este modo, se puede mejorar un

prototipo sin tener que adquirir un módulo adicional. La ventaja de procesar la información con

un FPGA es la computación en paralelo, el cual presenta un aumento en la velocidad de

procesamiento de información en comparación con soluciones basadas en CPUs con

arquitectura x86.

La importancia de investigar este tema radica en el impacto social que supone mejorar la calidad

de vida del grupo humano con impedimento visual significando, según el INEI, el 5,26% del total

de la población del Perú en el 2016 [1]. Además, es necesario generar tecnologías que

favorezcan la inclusión de las personas con discapacidad a la sociedad y brindar equidad en

oportunidades para que logren su plena libertad como ciudadanos.

Page 8: Diseño de sistema de adquisición y procesamiento de

2

CAPÍTULO 1: ANTECEDENTES DE LA INVESTIGACIÓN

El presente capítulo tiene como objetivo brindar una introducción al proyecto de investigación

a realizar. Además, se busca evidenciar los logros que se pretenden alcanzar.

1.1 Descripción de la realidad

En el Perú la población con discapacidad estimada en el año 2016 es de aproximadamente 5,26%

de la población total de dicho año. Además, según documentación del INEI del 2016 al analizar

la participación en el mercado laboral de la población de 14 y más años con y sin discapacidad,

los datos recolectado muestran que el 45,2% del grupo con discapacidad forma parte de la PEA,

en contraste con el 73,4% del grupo sin discapacidad que forma parte de la PEA; estos datos

revelan una diferencia de 28,3% entre ambos grupos [1]. A pesar de estos datos las políticas de

estado a favor de la inclusión en nuestro país no han sido suficientes. Se han desarrollado tesis

relacionados con la captación de imágenes y su posterior procesamiento como la desarrollada

por Elvis Franks Condori Arias titulada “Reconocimiento y clasificación de objetos usando

inteligencia artificial basada en SVM y visión estereoscópica” [2] sin embargo no se ha

encontrado información de trabajos que hayan sido llevados a producción. Una de las causas

podría ser el escaso apoyo de parte del estado a la investigación y desarrollo de tecnología en

años anteriores.

En el Perú, en setiembre de 2018 El Congreso de la Republica realizó modificaciones al Decreto

Legislativo 1417 garantizando el derecho de licencia para asistencia médica y rehabilitación de

las personas con discapacidad [3], intentando con ello promover la inclusión de dichas personas.

Sin embargo, dicho decreto no se enfoca en el tratamiento o en soluciones que permitan la

inclusión de dichas personas en la sociedad.

A nivel internacional se busca la inclusión de las personas con limitaciones físicas a la sociedad

mediante los avances tecnológicos. El National Vision Research Institute of Australia ha

desarrollado un ojo biónico (bionic eye) el cual mediante estimulaciones eléctricas emitidas

desde cada píxel en la cámara hasta electrodos posicionados en los nervios detrás del ojo

permite al paciente distinguir entre la presencia de luz y la ausencia de ella [4]. Sin embargo, en

nuestro país, el acceso a estos avances se limita a personas con recursos económicos elevados,

excluyendo, de este modo, a casi la totalidad de las personas afectadas.

Page 9: Diseño de sistema de adquisición y procesamiento de

3

1.2. Objetivos de la investigación

1.2.1. Objetivo general

• Diseñar e implementar un Sistema de adquisición y procesamiento de imágenes

utilizando plataformas reconfigurables FPGA para el reconocimiento de obstáculos en

espacios interiores.

1.2.2. Objetivos específicos

• Realizar una selección adecuada de imágenes y arquitectura que permita el posterior

procesamiento y facilite la continuación de las etapas siguientes.

• Desarrollar los algoritmos y arquitectura que permitan el filtrado, segmentación y

extracción de información relevante a partir de las imágenes adquiridas.

• Implementar los algoritmos y arquitectura de redes neuronales para el reconocimiento

de obstáculos.

• Los parámetros permiten determinar la efectividad y rapidez del prototipo en FPGA en

contraposición a una solución basada en x86/x64.

Page 10: Diseño de sistema de adquisición y procesamiento de

4

1.3 Alcance de la investigación

El proyecto de investigación académica se propone el diseño e implementación de un sistema

que reconozca obstáculos en espacios interiores con buena iluminación, ya sea artificial como

natural. Con ello, el objetivo es mejorar la orientación espacial de las personas con discapacidad

visual severa.

1.3.1 Delimitación espacial

El proyecto de investigación se limitará al uso del prototipo dentro de los ambientes de la

Universidad Tecnológica del Perú, ubicada en el Distrito de Lima. En específico serán de utilidad

los espacios con buena iluminación, ya sea con luz natural o artificial.

1.3.2 Delimitación temporal

El presente proyecto cubrirá un periodo de 3 meses desde abril hasta inicios de julio del año

2019, comprendiendo 14 semanas en total.

1.4. Justificación e importancia

En los últimos años en el Perú, la discapacidad que afecta al mayor número de personas es la

discapacidad visual y las personas con esta condición han ido aumentando progresivamente.

Asimismo, las tecnologías que se utilizan para mejorar la calidad de vida de las personas con

discapacidad visual, como el uso del bastón o perros lazarillos, resultan ineficientes tanto en

alcance como en el reconocimiento del entorno [5] a nivel de independencia que estas

herramientas brindan al usuario. Por ello, se considera que el presente trabajo de investigación

resultará útil como base para la elaboración de un hardware dedicado sobre un FPGA o, ya que

se trata de una arquitectura, para desarrollarla a gran escala sobre una placa de circuito impreso

(PCB).

Las plataformas FPGA suponen una ventaja debido a la posibilidad de procesar múltiples hilos

de trabajo simultáneamente, dependiendo de la arquitectura empleada significa un

procesamiento igual o mayor a la de una GPU con un costo mucho menor de producción.

Page 11: Diseño de sistema de adquisición y procesamiento de

5

CAPÍTULO 2 MARCO TEÓRICO

Para desarrollar el “Diseño de sistema de adquisición y procesamiento de imágenes utilizando

plataformas reconfigurables FPGA para el reconocimiento de obstáculos en espacios interiores”

resulta necesario conocer problemas similares y definir las bases teóricas fundamentales para

iniciar el proyecto.

2.1. Problemas similares y soluciones empleadas

Castillo Ortiz (2015), en su tesis por optar el título de Ingeniero Mecatrónico justifica que, para

su sistema de visión artificial, se requiere de un suavizado adecuado de las imágenes adquiridas.

En específico se encontró mejores resultados al optar por una ventana de tamaño k = 15 para el

filtro Gaussiano. Asimismo, en malas condiciones de luminosidad Castillo indica que para el pre-

procesamiento, la técnica de erosión resulta eficaz para desvanecer y reducir el ruido de fondo,

[6] esto es sumamente útil ya que el ruido es un efecto indeseado para la siguiente etapa de

segmentación de la imagen.

Alcántara Santiago (2007) en su tesis por la Maestría en Ciencias Computacionales concluye que

para realizar el filtrado espacial de imágenes el hardware reconfigurable (FPGA) resulta una

buena opción tanto para la realización de prototipo como su implementación para sistemas

neuromórficos [7]. En específico, las redes neuronales y la arquitectura sistólica, dando como

resultado el procesamiento de imágenes en tiempo real.

Aranguren Zapata y Vela Asin (2018) en su tesis por el título de Ingeniero Electrónico realizan un

sistema de seguimiento de objetos mediante procesamiento digital de imágenes, en dicho

trabajo concluyen que, para procesos como la corrección Gamma en las imágenes adquiridas, el

tiempo de ejecución para un hardware de video dedicado (GPU) es mucho menor que el tiempo

utilizado por el procesador (CPU) e indican una mejora promedio de 87.15% [8]. De lo anterior

se colige que la utilización de una tarjeta de video (procesamiento en paralelo mediante CUDA)

resulta más eficiente para la operación matricial. Además, informan de la factibilidad de

implementar la segmentación de imágenes utilizando su espacio de color, en dicho trabajo se

utilizó la distancia euclidiana como medida de similitud. Esta implementación en la tarjeta de

video se realizó ya que se tenía que evaluar la crominancia en las matrices. Finalmente, culminan

indicando que el tiempo de ejecución de la misma operación en el GPU disminuye en un 59.31%

a comparación del CPU [6].

Page 12: Diseño de sistema de adquisición y procesamiento de

6

2.2 Bases teóricas.

2.2.1 Visión artificial.

La visión artificial es una rama de la inteligencia artificial que permite la adquisición y

procesamiento de información obtenida a partir de imágenes digitales mediante técnicas

adecuadas. Además, la visión artificial comprende la adquisición de imágenes, almacenamiento

de la información y el proceso, análisis e interpretación de los resultados.

2.2.2 Adquisición de imágenes.

La adquisición de imágenes corresponde a los métodos a seguir para una recolección de

información adecuada. Esta etapa es de suma importancia ya que al obtener imágenes con el

menor ruido posible libera de tratamientos adicionales y reduce el error.

Figura 2 Esquema de visión artificial.

Elaboración propia

Según la figura 2 luego de la adquisición de imágenes sigue la etapa procesamiento, la cual, tiene

como objetivo filtrar imperfecciones o ruido que haya sido adicionado a la imagen ya sea por

imperfecciones en los sensores de la cámara o ruido tipo sal y pimienta como se aprecia en la

figura 3.

Adquisición

de

imágenes

Procesamiento

digital de

imágenes

Segmentación

Extracción

de

características

Entorno de

interiores

Inteligencia

artificial

Clasificación

Resultados

Page 13: Diseño de sistema de adquisición y procesamiento de

7

Figura 3 Ruido tipo sal y pimienta.

Elaboración propia

Posteriormente la segmentación se encarga de dividir la imagen preprocesada y separarla a una

región de interés de modo que se obtiene una imagen simplificada y con información relevante.

2.2.3 Procesamiento de la imagen.

Dependiendo de las aplicaciones o de las condiciones en la que se adquiera la imagen el

preprocesamiento aplicado puede variar desde uno muy intenso hasta uno inexistente. La

función de esta etapa es de atenuar el posible ruido y de resaltar los datos de interés como se

observa en la figura 4.

Figura 4 Esquema de preprocesamiento.

Elaboración propia

Conversión a

escala de

grises o

YCbCr

Filtro espacial

Histograma

Umbralización

Imagen

Operaciones

morfológicas

Imagen

binarizada

Page 14: Diseño de sistema de adquisición y procesamiento de

8

2.2.4 Espacio de color: Escala de grises.

La escala de grises como indica el nombre es una imagen que está compuesta por tonos de

grises. La utilidad de este formato es que necesita de menos información para cada pixel.

Usualmente la resolución de cada pixel de este formato es de 8 bits, es decir el nivel de

intensidad de cada pixel puede variar entre 0 y 255 [9]. En la figura 5 se muestran escalas de

grises de diferente resolución de bits.

Figura 5 Escala de grises de 1, 2, 3, 4, 5 y 8 bits de resolución.

Fuente: https://theasc.com/magazine/april05/conundrum2/image11.html

Es importante mencionar que se puede convertir una imagen en escala RGB (rojo, verde y azul)

a otra imagen en escala de grises mediante un promedio ponderado de la intensidad de cada

píxel, aunque no hay un estándar para esta ponderación se puede expresar la conversión del

modo siguiente:

𝑔𝑟𝑎𝑦𝑠𝑐𝑎𝑙𝑒(𝑥, 𝑦) = 𝛼 ∙ 𝑓(𝑥, 𝑦, 𝑅) + 𝛽 ∙ 𝑓(𝑥, 𝑦, 𝐺) + 𝛾 ∙ 𝑓(𝑥, 𝑦, 𝐵) (1)

𝛼 + 𝛽 + 𝛾 = 1 (2)

Donde x e y representan la posición del pixel en la matriz y R, G o B representan la capa que

corresponde a rojo, verde o azul. La ecuación (2) asegura que la ecuación (1) sea un promedio

ponderado.

Page 15: Diseño de sistema de adquisición y procesamiento de

9

2.2.5 Espacio de color: YCbCr.

Este espacio de color se encuentra conformada por Y (luminancia) y las componentes Cb y Cr

que corresponden a la crominancia diferencia de azul y diferencia de rojo respectivamente. La

intensidad de cada pixel es de 8 bits, pero a diferencia de la escala de grises, este espacio posee

tres capas diferentes: Y, Cb y Cr. La transformación lineal que se hace para poder convertir una

imagen en formato RGB a otra en formato YCbCr se expresa en la figura 6 [10]. Esta

transformación resulta útil para identificar tonos de piel en una imagen dada.

Figura 6 Escala de grises de 1, 2, 3, 4, 5 y 8 bits de resolución.

Fuente: https://docs.opencv.org/ref/master/de/d25/imgproc_color_conversions.html

2.2.6 Filtro espacial.

El filtro espacial para el proyecto realizado corresponde a las técnicas que buscan remover los

ruidos que puedan contener las imágenes adquiridas y con ello aminorar la carga computacional

posterior. El método para seguir es del recorrido pixel a pixel de toda la matriz y aplicarle un

elemento estructural (kernel) [11] mostrado en la figura 7.

Page 16: Diseño de sistema de adquisición y procesamiento de

10

Figura 7 Recorrido pixel a pixel de un filtro espacial dado.

Fuente: Rangachar, Schunk (1995). Machine visión McGraw Hill

2.2.7 Filtro mediana.

Es un filtro lineal que permite remover satisfactoriamente el ruido tipo sal y pimienta presente

es una imagen. Consiste en evaluar un pixel en función de los vecinos, en este caso 3x3,

ordenándolos de menos a mayor y seleccionando el valor correspondiente a la mediana de dicho

arreglo [12] tal como se observa en la figura 8.

Figura 8 Filtro mediana centrado en el pixel de intensidad 150.

Fuente: https://homepages.inf.ed.ac.uk/rbf/HIPR2/median.htm

Page 17: Diseño de sistema de adquisición y procesamiento de

11

2.2.8 Operaciones morfológicas

Una operación morfológica es aquella que cambia la forma de los pixeles, específicamente se

utiliza para eliminar erosionar o dilatar [13] pequeñas partículas en la imagen como se muestra

en la figura 9.

Figura 9 Imagen original, imagen erosionada e imagen dilatada.

Fuente: http://www.dspguide.com/ch25/4.htm

2.2.9 Redes neuronales

Una red neuronal, en este contexto, es un modelo de inteligencia por computadora que se basa

en el comportamiento de las neuronas. Este tipo de inteligencia artificial aprende y se corrige a

sí mismo mediante la propagación hacia atrás y resulta sumamente útil al diferenciar patrones

y características [14]. Un esquema representativo se aprecia en la figura 10.

Figura 10 Esquema de red neuronal con entradas, capas ocultas y salidas.

Fuente: https://artfromcode.wordpress.com/2017/04/18/red-neuronal-en-python-con-

numpy-parte-1/

Page 18: Diseño de sistema de adquisición y procesamiento de

12

CAPÍTULO 3 PLANTEAMIENTO DE LA SOLUCIÓN

En primer lugar, es necesario desarrollar un sistema de comunicación entre el computador, que

brindará las imágenes, y el FPGA encargado de realizar el procesamiento de la imagen adquirida.

Para ello, en el presente capítulo se describirá el método seleccionado para su realización.

3.1. Adquisición de la imagen y descripción de hardware utilizado.

La adquisición de imagen se realizará mediante la webcam integrada por el ordenador Dell

Inspiron 5578 2 in 1 como se muestra en la figura 11.

Figura 11. Dell Inspiron 5578 2 in 1

Fuente: https://www.dell.com/pe/p/inspiron-15-5578-2-in-1-laptop/pd?ref=PD_Family

Dicho ordenador cuenta con un sistema operativo Windows 10 Home de versión 1809 y

procesador Intel Core i7-7500U 2.70 GHz – 2.90 GHz. Además de 8.00 GB de memoria RAM

instalada.

Además de servir para la adquisición de imágenes mediante su webcam integrada será

necesaria como punto de referencia por su plataforma x64, para ejecutar MATLAB, en

específico, las simulaciones se realizarán con MATLAB R2018a y el desarrollo sobre FPGA se

realizará con el software Quartus Prime 18.0. El FPGA que ha de recibir las imágenes para su

procesamiento es el Terasic DE10Lite que se aprecia en la figura 12.

Page 19: Diseño de sistema de adquisición y procesamiento de

13

Figura 12. FPGA Terasic DE10Lite

Fuente: http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&No=1021

El FPGA mencionado cuenta con 64MB de memoria SDRAM, 16 bits de bus de datos, 1conector

GPIO de 2x20, además de un conector R3 que permite la conexión a un Arduino Uno [15].

3.1.1 Protocolo de comunicación.

El protocolo de comunicación entre ambos dispositivos es sumamente importante ya que

permitirá la transferencia de información de la PC hacia el FPGA. El protocolo que se ajusta a las

necesidades para transmitir a modo de prototipo una imagen única para su posterior

procesamiento es UART (Universal Asynchronous Reciever - Transmitter). En la figura 13 se

muestra un diagrama de funcionamiento de dicho protocolo.

Figura 13. Protocolo de comunicación UART.

Fuente: https://www.solitontech.com/uart-protocol-validation-service/

Page 20: Diseño de sistema de adquisición y procesamiento de

14

El protocolo UART tiene 8 bits de datos con un bit de paridad (opcional) y 2 bits de control los

cuales son el bit de inicio (start) y el bit de parada (stop). Dicho enlace se reconoce cuando el

voltaje cambia de 1 lógico a 0 lógico indicando el inicio de la comunicación. El bit de paridad

tiene como objetivo reconocer si los datos transmitidos han sufrido de alguna corrupción

durante su envío; esto lo logra cambiando su valor lógico siendo ‘0’ si el número total de unos a

transmitir es par. Por otro lado, si el número de unos a transmitir es impar el valor lógico del bit

de paridad es ‘1’ [16]. Aunque es un método sencillo que no garantiza la fiabilidad del enlace,

suele ser implementado como mínimo de seguridad en la comunicación.

3.1.2. Desarrollo de la arquitectura de comunicación en VHDL.

En Quartus Prime 18.0 se procedió a desarrollar de forma modular el controlador de

comunicación UART como se puede apreciar en la figura 14.

Figura 14. Módulos empleados para el controlador UART en el FPGA

Fuente: Elaboración propia.

La arquitectura implementada se desarrolló en los módulos siguientes: BaudRate, Debuonce,

EdgeDetector y Serial.

3.1.2.1 Baudrate: Este módulo tiene la finalidad de ajustar el baudiaje o la cantidad de bits por

segundo a recibir, internamente tiene un divisor de frecuencia que opera a partir de los 50MHz

proporcionados por el FPGA. El esquemático se puede observar en la figura 15.

Figura 15. Esquemático del módulo BaudRate.

Fuente: Elaboración propia

Page 21: Diseño de sistema de adquisición y procesamiento de

15

3.1.2.2 Debounce: El propósito del módulo Debounce es de filtrar falsas activaciones durante

la activación de la comunicación UART. Es decir, su finalidad es asegurar de que se recibió un

bit ‘0’ de activación de comunicación y no un error por falso contacto. El esquemático se

puede observar en la figura 16.

Figura 16. Esquemático del módulo Debounce.

Fuente: Elaboración propia.

3.1.2.3 EdgeDetector: Su nombre indica que es un detector de flancos y su misión es identificar

si se ha recibido una variación en los niveles de voltaje, siendo flanco de bajada si la variación

de voltaje ha sido de 5V a 0V o flanco de subida si el voltaje ha variado de 0V a 5V. El esquemático

se muestra debajo, en la figura 17.

Figura 17. Esquemático del módulo EdgeDetector.

Fuente: Elaboración propia.

Page 22: Diseño de sistema de adquisición y procesamiento de

16

3.2 Procesamiento y convolución de la imagen

En el dominio espacial, utilizado para el presente trabajo de investigación, se utiliza la

convolución para filtrar por regiones la imagen. Para ello, se utiliza máscaras de diversos

tamaños o dimensiones que recorrerán la matriz imagen original y la transformarán.

3.2.1 Convolución de la imagen

La convolución sobre una imagen está basada en operaciones de ventanas las cuales son una

suma de la multiplicación de cada uno de los píxeles comprendidos en la ventana de la imagen

de entrada por los coeficientes del kernel que le corresponden de acuerdo con la posición que

este ocupa en la imagen. La ecuación de convolución se puede apreciar en la ecuación 3.

𝐺𝑅(𝑥, 𝑦|𝑎, 𝑓0, 𝜃) = ∑

𝑘

𝑙=−𝑘

∑ 𝑓(𝑥 + 𝑙, 𝑦 + 𝑚)𝐻

𝑘

𝑚=−𝑘

(𝑙, 𝑚) (3)

Donde x e y son las posiciones de la matriz sobre las cuales se aplicará la convolución y l y m son

las posiciones dentro del kernel. La función f es la imagen original y la función H es el kernel que

se aplicará. En la figura 18 se muestra de forma gráfica.

Figura 18 Máscara y ventana sobre una matriz imagen.

Elaboración propia.

Al aplicar la convolución sobre la imagen se computa píxel por píxel y ello supone una gran

cantidad de iteraciones, dependiendo del tamaño de la imagen. Suponiendo una matriz imagen

de tamaño M x N y con un kernel de dimensión w x w (valor mínimo de w = 3) se obtiene la

relación de las iteraciones en la tabla siguiente:

Page 23: Diseño de sistema de adquisición y procesamiento de

17

Operación Iteraciones

Multiplicar 𝑤2 × 𝑀 × 𝑁

Suma (𝑤2 − 1) × 𝑀 × 𝑁

Multiplicación y suma (2𝑤2 − 1) × 𝑀 × 𝑁

Figura 19. Tabla de costo computacional de la convolución en términos de iteraciones

necesarias para dicha operación.

De la figura 19 se puede asumir M y N como valores constantes, puesto que el tamaño de la

imagen se mantendrá invariante para todos los casos de procesamiento. Sin embargo, la

variación de la dimensión del kernel a convolucionar tendrá un impacto cuadrático en el costo

computacional.

3.2.2 Convolución de la imagen con máscaras múltiples.

En procesamiento de imágenes es usual utilizar más de una convolución antes de obtener la

imagen filtrada o deseada por el investigador. Por ello, se podría asumir que para aplicar

múltiples convoluciones a una imagen implicaría esperar a que un kernel termine de

convolucionar la matriz imagen para que el segundo kernel pueda operar y así sucesivamente

hasta finalizar con el tratamiento. Esta forma secuencial de abordar el problema, aunque sea

intuitivo, implica un desperdicio de recursos del sistema tanto en iteraciones como en el uso de

la memoria disponible. Aunque su uso en plataformas como ordenadores x86 y x64 no suelen

presentar mayores inconvenientes por la alta frecuencia de sus procesadores y gran

disponibilidad de memoria existente, conforme se aumenten la cantidad de máscaras a

convolucionar el costo computacional se verá impactado proporcionalmente a la cantidad de

kernels diferentes.

Un acercamiento diferente a este inconveniente es el paralelismo, el cual se muestra en la figura

20 y puede presentar dos sentidos: vertical u horizontal.

3.2.2.1 Paralelismo vertical y horizontal.

En el paralelismo en dirección vertical se busca tener ventanas situadas en la misma columna,

pero desplazada una de otra, es decir, una ventana puede estar mas arriba o más abajo que las

demás. Del mismo modo, en el paralelismo horizontal las ventanas se sitúan en las mismas filas,

pero en diferentes posiciones con respecto a otras [17]. Es importante notar que en ambos

paralelismos las ventanas tienen píxeles en común.

Page 24: Diseño de sistema de adquisición y procesamiento de

18

Figura 20. Paralelismo vertical y horizontal con 3 ventanas procesadas en paralelo

Fuente: Alcántara Santiago (2007). Procesamiento y arquitecturas paralelas para la

convolución múltiple.

Para la comprensión de este método se analizará el paralelismo vertical y el recorrido de

convolución que se emplea se muestra en la figura 21.

Figura 21. Paralelismo vertical, dirección del recorrido.

Fuente: Alcántara Santiago (2007). Procesamiento y arquitecturas paralelas para la

convolución múltiple.

De la figura mencionada se puede observar que la ruta de lectura es de arriba hacia abajo

sobre toda una columna para después continuar con la columna adyacente hacia la derecha.

De este modo, cuando una ventana recorra verticalmente la matriz y llegue al punto más bajo

Page 25: Diseño de sistema de adquisición y procesamiento de

19

de la misma, al avanzar a la columna siguiente se estaría operando en paralelo una porción de

la fila, por ello al disponer de varias ventanas, este procedimiento logra que juntamente con la

ruta de lectura vertical se pueda computar porciones de filas; consiguiendo el objetivo de

paralelizar ambas dimensiones.

3.3. Arquitectura de procesamiento paralelo.

Para desarrollar un sistema eficiente que permita convolucionar y con ello el procesamiento de

imágenes no basta con algoritmos adecuados, sino que es igual de importante desarrollar una

arquitectura de hardware específica que permitan su máximo aprovechamiento.

Como se ha mencionado anteriormente el procesamiento paralelo es una denominación a

diversas técnicas que permiten la ejecución de tareas con mayor eficiencia y así reducir la

cantidad de instrucciones necesarias para el computador. Sin embargo, estas técnicas resultan

insuficientes si sólo se emplean sobre el software, por ello es importante concentrarse en el

desarrollo de una arquitectura de hardware que sea compatible con los conceptos de

paralelismo planteados. Dentro de las arquitecturas dedicadas al paralelismo destacan SIMD y

Systolic Arrays [18], de estos se explorará en el último en el siguiente apartado.

Page 26: Diseño de sistema de adquisición y procesamiento de

20

3.3.1 Arquitectura sistólica.

H.T. Kung (1982) plantea que las arquitecturas sistólicas pueden permitir múltiples

computaciones para cada acceso de memoria y que ello puede acelerar drásticamente las

velocidades de ejecución sin incrementar los requisitos de Entrada/Salida, es decir el ancho de

banda de transmisión de datos [19].

En primer lugar, es preciso identificar a lo que el nombre de arquitectura sistólica hace

referencia, sístole es el movimiento que hace el corazón de contraerse para expulsar la sangre

para irradiar al organismo, no de ciclo en ciclo sino de una única vez. Bajo esa premisa los datos

almacenados en la memoria han de utilizarse múltiples veces dentro de un mismo proceso para

optimizar al máximo la velocidad de procesamiento, independientemente de la frecuencia del

proceso. En la figura 22 se presenta un diagrama simplificado de un elemento de proceso en una

arquitectura secuencial versus una arquitectura sistólica. Se observa que múltiples elementos

de proceso (PE) aumentan la eficiencia de procesamiento, ya que reduce el número de accesos

a memoria para extraer nueva información.

Figura 22. Arquitectura de arreglos sistólicos (abajo).

Fuente: H.T. Kung (1982). Why systolic arrays?

Page 27: Diseño de sistema de adquisición y procesamiento de

21

CAPÍTULO 4 ANÁLISIS DE LOS RESULTADOS DE INVESTIGACIÓN

4.1 Planteamiento de evaluación.

Con la información descrita en los capítulos anteriores se desarrolló una simulación de arreglo

sistólico en C++ del operador Sobel, el cual es una técnica para la detección de bordes sobre una

imagen, y se enfrentó a un algoritmo equivalente basado en bucles o método burbuja en

MATLAB y a la instrucción específica de MATLAB para el operador Sobel (Edge).

4.2 Análisis de los resultados de investigación.

En la figura 23 se observa la imagen original en blanco y negro, esta imagen se ha tomado en los

interiores de un edificio con buena iluminación.

Figura 23: Imagen en blanco y negro.

Fuente: Elaboración propia.

En la figura 24 se observa la imagen luego de ser procesada por la simulación de arreglo sistólico

junto con las técnicas de paralelismos y la solución brindada por MATLAB.

Page 28: Diseño de sistema de adquisición y procesamiento de

22

Figura 24: Sobel mediante arreglo sistólico (izquierda) y sobel mediante función de MATLAB

(derecha).

Fuente: Elaboración propia.

Es importante resaltar que las matrices resultantes han sido graficadas en MATLAB, y los tiempos

de medición de ejecución son del procesamiento de las matrices al ser tratadas por el operador

SOBEL mediante las técnicas descritas.

Figura 25: Arreglo sistólico (gris), MATLAB edge(naranja) y MATLAB burbuja (azul)

Fuente: Elaboración propia.

0

10

20

30

40

50

60

70

80

90

0 10 20 30 40 50

Cu

adro

s p

or

segu

nd

o

Tiempo

Cuadros por segundo del algoritmo de Sobel sobre una imagen de 1040x780

Series1 Series2 Series3

Page 29: Diseño de sistema de adquisición y procesamiento de

23

Estos algoritmos se repitieron de modo que permitan medir la tasa de cuadros por segundo los

cuales resultaron en una media de 59 fps para el algoritmo basado en arreglos sistólicos, 33 fps

para la función edge de MATLAB y 23 para el algoritmo burbuja implementado en MATLAB. Los

resultados se muestran en gráfico de dispersión y en la media en un gráfico de barra en las

figuras 25 y 26, respectivamente.

Figura 25: Media de cuadros por segundo.

Fuente: Elaboración propia.

23.85

33.01

59.63

0 10 20 30 40 50 60 70

MATLAB For Loop

MATLAB Edge instruction

C Systolic Array

Media de cuadros por segundo del algoritmo de Sobel sobre una imagen de 1040x780

Page 30: Diseño de sistema de adquisición y procesamiento de

24

CONCLUSIONES

De la información presentada en el capítulo anterior se concluye que la arquitectura de arreglos

sistólicos resulta ser efectiva para su implementación sobre un hardware FPGA debido a la

capacidad de éste de desarrollar arquitectura reprogramable y procesar datos en paralelo.

La convolución y multiplicación matricial resultan ser herramientas sumamente útiles tanto en

procesamiento de imágenes como para la red neuronal multicapa con propagación hacia atrás

ya que, se benefician en gran medida de un hardware y arquitectura con procesamiento paralelo

lo que hace que estas técnicas sean ideales para su implementación sobre un FPGA. Además, la

rapidez de computación con respecto a un procesamiento equivalente en MATLAB, según las

simulaciones presentadas, evidencian un rendimiento superior.

La detección de obstáculos mediante la red neuronal puede ser simulada en un lenguaje de

medio a alto nivel (C, C++) para luego ser implementada sobre un FPGA, teniendo los pesos de

cada perceptrón ya entrenado en la simulación.

Page 31: Diseño de sistema de adquisición y procesamiento de

25

BIBLIOGRAFÍA

[1] Instituto Nacional de Estadística e Informática, Perú: Caracterización de las condiciones de

vida de la población con discapacidad (2016). INEI, 2016.

https://www.inei.gob.pe/media/MenuRecursivo/publicaciones_digitales/Est/Lib1456/libro.pdf

[2] Condori Arias, E. F. (2013). Reconocimiento y clasificación de objetos usando inteligencia

artificial basada en SVM y visión estereoscópica (Tesis de pregrado). Universidad Nacional de

Ingeniería, Lima, Perú.

[3] Diario El Peruano (2018). https://busquedas.elperuano.pe/normaslegales/decreto-

legislativo-que-promueve-la-inclusion-de-las-persona-decreto-legislativo-n-1417-1691026-6/

[4] National Vision Research of Australia. http://www.nvri.org.au

[5] Parra Farfán, M. (2014). Diseño de dispositivo basado en ultrasonido para desplazamiento

de personas en condición de discapacidad visual (Tesis de pregrado). Pontificia Universidad

Católica del Perú, Lima, Perú

[6] Castillo Ortiz, Jonathan (2015). Sistema de visión artificial humanoide para reconocimiento

de formas y patrones de objetos, aplicando redes neuronales y algoritmos de aprendizaje

automático (Tesis de pregrado). Universidad Ricardo Palma, Lima, Perú

[7] Alcántara Santiago, Sayde. (2007). Arquitectura sistólica para el filtrado espacial de

imágenes en múltiples orientaciones (Tesis de posgrado). Instituto Nacional de Astrofísica,

Óptica y Electrónica, Puebla, México

[8] Aranguren Zapata, A.; Vela Asin, T. (2018). Sistema de seguimiento de objetos mediante

procesamiento digital de imágenes aplicado al control de robots autónomos (Tesis de

pregrado). Universidad Peruana de Ciencias Aplicadas, Lima, Perú

[9] The American Society of Cinematographers.

https://theasc.com/magazine/april05/conundrum2/image11.html

[10] Open Source Computer Vision.

https://docs.opencv.org/ref/master/de/d25/imgproc_color_conversions.html

[11] Jain, Ramesh & Kasturi, Rangachar & Schunck, Brian. (1995). Machine Vision.

Page 32: Diseño de sistema de adquisición y procesamiento de

26

[12] School of Informatics, University of Edinburgh.

https://homepages.inf.ed.ac.uk/rbf/HIPR2/median.htm

[13] Steven W. Smith. 1997. The scientist and engineer's guide to digital signal processing.

California Technical Publishing, USA.

[14] Art From Code https://artfromcode.wordpress.com/2017/04/18/red-neuronal-en-python-

con-numpy-parte-1/

[15] Terassic. http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&No=1021

[16] Solitontech. https://www.solitontech.com/uart-protocol-validation-service/

[17] Alcántara Santiago, Sayde. (2007). Arquitectura sistólica para el filtrado espacial de

imágenes en múltiples orientaciones (Tesis de posgrado). Instituto Nacional de Astrofísica,

Óptica y Electrónica, Puebla, México

[18] Asano, S., Maruyama, T., & Yamaguchi, Y. (2009). Performance comparison of FPGA, GPU

and CPU in image processing. FPL 09: 19th International Conference on Field Programmable

Logic and Applications, 126–131. https://doi.org/10.1109/FPL.2009.5272532

[19] Kung, H. T. (1982). Why Systolic Architectures? https://doi.org/0018-9162/82/0100-0037

Page 33: Diseño de sistema de adquisición y procesamiento de

27

ANEXO 1

Page 34: Diseño de sistema de adquisición y procesamiento de

28

Page 35: Diseño de sistema de adquisición y procesamiento de

29

5. Esta Ficha de Tarea de Investigación ha sido aprobada por: