Transcript
Page 1: EHCI - Interação com computador através de webcam

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

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

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

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

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

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

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

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

Daniel Lélis Baggio | [email protected] | EHCI Python Bindings | 9

Principais features identificadas

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

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

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 12: EHCI - Interação com computador através de webcam

Daniel Lélis Baggio | [email protected] | EHCI Python Bindings | 12

Demonstração Lk-Demo

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

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

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

Daniel Lélis Baggio | [email protected] | EHCI Python Bindings | 15

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

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

Daniel Lélis Baggio | [email protected] | EHCI Python Bindings | 16

Demonstração do algoritmo

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

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

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

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

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

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

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 23: EHCI - Interação com computador através de webcam

Daniel Lélis Baggio | [email protected] | EHCI Python Bindings | 23

Panda3d

EHCI

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

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

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

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

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

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

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

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 31: EHCI - Interação com computador através de webcam

Daniel Lélis Baggio | [email protected] | EHCI Python Bindings | 31

Agradecimentos

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

Daniel Lélis Baggio | [email protected] | EHCI Python Bindings | 32

EHCI – Dúvidas?

[email protected]

http://code.google.com/p/ehci


Top Related