Your SlideShare is downloading. ×
EHCI - Interação com computador através de webcam
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

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

1,546
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 …

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,546
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
43
Comments
0
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 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. 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. 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. 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. 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. 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. 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. 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. Principais features identificadas Daniel Lélis Baggio | danielbaggio@gmail.com | EHCI Python Bindings | 9
  • 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. 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. Demonstração Lk-Demo Daniel Lélis Baggio | danielbaggio@gmail.com | EHCI Python Bindings | 12
  • 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. 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. 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. Demonstração do algoritmo Daniel Lélis Baggio | danielbaggio@gmail.com | EHCI Python Bindings | 16
  • 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. PyEHCI = EHCI + SWIG  SWIG: Simplified Wrapper and Interface Generator (1996) Daniel Lélis Baggio | danielbaggio@gmail.com | EHCI Python Bindings | 18
  • 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. 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. 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. 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. Panda3d EHCI Daniel Lélis Baggio | danielbaggio@gmail.com | EHCI Python Bindings | 23
  • 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. 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. 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. 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. EHCI – Download http://code.google.com/p/ehci/ Daniel Lélis Baggio | danielbaggio@gmail.com | EHCI Python Bindings | 28
  • 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. 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. Agradecimentos Daniel Lélis Baggio | danielbaggio@gmail.com | EHCI Python Bindings | 31
  • 32. EHCI – Dúvidas? danielbaggio@gmail.com http://code.google.com/p/ehci Daniel Lélis Baggio | danielbaggio@gmail.com | EHCI Python Bindings | 32