PDA

Ver la versión completa : Realidad Virtual casera???



A.r.R.c.H.E.r
28/06/2005, 01:11
Muy buenas, pues despues de ver el video de la "guizmondo" y ver lo de la camara giroscopica me quede flipado y se me ocurrio una idea. La idea consiste en coger una webcam con un frame rate algo decente, minimo de 30 fps y hacer un programa que calcule el movimiento que hace la camara y lo transforme a movimiento de raton, luego vi el magnifico proyecto de la Ñ-joy y vi que buscaban pantallas TFT y que habian encontrado algunas que venian ya con la circuiteria listas para conectar a alguna fuente de video, si lo juntamos todo en una especie de casco tenemos una pantalla que se mueve con nuestra cabeza y donde sale el juego de turno estilo Quake o half live, la camara que captura el movimiento de nuestra cabeza y lo traspasa a movimiento de raton con lo cual cuando nosotros movemos la cabeza en el juego sera como si miraramos a los sitios.

Yo ya tengo alguna idea e como hacer para calcular los movimientos de la cabeza partiendo de las imagenes de la webcam lo que no se es como cojer las imagenes de la webcam, si alguien puede ayudarme se lo agradecere jejeje.


Y bueno no se si a alguien le interesara el cacharro pero yo lo pongo... nunca se sabe lo mismo ya lo habia pensado alguien y no lo he visto por los foros.


Un saludo a esta gran comunidad!!!

Makoe
28/06/2005, 01:14
:loco: No se si pensar que estas grillao o que es una genialidad. XD pero , olé tu imaginacion.

Victordelanau
28/06/2005, 01:17
Pavernos matao xD si lo haces rular tre lo compro xD

A.r.R.c.H.E.r
28/06/2005, 01:18
:loco: No se si pensar que estas grillao o que es una genialidad. XD pero , olé tu imaginacion.



Jajaja me decian lo mismo cuando dije que me iba a montar una makina recreativa y mira lo que salio ;P -----> http://www.marcianitos.org/turecreativa/archereg.htm



Yo lo veo factible... si una consola portatil es capaz de hacerlo porque no se iba a poder hacer con un ordenador de sobremesa mucho mas potente? ;)

Makoe
28/06/2005, 01:22
Jajaja me decian lo mismo cuando dije que me iba a montar una makina recreativa y mira lo que salio ;P -----> http://www.marcianitos.org/turecreativa/archereg.htm



Yo lo veo factible... si una consola portatil es capaz de hacerlo porque no se iba a poder hacer con un ordenador de sobremesa mucho mas potente? ;)

:O:O:O:O Increible lo de tu recreativa... me has convencido. Que ganas hay que tener.Y encima con mame , *****¡¡¡ pero chico , fabricalas en masa y te compro una¡¡¡

bulbastre
28/06/2005, 01:43
RevolutiON

A.r.R.c.H.E.r
28/06/2005, 01:47
RevolutiON


Lo cualo? eso lo seras tu xD

Locke
28/06/2005, 02:47
Serias capaz de hacer un software que te reconociera el movimiento de la camara con las imagenes que proyecta? Yo lo veo muy complicado...

A.r.R.c.H.E.r
28/06/2005, 03:02
Serias capaz de hacer un software que te reconociera el movimiento de la camara con las imagenes que proyecta? Yo lo veo muy complicado...


Alguna idea tengo, yo he pensado en coger la region del centro de la camara... no toda la pantalla ya que sera demasiados pixels y no se necesita... se coge un recuadro justo en el centro de la pantalla de unos 64x64 en cada frame se captura esa misma region y se compara con la anterior, la forma de comprarla es colocar la segunda imagen que coincida el punto de abajo ala izquierda con el punto de arriba de la derecha de la primera imagen los pixels que se solapen de las dos imagenes se comprueban a ver si son los mismos en caso de no serlos se mueve la seguna immagen una posicion para la derecha asi hasta que el pixel mas a la izquierda de la segunda imagen quede en el pixel mas a la derecha de la primera imagen en tal caso bajaria un pixel la seguna imagen, y el proceso se repitiria hasta que los puntos que se solapen coincidan los de la imagen 1 y la imagen 2, cuando esto suceda se calcula la distancia desde el punto del centro de la primera imagen hasta el punto del centro de la segunda imagen y ya se sabe el desplazamiento en la direccion X y en l Y. Basicamente el funcionamiento seria este, luego se podria optimizar por ejemplo que empezara desde el centro y fuese comprobando en circuloas alrrededor del centro y asi encontraria mas rapido una imagen que coincidiese.

No se si me explicado muy bien, mañana intentare poner un dibujo para ver si queda mas claro... jejeje

En realidad es el funcionamiento de los ratones opticos que va comprobando los movimientos de la alfombrilla.


Lo que no se es como coger la imagen de la webcam desde un programa en C jejeje si alguien pudiera ayudarme con esto se lo agradeceria mucho!!

Locke
28/06/2005, 03:53
Lo veo complicado.

Has tenido en cuenta si en un movimiento brusco o rapido se cogieran dos frames totalmente diferentes? O las diferencias de colores que provocaria la propia naturaleza de baja calidad de la camara... habria que aumentar la tolerancia para sacar las coincidencias, sin embargo en ese caso si jugaras contra una pared monocroma no detectaria ningun movimiento.

Ademas la deformacion de la imagen que provocaria el movimiento de rotacion de cabeza debido a la perspectiva haria que ya no se pudieran comparar los mismos cuadrados...

Vamos, que no es como si coges dos porciones de un bitmap y las comparas, esto es bastante mas complejo y creo que habria que informarse sobre algun tipo de algoritmo que use el soft profesional...

moai
28/06/2005, 10:00
Y si se usase una cámara monócroma? P.e. una GameBoy Camera... Aunque no se si lo que he dicho es tontería, ya que nunca he visto una de estas en funcionamiento, solo fotos o videos.

A.r.R.c.H.E.r
28/06/2005, 10:11
Lo veo complicado.

Has tenido en cuenta si en un movimiento brusco o rapido se cogieran dos frames totalmente diferentes? O las diferencias de colores que provocaria la propia naturaleza de baja calidad de la camara... habria que aumentar la tolerancia para sacar las coincidencias, sin embargo en ese caso si jugaras contra una pared monocroma no detectaria ningun movimiento.

Ademas la deformacion de la imagen que provocaria el movimiento de rotacion de cabeza debido a la perspectiva haria que ya no se pudieran comparar los mismos cuadrados...

Vamos, que no es como si coges dos porciones de un bitmap y las comparas, esto es bastante mas complejo y creo que habria que informarse sobre algun tipo de algoritmo que use el soft profesional...



Bueno en realidad ya contaba con el tema e la tolerancia del color ya que la camara al reducir el tamaño de la imagen capturada junta pixels de diferentes colores y hace la media asi que no siempre seria del mismo color pero creo que aplicando algun tipo de algoritmo que comparase los pixels con una cierta tolerancia dada no habria problemas, lo que comentas del movimiento brusco tambien lo pense por eso comento que tiene que ser una webcam con un frame rate alto para no dejarse ningun movimiento por brusco que sea.

Tambien me he dado cuenta que si jugases en una habitacion con las paredes blancas por ejemplo pues no detectaria movimiento al pasar por algunas zonas e la pared, ademas si jugaras en una habitacion rectangular y tu estuvieses en una de las esquinas, la camara no detectaria igual el movimiento ya que las paredes mas lejanas se moverian mas rapido que las que tuvieses mas cerca con lo cual con una misma velocidad de giro de la cabeza la velocidad variaria segun la distancia de la pared...


Pero por otra parte hay una solucion para todos estos problemas y es jugar con una especie de mampara alrededor, que sea circular, tipo a estas que hay para cambiarse de ropa, la distancia seria siempre la misma y la pared no seria lisa ya que seria con algun tipo de dibujo asi que creo que con esto quedaria el tema solucionado... ahora direis que es un lio que tendrias que ponr la mampara que si no puede ser.... bueno yo no creo que sea tanto lio si al fin y al cabo el resultado es el que espero creo que merecera la pena, ademas con el tema de la mampara se podrian pasar los cables por encima y descolgarlos desde el centro de la mampara con lo cual podrias hacer giros de 360º sin que el cable te molestase ;)

Logann
28/06/2005, 10:18
No seria mas facil que en lugar de enfocar la camara a las imagens enfocara encima de ella, o sea en el fondo de la habitación, es màs facil conocer el movimiento de un fondo fijo, i para el uso que quieres darle es lo mismo :)

Editado: Lol parece que ya habias dicho eso, lo de dos frames totalmente distintos és bastante dificil, ya que a 15fps y un angulo de camara de 30º tendrias que rotar la cabeza a 450 vueltas por segundo :P

Bueno ya que estamos un poco de spam de un proyecto de webcam también xD
http://sofriki.sourceforge.net/bulva.htm
http://sofriki.sourceforge.net/divX-joc.avi
http://sofriki.sourceforge.net/demo.avi

A.r.R.c.H.E.r
28/06/2005, 10:23
No seria mas facil que en lugar de enfocar la camara a la proyecion enfocara encima de ella, o sea en el fondo de la habitación, es màs facil conocer el movimiento de un fondo fijo, i para el uso que quieres darle es lo mismo :)


Ums a que te refieres con proyeccion? creo que no te entendido bien ;P

Logann
28/06/2005, 10:32
Sorry me he liado con otra cosa con la que me pensaba, remplace imagenes

hopez
28/06/2005, 10:38
Alomejor esto puede ser una especie de guia:
http://sistemasorp.blogspot.com/2005/03/deteccin-de-movimiento-con-una-webcam.html

Logann
28/06/2005, 10:58
Alomejor esto puede ser una especie de guia:
http://sistemasorp.blogspot.com/2005/03/deteccin-de-movimiento-con-una-webcam.html
Mhhh el link trata de detección de movimiento, pero no de la direción del movimiento; el sitema dice si se muevo o no pero no hacia donde.

A.r.R.c.H.E.r
29/06/2005, 00:17
Mhhh el link trata de detección de movimiento, pero no de la direción del movimiento; el sitema dice si se muevo o no pero no hacia donde.



Tal y como dice en esa guia lo del ruido es verdad, las webcams y sobretodo si son malas tiene mucho ruido que ensucia la imagen y ese ruido es diferente en casda frame, creo que es una buena tecniva lo de la media aritmetida de los puntos de alrededor quiza me sirva para el algoritmo final, aunque el que sale hay es simplemente para detectar el movimiento y no la direccion como bien dice Logann, solo quedaria el correspondiente comprobacion tal y como explique antes para ver en que direccion se mueve la imagen y averiguar los incrementos de las coordenadas.

bulbastre
29/06/2005, 00:47
Serias capaz de hacer un software que te reconociera el movimiento de la camara con las imagenes que proyecta? Yo lo veo muy complicado...
yaps, pero por ejemplo, eyetoy de PS2, coge un montón de puntos que nota que se mueven. Si esos puntos se alejan entre sí, sabe que la persona que juega se está acercando a la cámara, y da la orden de salir del minijuego. Si nota que los puntos se anderrejuntan, sabe que la persona se está alejando... Visto así no's tan chungo, ¿no?

hopez
29/06/2005, 00:51
El problema es qu el ruido es como un montonazo de puntos que se mueven "aleatoriamente" y que si el algoritmo no esta demasiado bien preparado se podrian tratar como imagen realmente capturada :P

A.r.R.c.H.E.r
29/06/2005, 01:35
Aja!!! Amkam me ha dado la solucion... los "vectores de movimiento" con esta tecnica que cre que es la que comenta bulbastre se puede obtener el movimiento que realiza la camara ademas que ya lo he probado con un programa que me ha comentado el propio amkam asi que ahora falta averiguar el funcionamiento de esos "vectores de movimiento"


yeeeejejeeeeeei!