Post on 20-Jul-2015
KINECTCamila Pereira dos Santos RA: 69407Calvin Rodrigues da Costa RA: 69420
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://pt.wikipedia.org/wiki/Kinect
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-arrayConjunto 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 movimentosIdentificaçã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 applicationUS 2008/0106746
*obs: Detalhes não são divulgados publicamente e são baseados nas especulações apresentadas em (John MacCormick).
Luz estruturadaTé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 focoO 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 applicationUS 2010/0290698
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 ]
Profundidade a partir do Stereo
Detecção da posição do corpo1. 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 corpoBase inicial com 100000 imagens de profundidade e respectivos esqueletos.
Shotton et al, CVPR(2011)
Detecção da posição do corpoRenderização por computação gráfica
para 15 tipos de corpo diferentes e
vários outros parâmetros.
Shotton et al, CVPR(2011)
1 milhão de exemplos⇒
Árvore de decisão aleatória
Ntoulas et al, WWW (2006)
Usada para mapear imagens de profundidade em partes do corpo.e.g: “Como a profundidade daquele pixel compara-se a esse?”
Á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óriaUsa 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óriaTempo 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)]
Algoritmo deslocamento médio
Rápido e eficiente.
Objetivo: encontrar a região mais densa
Image from Ukrainitz & Sarel
Identificação do esqueleto
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
● 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
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
Kinect hardware
Kinect drivers
Audio and Video Components
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 ImagesDisponí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/