May 16, 2013

Laboratorio 10. Detección de movimiento

Para esta entrega se nos pidió hacer una implementación de detección de movimiento, sin utilizar librerías de visión, utilizando una secuencia de video.

Para realizar esto hice uso de OpenCV para hacer la captura de video desde mi cámara web con el siguiente script que lo único que hace es tomar un video de 50 frames y guardarlo con el nombre de "video.mp4":

Código


Después volví a utilizar OpenCV para leer este video y hacer la detección de movimiento.

Para realizar la detección de movimiento lo primero es obtener los cambios de posición que ocurrían entre 2 frames consecutivos, calculando la diferencia entre cada frame, esto es, restar ambos frames pixel por pixel para obtener solamente los pixeles que sufrieron cambios.

Después se aplican filtros de escala de grises y binarización pero esta vez estos filtros los manejé con arreglos de numpy para hacer más ágil la detección ya que para mi primera aproximación mi meta era hacer la detección al momento de obtener cada frame de la cámara, pero se me hizo más fácil primero grabar el video y después realizar la detección.

Los filtros siguen los mismos principios, la escala de grises hace un promedio de los valores r,g,b de cada pixel y la binarización tiene como umbral un entero 10 donde cada pixel arriba de este umbral se convierte a blanco.

Como resultado de este procedimiento resulta una imagen con pixeles en color negro donde no hubo ningún cambio y pixeles en color blanco donde existe algún cambio.

Después de esto se toma el frame original y el arreglo con binarización, que es la imagen binarizada, y se comparan, donde existan pixeles blancos (como son arreglos se buscan valores de 255) son cambiados en el frame original por un color azul. Esto para demostrar que existe un cambio de posición en los objetos del video.

Por último de nuevo se toma el frame original y el arreglo con binarización y ahora se recorre el arreglo pero esta vez por regiones para marcar con cuadros de color verde las regiones donde exista movimiento.

Código

Resultados

Video Original


Resta de frames


Detección de movimiento




Video Original



Detección de movimiento 

Fuentes

No comments:

Post a Comment