Procesamiento de imagenes python con raspberri pi 2
1. Preparación de reportes de Informe de laboratorios
.
INFORME PARCIAL PRÁCTICO
Gabriel Romero COD: 161003199
e-mail: gabriel9411@gmail.com
Franklin Varón COD: 161003027
e-mail: saneredu@gmail.com
Joseph Guapacho COD: 161003
e-mail: jorgecu-@outlook.es
RESUMEN: Este informe sintetiza el trabajo
realizado para la presentación del primer parcial y mini
proyecto, en el curso ELECTIVA PROFECIONAL I
(Imágenes) de la carrera de Ingeniería Electrónica en la
Universidad de los Llanos, consistió en el diseño e
implementación de un sistema de análisis de la posición
de un vehículo a control remoto, con respecto a una
punto de referencia mediante el análisis de imágenes
utilizando para ello el ordenador de placa reducida
Raspberry Pi 2, además de la implementación de un
sistema de comunicación RF conectado a uno de
visualización, que permite analizar la corrección de
posición necesaria, mediante una matriz de LEDS la
cual funciona analizando los datos de comunicación RF
y proporcionando la salida de control correspondiente
mediante la tarjeta de desarrollo Arduino.
INTRODUCCIÓN
En la actualidad la ingeniería electrónica tiene una gran
importancia para el control de diferentes dispositivos y
procesos, todos estos procesos por lo general requieren
de los conocimientos de áreas que no se encuentran
inmersos directamente en la electrónica, pero que al ser
vincularlos con este permiten tener controles requeridos
de manera eficiente, rápida y económica.
El análisis de imágenes es una gran herramienta útil y
eficientes a la hora de que los sistemas extraigan
información del entorno, gran parte de la robótica que
lleva a cabo múltiples actividades en la industria, la
investigación y los hogares familiares presentan un
módulo principal para el procesamiento de imágenes
que brinda al sistema una información primaria acerca
de las cualidades del entorno en el cual desarrolla su
actividad. La necesidad de que estos sistemas lleven a
cabo tareas más complicadas cada vez, lleva a mejorar
casi exponencialmente el procesamiento de imágenes;
es por eso que se plantea el desarrollo de un sistema de
procesamiento de imágenes, usando herramientas
modernas como el lenguaje Python, el modulo para
procesamiento de imágenes OpenCV entre otras, que
permiten realizar grandes procesamientos con poco
esfuerzo.
El siguiente trabajo planea Comprender las
implicaciones del procesamiento digital de imágenes,
con la ayuda de indagaciones confiables que contengan
información al respecto, con lo cual podremos definir
características determinantes y evitar posibles errores a
la hora de procesar la imagen, además de Identificar un
protocolo de comunicación no guiado, efectuando
pruebas con algunos candidatos ya conocidos o no
conocidos evaluando su efectividad, que permita
transmitir la información desde el sistema en movimiento
de reconocimiento hasta el punto de toma de decisiones.
OBJETIVOS
*Conocer las características generales del paradigma de
programación en Python, mediante indagaciones en
fuentes confiables de información, con la intención de
desarrollar un código eficiente y claro.
*Comprender las implicaciones del procesamiento
digital de imágenes, con la ayuda de indagaciones
confiables que contengan información al respecto, con
lo cual podremos definir características determinantes y
evitar posibles errores a la hora de procesar
la imagen.
*Adoptar metodologías para el filtrado de ruido en el
procesamiento digital de imágenes, esto basado en el
conocimiento previo de todo lo que involucra el
procesamiento de las imágenes y brindar mayor
efectividad a la información transmitida.
*Identificar un protocolo de comunicación no guiado,
efectuando pruebas con algunos candidatos ya
conocidos o no conocidos evaluando su efectividad,
que permita transmitir la información desde el sistema
en movimiento de reconocimiento hasta el punto de
toma de decisiones.
*Definir la estructura del módulo para la recepción de
información, postulando los posibles métodos a escoger,
y evaluarlos según la información sea final sea clara al
individuo encargado de tomar la decisión final acerca del
control del móvil.
*Conocer las características generales de la tarjeta de
computo Raspberry Pi 2, mediante indagaciones en el
material de apoyo que brinda su fabricante y también en
algunas fuentes en la red que estén catalogadas como
confiables, esto para estar exentos de cualquier fallo en
el sistema de la tarjeta debido a conexiones indebidas,
también para definir métodos para los aspectos
externos como la adquisición de la imagen y la salida
de información hacia el módulo de transmisión.
1
2. Preparación de reportes de Informe de laboratorios
.
MARCO TEORICO
Arduino Uno : Arduino / Genuino Uno es una
placa electrónica basada en el ATmega328P. Cuenta
con 14 pines digitales de entrada / salida (de los cuales
6 se pueden utilizar como salidas PWM), 6 entradas
analógicas, un cristal de cuarzo de 16 MHz, una
conexión USB, un conector de alimentación, una
cabecera ICSP y un botón de reinicio. Contiene todo lo
necesario para apoyar el microcontrolador; simplemente
conectarlo a un ordenador con un cable USB o el poder
con un adaptador de CA o la batería a CC para empezar
.. Puedes jugar con tu UNO sin preocuparse demasiado
por hacer algo mal, peor de los casos puede sustituir la
saltar por unos pocos dólares y empezar de nuevo.
"Uno" significa una en italiano y fue elegido para
conmemorar el lanzamiento de Arduino Software (IDE)
1.0. La junta Uno y la versión 1.0 del software de
Arduino (IDE) fueron las versiones de referencia de
Arduino, ahora evolucionado para nuevos lanzamientos.
La junta Uno es el primero de una serie de placas
Arduino USB y el modelo de referencia para la
plataforma Arduino; para una amplia lista de tablas
actuales, pasados o anticuadas ver el índice de Arduino
de planchar.
Python: es un lenguaje de programación
interpretado orientado a objetos de alto nivel con
semántica dinámica. Su alto nivel integrada en las
estructuras de datos, junto con tipado dinámico y de
unión dinámica, lo hacen muy atractivo para el
Desarrollo rápido de aplicaciones, así como para su uso
como un lenguaje de scripting o pegamento para
conectar componentes existentes juntos. Simple y fácil
de aprender la sintaxis de Python, hace hincapié en la
legibilidad y, por tanto, reduce el coste de mantenimiento
del programa. Python admite módulos y paquetes, que
anima a la modularidad del programa y la reutilización
de código. El intérprete de Python y la extensa biblioteca
estándar están disponibles en formato fuente o binario
sin cargo para todas las plataformas, y se pueden
distribuir libremente.
A menudo, los programadores se enamoran de
Python debido al aumento de la productividad que
proporciona. Puesto que no hay paso de compilación, el
ciclo editar-test-debug es increíblemente rápido.
Depuración de programas en Python es fácil: un error o
mala entrada no causarán un fallo de segmentación. En
cambio, cuando el intérprete descubre un error, lanza
una excepción. Cuando el programa no detecta la
excepción, el intérprete imprime un seguimiento de pila.
Un depurador de nivel fuente permite la inspección de
variables locales y globales, la evaluación de
expresiones arbitrarias, el establecimiento de puntos de
interrupción, paso a paso a través del código de una
línea a la vez, y así sucesivamente. El depurador está
escrito en Python en sí, lo que demuestra el poder de
introspección de Python. Por otra parte, a menudo la
forma más rápida para depurar un programa es agregar
algunas declaraciones de impresión a la fuente: el ciclo
de edición de los ensayos de depuración rápida hace
que este enfoque simple muy eficaz.
Raspberry Pi : es una de las tarjetas de ordenador
de pequeño tamaño y bajo coste se conecta a un
monitor de ordenador o un televisor, y utiliza un teclado
y un ratón estándar. Es un dispositivo poco capaz que
permite a las personas de todas las edades explorar la
computación, y el aprendizaje de lenguajes de
programación como Scratch y Python. Es capaz de
hacer todo lo que se espera de una computadora de
escritorio, desde navegar por Internet y reproducción de
vídeo de alta definición, a hacer hojas de cálculo,
procesadores de texto, y jugar juegos.
Módulos RF: Aunque las tecnologías ya
mencionadas trabajan con frecuencia, hemos decidido
incluir como una tecnología aparte los módulos de
radiofrecuencia que 33 utilizan los juguetes inalámbricos
como los carros de control remoto, en este caso para
aplicaciones industriales y con una frecuencia mucho
más alta.
El término radiofrecuencia, también denominado
espectro de radiofrecuencia o RF, se aplica a la porción
del espectro electromagnético en el que se pueden
generar ondas electromagnéticas aplicando corriente
alterna a una antena.
Cuando hablamos de módulos estamos hablando
de un módulo emisor (El que emite o lleva una señal o
mensaje al receptor) y un módulo receptor (El que
recibe), los cuales tienen un número de canales para el
control de las diferentes tareas que puede variar de 1 a
16 canales y obviamente una frecuencia para su
alcance, que puede ser entre 400Mhz – 600Mhz
I. MATERIALES Y METODOS
Para el diseño e implementación del proyecto se utilizó
una metodología por fases, las denominaciones de cada
fase son, Adquisición y análisis de imagen mediante
Raspberry pi 2, Transmisión de datos mediante sistema
de comunicación, Análisis de datos del sistema de
comunicación para el correcto control de la matriz de
LEDS, como se presenta en la Figura 1.
Figura 1. Diagrama de fases del proyecto
2
3. Preparación de reportes de Informe de laboratorios
.
Para la primera fase se realiza el código en la raspberry
pi 2 que permite el análisis de imágenes adquiridas
mediante una cámara VGA.
Para la segunda fase se hace el montaje de un circuito
de transmisión y recepción. Se utilizan el Kit
Transmisor/Receptor ASK 433 Mhz los cuales se
componen de un emisor y un receptor, además del
circuito Integrado HT12E el cual codifica la información
que se ingresa en paquetes de 4 bits, para que pueda
ser enviada por el emisor (figura 2)[1] y el Circuito
Integrado HT12D el cual utiliza la información que es
recibida por el receptor, decodificándola y entregando
paquetes de 4 bits (figura 3).
Esto con el fin de poder transmitir la posición del
vehículo con respecto al punto de referencia.
Figura 2. Circuito montaje emisor
Figura 3.Circuito montaje receptor
Para la tercera y última fase se crea el control necesario
para que la matriz de LEDS funcionen de manera
adecuada por medio de una placa de Arduino uno, el
cual interpreta las señales son entregadas por el circuito
receptor del sistema de comunicación y por medio de un
código es capaz de interpretar la diferentes
combinaciones de 4 bits para encender los LEDS
necesarios que le permitan al controlador interpretar y
corregir la posición del vehículo con respecto a un punto
de referencia
RESULTADOS
PARTE I
Diagrama de código para el procesamiento de imágenes
en raspberry pi 2
3
4. Preparación de reportes de Informe de laboratorios
.
PARTE II
Foto emisor
Foto receptor
PARTE III
Para la creación del control se creó un código en arduino
uno el cual dependiendo de la información que entrega
en paquetes de 4 bits el receptor, se tenía una
respectiva salida la cual encenderá leds hacia a la
izquierda o derecha dependiendo de la posición de un
punto de referencia.
Programó la tarjeta Arduino siguiendo el algoritmo
presentado en la figura 4.
Figura 4.Logica de código que se implementó en el
Arduino
Para comprobar que el código realizado en la placa de
Arduino cumple con el propósito se hace una simulación
en software Proteus como se observa en la figura 5.
4
int pent = A0;
int segent = A1;
int terent = A2;
int quent = A3;
//Declaramos la variables de entrada
DDRD=B11111111
// Declaramos como salida desde D7 hasta
D0
DDRB=B111111;
// Declaramos como salida desde D13 hasta
D8
Inicio
If(0000){comb. Enc. led-centro}
If(0001){ comb. Enc. led-1izq. }
If(0010){ comb. Enc. led-2izq. }
If(0011){ comb. Enc. led-3izq. }
If(0100){ comb. Enc. led-4izq. }
If(0101){ comb. Enc. led-5izq. }
If(0110){ comb. Enc. led-6izq. }
If(0111){ comb. Enc. led-7izq. }
If(1000){ comb. Enc. led-1der. }
If(1001){ comb. Enc. led-2der. }
If(1010){ comb. Enc. led-3der. }
If(1011){ comb. Enc. led-4der. }
If(1100){ comb. Enc. led-5der. }
If(1101){ comb. Enc. led-6der. }
If(1110){ comb. Enc. led-7der. }
void loop()
5. Preparación de reportes de Informe de laboratorios
.
Figura 5.
Foto de todo el sistema implementado.
Figura 6
1. Arduino uno: Esta placa de desarrollo contiene
el código que interpreta el paquete de 4 bits,
para activar a la salida los pines que permitan
obtener el encendido de los LEDS.
2. Matriz de LEDS: Esta matriz se compone de 15
LEDS lo cuales son controlados por 8 salidas
digitales.
3. Interruptor: me permiten comprobar que el
sistema si va tener el correcto funcionamiento
cuando la entrada sea el módulo de recepción
RF.
4. Circuito Receptor RF: tiene el receptor RF y un
circuito que permite la decodificación de los
datos.
5. Regulador de voltaje: Consta de un 7805 y un
condensador los cuales me proporcionan un
voltaje estable de 5 voltios para alimentar el
circuito de recepción
DISCUSIÓN
Los resultados muestran que tanto el sistema de
análisis, el sistema de comunicación y el control de la
visualizan funcionan adecuadamente, pues se tienen la
variaciones necesarias así la izquierda o derecha,
pendiendo de la variación de la posición de punto de
referencia.
Sin embargo, se puedo observar como en ocasiones el
sistema se salía de rango o no obtenía bien el dato, esto
debido a la baja cálida de la imagen de la cámara o a
cambios en la luz y ubicación que no permitían el
correcto funcionamiento del sistema.
Se evidencia como el análisis de imágenes permite el
control de procesos por a distancia por medio de un
operador, enfocándose solo en los aspectos importantes
de la imagen, para el correcto control de proceso.
Además de que demuestra como el análisis de
imágenes puede convertirse en una extensión de los
sentidos del ser humano que le permitan control preciso
de un sistema.
CONCLUCIONES
*Aprendimos sobre las diferentes características
generales del paradigma de programación en Python,
*Comprábamos diferentes implicaciones del
procesamiento digital de imágenes que se tuvieron
durante el proyecto.
*Se pudo establecer metodologías para el filtrado de
ruido en el procesamiento de imágenes, esto basado en
el conocimiento previo de todo lo que involucra el
procesamiento de las imágenes y brindar mayor
efectividad a la información transmitida.
*Se utilizó un protocolo de comunicación no guiado (RF),
efectuando pruebas evaluando su efectividad, que
permita transmitir la información desde el sistema en
movimiento de reconocimiento hasta el punto de toma
de decisiones.
*Aprendimos que las pruebas que se realizaron no
fueron suficientes para comprobar el funcionamiento de
nuestro proyecto, ya que al ser objeto más pequeño de
lo esperado no fue suficiente para la cámara empleada
por su baja resolución y márgenes que abarcaba
*Logramos aprender un poco sobre el funcionamiento
del procesamiento de imágenes pero aun nos faltan
aprender más sobre ello.
BIBLIOGRAFIA
[1]Portal Electronico de la empresa Arduino
https://www.arduino.cc/en/Main/ArduinoBoardUno
[2]Portal Electronico de la empresa Python
https://www.python.org/doc/essays/blurb/
[3]Portal Electronico de la empresa raspberry
https://www.raspberrypi.org/help/what-is-a-raspberry-pi/
[4] CRISTIAN ALBERTO AGUDELO ROFRIGUEZ, Junio
2011. CONTROL DE PUENTE GRUA POR MEDIO DE
UN SISTEMA INALAMBRICO. Universidad de pamplona
5
6. Preparación de reportes de Informe de laboratorios
.
facultad de ingenierías y arquitectura programa de
ingeniería mecatrónica
6
7. Preparación de reportes de Informe de laboratorios
.
facultad de ingenierías y arquitectura programa de
ingeniería mecatrónica
6