jueves, 16 de mayo de 2013

Laboratorio - Entrega 10: Detección de movimiento

Para esta semana, se encargo detección de movimiento, y el cual explicare algunos detalles de este trabajo:

Primero que nada, para esta tarea utilice las siguientes herramientas:
  • Opencv: Habilitando camara web
  • PIL: Leer frames
  • Numpy: Realizo los cálculos de imágenes
Utilice la cámara web que viene instalada en mi laptop y use capturas con una resolución de 160 x 120.

Detectando movimiento

Para la detección de movimiento detectaron los cambios de movimiento en 2 frames, se binariza, se calcula la diferencia de su posición entre esos 2 frames y se aplica Gasussian Blur para eliminar ruido.
Se obtienen dos imágenes, un donde hubo movimiento y otra en donde no hubo, se busca el borde y después se crea una rejilla, que se modifica según sea la resolución del vídeo, que en este caso el vídeo es de 160 x 120 y mas o menos queda así:

Una rejilla de 10 x 8:


Y cuando se detecta el movimiento, se dibuja un triángulo de color, donde indica que hubo movimiento.

Y ahora ejemplos donde muestro vídeos y que se detecta movimiento:

Ejemplos:

Vídeo 1:

Vídeo 2:

Vídeo 3:

Vídeo 4:

Comentarios:

En esta parte seria bueno calibrar bien la detección, ya que con demasiado ruido se llega a detectar movimiento innecesario.

Dirección:

Una pequeña captura donde se detecta el movimiento:

Se muestra si fue en derecha, izquierda, arriba o abajo.

Aquí el código de lo anterior:

Código:


Animaciones

En esta parte, detecte cada movimiento y lo pase a un frame que se dibuja como un cuadrado (Color negro), así generando casa frame en imágenes y guardándolas en una carpeta, si se sigue una secuencia de cada imagen, se mostrara los frames de manera continua.

Aquí un pequeño vídeo:

Muy simple la verdad, utilice el teclado para ir viendo la imagen una por una.

Código de lo anterior: 

Código:


Pruebas

En esta parte, realice pruebas con vídeos con resoluciones de 160 x 120 y de formato avi, eso realizaba el proceso mucho mas rápido.

Errores

Utilizaba vídeos con resolución de 640 x 480, pero por alguna razón el programa dejaba de funcionar y la terminal de igual manera, dejaba de funcionar, entonces la solución fue grabar vídeos de 160 x 120 y así el programa funcionaba, no al 100% pero al menos se detectaba el movimiento y el programa funcionaba

Tamaño de vídeos:

Conclusiones: 
  • Tomar en cuenta el formato a grabar
  • Captar vídeos con una resolución de 160 x 120

Aquí el repositorio:

Repositorio:

1 comentario:

  1. Movimiento 2D en cuatro direcciones con video real y una animación, cámara estacionaria. 10 pts.

    ResponderEliminar