Ver Mensaje Individual
  #9  
Antiguo 14-02-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Reputación: 25
Delphius Va camino a la fama
Peregrino, si haz logrado avanzar en algo y/o si haz encontrado algo que pudieras compartir con el club me gustaría que lo expusieras, si no te es molestia.

Si bien ya hemos dado unas cuantas ideas, sería oportuno que ofrezcas alguna idea o planteo que hayas conseguido de tus investigaciones.

Al menos dime si debo seguir pensandome algun algoritmo parecido al método tree step... porque desde hace 2 días que mi mente anda haciendo round-robin entre todo lo que tengo en mi cabeza y esto... y bueno... todavía no consigo armar algo.

Lo que me estaba cruzando por la cabeza es aplicar algo parecido al filtro direccional. Unicamente que en vez de hacer que el pixel tome el valor de la "dirección" hacer que el bloque se mueve hacia dicha en dicha dirección. La idea es que teniendo los pixeles:

a b c d e
f g h i j
j k l m n
ñ o p q r
s t u v w


Siendo el pixel l el central (a examinar), y los pixeles en cursivas (a,c,e,j,n,s,u,w) los posibles candidatos a ser el nuevo punto de detección.

El algoritmo lo que debería hacer es tomar la mínima diferencia entre la distancia entre l y cada punto candidato.

Código Delphi [-]
MinDif = Min(l-a,l-c,l-e,l-j,...l-w)

Obviamente, debería tomarse el valor absoluto.

Y una vez conseguido esto determinar si hay movimiento:
Código Delphi [-]
HayMovimiento = (Abs((MinDifA - MinDifB)/255)) > umbral

Siendo la MinDifA la menor diferencia en la dirección determinada en la imagen A. El significado es análogo para MinDifB. Y el umbral un valor que refleje a manera "porcentual" lo que podría considerarse un error. Por ejemplo si la diferencia entre MinDifA y MinDifB es de 70, obtendríamos un valor de 0,28 aprox. (o 28%) y si se considera que hay movimiento cuando los valores difieren un 50% entonces, el resultado sería que no lo hay.

Si se detecta movimiento en dicha dirección... nos movemos a ese punto y repetir el proceso. Es decir que si por ejemplo se detecta que el movimiento está en la dirección n. Hacemos que el nuevo l sea el pixel n.

El algoritmo debería comenzar desde el centro de la imagen (que es donde más probabilidad hay de hallar el movimiento).

El algoritmo podría programarse para repetir el proceso entre 3 y 6 veces (lo que podría dar una aproximación de que realmente se ha producido movimiento)

No se si les resulta chino pero al menos da una idea.
Tras dos días de pensar no he logrado traducir mi idea a código. A lo mejor alguno de ustedes puede llevar a la práctica y someterlo a prueba.

Aunque reconozco que la idea de seoane de aplicar sobel y examinar el contorno es una buena opción. Tal vez más eficiente que ésta.

Bueno, me despido por ahora... me está venciendo el sueño.
Saludos,
__________________
Delphius
[Guia de estilo][Buscar]

Última edición por Delphius fecha: 14-02-2008 a las 05:30:03.
Responder Con Cita