Kinect Thiago Ribeiro da Motta trmotta@tecgraf.puc-rio.br.

Slides:



Advertisements
Apresentações semelhantes
RELÉ DIGITAL PARA PROTEÇÃO DE FREQÜÊNCIA
Advertisements

Adaptando e desenvolvendo jogos para uso com o Microsoft Kinect
Contadores e Registradores
Programação em Java Prof. Maurício Braga
Instituto de Computação - UFF 1 Computação Gráfica I Professor: Anselmo Montenegro Conteúdo: - Transformações geométricas no plano.
Tecnologia de Comando Numérico
Palestras, oficinas e outras atividades
Noções de Sistemas Operacionais
Colégio Ideal Aula de Física Leis de Reflexão da Luz e Espelhos Planos
Criar uma Aplicação Web em ASP.NET v Tipos de Sites Web gerados pelo VS2005 File-system Web sites Ficheiros armazenados num directório local É utilizado.
Introdução à Programação usando Processing Programação Gráfica 2D Animações Exercício Animações 14/10/09 Bruno C. de Paula 2º Semestre 2009 > PUCPR >
14/10/09 Uma animação possui: Início; Passo; Fim; 1.
Semana Acadêmica de Ciência da Computação - PUCPR
BD em.NET: Passo a passo conexão com SQL Server 1º Semestre 2010 > PUCPR > BSI Bruno C. de Paula.
Tecnologia Hipermídia e Multimídia Prof. Rudson Faculdade de Excelência Educacional do Rio Grande do Norte CURSO DE GRADUAÇÃO TECNOLÓGICA.
O CAMPO ELÉTRICO Conceito de Carga de Prova: Muitas vezes é conveniente fazer o uso de uma carga elétrica fictícia chamada carga de prova ou de teste.
Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 2.
Software Básico Silvio Fernandes Universidade Federal Rural do Semi-Árido Departamento de Ciências Exatas e Naturais Ciência da Computação Aula.
Introdução à Informática
Quantização e Dithering
Informática Industrial
Equipamentos 3/25/2017 Equipamentos Computação Gráfica - Gattass.
Visão computacional.
April 05 Prof. Ismael H. F. Santos - 1 Modulo II CheckStyle Professor Ismael H F Santos –
Trabalho 1 CONHECENDO O EQUIPAMENTO Gabriel Tavares Malizia Alves Manuel.
A Study of Hands-Free VR Interaction Techniques Using Kinect
April 05 Prof. Ismael H. F. Santos - 1 Módulo II XML Processing: XSLT, SAX e DOM Prof. Ismael H F Santos.
Device Drivers no Windows e Linux Visão Geral e Boas Práticas
Wiimote no Windows e Linux + Gotcha
Estudo de Caso 1: UNIX e LINUX
Decomposição em fatores primos
Computação Gráfica: Rendering e Rasterização
Ambiente de simulação Os algoritmos previamente discutidos foram analisados usando um simulador de mobilidade. Ele modela uma cidade de 20 Km de raio,
Classes e objetos Arrays e Sobrecarga
Contagem de Pessoas por Vídeo Usando Câmeras em Posição Zenital
MECÂNICA - ESTÁTICA Vetores Forças Cap. 2.
PAULO A. FERREIRA PEDRO R. M. FILHO YURI F. G. DIAS ADOLFO BAUCHSPIESS
Instalação e Configuração
Sistemas Operacionais
Autores: Jean Suellen Silva de Almeida Victor Hugo Cunha de Melo
Disciplina: Multimídia Prof a. Leila Jane Brum Lage Sena Guimarães Transparências: Wilson de Pádua Paula Filho.
Tecnólogo em Analise e Desenvolvimento de Sistemas - Faculdade de Tecnologia SENAC De Roger Ferreira Memórias e suas características,
XNA Framework Raphael Barros.
“LOCALIZAÇÃO DE ROBÔS E MAPEAMENTO DO AMBIENTE USANDO KINECT®”
ÓPTICA GEOMÉTRICA.
PnP – Plug And Play Fernando Witzke Luiz Mello
Sistemas Operacionais
Introdução teórica A modulação em freqüência consiste na variação da freqüência da portadora proporcionalmente ao sinal de informação. Dado o sinal modulador.
Sistemas Operacionais
Fotografia automática
Sistema de Segurança Baseado em Análise de Imagens
Computação Musical e Processamento de Som – 06.1
DVB - Definição O Digital Video Broadcasting Project (DVB) é um consórcio entre 250 e 300 integrantes de 35 países dedicados a desenvolver padrões globais.
Compras - Pedido de Compra
Computação Gráfica Aula 3 Transformações Geométricas
Computação Gráfica – Visibilidade
Classificação de imagens de fotografias históricas usando detecção de linhas e paralelogramos pela presença de edifícios Natália Cosse Batista Grupo 8.
1 © 2005, 2007, 2012 André Luiz V. da Costa e Silva Equilibrio Metal-Escória em aço Si Mn André Luiz V da Costa e Silva 2012.
UML - Unified Modeling Language
FLASH DEDICADO EM FOTOJORNALISMO
TV digital Funcionamento Comparativo com a TV Analógica
Cadastro de Contas a Pagar
Financeiro – Contas a Receber
Compras – Planejamento de Estoque
Classificação de Imagens de Sensoriamento Remoto
Sistemas de Rastreamento de Baixo Custo para Desktops Tecgraf (Grupo de Tecnologia em Computação Gráfica) Depto. de Informática, PUC-Rio Alberto Raposo,
ARToolkit Ademir José de Carvalho Junior Danilo Cavalcanti Torres
Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa X3D – Event Utilities e Scripting Alberto B. Raposo
Computação Gráfica – Visibilidade Profa. Mercedes Gonzales Márquez.
Kinect Integrantes: Diego Phoenix Eric Borba Filipe Araújo Guilherme Vasconcelos.
Transcrição da apresentação:

Kinect Thiago Ribeiro da Motta trmotta@tecgraf.puc-rio.br

Summary O que é o Kinect? Do que ele é feito ? Como funciona? Características Operacionais Do que ele é feito ? Como funciona? The Brain Kinect SDKs

O que é o Kinect? Kinetic + Connect Inicialmente desenvolvido para o XBOX 360 Sistema criado para interação com o usuário sem a necessidade de controle por intermédio da Natural Interaction (NI). Conceito onde a interação homem-dispositivo é baseada principalmente na visão e audição.

Características Operacionais Cenários estáticos. Idealmente de 1.2m a 3.5m. Limites operacionais: 0.8m a 4.0m . Angulo de visão: 43° vertical e 57° horizontal. Temperatura de operação: 5°C a 35°C. “What is the difference in game experience enabled by PrimeSensor™ technology, compared to Wii? The Wii system is a 6 Degrees of Freedom (DoF) system: the Wii remote supports 2 points with 3 DoF. The PrimeSensor™ has VGA resolution, meaning 640x480 points, where each pixel is a 3D data point – totaling over 300,000 DoF. PrimeSense

Do que ele é feito ?

Do que ele é feito ? Ajusta o Kinect em ± 28 graus. Não recomendado o uso constante. SDK da Microsoft impede mais de um movimento por segundo ou mais de 15 vezes em 20 segundos. Motor de Ajuste

Do que ele é feito ? Array de Microfones Array de 4 microfones com conversor analógico-digital (ADC) de 24 bits. Chip de processamento de áudio: Echo Cancellation e Noise Supression. Por que um array? Melhor qualidade de audio Melhores algoritmos de Echo Cancellation e Noise Supression. Melhor reconhecimento de fala (Speech SDK da Microsoft) Beamforming e localização do som Formato de Audio: 16-kHz sample rate 16-bit mono pulse code modulation (PCM) Array de Microfones

Do que ele é feito ? Resolução de 8-bit VGA (640 × 480 pixels) com um filtro de cor Bayer Até 30 quadros por segundo (FPS) Resolução mínima, a 80cm, (87 x 63 cm) de 1.3mm por pixel. Camera RGB Especificações : VNA38209015

Do que ele é feito ? Resolução QVGA de 11 bits (320 × 240 pixels), gerando 2,048 níveis de sensibilidade.  Camera IR Especificações: Microsoft / X853750001 / VCA379C7130

Do que ele é feito ? Laser difuso de 830nm com potência de 60 mW. Chega ao usuário com 780nm e 0.4 µW. A perda é dada pela passagem do laser no elemento óptico que cria o padrão de dispersão. Esse elemento cria padrões semi-randômicos no ambiente. Projetor de IR Especificações : OG12 / 0956 / D306 / JG05A

Como funciona ? O Light Coding codifica informações em padrões de luz ao sair do projetor. Após ser projetado em qualquer superfície, uma deformação é gerada. Essa deformação fornece as informações necessárias para o cálculo da distância. 3D Depth Sensor

Como funciona ? The Brain

The Brain 1º - O projetor IR gera a nuvem de pontos e o Chip calcula a distância entre o projetor e o que foi projetado

The Brain 2º - O usuário é detectado graças ao uso do algoritmo de redes neurais. Ao lado são mostrados os diferentes níveis de confiança no resultado obtido: Maior intensidade de luz e quadrados maiores implicam maior certeza.

The Brain 3º - Dezenas de esqueletos são calculados para encontrar aquele com maior probabilidade de acerto. Cálculos realizados com: Algoritmo de Redes Neurais Modelos cinemáticos

The Brain 4º - Um avatar 3D simplificado é criado. 5º - Tudo se repete, 30 vezes por segundo.

Kinect SDKs OpenNi Microsoft Kinect SDK CL NUI Platform OpenKinect (libfreenect ) KinectCoreVision

Microsoft SDK Visual Studio 2010. Windows 7. C#, C++ e .Net. “Some effects might seem counter-intuitive when you attempt to work with the data streams.” “For a general conceptual discussion, see the ‘Beamforming’ topic on Wikipedia.”

APIs do Windows 7 Microsoft Kinect drivers NUI Library

NUI API Permite acesso a: Sensores Cameras Skeletal Tracking Uso do Kernel para reconhecimento e enumeração de múltiplos Kinects. Permite o reconhecimento e administração de múltiplos Kinects, porém só um aplicativo pode usar cada Sensor. Reconhecimento de esqueletos e varredura de profundidade com indexação de usuários só funcionará para o Kinect com índice zero.

O uso de elementos do Kinect deve ser explicitada na inicialização do programa. Os elementos: Cor Profundidade Profundidade com indexação de usuários Esqueleto Após a inicialização é possível dizer quais parâmetros queremos sobre a informação recebida: Resolução Qualidade de Imagem Número de buffers Se todos os buffers forem preenchidos, os frames mais antigos serão descartados. Obs: Máximo de buffers = 4. Geralmente se usam 2.

Resolução da imagem de profundidade: 640x480 320x240 80x60 Qualidade de imagem: Qualidade Normal – 30 FPS Maior Qualidade – 15 FPS Formatos: RGB  32-bit, X8R8G8B8, sRGB YUV  16-bit, UYVY Só funciona em 640x480 e a 15FPS

Capturando informações sobre a Imagem/Esqueletos Polling Model – Retorna quando um tempo predeterminado é atingido ou quando um novo frame está pronto. Event Model – Funciona com EventHandles sendo ativados assim que um frame está pronto, recebendo então informações sobre o esqueleto. Fornece maior flexibilidade e precisão no uso do esqueleto.

Conteúdos do Esqueleto Posição(Vector4) que indica o centro de massa ID única Timestamp da imagem de profundidade correspondente Estado atual Tracking ativo – Contém informação sobre o esqueleto Até dois usuários ativos por vez. Tracking passivo – Só indica posição Máximo de seis usuários contando os ativos. Contém informação limitada sobre o usuário.

Skeleton Joints – Kinect SDK Sensor Joint Hip Center 10 Wrist Right 1 Spine 11 Hand Right 2 Shoulder Center 12 Hip Left 3 Head 13 Knee Left 4 Shoulder Left 14 Ankle Left 5 Elbow Left 15 Foot Left 6 Wrist Left 16 Hip Right 7 Hand Left 17 Knee Right 8 Shoulder Right 18 Ankle Right 9 Elbow Right 19 Foot Right Skeleton Joints – Kinect SDK

Sistemas de Coordenadas É possível espelhar as coordenadas. Espaço da Imagem de Profundidade: Cada pixel representa a distância em milímetros do objeto mais próximo. Espaço do Esqueleto: (x,y,z) em metros.

Compensando desníveis: Usa um acelerômetro interno calibrado pra ser alinhado com o sensor de imagem. Normal à gravidade = Vetor pra cima. Determinando o chão: Ax + By + Cz + D = 0. A,B,C = vFloorClipPlane.coordenada. D = Altura do chão à camera. Recalculado a cada frame. Caso o chão não esteja visível, retorna zero.

Array de Microfones Tipos de captura suportados: Raw Capture KinectAudioDMO DMO Objeto COM para trocar informação com o SO Novo modo de Microfone (suporte ao array do Kinect) Beamforming e localização do som (ISoundSourceLocalizer) Suporte a até 11 beams desde que tenham variação incremental de 10° (-50° a 50°) Otimizado para selecionar a melhor fonte de som. Possui um Wrapper para facilitar o uso Multithread apartment (MTA)

OpenNi / NITE Visual Studio 2008/2010. Windows XP, Vista e 7 (x86). Linux Ubuntu 10.10+ (x86). Mac OSX. C#, C++, .Net. Suporte ao Kinect, WAVI Xtion (Asus) e PrimeSensor (Prime Sense).

Software com suporte a gestos e Natural Interaction construído sobre o OpenNi e Nite. Interface de comunicação entre o sensor e o Middleware que analisa os dados do sensor. Hardware que captura dados da cena.

NITE Software Overview OpenNi Modules Gesture Generator Hand Generator NITE Scene Analyzer Diferença entre Foreground e Background Coordenadas do chão. Distinção de usuários na cena. User Generator com Esqueleto Controles Funcionam como Listeners. Recebem e tratam dados. Repassam a informação tratada para eventos registrados. Production Nodes Production Chains

Capacidades Suportadas Vista alternativa Otimização do mapa de profundidade para uma área específica. Detecção da Pose Ψ  Detecção do Esqueleto Diminuir a Resolução Aumento de performance Sincronização de Frames de diferentes Sensores Espelhamento de Coordenadas

Permite o uso de mais de um aplicativo por hardware Uso de Buffers WaitAnyUpdateAll WaitOneUpdateAll WaitNoneUpdateAll WaitAndUpdateAll Permite o uso de mais de um aplicativo por hardware Gravar/tocar/pausar uma execução dos sensores do Kinect

Geradores de Dados Profundidade Distância máxima Configuração dos valores de ângulo horizontal e vertical Posição do Usuário Imagem Formato do Pixel IR Scene Analyzer Coordenadas do chão Mapa onde cada pixel possui uma informação sobre a cena Áudio Configura o Sample Rate, Número de canais e bits-per-sample Gesture Adicionar/Remover Gesto Gestos ativos Registrar/Retirar callback de Gestos Registrar/Retirar mudanças de Gesto

Geradores de Dados Hand Point Começar/Parar captura Registrar/Retirar callbacks de Hand Point User Generator Número de usuários Usuário Centro de Massa Pixels relativos ao usuário Registrar/Retirar callbacks do Usuário Funcionalidades em comum: Frame Sync Alternative View Cropping Propriedades

Skeleton Joints - OpenNi Sensor Joint Head 12 Right Elbow 1 Neck 13 Right Wrist 2 Torso 14 Right Hand 3 Waist 15 Right Fingertip 4 Left Collar 16 Left Hip 5 Left Shoulder 17 Left Knee 6 Left Elbow 18 Left Ankle 7 Left Wrist 19 Left Foot 8 Left Hand 20 Right Hip 9 Left Fingertip 21 Right Knee 10 Right Collar 22 Right Ankle 11 Right Shoulder 23 Right Foot Skeleton Joints - OpenNi

Pros x Cons Suporta Microsoft SDK OpenNi/NITE Áudio/Reconhecimento de fala Regulação do Motor Com CLNUI motor driver Número de Juntas 20 Suporte a 24 (15 implementadas) Previsão de Juntas Calcula Rotação das Juntas Múltiplos Kinects Gambiarra Instalação 1 instalador 3 instaladores RGB Camera Resolution 1024×768 800x600 Tipo de Licença Não-Comercial Comercial Framework para Hand Tracking Pose de Calibração Sistemas Operacionais Windows 7 Windows XP, Vista, 7 – MAC OSX+ - Linux Ubuntu 10.10+ Uso da CPU Maior Menor

Pros x Cons Suporta Microsoft SDK OpenNi/NITE Framework para Reconhecimento de Gestos Stream do vídeo IR puro Falso-positivos Evento para chegada de novo frame de vídeo/profundidade Sincronizaçao entre stream de imagem e profundidade Evento para quando Usuário Entra/Sai da Cena Visual Studio 2010 2008/2010 Unity 3D Gravar/Tocar/Pausar Execução

Programas Conhecidos Faast KinEmote RoS http://kinecthacks.net/r2-d2-replica-using-the-kinect-and-ros-for-automation/ Brekel (SLAM) Kinvi3d http://www.kinvi3d.net/wp/ KinVi http://kinecthacks.net/kinvi-1-0-an-extreme-3d-kinect-enabled-virtual-interface-gadget-for-controlling-windows-7/ Treinamento http://kinecthacks.net/zombie-preparedness-training/ Teleconferência http://kinecthacks.net/kinect-teleconferencing-with-real-time-3d-capture-and-3d-display/ Integração entre o Windows 7 e o Kinect http://www.youtube.com/watch?v=dihnP7d3brs

Links para Referência http://mirror2image.wordpress.com/2010/11/30/how-kinect-works-stereo-triangulation/ http://en.wikipedia.org/wiki/Kinect http://www.wired.com/magazine/2011/06/mf_kinect/2/ http://www.takesontech.com/microsoft-shows-off-the-kinect-at-e3 (foto do kinect) http://www.ifixit.com/Teardown/Microsoft-Kinect-Teardown/4066/2 (cada peça do kinect) http://blog.makezine.com/archive/2011/06/things-you-cant-do-with-the-microsoft-kinect-sdk.html http://www.brekel.com/?page_id=671 (pros and cons) http://labs.vectorform.com/2011/06/windows-kinect-sdk-vs-openni-2/ (pros and cons 2) http://www.tecgraf.puc-rio.br/~eribeiro/I3D/ (site do Eduardo) http://www.codeproject.com/KB/dotnet/KinectGettingStarted.aspx?display=Print http://www.joystiq.com/2010/06/19/kinect-how-it-works-from-the-company-behind-the-tech/ http://research.microsoft.com/en-us/um/redmond/projects/kinectsdk/ http://www.primesense.com/ http://www.openni.org/