Desempeño de Raspberry Pi 3 aplicando filtros de imagen con diferentes métodos de recorrido
Enviado por Johan Diaz Diaz • 4 de Octubre de 2018 • Documentos de Investigación • 1.779 Palabras (8 Páginas) • 114 Visitas
Desempeño de Raspberry Pi 3 aplicando filtros de imagen con diferentes métodos de recorrido
RESUMEN: El propósito de este trabajo es cuantificar y analizar el desempeño que tiene un sistema embebido, específicamente la Raspberry Pi 3, para aplicar un filtro por medio de convolución y con ayuda de la librería OpenCV para Python. Se usaron 3 variaciones del algoritmo para recorrer la matriz imagen a la hora de aplicar el filtro, y se aplicaron 2 tipos de filtro a 4 diferentes tamaños de imagen, que fueron 256x256, 512x512, 1024x1024 y 2048x2048 pixeles.
PALABRAS CLAVE: filtros de imagen, arquitectura de computadores, Raspberry, Python, diseño de experimentos (DoE), algoritmos, complejidad, localidad espacial, localidad temporal.
1. INTRODUCCIÓN
Los filtros que se aplican a las imágenes son el resultado de una convolución de matrices, una es la matriz de la imagen a la que se le aplicará el filtro y la otra es la matriz kernel. La matriz kernel es la que contiene los valores necesarios para que al hacer el proceso de convolución la imagen sufra los cambios deseados, estos pueden ser la aplicación de un filtro detector de bordes o el desenfoque de la imagen.
Para realizar la convolución de las 2 matrices ya mencionadas, se pueden implementar diferentes algoritmos. Estos algoritmos pueden realizar los recorridos requeridos para las operaciones de modos distintos, entre las diferentes modalidades de este recorrido se pueden encontrar los recorridos por filas, por columnas o un recorrido con desenroscado de bucles. Con este proyecto se pretende analizar cuál de los algoritmos es la mejor opción a utilizar para 2 tipos de filtros (Edge detection y Gaussian blur) y para los 4 tamaños de imagen mencionados.
2. METODOLOGÍA
2.1 HIPOTESIS
¿La forma de recorrer una imagen/matriz afecta el desempeño teniendo en cuenta la cantidad de datos y el tipo de filtro?
Filtro:
H0: Las medias del tiempo de ejecución son iguales para diferentes valores en la matriz kernel (diferente filtro).
H1: Por lo menos una de las medias del tiempo de ejecución es diferente para distintos valores en la matriz kernel.
Tamaño de matriz:
H0: Las medias del tiempo de ejecución son iguales para distintos tamaños de matriz.
H1: Por lo menos una de las medias del tiempo de ejecución es diferente para distintos tamaños de matriz.
Versiones de algoritmo:
H0: Las medias de tiempo de ejecución son iguales para distintas versiones de algoritmo.
H1: Por lo menos una de las medias de tiempo de ejecución es diferente para distintas versiones de algoritmo.
En la toma del tiempo se tiene en cuenta que el tiempo total de la ejecución del algoritmo no es un dato útil si se toma tal cual, ya que se desea analizar el efecto de los factores y el factor tamaño de la matriz de por si tiene un tiempo mayor de ejecución. Para el análisis se utiliza entonces el tiempo normalizado, que representa el tiempo del ciclo más interno, es decir que se toma el tiempo que demora la realización de una sola de las convoluciones que se requieren para la realización del filtro.
Para la correcta aplicación del filtro sobre la imagen se debe llevar a cabo una convolución por cada pixel de la imagen, por tanto, si se desea aplicar un filtro a una imagen de 256x256 se tendrían que realizar 65536 convoluciones. Teniendo en cuenta esto se realiza entonces una división del tiempo total de ejecución del algoritmo por la cantidad de convoluciones que se hicieron es decir n2, y se tiene el tiempo normalizado con el cual se podrá analizar de manera correcta a todos los factores que se van a estudiar.
3. OBJETIVOS
3.1 OBJETIVOS GENERALES
Lo que se busca con este trabajo principalmente es cuantificar y explicar los efectos en el desempeño que tiene la forma que tiene un algoritmo de recorrer la matriz, el tamaño de la matriz, y los valores con los que se trabaje.
3.2 OBJETIVOS ESPECIFICOS
- Interpretar y analizar los datos obtenidos, su relación con el proyecto y sus respectivas conclusiones.
- Explicar de forma clara las diferencias de los algoritmos según cantidad de datos y recorrido.
- Comparar y relacionar los diferentes factores que intervienen en el proceso de análisis.
4. IDENTIFICACIÓN DE FACTORES
4.1 FACTORES PRIMARIOS
Cantidad de datos: Los algoritmos que se estudian en este trabajo manejan matrices, las cuales tienen dimensiones iguales, manejan el mismo número de filas como de columnas o dicho en otras palabras son matrices cuadradas.
Los niveles de este factor son los siguientes:
256 – 512 – 1024 – 2048
Tipo de filtro: Los filtros que se seleccionaron para este estudio presentan estructura de valores diferente, ya que en uno se utilizan números enteros mientras que en el otro se hace uso de números racionales.
Los niveles de este factor son los siguientes:
Edge detection - Gaussian blur
Tipo de algoritmo: Para este trabajo los algoritmos analizados tienen distintos modos de operar. se encuentra el algoritmo que recorre la matriz por filas, el algoritmo que recorre la matriz por columnas y por último el algoritmo que aplica el desenroscado de bucles.
Los niveles de este factor son respectivamente:
Filas – Columnas – Unrolling loop
4.2 FACTORES SECUNDARIOS
Sistemas embebidos: Este trabajo en un inicio se planteó para realizarse en 2 tipos diferentes de Raspberry, la Raspberry Zero y la Pi 3. Debido a que los integrantes del equipo no disponían del tiempo suficiente para llevar a cabo las pruebas en la Raspberry Zero se decidió no tomar los sistemas embebidos como un factor primario, sino que se ejecutarían los algoritmos solamente en la Pi 3 pasando entonces a ser un factor secundario.
Sistema operativo de la máquina: El sistema operativo usado para este proyecto es Raspbian el cual es una distribución del sistema operativo GNU/Linux basado en Debian y creado específicamente para que sea compatible con la Rapsberry.
5. DISEÑO EXPERIMENTAL
Se realizó un diseño factorial completo para poder analizar las respuestas que hay en cada factor. De esta manera se puede estudiar más a fondo el efecto que produce el cambiar algún factor. La cantidad de tratamientos que se tomaron para realizar el análisis fueron 24. De cada tratamiento se tomaron 3 muestras para un total de 72 muestras.
...