Sensor de Movimiento

Iniciado por AFelipeTrujillo, 13 Abril 2010, 02:48 AM

0 Miembros y 1 Visitante están viendo este tema.

AFelipeTrujillo

Hola comunidad, como puedo implementar un sensor de movimiento en JAVA .... ideas??? que cámaras puedo utilizar ? y que librerías lo podría implementar?

salu2

egyware

Que realmente deseas saber
Nota:Si deseas usar camaras usa JMF

AFelipeTrujillo

Tkxxx por tu respuesta ..... lo que deseo en si saber es como implementar un sensor de movimiento.... supongamos que tengo un espacio vacio y que mediante el programa se dispare un alarma apenas haya movimiento en este espacio... no si me hice entender??

AFelipeTrujillo

Hola a todos estuve averiguando hacer del desarrollo de este programa y creo que la solución es: Tomar fotos cada rango de tiempo y estar comparando la actual con la anterior (suena sencillo) .... me pregunto si conocen algún otro método  :huh:

egyware

Ah ya mas o  menos se lo que quieres. Bueno ese metodo te lo hiba a mencionar que bueno que lo encontraste.
Colocando una cota de que solo usaras camaras creo que ese te servira y jugar con imagen generada (mediante la resta de 2 fotos consecutivas), a menos que la camara que te avise que haya movimiento pero ahi hay que implementar segun camara.
Lo otro que puedes hacer es usar hardware de sensor de movimiento (un sensor de movimiento real ) y conectarlo al puerto Serial de tu pc para eso debes buscar una biblioteca antigua de java (busca hace tiempo lo vi en un blog) que ya no se distribuye con el JDK actual.
Bueno eso seria creo que tendras que arreglartelas solo con los algoritmos, ya que si existe ese software seria de pago :(
Saludos Adios.

MazarD

Todas las aplicaciones que yo he visto sobre el tema utilizan este mismo método y dudo que haya otro teniendo en cuenta que la cámara, como comentaba egyware, no tenga nada más que la camara en sí.

Como decías puedes hacerlo tomando fotos consecutivas, tomas dos, las cargas en dos BufferedImage de la libreria awt y las comparas pixel a pixel con getRGB, si son distintas pues salta la alarma. Pero hay que tener en cuenta que tienes que darle cierto grado de tolerancia, para que si por ejemplo cambia la luz del día no salte la alarma. La tolerancia puedes establecerla por la similaridad de los colores combinado con la cantidad de pixeles distintos y la cantidad de fotos consecutivas que no cumplen las condiciones, con esto ya podrías tener un sistema bastante eficaz.

Saludos.
-Learn as if you were to live forever, live as if you were to die tomorrow-

http://www.mazard.info
http://twitter.com/MazarD
irc://irc.freenode.org/elhacker.net

egyware

Exacto, debes dar una tolerancia por ejemplo si tienes una camara de no muy buena resolucion tu alarma saltara mucho .
Ahora si tu camara es de buena resolucion tu algoritmo se demorara mucho por los 2 for que tendras que hacer.
Ahora como calcular tolerancia no se como lo haran los demas pero tengo un algoritmo (generalmente diseño algoritmos pero mas tarde me doy cuenta que ya alguien mas los hizo  :¬¬)

Considerar que los colores son un vector de R3
Para el rojo se tiene (255,0,0) y para el azul (0,0,255) entonces para calular la distancia entre rojo y azul
distancia = raiz((255-0)2+(0-0)2+(0-255)2)
entonces con esa formula sencilla tienes para calcular la distancia si los colores son consecutivos te dara un numero mas pequeño.
Ahora si calculas mucho la raiz tu algoritmo demorara mucho entonces la ecuacion de distancia queda
distancia2 = (255-0)2+(0-0)2+(0-255)2
Las multiplicaciones son mucho mas rapidas.
Tienes saber que a*a -> 0 siempre y cuando a -> 0
Y si puedes trata de sacar la resta de imagenes hardware y no software ya que el ultimo es mas lento, osea trata de implementar algo con JNI si deseas.

Saludos

Nota: -> es tender

AFelipeTrujillo

Hola compañeros gracias por su apreciación me dieron mas idea de por donde va este desarrollo... me tocaría mirar mejor la tolerancia de la imagen para que no se salte a cada rato .... bueno por lo que se esto va a estar montado sobre Internet y creo que va ser un poco demorado  :-\ hay muchas variables en juego ... espero que pueda resolverlo y les comentare como va el asusto... muchas gracias