5/3/08

Detección de objetos que se quedan quietos(II).

Ya he conseguido hacer funcionar más o menos bien el algoritmo que pensé para obtener la posición de los objetos que se quedan quietos, aunque no estaba del todo seguro porque me parecía un poco "pesado" dichos cálculos no han supuesto una ralentización apreciable ya que solo ejecuto esta parte cada vez que actualizo el fondo (cosa que hago cada cierto número de frames por ser esto si terriblemente pesado y por no ser necesario continuamente).

El algoritmo consiste en lo siguiente:
Voy recorriendo la imagen pixel a pixel, si es blanco lanzo un algoritmo recursivo que comprueba los pixels adyacentes(arriba, abajo, izquierda y derecha) y si son blancos se llama a si mismo para cada uno de los puntos blancos guardando en una lista dichos pixels y obteniendo de esta posteriormente el máximo y mínimo de la x y la y que delimitaran al objeto.

Una vez probado que funciona el algoritmo me dispongo a hacer ciertas mejoras ya que si un objeto no es conexo es detectado como varios, esto tengo pensado solucionarlo de dos formas. Una rebajando el valor del umbralizado, esto producirá más ruido en la imagen (pixels blancos sueltos) pero esto se soluciona desechando los objetos menores de cierto tamaño.
La otra forma es fusionar los objetos detectados con pocos pixels de separación.

Por otra parte he pensado en, en vez de ir pixel a pixel, ir de dos en dos o tres en tres, ya que, esto hará que sea más rápido pero no afectara al resultado ya que de esta forma como mucho se pierden pixels sueltos que no me interesa recoger.

En cuanto haga esto y meta los objetos detectados en una estructura para poder manejarlos, ya que de momento solo los dibujo según los voy detectando, colgare un vídeo en el que se pueda ver el resultado, porque como lo tengo ahora no se aprecia muy bien.

Mientras tanto os dejo una noticia relacionada con la visión artificial en los videojuegos.
link.