ehci - interação com computador através de webcam

32
Daniel Lélis Baggio Interação com o Computador Através de Visão Computacional e Webcam: utilizando a biblioteca EHCI em Python

Upload: dannyxyz22

Post on 12-Nov-2014

3.090 views

Category:

Technology


0 download

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

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