desenvolvendo com kinect
DESCRIPTION
Minha apresentação sobre o desenvolvimento utilizando o KinectTRANSCRIPT
Gabriel Schade CardosoDesenvolvendo com Kinect
2
Quem é Gabriel Schade Cardoso?
GUI
Dev - 4 anos Futebol freestyler - 6 anos
Dev – 1 ano e 2 meses
.NET
Bacharel e Mestrando
Gamer
Certificações C# e HTML 5 + Javascript
3
Conceitos
4
Interfaces
GUICommand Line Interface
Natural User Interface
Graphical User Interface
5
Interfaces
GUICommand Line Interface
Natural User Interface
Graphical User Interface
As aplicações que oferecem interfaces NUI, como o próprio termo diz, devem ser naturais aos usuários, oferecendo formas de interação com a aplicação que seja independente de conhecimento computacional.
6
Microsoft Kinect
7
Microsoft Kinect
Microsoft Kinect – o herdeiro
Prime Sense
8
Como o Kinect vê o mundo
9
Captura de profundidade
Light Coding;
RGBD;
Reconhecimento do esqueleto.
10
O Software
Apesar de utilizar o hardware herdado da PrimeSense, o Kinect possui um processamento próprio para o reconhecimento de “esqueletos”.
A Microsoft treinou uma rede neural com a utilização de diferentes mokaps, para que fosse possível reconhecer esqueletos de diferentes tamanhos.
11
SDK
12
Kinect for Windows SDK
KinectSensorCollection;
KinectSensorChooser;
Streams:
Audio
Interaction
Color
Depth
Skeleton
13
Na classe KinectSensor existe uma propriedade estática chamada KinectSensors que exibe a coleção de sensores conectados ao computador;
A classe KinectSensor define o modelo virtual do sensor Kinect;
Kinect Sensor Collection
14
O KinectSensorChooser é uma classe utilizada como seletor do Kinect;
Automatiza a captura de um sensor ativo, cada sensor possui um Id para gerenciamento.
Kinect Sensor Chooser
15
Navegação – (Audio e Interactions)
16
Reconhecimento de voz; (necessita do SpeechRecognition SDK)
Reconhecer a direção de uma fonte de
áudio;
Reconhecer o volume de uma entrada de áudio;
Kinect Audio Source
Microfones
17
1. Inicializar a Engine de reconhecimento de voz do SDK com o idioma que será reconhecido;
2. Construir uma gramática com todos os comandos que serão reconhecidos;
3. Inicializar o Audio do Kinect e inserir sua Stream na engine de reconhecimento;
Audio – Reconhecimento de voz
18
Audio- Direção do Áudio
Beam Angle: Obtém o ângulo {-50,50} da direção que o sensor está
definido para ouvir;
Por padrão o sensor se definirá automaticamente para o local de onde o som mais alto está vindo, mas é possível que ele seja definido manualmente;
Há um evento para quando esta propriedade é alterada.
19
Audio- Direção do ÁudioAudioSource Angle:
Obtém o ângulo {-50,50} da direção que o som está vindo;
Ao contrário do Beam Angle esta propriedade zera quando a entrada do áudio acaba;
20
Kinect InteractionsFoi lançado dia 18 de março de 2013;
Provê facilitadores para interações do Kinect através de controles que reconhecem determinados gestos;
21
Detecção da Mão
Cursor padrão
Pressionando
Pressionado
Segurando
22
PHIZ – Physical Interaction Zone
23
Demo – Navegação e Áudio
24
Streams
25
Color Stream
Fluxo de cores do sensor, possui diversos formatos;
RGB 32 bits por pixel640x480 FPS: 301280x960 FPS:12
YUV16 bits por pixel640x480 FPS:15
Bayer32 bits por pixel1280x960 FPS:12640x480 FPS:30
26
Color Stream – InfraRedFluxo de infravermelho não é um fluxo de dados a parte e sim uma configuração do fluxo de cores;
IR 16 bits por pixel640x480 FPS: 30
Importante: Só é possível iniciar um ColorStream por
sensor. O que torna impossível ativar os
streams de IR e RGB simultaneamente
no mesmo sensor.
27
Depth StreamFluxo de profundidade busca a distância em milímetros dos elementos no ambiente;
640x480 320x240 80x60
FPS: 30
28
Depth StreamConfiguração para Default mode e Near mode;
Reconhece até 6 pessoas.
Player Segmentation Data
cada pixel de profundidade possui um valor de 0 a 6.
29
Demo – Color & Depth Streams
30
Skeleton StreamApesar de reconhecer 6 usuários o Kinect rastreia as articulações de no máximo 2 usuários.
31
Skeleton StreamDe pé ou sentado, mas olhe para o sensor!
32
Skeleton Stream - Joints
33
Skeleton Stream
Pose / Postura Gestos
34
Detecção de Poses
35
Detecção de PosesNão há nenhuma forma simples nativa para se fazer a detecção de poses ou gestos genéricos.
Qual a grande dificuldade?
36
Detecção de PosesAlgoritmos que utilizo em minha própria engine para reconhecimento:
1. Cálculo do ângulo entre 3 articulações nos planos frontal, lateral e superior através Lei dos Cossenos;
2. Cálculo do ângulo através do Produto Escalar entre vetores 3D.
37
Lei dos cossenos
Utiliza-se três articulações e suas posições espaciais (X, Y e Z) para definir triângulos sobre os planos XY, XZ e YZ, estes planos são definidos através de uma projeção ortográfica paralela;
38
Projeção Ortográfica Paralela Corta-se um dos eixos (X, Y ou Z) e projeta-se os pontos
sobre o plano dos outros 2 eixos restantes.
39
Lei dos cossenosExemplo de triangulo formado na visão frontal
40
Produto Escalar• Utiliza-se três articulações e suas posições espaciais (X, Y e
Z) para definir os vetores 3D utilizados para calcular o ângulo.
41
Demo – Final
42
Dicas
Utilizar o Kinect Studio para Debug;
Utilizar as DLLs KinectToolkit e KinectToolkitControls;
Utilizar a DLL KinectToolbox;
Utilizar as minhas DLLs (por que não? :D);
Procurar também sobre o Kinect Fusion e Face
Tracking;
43
Muito Obrigado!!
/gabrielschade
/gabrielschade
/gabrielschade
/gabrielschade
/gabrielschade