EHCI - Interação com computador através de webcam

1,904 views

Published on

Esta palestra foi apresentada na PyCon Brasil 2008 e explica como utilizar python para acessar movimentos do usuário como direção de apontamento da cabeça ou aproximação das mão. Estes eventos são detectados através de uma webcam por meio da biblioteca EHCI.

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,904
On SlideShare
0
From Embeds
0
Number of Embeds
9
Actions
Shares
0
Downloads
43
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

EHCI - Interação com computador através de webcam

  1. 1. Daniel Lélis Baggio Interação com o Computador Através de Visão Computacional e Webcam: utilizando a biblioteca EHCI em Python
  2. 2. Roteiro  Introdução – O que é a EHCI?  Como funcionam os principais algoritmos?  API e integração com Python  EHCI & Panda3D  Aplicações  Instruções para download, instalação e documentação Daniel Lélis Baggio | danielbaggio@gmail.com | EHCI Python Bindings | 2
  3. 3. Roteiro  Introdução – O que é a EHCI?  Como funcionam os principais algoritmos?  API e integração com Python  EHCI & Panda3D  Aplicações  Instruções para download, instalação e documentação Daniel Lélis Baggio | danielbaggio@gmail.com | EHCI Python Bindings | 3
  4. 4. Introdução – O que é a EHCI? • Biblioteca open source para obtenção de entrada do usuário através da análise de imagens obtidas pela webcam • Implementada em C++ • Desenvolvida no Google Summer of Code '08 com o Natural User Interface Group • Obtenção de posicionamento e rotação da cabeça e mão do usuário sem o uso de qualquer acessório Daniel Lélis Baggio | danielbaggio@gmail.com | EHCI Python Bindings | 4
  5. 5. Roteiro  Introdução – O que é a EHCI?  Como funcionam os principais algoritmos?  API e integração com Python  EHCI & Panda3D  Aplicações  Instruções para download, instalação e documentação Daniel Lélis Baggio | danielbaggio@gmail.com | EHCI Python Bindings | 5
  6. 6. Algoritmos: “Stable Real-Time 3D Tracking using Online and Offline Information” L. Vacchetti, V. Lepetit and P. Fua  Solução em tempo real para fazer “tracking” de objetos 3d rígidos usando uma única câmera – Inicialização: posição conhecida • Detecção de feições naturais – Estimativa dos graus de liberdade através de POSIT – Tracking através de point matching Daniel Lélis Baggio | danielbaggio@gmail.com | EHCI Python Bindings | 6
  7. 7. Algoritmos: “Rapid Object Detection Using a Boosted Cascade of Simple Features” Viola, P; Jones, M.  Algoritmo de Detecção de Faces Viola-Jones – Utilizado na inicialização do tracking – Classificador em cascata – Treinado através de Adaptive Boosting – Utilizando features do tipo Haar Daniel Lélis Baggio | danielbaggio@gmail.com | EHCI Python Bindings | 7
  8. 8. Features  Retângulos  Fáceis de serem calculados – Áreas brancas são subtraídas das áreas pretas – Integral Image – Representação especial que torna a extração da feature mais rápida Daniel Lélis Baggio | danielbaggio@gmail.com | EHCI Python Bindings | 8
  9. 9. Principais features identificadas Daniel Lélis Baggio | danielbaggio@gmail.com | EHCI Python Bindings | 9
  10. 10. Principais features identificadas  Classificador extremamente rápido (60 microinstruções)  Ajustado para detectar 100% das faces, com 40% de falsos positivos no primeiro estágio Daniel Lélis Baggio | danielbaggio@gmail.com | EHCI Python Bindings | 10
  11. 11. Algoritmos: “Pyramidal Implementation of the Lucas Kanade Feature Tracker Description of the algorithm” Jean-Yves Bouguet  Tracking Daniel Lélis Baggio | danielbaggio@gmail.com | EHCI Python Bindings | 11
  12. 12. Demonstração Lk-Demo Daniel Lélis Baggio | danielbaggio@gmail.com | EHCI Python Bindings | 12
  13. 13. Algoritmos: POSIT - “Model-based object pose in 25 lines of code” D. DeMenthon and L. S. Davis  Solução iterativa para o problema de encontrar o vetor de translação e a matriz de rotação (6 graus de liberdade)  Supor inicialmente que todos os pontos têm a mesma profundidade  Solução de sistema linear super- determinado. Decomposição SVD e cálculo de pseudo-inversa Daniel Lélis Baggio | danielbaggio@gmail.com | EHCI Python Bindings | 13
  14. 14. Obtenção da matriz de rotação e do vetor de translação  Correlações entre os pontos do objeto e suas respectivas projeções devem ser conhecidas! Daniel Lélis Baggio | danielbaggio@gmail.com | EHCI Python Bindings | 14
  15. 15. Obtenção da matriz de rotação e do vetor de translação Daniel Lélis Baggio | danielbaggio@gmail.com | EHCI Python Bindings | 15
  16. 16. Demonstração do algoritmo Daniel Lélis Baggio | danielbaggio@gmail.com | EHCI Python Bindings | 16
  17. 17. Roteiro  Introdução – O que é a EHCI?  Como funcionam os principais algoritmos?  API e integração com Python  EHCI & Panda3D  Aplicações  Instruções para download, instalação e documentação Daniel Lélis Baggio | danielbaggio@gmail.com | EHCI Python Bindings | 17
  18. 18. PyEHCI = EHCI + SWIG  SWIG: Simplified Wrapper and Interface Generator (1996) Daniel Lélis Baggio | danielbaggio@gmail.com | EHCI Python Bindings | 18
  19. 19. EHCI API  import ehci  ehci.ehciInit() – Criação de uma janela para visualizar aquisição da webcam e processamento da imagem  ehci.ehciLoop(modo , estimativaInicial) – Obtenção do quadro e processamento – Modos: • 0x0001 – Detecção 2D da face • 0x0011 – Detecção 6D da face • 0x0100 – Detecção 2D das mãos • 0x1100 – Detecção 6D das mãos Daniel Lélis Baggio | danielbaggio@gmail.com | EHCI Python Bindings | 19
  20. 20. EHCI - API  ehci.getHeadBounds() – Retorna a posição x, y (em pixels) do objeto processado assim como sua largura e altura  6 linhas de código vs 128 linhas Python OpenCV Daniel Lélis Baggio | danielbaggio@gmail.com | EHCI Python Bindings | 20
  21. 21. EHCI - API  ehci.getGlPositMatrix() – Retorna a matriz de rotação e o vetor de translação do objeto processado Daniel Lélis Baggio | danielbaggio@gmail.com | EHCI Python Bindings | 21
  22. 22. EHCI - API  simples3d.py - ehci.getGlPositMatrix() [ 0.990, -0.026, 0.138, -44.377] [ 0.183, -0.981, -0.058, -18.170] [ 0.137, 0.083, -0.967, 210.353] [ 0.000, 0.000, 0.000, 1.000] [ A0, A4, A8, A12 ] [ A1, A5, A9, A13 ] [ A2, A6, A10, A14 ] [ A3, A7, A11, A15 ] Daniel Lélis Baggio | danielbaggio@gmail.com | EHCI Python Bindings | 22
  23. 23. Panda3d EHCI Daniel Lélis Baggio | danielbaggio@gmail.com | EHCI Python Bindings | 23
  24. 24. Hand-tracking  Viola-Jones treinado com as mãos – novo .xml  Modelo 3D das mãos – novo modelo  Mesmo algoritmo Daniel Lélis Baggio | danielbaggio@gmail.com | EHCI Python Bindings | 24
  25. 25. Roteiro  Introdução – O que é a EHCI?  Como funcionam os principais algoritmos?  API e integração com Python  EHCI & Panda3D  Aplicações  Instruções para download, instalação e documentação Daniel Lélis Baggio | danielbaggio@gmail.com | EHCI Python Bindings | 25
  26. 26. Aplicações  Head-tracking  Augmented Reality  Efeitos especiais em vídeos  Interfaceamento com as mãos: plugins Firefox, Blender Daniel Lélis Baggio | danielbaggio@gmail.com | EHCI Python Bindings | 26
  27. 27. Roteiro  Introdução – O que é a EHCI?  Como funcionam os principais algoritmos?  API e integração com Python  EHCI & Panda3D  Aplicações  Instruções para download, instalação e documentação Daniel Lélis Baggio | danielbaggio@gmail.com | EHCI Python Bindings | 27
  28. 28. EHCI – Download http://code.google.com/p/ehci/ Daniel Lélis Baggio | danielbaggio@gmail.com | EHCI Python Bindings | 28
  29. 29. Referências  Rainer Lienhart and Jochen Maydt. An Extended Set of Haar-like Features for Rapid Object Detection. Submitted to ICIP2002  Viola, P; Jones, M. Rapid Object Detection Using a Boosted Cascade of Simple Features – (2004)  Alexander Kuranov, Rainer Lienhart, and Vadim Pisarevsky. An Empirical Analysis of Boosting Algorithms for Rapid Objects With an Extended Set of Haar-like Features. Intel Technical Report MRL-TR- July02-01, 2002 Daniel Lélis Baggio | danielbaggio@gmail.com | EHCI Python Bindings | 29
  30. 30. Referências  D. DeMenthon and L. S. Davis “Model-based object pose in 25 lines of code”  Jean-Yves Bouguet. “Pyramidal Implementation of the Lucas Kanade Feature Tracker Description of the algorithm” Daniel Lélis Baggio | danielbaggio@gmail.com | EHCI Python Bindings | 30
  31. 31. Agradecimentos Daniel Lélis Baggio | danielbaggio@gmail.com | EHCI Python Bindings | 31
  32. 32. EHCI – Dúvidas? danielbaggio@gmail.com http://code.google.com/p/ehci Daniel Lélis Baggio | danielbaggio@gmail.com | EHCI Python Bindings | 32

×