SlideShare una empresa de Scribd logo
1 de 32
Descargar para leer sin conexión
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

Más contenido relacionado

Destacado

Face Detection
Face DetectionFace Detection
Face Detectionjaulomag
 
Rapid Characterization of Multiple Regions of Interest in a Sample Using Auto...
Rapid Characterization of Multiple Regions of Interest in a Sample Using Auto...Rapid Characterization of Multiple Regions of Interest in a Sample Using Auto...
Rapid Characterization of Multiple Regions of Interest in a Sample Using Auto...PerkinElmer, Inc.
 
Implementierbare Sicherheitsregeln im Enterprise Manager
Implementierbare Sicherheitsregeln im Enterprise ManagerImplementierbare Sicherheitsregeln im Enterprise Manager
Implementierbare Sicherheitsregeln im Enterprise ManagerMartin Obst
 
Nueva Linea 2010 Dsc Sony
Nueva Linea 2010 Dsc SonyNueva Linea 2010 Dsc Sony
Nueva Linea 2010 Dsc SonyTecnomania
 
Regressionstests in Webprojekten - IPC12SE
Regressionstests in Webprojekten - IPC12SERegressionstests in Webprojekten - IPC12SE
Regressionstests in Webprojekten - IPC12SESebastian Bauer
 
IDS ( Intrusion Detection System )
IDS ( Intrusion Detection System )IDS ( Intrusion Detection System )
IDS ( Intrusion Detection System )preverisk Group
 
Comments to IJC on comment Preliminary Recommendations on Microplastics in th...
Comments to IJC on comment Preliminary Recommendations on Microplastics in th...Comments to IJC on comment Preliminary Recommendations on Microplastics in th...
Comments to IJC on comment Preliminary Recommendations on Microplastics in th...LOWaterkeeper
 
Takex MS-12TE Instruction Manual
Takex MS-12TE Instruction ManualTakex MS-12TE Instruction Manual
Takex MS-12TE Instruction ManualJMAC Supply
 
Fundamentos de redes
Fundamentos de redesFundamentos de redes
Fundamentos de redesguest3b96c6
 
Codipro catalogue visserie
Codipro catalogue visserieCodipro catalogue visserie
Codipro catalogue visserieEuropages2
 
Detecção Material Ilícito
Detecção Material Ilícito  Detecção Material Ilícito
Detecção Material Ilícito pgnaacdtn
 
Noelle Dunne BSc Thesis
Noelle Dunne BSc ThesisNoelle Dunne BSc Thesis
Noelle Dunne BSc ThesisNoelle Dunne
 
Maas Plastic Final for web2
Maas Plastic Final for web2Maas Plastic Final for web2
Maas Plastic Final for web2Marie Goddard
 

Destacado (16)

Face Detection
Face DetectionFace Detection
Face Detection
 
Rapid Characterization of Multiple Regions of Interest in a Sample Using Auto...
Rapid Characterization of Multiple Regions of Interest in a Sample Using Auto...Rapid Characterization of Multiple Regions of Interest in a Sample Using Auto...
Rapid Characterization of Multiple Regions of Interest in a Sample Using Auto...
 
Implementierbare Sicherheitsregeln im Enterprise Manager
Implementierbare Sicherheitsregeln im Enterprise ManagerImplementierbare Sicherheitsregeln im Enterprise Manager
Implementierbare Sicherheitsregeln im Enterprise Manager
 
Nueva Linea 2010 Dsc Sony
Nueva Linea 2010 Dsc SonyNueva Linea 2010 Dsc Sony
Nueva Linea 2010 Dsc Sony
 
Regressionstests in Webprojekten - IPC12SE
Regressionstests in Webprojekten - IPC12SERegressionstests in Webprojekten - IPC12SE
Regressionstests in Webprojekten - IPC12SE
 
IDS ( Intrusion Detection System )
IDS ( Intrusion Detection System )IDS ( Intrusion Detection System )
IDS ( Intrusion Detection System )
 
Comments to IJC on comment Preliminary Recommendations on Microplastics in th...
Comments to IJC on comment Preliminary Recommendations on Microplastics in th...Comments to IJC on comment Preliminary Recommendations on Microplastics in th...
Comments to IJC on comment Preliminary Recommendations on Microplastics in th...
 
Takex MS-12TE Instruction Manual
Takex MS-12TE Instruction ManualTakex MS-12TE Instruction Manual
Takex MS-12TE Instruction Manual
 
Fundamentos de redes
Fundamentos de redesFundamentos de redes
Fundamentos de redes
 
ThesisPres
ThesisPresThesisPres
ThesisPres
 
Codipro catalogue visserie
Codipro catalogue visserieCodipro catalogue visserie
Codipro catalogue visserie
 
Detecção Material Ilícito
Detecção Material Ilícito  Detecção Material Ilícito
Detecção Material Ilícito
 
Noelle Dunne BSc Thesis
Noelle Dunne BSc ThesisNoelle Dunne BSc Thesis
Noelle Dunne BSc Thesis
 
Arquitecturas de red
Arquitecturas de redArquitecturas de red
Arquitecturas de red
 
Seminario 7
Seminario 7 Seminario 7
Seminario 7
 
Maas Plastic Final for web2
Maas Plastic Final for web2Maas Plastic Final for web2
Maas Plastic Final for web2
 

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

  • 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