2. Kinect
http://pt.wikipedia.org/wiki/Kinect
❏ Lançado em 2010 pela Microsoft para o Xbox, posteriormente para
Windows.
❏ É uma combinação de câmeras, microfones e software que reconhece os
movimentos corporais.
❏ Isola cada jogador no ambiente por meio de
reconhecimento da face e da voz.
http://kotaku.com/5679411/review-kinect-sports
3. Hardware Câmera colorida VGA
Usada para reconhecimento corporal e
facial.
Detecta as três cores vermelho, verde e
azul
Sensor de profundidade:
Composto por um projetor infravermelho e
um sensor CMOS monocromático.
Funciona independente das condições de
luz.
Microfone multi-array
Conjunto de quatro microfones que
isola as vozes dos jogadores do ruído do
ambiente.
Resolução: 640 x 480-pixel
30 FPS
http://electronics.howstuffworks.com/microsoft-kinect2.htm
4. Sensor de profundidade
Fonte de luz
invisível
ilumina a
pessoa
Chip do sensor mede
a distância que a luz
percorre, para cada
pixel no chip
Software usa mapa de
profundidade para
perceber e identificar
objetos em tempo real
Dispositivo final age
apropriadamente
http://www.jameco.com/jameco/workshop/howitworks/xboxkinect.html
5. Detecção de movimentos
Identificação da posição do corpo:
❏ Calcula um mapa de profundidade, usando a luz estruturada.
Combinada com as técnicas de profundidade a partir do foco e
profundidade a partir do stereo.
❏ Infere posição do corpo por aprendizado de máquina.
6. Detecção de movimentos
Figuras e esquema retirados de ohn MacCormick http://users.
dickinson.edu/~jmac/selected-talks/kinect.pdf
7. Mapa de profundidade
É construído pela análise do padrão de
salpicamento da luz infravermelha.
Tecnologia criada pela empresa PrimeSense.
Shpunt et al, PrimeSense patent application
US 2008/0106746
*obs: Detalhes não são divulgados publicamente e são baseados nas especulações
apresentadas em (John MacCormick).
8. Luz estruturada
Técnica para analisar um padrão conhecido.
A luz infra-vermelha projeta um padrão pré-definido na cena.
A profundidade é obtida por meio da análise da deformação da luz na imagem
obtida.
Zhang et al, 3DPVT (2002)
9. Profundidade de foco
O que está mais borrado na imagem está
mais longe.
O Kinect usa lentes com foco diferente nas
direções x e y, de forma que a orientação do
objeto define a sua profundidade
Watanabe and Nayar, IJCV 27(3),
1998
10. Profundidade a partir do foco
Freedman et al, PrimeSense patent application
US 2010/0290698
11. Profundidade a partir do Stereo
Ao capturar a cena por outro ângulo, os
objetos que estão mais próximos são mais
deslocados que os que estão longe.
Kinect captura e observa a cena de ângulos
diferentes, e infere a profundidade pela
análise do deslocamento no padrão de
salpicamento
[ M. Domínguez-Morales, A. Jiménez-Fernández, R. Paz-
Vicente, A. Linares-Barranco, G. Jiménez-Moreno, 2012 ]
12. Detecção da posição do corpo
1. Construção do mapa de profundidade.
2. Partes do corpo são identificadas usando uma árvore de decisão
aleatória. (Shotton et al (CVPR 2011)).
Treinamento da árvore com 1 milhão de exemplos.
P.1: mapeia imagens de profundidade em partes do corpo.
P.2: transforma a imagem das partes do corpo em um esqueleto.
14. Detecção da posição do corpo
Base inicial com 100000 imagens de profundidade e respectivos esqueletos.
Shotton et al, CVPR
(2011)
15. Detecção da posição do corpo
Renderização por computação gráfica
para 15 tipos de corpo diferentes e
vários outros parâmetros.
⇒ 1 milhão de exemplos
Shotton et al, CVPR
(2011)
16. Árvore de decisão aleatória
Usada para mapear imagens de profundidade em partes do
corpo.
e.g: “Como a profundidade daquele pixel compara-se a
esse?”
Ntoulas et al, WWW (2006)
17. Árvore de decisão aleatória
Árvore de decisão: Faz a pergunta mais relevante no momento.
Ganho de informação ( derivado da entropia)
Árvore de decisão aleatória
Muitas possibilidades => seleciona cada pergunta aleatoriamente a partir
de 2000 opções.
18. Floresta de decisão aleatória
Usa floresta: aprende várias árvores.
A classificação acrescenta distribuições de probabilidade para as árvores.
Shotton et al, CVPR(2011)
19. Floresta de decisão aleatória
Tempo de aprendizado:
1 CPU: 24000 horas.
Implementação distribuída: apenas 1 dia.
● 3 árvores com profundidade 20.
● 1 milhão de imagens.
● 1000 núcleos.
[Shotton et al, CVPR(2011)]
20. Identificação do esqueleto
Algoritmo deslocamento
médio
Rápido e eficiente.
Objetivo: encontrar a
região mais densa
Image from Ukrainitz & Sarel
28. Detecção de Áudio
Quatro microfones que permitem às aplicações responderem a comandos
verbais.
Imagem retirada de Human Interface Guidelines v2.0
● Entrada de áudio:
Detecta o áudio 50 graus à direita e à
esquerda da frente do sensor.
29. Detecção de Áudio
● Array de microfones:
○ intervalos de 5 graus;
○ pode ser utilizado para
especificar a direção de sons
importantes.
● Limite de som:
○ o array de microfones pode
eliminar 20dB de ruídos do
ambiente.
Imagens retiradas de Human Interface Guidelines v2.0
30. Detecção de Áudio
● Microfone direcional
○ é possível direcionar de
forma programática o array
de microfones;
● Fonte de som mais alta
○ o Kinect para windows foca,
por default, a fonte que
fornece um áudio mais
elevado.
Imagens retiradas de Human Interface Guidelines v2.0
31. Kinect para Windows SDK
● Requerimentos:
○ Directx 9.0C;
○ Visual Studio 2010 ou 2012 (inclusive express edition)
○ .NET Framework 4 ou 4.5
● Pode criar apps usando C#, VB.NET ou C++.
❏ Programming guide: http://msdn.microsoft.com/en-us/
library/jj131023.aspx
32. Kinect para Windows SDK
http://msdn.microsoft.com/en-us/library/jj131023.
aspx
33. Kinect para Windows SDK
http://msdn.microsoft.com/en-us/library/jj131023.
aspx
Audio and Video
Components
Kinect drivers
Kinect hardware
34. Kinect para Windows SDK
● Montando Blocos
○ É possível dividir em: Data Streams & Recognition Streams
http://www.kinectingforwindows.com/2013/04/01/introduction-to-kinect-for-windows-sdk/
35. Kinect para Windows SDK
● Data Streams: uso direto das informações capturadas pelo
sensor;
● Recognition Streams: depende da obtenção e do processamento
dos dados.
36. Kinect para Windows SDK
● Existem implementadas
algumas classes básicas
úteis para o
desenvolvimento.
○ Mais informações: http:
//tiny.cc/2r12ox
http://www.kinectingforwindows.
com/2013/04/01/introduction-to-kinect-for-windows-
sdk/
37. Kinect para Windows SDK
http://www.kinectingforwindows.com/2013/04/01/introduction-to-kinect-
for-windows-sdk/
38. Exemplos
Alguns exemplos interessantes são apresentados nos seguintes
sites:
● http://zip.net/bnp9ft - “Become The Incredible Hulk”;
● http://zip.net/bxqbb8 - “Skeletal Tracking”;
● http://zip.net/bjp8Y4 - “Hacks de Kinect com código fonte”;
● http://zip.net/bfp84Q - “Conexão com o sensor”.
39. Referências bibliográficas
● Shotton et al, CVPR(2011), Real-Time Human Pose Recognition in Parts
from Single Depth Images
Disponível em http://research.microsoft.
com/pubs/145347/BodyPartRecognition.pdf
● http://users.dickinson.edu/~jmac/selected-talks/kinect.pdf
● http://electronics.howstuffworks.com/microsoft-kinect.htm
● http://electronics.howstuffworks.com/microsoft-kinect2.htm
● http://www.jameco.com/jameco/workshop/howitworks/xboxkinect.html
● http://www.microsoft.com/en-us/kinectforwindows/
● http://www.cs.cmu.edu/~yaser/Lecture-4-Games.pdf
● http://research.microsoft.com/pubs/145347/BodyPartRecognition.pdf