Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Proyecto: Visión artificial con una Raspberry Pi, con el objetivo de obtener el tiempo de respuesta
al ejecutar algoritmos basados en operadores morfológicos y la transformada de Hough para el
reconocimiento de objetos.
Profesor:
M. C Felipe Santiago Espinosa
Alumnos:
Antonio Madera Abisai
García Pacho Jorge Simei
Carrera:
Ingeniería en Mecatrónica
Fecha:
08 de Septiembre de 2021
Esta tarjeta tiene un software de open source, que significa “código abierto”, por lo que se
puede ser modificado a través de un programador y puede trabajarse en cualquier sistema
operativo incluso en últimas versiones de Windows (Escalante et al., 2019).
Aunque los límites entre las tipologías de productos de visión artificial estén muy poco
definidos, podemos hablar de diversas categorías y destacar algunas características
relevantes de cada una de ellas:
Sensores de visión
Son la tecnología más avanzada en relación a sensores de visión y destacan por su potencia
de cálculo capaz de dar solución a cualquier necesidad de visión industrial-, resolución de
imagen y fácil instalación. Esto facilita que sus aplicaciones sean muy variadas, sin
importar actividad o fase de la cadena de producción. Su aspecto más innovador reside en
su capacidad de procesamiento, que le dota de almacenamiento y disponibilidad para
conectar con otros sistemas automatizados, gracias a los mecanismos de entrada y salida.
En el caso de los sistemas de visión integrados, el sensor y la memoria de la cámara se
ubican en un cabezal remoto de tamaño muy reducido. El procesador también se ubica en
remoto, facilitando la conectividad y manejo de los elementos.
Sistemas de visión avanzados
Son muy similares a los sistemas de visión integrados, pero cuentan con un hardware más
sofisticado y completo, lo que mejora las funciones relacionadas con el software y
procesamiento de datos. Su aplicación está ideada para tecnologías y máquinas
automatizadas de mayor complejidad, por lo que en muchas ocasiones se requiere que este
sistema sea implementado durante la fabricación de la maquinaria.
Una vez iniciado el sistema, debemos presionar en la parte superior izquierda el símbolo
del sistema raspbian y buscar el terminal. Toda instalación se hará a través de esta forma
por medio de comandos que en breve se describirán (véase figura a).
Ahora, es necesario instalar unos prerrequisitos del sistema, por lo que, en la misma
terminal, ingresaremos las siguientes líneas de código. Nota: Se pueden copiar y pegar:
sudo apt-get update
sudo apt-get install build-essential tk-dev libncurses5-dev libncursesw5-dev libreadline6-
dev libdb5.3-dev libgdbm-dev libsqlite3-dev libssl-dev libbz2-dev libexpat1-dev liblzma-dev
zlib1g-dev
Estas órdenes instalarán las librerías necesarias para la instalación de Python 3.6.0 en
nuestro sistema Raspbian de nuestra Raspberry PI. El segundo paso es descargar Python
3.6.0 de la web oficial (https://www.python.org/ftp/python/3.6.0 ... 6.0.tar.xz) o bien desde
la terminal (crearemos el directorio /home/pi/python-3.6.0), nos colocamos en este
directorio desde la terminal y ejecutamos la siguiente instrucción:
cd /tmp
wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tar.xz
sudo tar xf Python-3.6.0.tar.xz
sudo su
cd Python-3.6.0
sudo ./configure && make && make altinstal
Las líneas de código anteriores lo que harán es descargar Python e instalarlo, deben ser
ejecutado línea a línea. Para comprobar la instalación, digitaremos python3.6 –version en
la terminal del sistema. El mensaje que debe devolvernos es Python 3.6.0. Listo, hemos
instalado Python en Raspberry PI.
Una vez instalados los paquetes necesarios, ahora vamos a instalar la versión de OpenCV
4.1.0.25. Debemos decir que se hizo pruebas con otras versiones, pero se tenía dificultades
al instalarlas debido a paquetes faltantes, sin embargo, buscando información con la versión
4.1.0.25 se tuvo muy buenos resultados. Usamos pip3 install opencv-contrib-python (véase
figura d), pero la línea de código a ingresar en la terminal es:
pip3 install opencv-contrib-python==4.1.0.25
En caso de que marque algún error porque no se encontró la versión, desplegará una lista de
versiones disponibles y volvemos a poner la misma línea de comando anterior y
posteriormente, cambiamos la versión 4.1.0.25 por alguna versión cercana disponible.
Para comprobar que se ha instalado OpenCV, digitamos python3 en el terminal e
importamos OpenCV para finalmente imprimir la versión instalada (véase figura e):
import cv2
cv2.__version__
Una vez que se ha instalado open cv, vamos a verificar si ya podemos dar uso de las
librerías propias de Open CV. Por lo que agregamos el siguiente código a nuestro editor de
texto cualquiera y lo ejecutamos:
El código lo que haces, abrir una imagen y poder visualizarlo. Si queremos cambiar la
imagen a abrir, sólo sustituimos ‘ave.jpg’ por el nombre de nuestra imagen con su
extensión como png, jpg. Para nuestro caso, probamos el código mencionado y se ejecutó
sin errores, por lo que se comprueba que python y open cv están funcionando
correctamente.
Está todo listo para poder comenzar a trabajar con visión artificial con ayuda de python y
open cv.
import cv2
imagen=cv2.imread(‘eve.jpg’)
cv2.imshow(‘Prueba’, imagen)
cv2.waitKey(0)
cv2.destroyAllWindows()
Apertura
Para el caso de nuestro proyecto, la imagen de entrada, será un video en la cual se visualiza
a dos objetos circulares (véase figura 7). La idea es que se pueda determinar la distancia
que hay entre un centro del otro objeto.
Observaciones de nuestra fotografía a analizar. Cabe resaltar que, puede ser tanto imagen
como video. Para nuestro caso, será un vídeo continuo, por lo que será necesario ir
guardando nuestro código en la misma carpeta para evitar posibles lecturas del mismo. La
razón por las cuales se ocupó un video, en vez de la proyección misma de la cámara, es
porque realizando pruebas nos dimos cuenta que la cámara no dispone de la suficiente
resolución para hacer la captura de imágenes y poder procesarlas. Al momento de correr
código, no detectaba nada, a esa distancia, se volvía borroso y por lo tanto indetectable, por
lo que se decidió continuar con un video capturado con un teléfono celular.
Implementación en la Raspberry Pi
Para la implementación de los dos algoritmos previamente mencionados, fue necesario dar
uso del módulo de una cámara de la
Raspberry Pi. Se armó una estructura
provisional que se utilizó para mantener
fija la cámara con vista superior. Nuestro
prototipo se muestra en la figura 8.
Como se observa en el prototipo
implementado, se ubicó la cámara web en
una tablita horizontal con vista hacia abajo,
por lo que la cámara visualizaba lo
siguiente (véase figura 9):
Figura 8.- Prototipo implementado
Resultados
Optimización de código
Implementación en plataforma real a utilizar
Utilización de una cámara con mejor resolución
Creación de una interfaz gráfica para su utilización
Bibliografía
Área de Ingeniería de Sistemas y Automática. (2005). Segmentación. Transformada de
Hough. Obtenido de http://www4.ujaen.es/~satorres/practicas/practica4_vc.pdf
Arévalo, V., González, J., & Ambrosio, G. (2003). LA LIBRERÍA DE VISIÓN ARTIFICIAL
OPENCV APLICACIÓN A LA DOCENCIA E INVESTIGACIÓN. España. Obtenido
de http://mapir.isa.uma.es/varevalo/drafts/arevalo2004lva1.pdf
aula21. (S.F.). aula21. Obtenido de Centro de información técnica para la industria:
https://www.cursosaula21.com/que-es-python/
Canul Arcero, L., López Martínez, J., & Narváez Díaz, L. (2015). Algoritmo rápido de la
transformada de Hough para detección de líneas rectas en una imagen. Yucatán,
México. Obtenido de
http://redi.uady.mx:8080/bitstream/handle/123456789/711/Algoritmo%20r
%C3%A1pido%20de%20la%20transformada%20de%20Hough%20para%20detecci
%C3%B3n%20de%20l%C3%ADneas%20rectas%20en%20una%20imagen.pdf?
sequence=1
Challenger Pérez, I., Diaz Ricardo, Y., & Becerra García, R. A. (2014). El lenguaje de
programación python. Ciencias Holguín, 14. Obtenido de
https://www.redalyc.org/pdf/1815/181531232001.pdf
contaval. (18 de Febrero de 2016). contaval. Obtenido de contaval:
https://www.contaval.es/que-es-la-vision-artificial-y-para-que-sirve/
del Valle Hernández, L. (Febrero de 2021). programarfacil.com. Obtenido de
https://programarfacil.com/blog/vision-artificial/opencv-raspberry-pi/
Escalante Cardoma, D. S., & Vargas Ospina, D. M. (2019). Raspberry pi: la tecnología
reducida en placa. Cali, Colombia. Obtenido de
https://repository.usc.edu.co/bitstream/handle/20.500.12421/4250/RASPBERRY
%20PI.pdf?sequence=3&isAllowed=y#:~:text=La%20Raspberry%20Pi%20es
%20un,acceso%20a%20la%20tecnolog%C3%ADa%20inform%C3%A1tica.
Infaimon. (28 de Octubre de 2019). infaimon.com. Obtenido de
https://blog.infaimon.com/sistemas-de-vision-artificial-tipos-aplicaciones/
Mogena Soler, A. (SF). Informe de OpenCV y Tratamiento de Imágenes. Obtenido de
http://www.informatica-juridica.com/wp-content/uploads/2014/01/Informe_OpenC
V_Tratamiento_Imagenes.pdf
Nava Acosta, A., Enríquez Aguilera, F., Cota Ruiz, J., Sin fuentes de la Hoya, E., & Rivas
Perea, P. (Octubre 2014). Detección de Círculos Basada en la Orientación de
Bordes y Triángulos Rectángulos. México.
Solano, G. (19 de Junio de 2020). OMES. Obtenido de omes-va.com:
https://omes-va.com/como-instalar-opencv-en-raspberry-pi/
Solectro. (SF). Curso de Raspberry Pi desde cero. Obtenido de
https://solectroshop.com/img/cms/Productos%20DICIEMBRE/Gu%C3%ADa
%20de%20Raspberry%20Pi%20desde%20cero%20-%20Solectro.pdf
Anexos (Código, Imágenes del prototipo)