KINECT 
Camila Pereira dos Santos RA: 69407 
Calvin Rodrigues da Costa RA: 69420
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
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
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
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.
Detecção de movimentos 
Figuras e esquema retirados de ohn MacCormick http://users. 
dickinson.edu/~jmac/selected-talks/kinect.pdf
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).
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)
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
Profundidade a partir do foco 
Freedman et al, PrimeSense patent application 
US 2010/0290698
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 ]
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.
Detecção da posição do corpo
Detecção da posição do corpo 
Base inicial com 100000 imagens de profundidade e respectivos esqueletos. 
Shotton et al, CVPR 
(2011)
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)
Á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)
Á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.
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)
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)]
Identificação do esqueleto 
Algoritmo deslocamento 
médio 
Rápido e eficiente. 
Objetivo: encontrar a 
região mais densa 
Image from Ukrainitz & Sarel
Identificação do esqueleto 
Image from Ukrainitz & Sarel
Identificação do esqueleto 
Image from Ukrainitz & Sarel
Identificação do esqueleto 
Image from Ukrainitz & Sarel
Identificação do esqueleto 
Image from Ukrainitz & Sarel
Identificação do esqueleto 
Image from Ukrainitz & Sarel
Identificação do esqueleto 
Image from Ukrainitz & Sarel
Identificação do esqueleto
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.
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
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
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
Kinect para Windows SDK 
http://msdn.microsoft.com/en-us/library/jj131023. 
aspx
Kinect para Windows SDK 
http://msdn.microsoft.com/en-us/library/jj131023. 
aspx 
Audio and Video 
Components 
Kinect drivers 
Kinect hardware
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/
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.
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/
Kinect para Windows SDK 
http://www.kinectingforwindows.com/2013/04/01/introduction-to-kinect- 
for-windows-sdk/
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”.
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
Referências bibliográficas 
● http://go.microsoft.com/fwlink/?LinkId=403900 
● http://www.kinectingforwindows.com/2013/04/01/introduction-to-kinect-for-windows- 
sdk/ 
● http://msdn.microsoft.com/en-us/library/hh855419.aspx 
● http://www.codeproject.com/Articles/213034/Kinect-Getting-Started- 
Become-The-Incredible-Hulk 
● http://rafaelnicolettdeveloper.wordpress.com/2012/06/23/skeletal-tracking-kinect- 
sdk-1-5/ 
● http://pichiliani.com.br/2013/04/hacks-de-kinect-com-codigo-fonte/ 
● http://blogpassword.wordpress.com/2013/04/16/desenvolvimento-para-kinect- 
conexao-com-o-sensor/

Seminario Kinect

  • 1.
    KINECT Camila Pereirados Santos RA: 69407 Calvin Rodrigues da Costa RA: 69420
  • 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 coloridaVGA 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écnicapara 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 partirdo foco Freedman et al, PrimeSense patent application US 2010/0290698
  • 11.
    Profundidade a partirdo 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çãodo 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.
  • 13.
  • 14.
    Detecção da posiçãodo corpo Base inicial com 100000 imagens de profundidade e respectivos esqueletos. Shotton et al, CVPR (2011)
  • 15.
    Detecção da posiçãodo 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ãoaleató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ãoaleató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ãoaleató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ãoaleató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
  • 21.
    Identificação do esqueleto Image from Ukrainitz & Sarel
  • 22.
    Identificação do esqueleto Image from Ukrainitz & Sarel
  • 23.
    Identificação do esqueleto Image from Ukrainitz & Sarel
  • 24.
    Identificação do esqueleto Image from Ukrainitz & Sarel
  • 25.
    Identificação do esqueleto Image from Ukrainitz & Sarel
  • 26.
    Identificação do esqueleto Image from Ukrainitz & Sarel
  • 27.
  • 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 WindowsSDK ● 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 WindowsSDK http://msdn.microsoft.com/en-us/library/jj131023. aspx
  • 33.
    Kinect para WindowsSDK http://msdn.microsoft.com/en-us/library/jj131023. aspx Audio and Video Components Kinect drivers Kinect hardware
  • 34.
    Kinect para WindowsSDK ● 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 WindowsSDK ● Data Streams: uso direto das informações capturadas pelo sensor; ● Recognition Streams: depende da obtenção e do processamento dos dados.
  • 36.
    Kinect para WindowsSDK ● 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 WindowsSDK http://www.kinectingforwindows.com/2013/04/01/introduction-to-kinect- for-windows-sdk/
  • 38.
    Exemplos Alguns exemplosinteressantes 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
  • 40.
    Referências bibliográficas ●http://go.microsoft.com/fwlink/?LinkId=403900 ● http://www.kinectingforwindows.com/2013/04/01/introduction-to-kinect-for-windows- sdk/ ● http://msdn.microsoft.com/en-us/library/hh855419.aspx ● http://www.codeproject.com/Articles/213034/Kinect-Getting-Started- Become-The-Incredible-Hulk ● http://rafaelnicolettdeveloper.wordpress.com/2012/06/23/skeletal-tracking-kinect- sdk-1-5/ ● http://pichiliani.com.br/2013/04/hacks-de-kinect-com-codigo-fonte/ ● http://blogpassword.wordpress.com/2013/04/16/desenvolvimento-para-kinect- conexao-com-o-sensor/