Você está na página 1de 32

Daniel Lélis Baggio

Interação com o Computador Através de


Visão Computacional e Webcam:
utilizando a biblioteca EHCI em Python
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


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


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


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


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


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


Principais features identificadas

Daniel Lélis Baggio | danielbaggio@gmail.com | EHCI Python Bindings | 9


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


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


Demonstração Lk-Demo

Daniel Lélis Baggio | danielbaggio@gmail.com | EHCI Python Bindings | 12


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


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


Obtenção da matriz de rotação e do vetor de
translação

Daniel Lélis Baggio | danielbaggio@gmail.com | EHCI Python Bindings | 15


Demonstração do algoritmo

Daniel Lélis Baggio | danielbaggio@gmail.com | EHCI Python Bindings | 16


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


PyEHCI = EHCI + SWIG
 SWIG: Simplified Wrapper and Interface Generator
(1996)

Daniel Lélis Baggio | danielbaggio@gmail.com | EHCI Python Bindings | 18


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


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


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


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


Panda3d

EHCI

Daniel Lélis Baggio | danielbaggio@gmail.com | EHCI Python Bindings | 23


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


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


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


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


EHCI – Download
http://code.google.com/p/ehci/

Daniel Lélis Baggio | danielbaggio@gmail.com | EHCI Python Bindings | 28


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


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


Agradecimentos

Daniel Lélis Baggio | danielbaggio@gmail.com | EHCI Python Bindings | 31


EHCI – Dúvidas?

danielbaggio@gmail.com
http://code.google.com/p/ehci

Daniel Lélis Baggio | danielbaggio@gmail.com | EHCI Python Bindings | 32

Você também pode gostar