miércoles, 23 de mayo de 2012

La webcam como sistema de adquisición de datos en el laboratorio

Desde hace un tiempo estoy desarrollando un pequeño software en Python para tomar datos de prácticas de laboratorio con una webcam haciendo seguimiento de objetos basado en color.

El programa usa pygame, un motor diseñado para videojuegos. Toma datos de una webcam compatible con V4L2 (video for linux) y, en tiempo real, busca en cada fotograma clusters de los colores configurados localizando las coordenadas de su centroide en pixeles. 

Podemos almacenar esos datos para tratarlos a posteriori o incluso trabajar con ellos en tiempo real.
El sistema obtiene fácilmente del orden de 30 frames por segundo a una resolución de 640x480.

Como prueba de concepto, hemos montado un pequeño experimento de sincronización de metrónomos. El que quiera saber de qué va esto puede ver la genial charla TED de Steven Strogatz

En el siguiente vídeo podéis ver el proceso de calibrado en el prototipo que tenemos funcionando. Básicamente consiste en hacer click sobre el objeto que queremos seguir y utilizar la rueda del ratón para ajustar el umbral de detección de color.


Además del propio seguimiento de color, podemos pintar sobre la imagen en tiempo real pudiendo mostrar datos adicionales como realidad aumentada. En el caso del video simplemente vamos pintando una traza del objeto seguido que se desplaza hacia arriba, pero tenemos toda la potencia de una librería para videojuegos como es pygame a nuestra disposición para sacar información del movimiento y mostrarla en pantalla sobre la imagen.

Haciendo ese calibrado con 3 metrónomos marcados con tres colores diferentes y montados sobre una plataforma que pueda desplazarse libremente podemos obtener datos como los siguientes.
1. Visión general de una adquisición de ~3 minutos
 En la primera gráfica se puede observar el bombeo de energía de unos metrónomos a otros.
2. Detalle en la región inicial con los metrónomos no sincronizados
 En la segunda se ve un detalle de cómo las fases y amplitudes de los metrónomos van completamente desligadas unas de otras.
3. Detalle en la región final con una muy buena sincronización
En la tercera el sistema ya está sincronizado tanto en fase como en amplitud. Los extraños que se ven (que alejan a las curvas de la forma sinusoidal esperada) se deben al desplazamiento de la plataforma al conservar el momento de los tres metrónomos en fase.

No hay comentarios: