ehci - interação com computador através de webcam
DESCRIPTION
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.TRANSCRIPT
![Page 1: EHCI - Interação com computador através de webcam](https://reader033.vdocuments.pub/reader033/viewer/2022051513/54665f41b4af9f623f8b535c/html5/thumbnails/1.jpg)
Daniel Lélis Baggio
Interação com o Computador Através deVisão Computacional e Webcam:
utilizando a biblioteca EHCI em Python
![Page 2: EHCI - Interação com computador através de webcam](https://reader033.vdocuments.pub/reader033/viewer/2022051513/54665f41b4af9f623f8b535c/html5/thumbnails/2.jpg)
Daniel Lélis Baggio | [email protected] | EHCI Python Bindings | 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
![Page 3: EHCI - Interação com computador através de webcam](https://reader033.vdocuments.pub/reader033/viewer/2022051513/54665f41b4af9f623f8b535c/html5/thumbnails/3.jpg)
Daniel Lélis Baggio | [email protected] | EHCI Python Bindings | 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
![Page 4: EHCI - Interação com computador através de webcam](https://reader033.vdocuments.pub/reader033/viewer/2022051513/54665f41b4af9f623f8b535c/html5/thumbnails/4.jpg)
Daniel Lélis Baggio | [email protected] | EHCI Python Bindings | 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
![Page 5: EHCI - Interação com computador através de webcam](https://reader033.vdocuments.pub/reader033/viewer/2022051513/54665f41b4af9f623f8b535c/html5/thumbnails/5.jpg)
Daniel Lélis Baggio | [email protected] | EHCI Python Bindings | 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
![Page 6: EHCI - Interação com computador através de webcam](https://reader033.vdocuments.pub/reader033/viewer/2022051513/54665f41b4af9f623f8b535c/html5/thumbnails/6.jpg)
Daniel Lélis Baggio | [email protected] | EHCI Python Bindings | 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
![Page 7: EHCI - Interação com computador através de webcam](https://reader033.vdocuments.pub/reader033/viewer/2022051513/54665f41b4af9f623f8b535c/html5/thumbnails/7.jpg)
Daniel Lélis Baggio | [email protected] | EHCI Python Bindings | 7
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
Algoritmos:“Rapid Object Detection Using a Boosted Cascade of Simple Features” Viola, P; Jones, M.
![Page 8: EHCI - Interação com computador através de webcam](https://reader033.vdocuments.pub/reader033/viewer/2022051513/54665f41b4af9f623f8b535c/html5/thumbnails/8.jpg)
Daniel Lélis Baggio | [email protected] | EHCI Python Bindings | 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
![Page 9: EHCI - Interação com computador através de webcam](https://reader033.vdocuments.pub/reader033/viewer/2022051513/54665f41b4af9f623f8b535c/html5/thumbnails/9.jpg)
Daniel Lélis Baggio | [email protected] | EHCI Python Bindings | 9
Principais features identificadas
![Page 10: EHCI - Interação com computador através de webcam](https://reader033.vdocuments.pub/reader033/viewer/2022051513/54665f41b4af9f623f8b535c/html5/thumbnails/10.jpg)
Daniel Lélis Baggio | [email protected] | EHCI Python Bindings | 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
![Page 11: EHCI - Interação com computador através de webcam](https://reader033.vdocuments.pub/reader033/viewer/2022051513/54665f41b4af9f623f8b535c/html5/thumbnails/11.jpg)
Daniel Lélis Baggio | [email protected] | EHCI Python Bindings | 11
Algoritmos:“Pyramidal Implementation of the Lucas Kanade Feature Tracker Description of the algorithm” Jean-Yves Bouguet Tracking
![Page 13: EHCI - Interação com computador através de webcam](https://reader033.vdocuments.pub/reader033/viewer/2022051513/54665f41b4af9f623f8b535c/html5/thumbnails/13.jpg)
Daniel Lélis Baggio | [email protected] | EHCI Python Bindings | 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
![Page 14: EHCI - Interação com computador através de webcam](https://reader033.vdocuments.pub/reader033/viewer/2022051513/54665f41b4af9f623f8b535c/html5/thumbnails/14.jpg)
Daniel Lélis Baggio | [email protected] | EHCI Python Bindings | 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!
![Page 15: EHCI - Interação com computador através de webcam](https://reader033.vdocuments.pub/reader033/viewer/2022051513/54665f41b4af9f623f8b535c/html5/thumbnails/15.jpg)
Daniel Lélis Baggio | [email protected] | EHCI Python Bindings | 15
Obtenção da matriz de rotação e do vetor de translação
![Page 17: EHCI - Interação com computador através de webcam](https://reader033.vdocuments.pub/reader033/viewer/2022051513/54665f41b4af9f623f8b535c/html5/thumbnails/17.jpg)
Daniel Lélis Baggio | [email protected] | EHCI Python Bindings | 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
![Page 18: EHCI - Interação com computador através de webcam](https://reader033.vdocuments.pub/reader033/viewer/2022051513/54665f41b4af9f623f8b535c/html5/thumbnails/18.jpg)
Daniel Lélis Baggio | [email protected] | EHCI Python Bindings | 18
PyEHCI = EHCI + SWIG
SWIG: Simplified Wrapper and Interface Generator (1996)
![Page 19: EHCI - Interação com computador através de webcam](https://reader033.vdocuments.pub/reader033/viewer/2022051513/54665f41b4af9f623f8b535c/html5/thumbnails/19.jpg)
Daniel Lélis Baggio | [email protected] | EHCI Python Bindings | 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
![Page 20: EHCI - Interação com computador através de webcam](https://reader033.vdocuments.pub/reader033/viewer/2022051513/54665f41b4af9f623f8b535c/html5/thumbnails/20.jpg)
Daniel Lélis Baggio | [email protected] | EHCI Python Bindings | 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
![Page 21: EHCI - Interação com computador através de webcam](https://reader033.vdocuments.pub/reader033/viewer/2022051513/54665f41b4af9f623f8b535c/html5/thumbnails/21.jpg)
Daniel Lélis Baggio | [email protected] | EHCI Python Bindings | 21
EHCI - API
ehci.getGlPositMatrix()
– Retorna a matriz de rotação e o vetor de translação do objeto processado
![Page 22: EHCI - Interação com computador através de webcam](https://reader033.vdocuments.pub/reader033/viewer/2022051513/54665f41b4af9f623f8b535c/html5/thumbnails/22.jpg)
Daniel Lélis Baggio | [email protected] | EHCI Python Bindings | 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 ]
![Page 24: EHCI - Interação com computador através de webcam](https://reader033.vdocuments.pub/reader033/viewer/2022051513/54665f41b4af9f623f8b535c/html5/thumbnails/24.jpg)
Daniel Lélis Baggio | [email protected] | EHCI Python Bindings | 24
Hand-tracking
Viola-Jones treinado com as mãos
– novo .xml
Modelo 3D das mãos
– novo modelo
Mesmo algoritmo
![Page 25: EHCI - Interação com computador através de webcam](https://reader033.vdocuments.pub/reader033/viewer/2022051513/54665f41b4af9f623f8b535c/html5/thumbnails/25.jpg)
Daniel Lélis Baggio | [email protected] | EHCI Python Bindings | 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
![Page 26: EHCI - Interação com computador através de webcam](https://reader033.vdocuments.pub/reader033/viewer/2022051513/54665f41b4af9f623f8b535c/html5/thumbnails/26.jpg)
Daniel Lélis Baggio | [email protected] | EHCI Python Bindings | 26
Aplicações
Head-tracking
Augmented Reality
Efeitos especiais em vídeos
Interfaceamento com as mãos: plugins Firefox, Blender
![Page 27: EHCI - Interação com computador através de webcam](https://reader033.vdocuments.pub/reader033/viewer/2022051513/54665f41b4af9f623f8b535c/html5/thumbnails/27.jpg)
Daniel Lélis Baggio | [email protected] | EHCI Python Bindings | 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
![Page 28: EHCI - Interação com computador através de webcam](https://reader033.vdocuments.pub/reader033/viewer/2022051513/54665f41b4af9f623f8b535c/html5/thumbnails/28.jpg)
Daniel Lélis Baggio | [email protected] | EHCI Python Bindings | 28
EHCI – Downloadhttp://code.google.com/p/ehci/
![Page 29: EHCI - Interação com computador através de webcam](https://reader033.vdocuments.pub/reader033/viewer/2022051513/54665f41b4af9f623f8b535c/html5/thumbnails/29.jpg)
Daniel Lélis Baggio | [email protected] | EHCI Python Bindings | 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
![Page 30: EHCI - Interação com computador através de webcam](https://reader033.vdocuments.pub/reader033/viewer/2022051513/54665f41b4af9f623f8b535c/html5/thumbnails/30.jpg)
Daniel Lélis Baggio | [email protected] | EHCI Python Bindings | 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”
![Page 32: EHCI - Interação com computador através de webcam](https://reader033.vdocuments.pub/reader033/viewer/2022051513/54665f41b4af9f623f8b535c/html5/thumbnails/32.jpg)
Daniel Lélis Baggio | [email protected] | EHCI Python Bindings | 32
EHCI – Dúvidas?
http://code.google.com/p/ehci