Kinect & WPF

EN:

Some months ago I bought my 2nd console, after mega-drive, I am a proud owner of an Xbox 360. But of course that's not why I'm writing this post, and was not "just" to play that i bought the console. I decided to buy the Xbox because i am a microsoft geek, and because it has a  excellent add on which is the Kinect, the old project natal. For those who do not know is basically a device that has a series of cameras and special lenses that can recreate the environment in 3D and motion, this in line with an incredible software from Microsoft and some partners elevated to a new level the game market, with the xbox and kinect we are the command, the console recreates in the avatars our body movements and gestures, is a fascinating experience. Of course after a short time of its public release, someone managed to hack kinect and use it on a pc, and a few weeks ago PrimeSense that makes the hardware kinect decided to release drivers for the camera and also open source framework for working with data and analyzes them.

Ok here was when I got fascinated, with drivers supported by PrimeSense it was no longer a world of hacks and tricks, as of now it is official that the kinect and other devices like these will come in our desktop, and if are have an interest to ri ecommend be attentive to the CES for sure it will emerge new things on this subject.

After reading, checking for drivers, some installations failed and a hundred tests, I finally choose to use the drivers PrimeSense and its tools. OPENNI is a project to create a standard for dealing with natural interfaces, ie, works on top of the drivers of any device regardless of its brand, or for example data coming in from a file of one or more cameras or other device. PrimeSense also release another framework called NITE that is a higher level framework for working with data from sensors, and uses some algorithms to calculate better recognize some gestures, and some controls already prepared for the gestures and movements, and as tracking all the rest of the body and people. Of course for me and the little time I have only been possible to mess with this because both use these frameworks  have a  .NET wrapper

I'm still at the very beginning to understand how this works, however I made a small application that shows some of these capabilities apis, how to make the tracking of the hands, move the mouse cursor, and apply some effects all this in WPF. In the example at the bottom right we have a window with the image and depth map captured by the camera, then in the main window of an image with an effect that "tries" to recreate the ripple effect of the surface." In the example at the bottom right we have a window with the image and depth map captured by the camera, then in the main window of an image with an effect that "tries" to recreate the ripple effect of the surface.

 

PT:

Há uns meses comprei a minha 2ª consola, depois da espetacular mega-drive eis que sou um orgulhoso dono de uma Xbox 360. Mas claro que não é por isso que estou a escrever este post, e também não foi "só" para jogar que comprei a consola. Decidi me por comprar a Xbox pois aleém de ser um geek da Microsfot, ela tem um excelente add on que é o Kinect, o antigo projecto Natal. Para quem não sabe basicamente é um aparelho que tem uma série de cameras e lentes especiais que conseguem recriar o ambiente e movimentos em 3D, isto em sintonia com um software incrivel da Microsoft e de alguns pareceiros elevou a um novo nivel o mercado dos jogos, aqui somos nós o comando, a consola recria nas personagens os nossos movimentos do corpo e gestos, é uma experiência fascinante. Claro que passado pouco tempo do seu lançamento público, alguém consegui hackar a kinect e usa-la num pc, e algumas semanas atrás a PrimeSense que faz o hardware do kinect resolveu libertar drivers para a camera e também framework open source para trabalhar com os dados e analisa-los.

Ok aqui é que eu fiquei fascinado, com drivers suportados pela PrimeSense isto deixava de ser um mundo de hacks  e brincadeiras, a partir de agora é oficial que a kinect e outros aparelhos como estes vão entrar no nossos desktops, e se tiverem intressados até recomendo estarem atentos ao CES onde de certeza vão surgir novidades neste panorama.

Depois de ler, procurar drivers, algumas inslações falhadas e  uma  centena de testes, acabei por optar por usar os drivers da PrimeSense e as suas ferramentas. OPENNI é um projecto para criar um standard para lidar com Natural Interfaces, isto é, trabalha em cima dos drivers de qualquer aparelho independentemente da sua marca, ou por exemplo dados que venham de um ficheiro, de uma ou mais cameras ou de outro aparelho. Isto permite fazer programas que usem qualquer aparelho, ou fazer aparelhos que funcionem com qualquer programa, é bom para os dois lados. Depois a PrimeSense disponiblizou outra framework o NITE que é  uma framework de mais alto nivel para trabalhar com os dados de sensores, e usa alguns algoritmos para calcular melhor o reconhecimento de alguns gestos, bem como alguns controlos já preparados para gestos e movimentos, além de tudo o resto como tracking do corpo e das pessoas. Claro que para mim e para o pouco tempo que tenho só foi possivel usar estas frameworks porque ambas possuem um wrapper para .NET.

Eu ainda estou muito no inicio de perceber como tudo isto funciona, no entanto fiz uma pequena aplicação que mostra algumas capacidades destas apis, como fazer o tracking das mãos, mover o cursor do rato,  e aplicar alguns efeitos tudo isto em WPF . No exemplo no canto inferior direito temos uma janela com a imagem  e o mapa de profundidade capturadas pela camera, depois na janela principal uma imagem com um efeito que "tenta" recriar o ripple effect do surface.

Video:

http://www.youtube.com/watch?v=sF-uKKvAkD8

Código:

http://dl.dropbox.com/u/1966569/kinect/kinect.rar

Discussao:

http://groups.google.com/group/openni-dev/browse_thread/thread/9ce6c8a2e27ff22f

 

Links:

http://www.openni.org/

http://groups.google.com/group/openni-dev

Video:

http://www.youtube.com/watch?v=sF-uKKvAkD8

SAmple Code:

http://dl.dropbox.com/u/1966569/kinect/kinect.rar

Discussion:

http://groups.google.com/group/openni-dev/browse_thread/thread/9ce6c8a2e27ff22f

 

Links:

http://www.openni.org/

http://groups.google.com/group/openni-dev

Leave a Comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Scroll to Top