Tuesday, 9 November 2010

Some technology behind Kinect

I cannot wait to have this thing -tomorrow is the day here in Europe-. I must admit that I was a bit skeptical at first. I could barely test the device at the Microsoft Spain&Portugal MVP Open Day, several weeks ago, but the more videos I see, the more convinced I am about the potential of the device. For instance, check this XBox dashboard demo:

The smoothness and precision of hand movements are amazing. It could even be an alternative to multi-touch technology. It seems that Microsoft is almost out of stock in the U.S. what means that it’s been a very successful launch. Congrats!

Adaptability and calibration

The Kinect includes a small electric motor that allows the device to tilt the camera up and down (up to 30 degrees), and also operates the zooming functionalities. This allows the device to properly adapt to any space. If you want to know more about the motor, you can check this site.

Sound Processing

The Kinect includes an array of 4 microphones, which provide:

  • Acoustic source localization: 3D localization or positioning of sound, to help detecting which player is talking, for example.
  • Ambient noise suppression: To make speech recognition more efficient, it filters sounds to remove any ambient noise that could distort voices and sounds to be processed.

Both functionalities allow to control the XBox with your voice (see above video for a demo), and probably will enable headset-free chat on XBox Live (though I haven’t seen this in action yet).

More about Voice Recognition on Kinect

Facial and skeletal Recognition

The video camera included on Kinect allows to automatically recognize players just by looking at them. So, you just need to jump in the game, and it will automatically detect you, keeping your scores, etc. This is awesome.

Gesture and movement recognition

Of course, the most important feature of Kinect is gesture and movement reco. It can handle up to 6 players, but making motion recognition to two of them at a time. Regarding this, both hardware and software are extremely important.

Hardware was firstly developed by the company –later acquired by Microsoft- PrimeSense. The diagram of the setup is:

As you can see, the righter part of the diagram includes a normal color camera, to detect the human visual spectrum with a resolution that seems to be: 640x480, according to some non-official sources. It is used for facial recognition and to include images of players in games, among other things.

The other part is regarding depth, space or 3D detection, whatever you want to call it.

How can a 2D camera extract 3D information?

The secret is the IR setup it includes, with both a projector and a camera. It first projects thousands of IR dots to you and your living room, and then read that information back with the IR camera (Depth Image CMOS). Depending on the size and distance between the projected dots, it calculates the depth map. The following is a representation of the result of this depth map:

This IR dots that Kinect projects use a similar technology to the one used in those video-recording cameras which include the so-called Night-Shot technology.

Those cameras project IR light in front of you with a small IR beamer, and then switch to a sensor which is sensible to IR light. This way, they project light ahead (what makes seeing possible), but in an invisible way to the human eye.

Knowing that, anyone else is thinking the same thing than me? I guess so…

This is what happens if you record your Kinect with a Night-Shot camera (I recommend you to see it in FullHD):

Et Voila! There are the dots. The IR projector seems to be projecting a matrix of 320x240 dots at 30 frames per second (again, according to non-official sources). Another example:

So, starting with info like this:

image

Kinect takes the distance between dots, and calculates a depth-map of your living room:

Some personal conclusions

I’m sure that the hardware included on Kinect is awesome. It’s been launched with a few titles, but I can guarantee you that best is yet to come. Now it’s time for software. New titles will come, and new ways to explore and use this device. And I’m 100% sure they will be incredible.

Go Microsoft !!

Want to know more?

http://www.ifixit.com/Teardown/Microsoft-Kinect-Teardown/4066/1

http://en.wikipedia.org/wiki/Kinect

http://www.t3.com/feature/exclusive-how-does-microsoft-xbox-kinect-work?

http://consolepress.com/main/2010/08/23/the-tech-that-drives-kinect/

11 comments:

Kiko said...

Como avanza la técnica...éste era el antiguo proyecto Natal,no? Cuando lo ví en su día aluciné bastante con la precisión que prometía (claro que aquello era un vídeo promocional y no se hasta que punto podía ser fiable). La pregunta es la de siempre ¿La gente se moverá con esto o le dará demasiada pereza levantarse del sofá?

Iñaki Ayucar said...

Pues sip. Esto es el resultado de Project Natal. A la distancia normal de juego (entre 2 y 3 m desde la tele), prometen una precisión en los movimientos de 1cm (fuentes no oficiales), lo cual es bastante impresionante. Y eso que, según he oído, para hacerlo comercialmente viable, tuvieron que abaratar bastantes componentes, ya que por lo visto, el Project Natal original debía ser mucho más preciso (nuevamente comentado por fuentes no oficiales) y caro.

Kiko said...

Otra cosa será ver si es fácil programar las aplicaciones, no? La verdad que este mundo me pilla muy pez pero tengo entendido que en ciertas consolas como la Play 3 las empresas de desarrollo de videojuegos se quejaban de la complejidad de programar productos.

Iñaki Ayucar said...

Si, es una de las ventajas de XBox sobre las competidoras: la facilidad para el desarrollo. Por cierto, esta mañana he pillado mi Kinect y estoy flipando mucho muuuchoooo!!!!...

Es increíble lo bien que determina la posición de todas las articulaciones...

El juego de boxeo es la caña!

Kiko said...

Pues ten cuidado no vayas a reventar la tele de la emoción (o algo peor http://www.youtube.com/watch?v=Tu70tku36AE&feature=related )

Kiko said...

Según leí ayer el SDK para Kinect no está disponible mas que para unos pocos estudios de videojuegos no? A la larga no les merecería la pena liberar el SDK como XNA? Si es divertido currarse un jueguillo imaginate uno en el que salga en pantalla tu mismo xD

Iñaki Ayucar said...

Si, el SDK de Kinect está dentro del SDK de desarrollo profesional de la XBox, el cual solo se libera normalmente para estudios de desarrollo profesionales. Además no es en C#, sino en C++. Estaría muy muy bien que dieran acceso al Kinect desde XNA, pero por el momento no tengo noticias de esto. Lo voy a preguntar al equipo de desarrollo de XNA, a ver qué me dicen...

Iñaki Ayucar said...

Ya tengo una respuesta parcial. El soporte para Kinect desde XNA está en la lista de futuras funcionalidades. Puedes leer más en este post de Dave Mitchell, del equipo de Microsoft.

http://forums.create.msdn.com/forums/t/65717.aspx

Kiko said...

Qué rapidez de respuesta xD. Con "futuras funcionalidades" a qué se refieren? años? o meses? ni idea supongo... Yo particularmente me compraría antes una Xbox + Kinect que la Wii solamente por la posibilidad de desarrollar aplicaciones propias. Creo que Nintendo (hasta donde yo se no tiene ningun SDK oficial para la Wii) y otras marcas menosprecian el potencial de liberar este tipo de herramientas y me parece un gran acierto por parte de Microsoft iniciativas como XNA.

Iñaki Ayucar said...

Sip. Tenemos una lista de correo donde estamos todos los MVP de XNA/DirectX y el propio equipo de desarrollo de Microsoft. Así, aunque ahora los de U.S. están dormiditos, siempre hay alguien en una franja horaria parecida y te contesta.

Yo tengo el Kinect desde ayer, y te digo que se come con patatas a la Wii. Es que no tiene nada que ver, ya que te detecta todo el cuerpo a la perfección. De esta forma, no tienes un único mando, tienes las dos manos, pies y el cuerpo entero. Las posibilidades son increíbles. Y yo soy el primero que no creía mucho en este proyecto, pero despues de una hora ayer dandome leches virtuales con mi compañero al juego de boxeo, me quedé totalmente impresionado.

Y además si liberan SDKs, pues ya sera la leche. No especifican para cuando estará. Además acaba de salir la version 4 de XNA. Yo creo que será a lo largo del proximo año, pero no se decirte cuando.

Cuando sepa más te comento.

Kiko said...

Gracias Iñaki, por cierto, estaba claro que poco iban a tardar en salir videos de FAILS con el Kinect xD

http://www.youtube.com/watch?v=Ux1FZpPKh20