12/10/08

Acabando

Finalmente he implementado la parte que faltaba por hacer, distinguir entre objetos parados y abandonados mirando si hay movimiento en los alrededores del objeto. Para esto lo lógico sería trazar un circulo alrededor del objeto y mirar dentro de él, pero normalmente las imágenes que vamos a tener no serán cenitales (desde arriba sin ningún angulo). En cámaras con angulo el circulo se convertiría en una elipse por lo que he rebuscado en los apuntes de mate del instituto para que introduciendo el ángulo de la cámara con la pared el programa obtenga la altura y anchura de la elipse.

Un vez obtenidos el alto y el ancho, como recorrer los pixels de una elipse es algo complicado y no es excesivamente importante ceñirse perfectamente a ella, simplifico recorriendo los pixels del rectángulo resultante de dichas altura y anchura.
Para detectar si hay movimiento dentro del rectángulo descrito utilizo otra vez la téctica de resta de imágenes , umbralizado y recuento de pixels blancos restando la imagen actual al fondo como ya comente en otros posts.

Vídeo de demostración:




como en vídeos anteriores:
tipo objeto - color


parado - amarillo

abandonado - rojo
parado_perdido - gris
abandonado_perdido - azul

Por otra parte tras hacer todo lo demás me he encontrado con que hay un montón de variables como el angulo de la cámara, los umbrales utilizados, los tiempos entre actualizado de background o el tamaño de trabajo de las imágenes que no se pueden fijar y difícilmente calcular porque dependen de la situación de la captura(posición de la cámara en el pc, angulo de la cámara, resolución .....).

Para hacer esto configurable al usuario he aprovechado las funciones que tiene OpenCV para el manejo de archivos xml de tal forma que se puedan tener varios archivos xml de configuración por ejemplo para cada cámara y cargar en cada caso el más conveniente, pudiendo también cargar una configuración por defecto.


Y con esto en principio parece que el proyecto estaría completo salvo algún retoque. Ahora sería el momento de ponerme con la memoria... :-s


Bueno, y como lo prometido es deuda, aquí van los vídeos del programa en funcionamiento para los otros ángulos de cámara de la escena que llevo usando todo este tiempo:







Y aquí un puñao de otras escenas desde distintos ángulos: