SlideShare a Scribd company logo
1 of 43
Desenvolvendo com Kinect
               Gabriel Schade Cardoso
Quem é Gabriel Schade Cardoso?

                                                                  Gamer




                          Certificações C# e
Bacharel e Mestrando      HTML 5 + Javascript



                         GUI


.NET
Dev - 4 anos           Dev – 1 ano e 2 meses    Futebol freestyler - 6 anos


                                                                              2
Conceitos




            3
Interfaces




Command Line Interface         Graphical User Interface   Natural User Interface
                         GUI




                                                                              4
Interfaces


                       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
Command Line Interface independente de conhecimento
                          Graphical User Interface Natural User Interface
                      GUI
                       computacional.



                                                                       5
Microsoft Kinect




                   6
Microsoft Kinect – o herdeiro




Prime Sense          Microsoft Kinect




                                        7
Como o Kinect vê o mundo




                           8
Captura de profundidade
Light Coding;

RGBD;

Reconhecimento do esqueleto.




                                9
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.



                                                   10
SDK




      11
Kinect for Windows SDK
 KinectSensorCollection;

 KinectSensorChooser;

 Streams:
   Audio

   Interaction

   Color

   Depth

   Skeleton
                            12
Kinect Sensor Collection

  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;




                                                             13
Kinect Sensor Chooser

 O KinectSensorChooser é uma classe utilizada como
  seletor do Kinect;


 Automatiza a captura de um sensor ativo, cada sensor
  possui um Id para gerenciamento.




                                                         14
Navegação – (Audio e Interactions)




                                     15
Kinect Audio Source

 Reconhecimento de voz; (necessita do
  SpeechRecognition SDK)
 Reconhecer a direção de uma fonte de áudio;
 Reconhecer o volume de uma entrada de áudio;



                     Microfones




                                                 16
Audio – Reconhecimento de voz

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;

                                                   17
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.




                                                                      18
Audio- Direção do Áudio
AudioSource 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;




                                                                19
Kinect Interactions
 Foi lançado dia 18 de março de 2013;

 Provê facilitadores para interações do Kinect através de
  controles que reconhecem determinados gestos;




                                                             20
Detecção da Mão




   Cursor padrão                  Pressionado




                   Pressionando                 Segurando

                                                            21
PHIZ – Physical Interaction Zone




                                   22
Demo – Navegação e Áudio




                           23
Streams




          24
Color Stream

 Fluxo de cores do sensor, possui diversos formatos;




  RGB                 YUV                 Bayer
  32 bits por pixel   16 bits por pixel   32 bits por pixel
  640x480 FPS: 30     640x480 FPS:15      1280x960 FPS:12
  1280x960 FPS:12                         640x480 FPS:30


                                                              25
Color Stream – InfraRed
 Fluxo de infravermelho não é um fluxo de dados a parte e
  sim uma configuração do fluxo de cores;




 IR
 16 bits por pixel
 640x480 FPS: 30
                                                         26
Depth Stream
 Fluxo de profundidade busca a distância em milímetros
  dos elementos no ambiente;




  640x480          320x240           80x60


 FPS: 30
                                                          27
Depth Stream
 Configuraçã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.




                                                28
Demo – Color & Depth Streams




                               29
Skeleton Stream
 Apesar de reconhecer 6 usuários o Kinect rastreia as
  articulações de no máximo 2 usuários.




                                                         30
Skeleton Stream
 De pé ou sentado, mas olhe para o sensor!




                                              31
Skeleton Stream - Joints




                           32
Skeleton Stream




   Pose / Postura   Gestos




                             33
Detecção de Poses




                    34
Detecção de Poses
 Não há nenhuma forma simples nativa para se fazer a
  detecção de poses ou gestos genéricos.

 Qual a grande dificuldade?




                                                        35
Detecção de Poses
 Algoritmos 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.




                                                           36
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;




                                                          37
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.




                                                                      38
Lei dos cossenos
 Exemplo de triangulo formado na visão frontal




                                                 39
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.




                                                                            40
Demo – Final




               41
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;




                                                             42
Muito Obrigado!!
/gabrielschade

/gabrielschade

/gabrielschade

/gabrielschade
/gabrielschade
                    43

More Related Content

What's hot

Kinect: Muito além do XBOX - SEMCOMP 2012
Kinect: Muito além do XBOX - SEMCOMP 2012Kinect: Muito além do XBOX - SEMCOMP 2012
Kinect: Muito além do XBOX - SEMCOMP 2012André Paulovich
 
Conhecendo o Kinect: Muito além do XBOX - InfoTech 2012
Conhecendo o Kinect: Muito além do XBOX - InfoTech 2012Conhecendo o Kinect: Muito além do XBOX - InfoTech 2012
Conhecendo o Kinect: Muito além do XBOX - InfoTech 2012André Paulovich
 
Realidade aumentada para dispositivos móveis
Realidade aumentada para dispositivos móveisRealidade aumentada para dispositivos móveis
Realidade aumentada para dispositivos móveisMarcelo Maia
 
Unama br edinaldo_la-roque_oficina_kinect_20160917_2030
Unama br edinaldo_la-roque_oficina_kinect_20160917_2030Unama br edinaldo_la-roque_oficina_kinect_20160917_2030
Unama br edinaldo_la-roque_oficina_kinect_20160917_2030la-roque
 
Realidade Virtual e Realidade Aumentada em Jogos
Realidade Virtual e Realidade Aumentada em JogosRealidade Virtual e Realidade Aumentada em Jogos
Realidade Virtual e Realidade Aumentada em JogosRonildo Oliveira
 
Oficina: Realidade Aumentada
Oficina: Realidade AumentadaOficina: Realidade Aumentada
Oficina: Realidade AumentadaNellie Santee
 
Computação Gráfica - Introdução ao OpenGL
Computação Gráfica - Introdução ao OpenGLComputação Gráfica - Introdução ao OpenGL
Computação Gráfica - Introdução ao OpenGLTony Alexander Hild
 
Computação Gráfica - Artquitetura de Dispositivos Gráficos
Computação Gráfica - Artquitetura de Dispositivos GráficosComputação Gráfica - Artquitetura de Dispositivos Gráficos
Computação Gráfica - Artquitetura de Dispositivos GráficosTony Alexander Hild
 
Realidade Aumentada para Dispositivos Móveis utilizando Qualcomm Vuforia
Realidade Aumentada para Dispositivos Móveis utilizando Qualcomm VuforiaRealidade Aumentada para Dispositivos Móveis utilizando Qualcomm Vuforia
Realidade Aumentada para Dispositivos Móveis utilizando Qualcomm VuforiaJose Ricardo da Silva Junior
 
Realidade aumentada
Realidade aumentadaRealidade aumentada
Realidade aumentadaPedro
 
Realidade Aumentada + Android : Oficina SESC
Realidade Aumentada + Android : Oficina SESCRealidade Aumentada + Android : Oficina SESC
Realidade Aumentada + Android : Oficina SESCOdair Bonin Borges
 
Realidade Aumentada
Realidade AumentadaRealidade Aumentada
Realidade Aumentadadiogom1603
 
Dispositivos para Computação Gráfica
Dispositivos para Computação GráficaDispositivos para Computação Gráfica
Dispositivos para Computação GráficaLiliane Machado
 

What's hot (20)

Kinect: Muito além do XBOX - SEMCOMP 2012
Kinect: Muito além do XBOX - SEMCOMP 2012Kinect: Muito além do XBOX - SEMCOMP 2012
Kinect: Muito além do XBOX - SEMCOMP 2012
 
Kinect
KinectKinect
Kinect
 
Conhecendo o Kinect: Muito além do XBOX - InfoTech 2012
Conhecendo o Kinect: Muito além do XBOX - InfoTech 2012Conhecendo o Kinect: Muito além do XBOX - InfoTech 2012
Conhecendo o Kinect: Muito além do XBOX - InfoTech 2012
 
Realidade aumentada para dispositivos móveis
Realidade aumentada para dispositivos móveisRealidade aumentada para dispositivos móveis
Realidade aumentada para dispositivos móveis
 
Unama br edinaldo_la-roque_oficina_kinect_20160917_2030
Unama br edinaldo_la-roque_oficina_kinect_20160917_2030Unama br edinaldo_la-roque_oficina_kinect_20160917_2030
Unama br edinaldo_la-roque_oficina_kinect_20160917_2030
 
Palestra realidade aumentada
Palestra   realidade aumentadaPalestra   realidade aumentada
Palestra realidade aumentada
 
Realidade Virtual e Realidade Aumentada em Jogos
Realidade Virtual e Realidade Aumentada em JogosRealidade Virtual e Realidade Aumentada em Jogos
Realidade Virtual e Realidade Aumentada em Jogos
 
Oficina: Realidade Aumentada
Oficina: Realidade AumentadaOficina: Realidade Aumentada
Oficina: Realidade Aumentada
 
TDC - Desenvolvendo com Kinect
TDC - Desenvolvendo com KinectTDC - Desenvolvendo com Kinect
TDC - Desenvolvendo com Kinect
 
Realidade Aumentada
Realidade AumentadaRealidade Aumentada
Realidade Aumentada
 
Computação Gráfica - Introdução ao OpenGL
Computação Gráfica - Introdução ao OpenGLComputação Gráfica - Introdução ao OpenGL
Computação Gráfica - Introdução ao OpenGL
 
Seminario Kinect
Seminario KinectSeminario Kinect
Seminario Kinect
 
Kinect
KinectKinect
Kinect
 
Computação Gráfica - Artquitetura de Dispositivos Gráficos
Computação Gráfica - Artquitetura de Dispositivos GráficosComputação Gráfica - Artquitetura de Dispositivos Gráficos
Computação Gráfica - Artquitetura de Dispositivos Gráficos
 
Realidade Aumentada para Dispositivos Móveis utilizando Qualcomm Vuforia
Realidade Aumentada para Dispositivos Móveis utilizando Qualcomm VuforiaRealidade Aumentada para Dispositivos Móveis utilizando Qualcomm Vuforia
Realidade Aumentada para Dispositivos Móveis utilizando Qualcomm Vuforia
 
Realidade aumentada
Realidade aumentadaRealidade aumentada
Realidade aumentada
 
Realidade Aumentada + Android : Oficina SESC
Realidade Aumentada + Android : Oficina SESCRealidade Aumentada + Android : Oficina SESC
Realidade Aumentada + Android : Oficina SESC
 
Inteligência Artificial em Jogos
Inteligência Artificial em JogosInteligência Artificial em Jogos
Inteligência Artificial em Jogos
 
Realidade Aumentada
Realidade AumentadaRealidade Aumentada
Realidade Aumentada
 
Dispositivos para Computação Gráfica
Dispositivos para Computação GráficaDispositivos para Computação Gráfica
Dispositivos para Computação Gráfica
 

Similar to Desenvolvendo com Kinect

NUI - Natural User Interface utilizando kinect
NUI - Natural User Interface utilizando kinectNUI - Natural User Interface utilizando kinect
NUI - Natural User Interface utilizando kinectVitor Reis
 
DelphiConferenceBrasil2011 Delphi + Kinect
DelphiConferenceBrasil2011 Delphi + KinectDelphiConferenceBrasil2011 Delphi + Kinect
DelphiConferenceBrasil2011 Delphi + KinectVic Fernandes
 
Reconhecimento de Gestos em Imagens de Profundidade com Utilização do Sensor ...
Reconhecimento de Gestos em Imagens de Profundidade com Utilização do Sensor ...Reconhecimento de Gestos em Imagens de Profundidade com Utilização do Sensor ...
Reconhecimento de Gestos em Imagens de Profundidade com Utilização do Sensor ...testes1
 
Criando jogos com o kinect
Criando jogos com o kinectCriando jogos com o kinect
Criando jogos com o kinectJosé Farias
 
Apresentacao minicursofinal
Apresentacao minicursofinalApresentacao minicursofinal
Apresentacao minicursofinalAlmerindo Rehem
 
Palestra Intel Perceptual Computing SDK (Java)
Palestra Intel Perceptual Computing SDK (Java)Palestra Intel Perceptual Computing SDK (Java)
Palestra Intel Perceptual Computing SDK (Java)Felipe Pedroso
 
Animação e vídeo - Equipe 02
Animação e vídeo - Equipe 02Animação e vídeo - Equipe 02
Animação e vídeo - Equipe 02MPCOMP10
 
Slide blender 3 d apresentação
Slide blender 3 d apresentaçãoSlide blender 3 d apresentação
Slide blender 3 d apresentaçãoJosé Nascimento
 
A importância do software nas organizações de Jogos Digitais
A importância do software nas organizações de Jogos DigitaisA importância do software nas organizações de Jogos Digitais
A importância do software nas organizações de Jogos DigitaisKelvin Oliveira
 
Introdução às Game Engines
Introdução às Game Engines Introdução às Game Engines
Introdução às Game Engines Jerry Medeiros
 
Demonstrador virtual web com recursos de Realidade Aumentada - Apresentação
Demonstrador virtual web com recursos de Realidade Aumentada - ApresentaçãoDemonstrador virtual web com recursos de Realidade Aumentada - Apresentação
Demonstrador virtual web com recursos de Realidade Aumentada - ApresentaçãoLeonardo Pereira Santos
 
Multimidia na educação
Multimidia na educaçãoMultimidia na educação
Multimidia na educaçãosergioborgato
 
Controle de um braço robótico utilizando o sensor Microsoft Kinect
Controle de um braço robótico utilizando o sensor Microsoft KinectControle de um braço robótico utilizando o sensor Microsoft Kinect
Controle de um braço robótico utilizando o sensor Microsoft KinectWillian Rodrigues
 
Introdução ao Desenvolvimento de Jogos
Introdução ao Desenvolvimento de JogosIntrodução ao Desenvolvimento de Jogos
Introdução ao Desenvolvimento de JogosGabriel Giordano Medina
 
Rastreamento 3D de objetos para realidade virtual
Rastreamento 3D de objetos para realidade virtualRastreamento 3D de objetos para realidade virtual
Rastreamento 3D de objetos para realidade virtualpichiliani
 

Similar to Desenvolvendo com Kinect (20)

Kinect
KinectKinect
Kinect
 
Kinect
KinectKinect
Kinect
 
NUI - Natural User Interface utilizando kinect
NUI - Natural User Interface utilizando kinectNUI - Natural User Interface utilizando kinect
NUI - Natural User Interface utilizando kinect
 
OpenKinect, o Kinect para todos
OpenKinect, o Kinect para todosOpenKinect, o Kinect para todos
OpenKinect, o Kinect para todos
 
DelphiConferenceBrasil2011 Delphi + Kinect
DelphiConferenceBrasil2011 Delphi + KinectDelphiConferenceBrasil2011 Delphi + Kinect
DelphiConferenceBrasil2011 Delphi + Kinect
 
Reconhecimento de Gestos em Imagens de Profundidade com Utilização do Sensor ...
Reconhecimento de Gestos em Imagens de Profundidade com Utilização do Sensor ...Reconhecimento de Gestos em Imagens de Profundidade com Utilização do Sensor ...
Reconhecimento de Gestos em Imagens de Profundidade com Utilização do Sensor ...
 
Criando jogos com o kinect
Criando jogos com o kinectCriando jogos com o kinect
Criando jogos com o kinect
 
Apresentacao minicursofinal
Apresentacao minicursofinalApresentacao minicursofinal
Apresentacao minicursofinal
 
Palestra Intel Perceptual Computing SDK (Java)
Palestra Intel Perceptual Computing SDK (Java)Palestra Intel Perceptual Computing SDK (Java)
Palestra Intel Perceptual Computing SDK (Java)
 
Animação e vídeo - Equipe 02
Animação e vídeo - Equipe 02Animação e vídeo - Equipe 02
Animação e vídeo - Equipe 02
 
CGPI Aula 27/08/2018
CGPI Aula 27/08/2018CGPI Aula 27/08/2018
CGPI Aula 27/08/2018
 
Slide blender 3 d apresentação
Slide blender 3 d apresentaçãoSlide blender 3 d apresentação
Slide blender 3 d apresentação
 
A importância do software nas organizações de Jogos Digitais
A importância do software nas organizações de Jogos DigitaisA importância do software nas organizações de Jogos Digitais
A importância do software nas organizações de Jogos Digitais
 
Open Courseware 3D
Open Courseware 3DOpen Courseware 3D
Open Courseware 3D
 
Introdução às Game Engines
Introdução às Game Engines Introdução às Game Engines
Introdução às Game Engines
 
Demonstrador virtual web com recursos de Realidade Aumentada - Apresentação
Demonstrador virtual web com recursos de Realidade Aumentada - ApresentaçãoDemonstrador virtual web com recursos de Realidade Aumentada - Apresentação
Demonstrador virtual web com recursos de Realidade Aumentada - Apresentação
 
Multimidia na educação
Multimidia na educaçãoMultimidia na educação
Multimidia na educação
 
Controle de um braço robótico utilizando o sensor Microsoft Kinect
Controle de um braço robótico utilizando o sensor Microsoft KinectControle de um braço robótico utilizando o sensor Microsoft Kinect
Controle de um braço robótico utilizando o sensor Microsoft Kinect
 
Introdução ao Desenvolvimento de Jogos
Introdução ao Desenvolvimento de JogosIntrodução ao Desenvolvimento de Jogos
Introdução ao Desenvolvimento de Jogos
 
Rastreamento 3D de objetos para realidade virtual
Rastreamento 3D de objetos para realidade virtualRastreamento 3D de objetos para realidade virtual
Rastreamento 3D de objetos para realidade virtual
 

More from Gabriel Schade Cardoso

Usando Visão Computacional para Identificar Letras em Libras
Usando Visão Computacional para Identificar Letras em LibrasUsando Visão Computacional para Identificar Letras em Libras
Usando Visão Computacional para Identificar Letras em LibrasGabriel Schade Cardoso
 
Machine Learning: Classificação de Comentários com Azure ML & Python
Machine Learning: Classificação de Comentários com Azure ML & PythonMachine Learning: Classificação de Comentários com Azure ML & Python
Machine Learning: Classificação de Comentários com Azure ML & PythonGabriel Schade Cardoso
 
Programação Funcional usando C# e F#
Programação Funcional usando C# e F#Programação Funcional usando C# e F#
Programação Funcional usando C# e F#Gabriel Schade Cardoso
 
Aplicações inteligentes com o Azure Cognitive Services
Aplicações inteligentes com o Azure Cognitive ServicesAplicações inteligentes com o Azure Cognitive Services
Aplicações inteligentes com o Azure Cognitive ServicesGabriel Schade Cardoso
 
Abordagem Funcional para Gerenciamento de Erros em .NET
Abordagem Funcional para Gerenciamento de Erros em .NETAbordagem Funcional para Gerenciamento de Erros em .NET
Abordagem Funcional para Gerenciamento de Erros em .NETGabriel Schade Cardoso
 
Uma abordagem funcional para gerenciamento de erros
Uma abordagem funcional para gerenciamento de errosUma abordagem funcional para gerenciamento de erros
Uma abordagem funcional para gerenciamento de errosGabriel Schade Cardoso
 
Introdução à programação funcional
Introdução à programação funcionalIntrodução à programação funcional
Introdução à programação funcionalGabriel Schade Cardoso
 
A importância da programação funcional no dia a-dia
A importância da programação funcional no dia a-diaA importância da programação funcional no dia a-dia
A importância da programação funcional no dia a-diaGabriel Schade Cardoso
 
DDD linguagem ubiqua + codigo expressivo
DDD  linguagem ubiqua + codigo expressivoDDD  linguagem ubiqua + codigo expressivo
DDD linguagem ubiqua + codigo expressivoGabriel Schade Cardoso
 

More from Gabriel Schade Cardoso (17)

Usando Visão Computacional para Identificar Letras em Libras
Usando Visão Computacional para Identificar Letras em LibrasUsando Visão Computacional para Identificar Letras em Libras
Usando Visão Computacional para Identificar Letras em Libras
 
Programação Funcional usando F#
Programação Funcional usando F#Programação Funcional usando F#
Programação Funcional usando F#
 
Clean Architecture com .NET Core
Clean Architecture com .NET CoreClean Architecture com .NET Core
Clean Architecture com .NET Core
 
C# 8 e ML.NET
C# 8 e ML.NETC# 8 e ML.NET
C# 8 e ML.NET
 
Machine Learning: Classificação de Comentários com Azure ML & Python
Machine Learning: Classificação de Comentários com Azure ML & PythonMachine Learning: Classificação de Comentários com Azure ML & Python
Machine Learning: Classificação de Comentários com Azure ML & Python
 
Desmistificando Machine Learning
Desmistificando Machine LearningDesmistificando Machine Learning
Desmistificando Machine Learning
 
Programação Funcional usando C# e F#
Programação Funcional usando C# e F#Programação Funcional usando C# e F#
Programação Funcional usando C# e F#
 
Programação Funcional usando C#
Programação Funcional usando C#Programação Funcional usando C#
Programação Funcional usando C#
 
Programação Funcional para Humanos
Programação Funcional para HumanosProgramação Funcional para Humanos
Programação Funcional para Humanos
 
Arquitetura Limpa em .NET Core
Arquitetura Limpa em .NET CoreArquitetura Limpa em .NET Core
Arquitetura Limpa em .NET Core
 
Aplicações inteligentes com o Azure Cognitive Services
Aplicações inteligentes com o Azure Cognitive ServicesAplicações inteligentes com o Azure Cognitive Services
Aplicações inteligentes com o Azure Cognitive Services
 
Abordagem Funcional para Gerenciamento de Erros em .NET
Abordagem Funcional para Gerenciamento de Erros em .NETAbordagem Funcional para Gerenciamento de Erros em .NET
Abordagem Funcional para Gerenciamento de Erros em .NET
 
Desmistificando machine learning
Desmistificando machine learningDesmistificando machine learning
Desmistificando machine learning
 
Uma abordagem funcional para gerenciamento de erros
Uma abordagem funcional para gerenciamento de errosUma abordagem funcional para gerenciamento de erros
Uma abordagem funcional para gerenciamento de erros
 
Introdução à programação funcional
Introdução à programação funcionalIntrodução à programação funcional
Introdução à programação funcional
 
A importância da programação funcional no dia a-dia
A importância da programação funcional no dia a-diaA importância da programação funcional no dia a-dia
A importância da programação funcional no dia a-dia
 
DDD linguagem ubiqua + codigo expressivo
DDD  linguagem ubiqua + codigo expressivoDDD  linguagem ubiqua + codigo expressivo
DDD linguagem ubiqua + codigo expressivo
 

Recently uploaded

ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx2m Assessoria
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 

Recently uploaded (6)

ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 

Desenvolvendo com Kinect

  • 1. Desenvolvendo com Kinect Gabriel Schade Cardoso
  • 2. Quem é Gabriel Schade Cardoso? Gamer Certificações C# e Bacharel e Mestrando HTML 5 + Javascript GUI .NET Dev - 4 anos Dev – 1 ano e 2 meses Futebol freestyler - 6 anos 2
  • 4. Interfaces Command Line Interface Graphical User Interface Natural User Interface GUI 4
  • 5. Interfaces 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 Command Line Interface independente de conhecimento Graphical User Interface Natural User Interface GUI computacional. 5
  • 7. Microsoft Kinect – o herdeiro Prime Sense Microsoft Kinect 7
  • 8. Como o Kinect vê o mundo 8
  • 9. Captura de profundidade Light Coding; RGBD; Reconhecimento do esqueleto. 9
  • 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. 10
  • 11. SDK 11
  • 12. Kinect for Windows SDK  KinectSensorCollection;  KinectSensorChooser;  Streams:  Audio  Interaction  Color  Depth  Skeleton 12
  • 13. Kinect Sensor Collection  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; 13
  • 14. Kinect Sensor Chooser  O KinectSensorChooser é uma classe utilizada como seletor do Kinect;  Automatiza a captura de um sensor ativo, cada sensor possui um Id para gerenciamento. 14
  • 15. Navegação – (Audio e Interactions) 15
  • 16. Kinect Audio Source Reconhecimento de voz; (necessita do SpeechRecognition SDK) Reconhecer a direção de uma fonte de áudio; Reconhecer o volume de uma entrada de áudio; Microfones 16
  • 17. Audio – Reconhecimento de voz 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; 17
  • 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. 18
  • 19. Audio- Direção do Áudio AudioSource 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; 19
  • 20. Kinect Interactions  Foi lançado dia 18 de março de 2013;  Provê facilitadores para interações do Kinect através de controles que reconhecem determinados gestos; 20
  • 21. Detecção da Mão Cursor padrão Pressionado Pressionando Segurando 21
  • 22. PHIZ – Physical Interaction Zone 22
  • 23. Demo – Navegação e Áudio 23
  • 24. Streams 24
  • 25. Color Stream  Fluxo de cores do sensor, possui diversos formatos; RGB YUV Bayer 32 bits por pixel 16 bits por pixel 32 bits por pixel 640x480 FPS: 30 640x480 FPS:15 1280x960 FPS:12 1280x960 FPS:12 640x480 FPS:30 25
  • 26. Color Stream – InfraRed  Fluxo de infravermelho não é um fluxo de dados a parte e sim uma configuração do fluxo de cores; IR 16 bits por pixel 640x480 FPS: 30 26
  • 27. Depth Stream  Fluxo de profundidade busca a distância em milímetros dos elementos no ambiente; 640x480 320x240 80x60 FPS: 30 27
  • 28. Depth Stream  Configuraçã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. 28
  • 29. Demo – Color & Depth Streams 29
  • 30. Skeleton Stream  Apesar de reconhecer 6 usuários o Kinect rastreia as articulações de no máximo 2 usuários. 30
  • 31. Skeleton Stream  De pé ou sentado, mas olhe para o sensor! 31
  • 32. Skeleton Stream - Joints 32
  • 33. Skeleton Stream Pose / Postura Gestos 33
  • 35. Detecção de Poses  Não há nenhuma forma simples nativa para se fazer a detecção de poses ou gestos genéricos.  Qual a grande dificuldade? 35
  • 36. Detecção de Poses  Algoritmos 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. 36
  • 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; 37
  • 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. 38
  • 39. Lei dos cossenos Exemplo de triangulo formado na visão frontal 39
  • 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. 40
  • 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; 42

Editor's Notes

  1. Falar que elas podem coexistir na mesma aplicação.
  2. Falar que elas podem coexistir na mesma aplicação.Falar sobre o Kinect e a NUI
  3. Falar do nearmode somente no Kinect for Windows
  4. Light Coding – Prime Sense capturar a profundidade dos elementosRGBD – Pseudo 3DReconhecimento de esqueleto feito através do software da microsoft
  5. Falar sobre o cancelamento do eco
  6. Forma comum < (errada)Forma do interactions > (correta)
  7. Falar sobre os eixos X, Y e ZFalar sobre os bones
  8. Explicar a diferença
  9. Comentar sobre validações contra o próprio esqueleto