SlideShare a Scribd company logo
1 of 44
Fazendo máquinas
enxergarem com OpenCV
TCHÊLINUX 2014
Felipe Aguiar Corrêa
felipe.correa@ufpel.edu.br
Quem é esse cara aí?
❏ UFPEL
❏ Ciência da Computação
❏ Visão Computacional
❏ Rastreamento de Pedestres
Visão Computacional
❏ Sub-área da Inteligência Artificial
❏ Multidisciplinar
❏ Inspiração neurobiológica
❏ Dar significado a imagens digitais
Também serve
para fazer as
pessoas
parecerem
mongolóides
pulando na
frente de um
televisor
INTRODUÇÃO
Conceito de Imagem Digital
❏ Representação numérica de uma imagem
bidimensional em forma binária
❏ Assim permite seu armazenamento ou
reprodução por meios eletrônicos
❏ Podem ser do tipo raster ou vetoriais
Imagens do tipo raster
❏ Normalmente representadas em uma matriz
m x n onde cada célula descreve um pixel
❏ Imagens de tons de cinza, por exemplo,
descrevem a intensidade do tom em cada
célula
❏ Imagens do tipo RGB descrevem a cor via
distribuição da tripla RGB no pixel
RGB Triplets
Conceito de Imagem Digital II
❏ Imagens digitais não possuem quaisquer
informações de contexto, profundidade ou de
objetos nelas representados
❏ É tarefa da Visão Computacional obter algum
aprendizado a partir do análise das imagens
❏ Detectar objetos, analisar segmentação, estimar
profundidade, analisar e detectar eventos e
localização, etc
❏ Primeira imagem
digitalizada da
história
❏ 176x176
❏ Russel Kirsch
❏ National Institute of
Standards and
Technology (NIST).
Operações de filtros
❏ Filtros são operações numéricas matriciais
realizadas na matriz que descreve uma
imagem
❏ Ex.: Filtros de soma (tons de cinza)
❏ matriz[] + 30 ← clareia imagem
❏ matriz[] - 30 ← escurece imagem
❏ Cuidar Overflow e underflow
Visão Computacional e Software
Livre...
OpenCV
❏ Opensource Computer Vision
❏ Originalmente desenvolvido pela Intel Russia em 1999
❏ Licença BSD
❏ Estrutura modular com módulos para:
❏ Processamento de Imagens
❏ Estatística
❏ Álgebra Linear
❏ Vídeos/Imagens I/O
❏ GUI
❏ É mais barato que o Matlab!
Linguagens e Bindings
❏ OpenCV foi escrito em C/C++
❏ Possui bindings para:
❏ Java
❏ Python
❏ Visual Basic (ECA!)
❏ Usem Python pois a vida é curta!
❏ Numpy, matplotlib e estruturas simples
❏ Portável e ideal para embutir em aplicações maiores
❏ Android, BSD, OpenBSD, Windows, Blackberry, Linux e
OS X
OpenCV e Visão Computacional
❏ OpenCV possui módulos para Visão
Computacional (cv)
❏ Nele está presente os principais algoritmos
da área para:
❏ detecção de objetos
❏ análise de segmentação de imagens
❏ rastreamento de alvos
❏ entre outros
Detecção de Objetos
Algoritmo de Viola-Jones e otimização de Lienhart et al (2003)
Algoritmo de Viola-Jones
❏ Proposto por Paul Viola (Microsoft) e Michael
Jones (Mitsubishi) em 2001
❏ Abordagem baseado em padrões de aparência
treinados
❏ obtenção de pontos invariantes de objetos
❏ Estrutura em cascata e em tempo real
❏ Uso de imagens integrais para diminuição de custo
de operações
Fluxo do algoritmo
1. Treinamento de um descritor de padrões
invariantes (com algoritmo AdaBoost)
2. Aplicação dos retângulos classificadores na
imagem
3. Bater valor obtidos pelos retângulos com os
treinados do XML
4. Caso passe todas etapas, objeto foi
encontrado
Treinamento de Padrões
1. Obter imagens positivas
2. Obter imagens negativas
3. Montar samples de aprendizado com as
possíveis combinações de positivos e
negativos
4. Rodar o AdaBoost
5. Produto final é um arquivo XML de padrões
haar que descrevem o alvo
Tracklets positivos e samples
XML haar features
Imagens Integrais
Janelas retangulares classificadoras
Otimização de Lienhart
Após estas etapas, qualquer objeto
pode ser detectado
❏ Praticamente todos objetos do mundo real
possuem padrões invariantes de forma ou
cor
❏ Objetos rígidos sólidos tendem a ter uma
taxa de acerto maior nesta abordagem
❏ Por exemplo: corpos humanos tendem a se dobrar
durante o movimento, o que pode diminuir a taxa de
acerto
Voilà
Lenna, 1972
Smartcars que detectam obstáculos
Qualquer objeto mesmo!
http://coding-robin.de/2013/07/22/train-your-own-opencv-haar-
classifier.html
Vídeo Viola-Jones
Detectando faces na webcam com
OpenCV em Python
❏ cv2.detectMultiScale()
❏ scaleFactor
❏ minNeighbors
❏ minSize
❏ cv2.VideoCapture()
Problemas e discussões
❏ Algoritmo é sensível a oclusões parciais
❏ Alguns objetos variam muito de forma e
tamanho
❏ É um dos não tão poucos casos que o “bom
senso” e maleabilidade da nossa cognição
joga a nosso favor
Detecção X Rastreamento
❏ Apenas detectar não significa que algo está
sendo rastreado
❏ A cada novo frame de vídeo em que o Viola-
Jones rodar, cada objeto será tratado como
um novo objeto
❏ Existem ponderações para rastrear
❏ Estatística, comparar histogramas, algoritmos de
associação, estimação de energia contínua, etc
Rastrear partes do corpo humano para controlar interfaces
Rastrear pedestres
❏ Por que seria útil
um rastreador de
pedestres?
Obrigado!
Perguntas?

More Related Content

Viewers also liked

Apresentação visão computacional
Apresentação visão computacionalApresentação visão computacional
Apresentação visão computacionalEdvaldo Araújo
 
Compilando e Usando OpenCV v. 3.0.0
Compilando e Usando OpenCV v. 3.0.0Compilando e Usando OpenCV v. 3.0.0
Compilando e Usando OpenCV v. 3.0.0André Moreira
 
Visão computacional em embarcados
Visão computacional em embarcadosVisão computacional em embarcados
Visão computacional em embarcadosMauro Assis
 
Vendo nas Nuvens: Uma introdução à API de Visão Computacional da Google
Vendo nas Nuvens: Uma introdução à API de Visão Computacional da GoogleVendo nas Nuvens: Uma introdução à API de Visão Computacional da Google
Vendo nas Nuvens: Uma introdução à API de Visão Computacional da GoogleSandro Moreira
 
White Paper: Sistemas de Visão Artificial Industrial - Factores a Ter em Cons...
White Paper: Sistemas de Visão Artificial Industrial - Factores a Ter em Cons...White Paper: Sistemas de Visão Artificial Industrial - Factores a Ter em Cons...
White Paper: Sistemas de Visão Artificial Industrial - Factores a Ter em Cons...Maria Spínola
 
Sistema de Reconhecimento de Placas de Carro (Brasil) - Visão Computacional/O...
Sistema de Reconhecimento de Placas de Carro (Brasil) - Visão Computacional/O...Sistema de Reconhecimento de Placas de Carro (Brasil) - Visão Computacional/O...
Sistema de Reconhecimento de Placas de Carro (Brasil) - Visão Computacional/O...Richiely Paiva
 

Viewers also liked (7)

Apresentação visão computacional
Apresentação visão computacionalApresentação visão computacional
Apresentação visão computacional
 
Compilando e Usando OpenCV v. 3.0.0
Compilando e Usando OpenCV v. 3.0.0Compilando e Usando OpenCV v. 3.0.0
Compilando e Usando OpenCV v. 3.0.0
 
Introdução OpenCV (Pt-Br) com exemplos
Introdução OpenCV (Pt-Br) com exemplosIntrodução OpenCV (Pt-Br) com exemplos
Introdução OpenCV (Pt-Br) com exemplos
 
Visão computacional em embarcados
Visão computacional em embarcadosVisão computacional em embarcados
Visão computacional em embarcados
 
Vendo nas Nuvens: Uma introdução à API de Visão Computacional da Google
Vendo nas Nuvens: Uma introdução à API de Visão Computacional da GoogleVendo nas Nuvens: Uma introdução à API de Visão Computacional da Google
Vendo nas Nuvens: Uma introdução à API de Visão Computacional da Google
 
White Paper: Sistemas de Visão Artificial Industrial - Factores a Ter em Cons...
White Paper: Sistemas de Visão Artificial Industrial - Factores a Ter em Cons...White Paper: Sistemas de Visão Artificial Industrial - Factores a Ter em Cons...
White Paper: Sistemas de Visão Artificial Industrial - Factores a Ter em Cons...
 
Sistema de Reconhecimento de Placas de Carro (Brasil) - Visão Computacional/O...
Sistema de Reconhecimento de Placas de Carro (Brasil) - Visão Computacional/O...Sistema de Reconhecimento de Placas de Carro (Brasil) - Visão Computacional/O...
Sistema de Reconhecimento de Placas de Carro (Brasil) - Visão Computacional/O...
 

Similar to Tchelinux 2014 visão computacional

Aprendizado Profundo & CNNs
Aprendizado Profundo & CNNsAprendizado Profundo & CNNs
Aprendizado Profundo & CNNsFabio Spanhol
 
[Jose Ahirton Lopes] Inteligencia Artificial - Uma Abordagem Visual
[Jose Ahirton Lopes] Inteligencia Artificial -  Uma Abordagem Visual[Jose Ahirton Lopes] Inteligencia Artificial -  Uma Abordagem Visual
[Jose Ahirton Lopes] Inteligencia Artificial - Uma Abordagem VisualAhirton Lopes
 
[Jose Ahirton Lopes] Inteligencia Artificial - Uma Abordagem Visual
[Jose Ahirton Lopes] Inteligencia Artificial - Uma Abordagem Visual[Jose Ahirton Lopes] Inteligencia Artificial - Uma Abordagem Visual
[Jose Ahirton Lopes] Inteligencia Artificial - Uma Abordagem VisualAhirton Lopes
 
Apresenta o_do_tcc___felipe_correa(8)
Apresenta  o_do_tcc___felipe_correa(8)Apresenta  o_do_tcc___felipe_correa(8)
Apresenta o_do_tcc___felipe_correa(8)felipe_cr
 
Uma breve introdução ao Big Data e Inteligência Artificial.pptx
Uma breve introdução ao Big Data e Inteligência Artificial.pptxUma breve introdução ao Big Data e Inteligência Artificial.pptx
Uma breve introdução ao Big Data e Inteligência Artificial.pptxAlessandro Binhara
 
Processamento digital de imagens com gnu octave jotacisio araujo oliveira fli...
Processamento digital de imagens com gnu octave jotacisio araujo oliveira fli...Processamento digital de imagens com gnu octave jotacisio araujo oliveira fli...
Processamento digital de imagens com gnu octave jotacisio araujo oliveira fli...PotiLivre Sobrenome
 
[Jose Ahirton Lopes] Deep Learning - Uma Abordagem Visual
[Jose Ahirton Lopes] Deep Learning - Uma Abordagem Visual[Jose Ahirton Lopes] Deep Learning - Uma Abordagem Visual
[Jose Ahirton Lopes] Deep Learning - Uma Abordagem VisualAhirton Lopes
 
[Jose Ahirton Lopes] Deep Learning - Uma Abordagem Visual
[Jose Ahirton Lopes] Deep Learning - Uma Abordagem Visual[Jose Ahirton Lopes] Deep Learning - Uma Abordagem Visual
[Jose Ahirton Lopes] Deep Learning - Uma Abordagem VisualAhirton Lopes
 
[Ahirton Lopes e Rafael Arevalo] Deep Learning - Uma Abordagem Visual
[Ahirton Lopes e Rafael Arevalo] Deep Learning - Uma Abordagem Visual[Ahirton Lopes e Rafael Arevalo] Deep Learning - Uma Abordagem Visual
[Ahirton Lopes e Rafael Arevalo] Deep Learning - Uma Abordagem VisualAhirton Lopes
 
Aspectos profissionais 3pontos
Aspectos profissionais 3pontosAspectos profissionais 3pontos
Aspectos profissionais 3pontosMiguel Alho
 
Python Training #1 - ed5
Python Training #1 - ed5Python Training #1 - ed5
Python Training #1 - ed5Fabio Spanhol
 
Python Training #1 ed.6
Python Training #1 ed.6 Python Training #1 ed.6
Python Training #1 ed.6 Fabio Spanhol
 
Introdução à utilização de openFrameworks para o desenvolvimento de aplicaçõ...
Introdução à utilização de openFrameworks para  o desenvolvimento de aplicaçõ...Introdução à utilização de openFrameworks para  o desenvolvimento de aplicaçõ...
Introdução à utilização de openFrameworks para o desenvolvimento de aplicaçõ...Christopher Cerqueira
 
Classificação Automatizada de Câncer de Mama - Imagens Histopatológicas
Classificação Automatizada de Câncer de Mama - Imagens HistopatológicasClassificação Automatizada de Câncer de Mama - Imagens Histopatológicas
Classificação Automatizada de Câncer de Mama - Imagens HistopatológicasFabio Spanhol
 

Similar to Tchelinux 2014 visão computacional (20)

Dismistificando deep learning
Dismistificando deep learningDismistificando deep learning
Dismistificando deep learning
 
Dismistificando deep learning v2.1
Dismistificando deep learning v2.1Dismistificando deep learning v2.1
Dismistificando deep learning v2.1
 
Aprendizado Profundo & CNNs
Aprendizado Profundo & CNNsAprendizado Profundo & CNNs
Aprendizado Profundo & CNNs
 
Dismistificando deep learning
Dismistificando deep learningDismistificando deep learning
Dismistificando deep learning
 
[Jose Ahirton Lopes] Inteligencia Artificial - Uma Abordagem Visual
[Jose Ahirton Lopes] Inteligencia Artificial -  Uma Abordagem Visual[Jose Ahirton Lopes] Inteligencia Artificial -  Uma Abordagem Visual
[Jose Ahirton Lopes] Inteligencia Artificial - Uma Abordagem Visual
 
[Jose Ahirton Lopes] Inteligencia Artificial - Uma Abordagem Visual
[Jose Ahirton Lopes] Inteligencia Artificial - Uma Abordagem Visual[Jose Ahirton Lopes] Inteligencia Artificial - Uma Abordagem Visual
[Jose Ahirton Lopes] Inteligencia Artificial - Uma Abordagem Visual
 
Detecção de faces em vídeos
Detecção de faces em vídeosDetecção de faces em vídeos
Detecção de faces em vídeos
 
Apresenta o_do_tcc___felipe_correa(8)
Apresenta  o_do_tcc___felipe_correa(8)Apresenta  o_do_tcc___felipe_correa(8)
Apresenta o_do_tcc___felipe_correa(8)
 
Uma breve introdução ao Big Data e Inteligência Artificial.pptx
Uma breve introdução ao Big Data e Inteligência Artificial.pptxUma breve introdução ao Big Data e Inteligência Artificial.pptx
Uma breve introdução ao Big Data e Inteligência Artificial.pptx
 
Processamento digital de imagens com gnu octave jotacisio araujo oliveira fli...
Processamento digital de imagens com gnu octave jotacisio araujo oliveira fli...Processamento digital de imagens com gnu octave jotacisio araujo oliveira fli...
Processamento digital de imagens com gnu octave jotacisio araujo oliveira fli...
 
Artoolkit
ArtoolkitArtoolkit
Artoolkit
 
[Jose Ahirton Lopes] Deep Learning - Uma Abordagem Visual
[Jose Ahirton Lopes] Deep Learning - Uma Abordagem Visual[Jose Ahirton Lopes] Deep Learning - Uma Abordagem Visual
[Jose Ahirton Lopes] Deep Learning - Uma Abordagem Visual
 
[Jose Ahirton Lopes] Deep Learning - Uma Abordagem Visual
[Jose Ahirton Lopes] Deep Learning - Uma Abordagem Visual[Jose Ahirton Lopes] Deep Learning - Uma Abordagem Visual
[Jose Ahirton Lopes] Deep Learning - Uma Abordagem Visual
 
[Ahirton Lopes e Rafael Arevalo] Deep Learning - Uma Abordagem Visual
[Ahirton Lopes e Rafael Arevalo] Deep Learning - Uma Abordagem Visual[Ahirton Lopes e Rafael Arevalo] Deep Learning - Uma Abordagem Visual
[Ahirton Lopes e Rafael Arevalo] Deep Learning - Uma Abordagem Visual
 
Digital Definitivo
Digital DefinitivoDigital Definitivo
Digital Definitivo
 
Aspectos profissionais 3pontos
Aspectos profissionais 3pontosAspectos profissionais 3pontos
Aspectos profissionais 3pontos
 
Python Training #1 - ed5
Python Training #1 - ed5Python Training #1 - ed5
Python Training #1 - ed5
 
Python Training #1 ed.6
Python Training #1 ed.6 Python Training #1 ed.6
Python Training #1 ed.6
 
Introdução à utilização de openFrameworks para o desenvolvimento de aplicaçõ...
Introdução à utilização de openFrameworks para  o desenvolvimento de aplicaçõ...Introdução à utilização de openFrameworks para  o desenvolvimento de aplicaçõ...
Introdução à utilização de openFrameworks para o desenvolvimento de aplicaçõ...
 
Classificação Automatizada de Câncer de Mama - Imagens Histopatológicas
Classificação Automatizada de Câncer de Mama - Imagens HistopatológicasClassificação Automatizada de Câncer de Mama - Imagens Histopatológicas
Classificação Automatizada de Câncer de Mama - Imagens Histopatológicas
 

Tchelinux 2014 visão computacional

  • 1. Fazendo máquinas enxergarem com OpenCV TCHÊLINUX 2014 Felipe Aguiar Corrêa felipe.correa@ufpel.edu.br
  • 2. Quem é esse cara aí? ❏ UFPEL ❏ Ciência da Computação ❏ Visão Computacional ❏ Rastreamento de Pedestres
  • 3. Visão Computacional ❏ Sub-área da Inteligência Artificial ❏ Multidisciplinar ❏ Inspiração neurobiológica ❏ Dar significado a imagens digitais
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10. Também serve para fazer as pessoas parecerem mongolóides pulando na frente de um televisor
  • 12. Conceito de Imagem Digital ❏ Representação numérica de uma imagem bidimensional em forma binária ❏ Assim permite seu armazenamento ou reprodução por meios eletrônicos ❏ Podem ser do tipo raster ou vetoriais
  • 13. Imagens do tipo raster ❏ Normalmente representadas em uma matriz m x n onde cada célula descreve um pixel ❏ Imagens de tons de cinza, por exemplo, descrevem a intensidade do tom em cada célula ❏ Imagens do tipo RGB descrevem a cor via distribuição da tripla RGB no pixel
  • 14.
  • 16. Conceito de Imagem Digital II ❏ Imagens digitais não possuem quaisquer informações de contexto, profundidade ou de objetos nelas representados ❏ É tarefa da Visão Computacional obter algum aprendizado a partir do análise das imagens ❏ Detectar objetos, analisar segmentação, estimar profundidade, analisar e detectar eventos e localização, etc
  • 17. ❏ Primeira imagem digitalizada da história ❏ 176x176 ❏ Russel Kirsch ❏ National Institute of Standards and Technology (NIST).
  • 18. Operações de filtros ❏ Filtros são operações numéricas matriciais realizadas na matriz que descreve uma imagem ❏ Ex.: Filtros de soma (tons de cinza) ❏ matriz[] + 30 ← clareia imagem ❏ matriz[] - 30 ← escurece imagem ❏ Cuidar Overflow e underflow
  • 19. Visão Computacional e Software Livre...
  • 20. OpenCV ❏ Opensource Computer Vision ❏ Originalmente desenvolvido pela Intel Russia em 1999 ❏ Licença BSD ❏ Estrutura modular com módulos para: ❏ Processamento de Imagens ❏ Estatística ❏ Álgebra Linear ❏ Vídeos/Imagens I/O ❏ GUI ❏ É mais barato que o Matlab!
  • 21.
  • 22. Linguagens e Bindings ❏ OpenCV foi escrito em C/C++ ❏ Possui bindings para: ❏ Java ❏ Python ❏ Visual Basic (ECA!) ❏ Usem Python pois a vida é curta! ❏ Numpy, matplotlib e estruturas simples ❏ Portável e ideal para embutir em aplicações maiores ❏ Android, BSD, OpenBSD, Windows, Blackberry, Linux e OS X
  • 23. OpenCV e Visão Computacional ❏ OpenCV possui módulos para Visão Computacional (cv) ❏ Nele está presente os principais algoritmos da área para: ❏ detecção de objetos ❏ análise de segmentação de imagens ❏ rastreamento de alvos ❏ entre outros
  • 24. Detecção de Objetos Algoritmo de Viola-Jones e otimização de Lienhart et al (2003)
  • 25. Algoritmo de Viola-Jones ❏ Proposto por Paul Viola (Microsoft) e Michael Jones (Mitsubishi) em 2001 ❏ Abordagem baseado em padrões de aparência treinados ❏ obtenção de pontos invariantes de objetos ❏ Estrutura em cascata e em tempo real ❏ Uso de imagens integrais para diminuição de custo de operações
  • 26. Fluxo do algoritmo 1. Treinamento de um descritor de padrões invariantes (com algoritmo AdaBoost) 2. Aplicação dos retângulos classificadores na imagem 3. Bater valor obtidos pelos retângulos com os treinados do XML 4. Caso passe todas etapas, objeto foi encontrado
  • 27. Treinamento de Padrões 1. Obter imagens positivas 2. Obter imagens negativas 3. Montar samples de aprendizado com as possíveis combinações de positivos e negativos 4. Rodar o AdaBoost 5. Produto final é um arquivo XML de padrões haar que descrevem o alvo
  • 32.
  • 34. Após estas etapas, qualquer objeto pode ser detectado ❏ Praticamente todos objetos do mundo real possuem padrões invariantes de forma ou cor ❏ Objetos rígidos sólidos tendem a ter uma taxa de acerto maior nesta abordagem ❏ Por exemplo: corpos humanos tendem a se dobrar durante o movimento, o que pode diminuir a taxa de acerto
  • 36. Smartcars que detectam obstáculos
  • 39. Detectando faces na webcam com OpenCV em Python ❏ cv2.detectMultiScale() ❏ scaleFactor ❏ minNeighbors ❏ minSize ❏ cv2.VideoCapture()
  • 40. Problemas e discussões ❏ Algoritmo é sensível a oclusões parciais ❏ Alguns objetos variam muito de forma e tamanho ❏ É um dos não tão poucos casos que o “bom senso” e maleabilidade da nossa cognição joga a nosso favor
  • 41. Detecção X Rastreamento ❏ Apenas detectar não significa que algo está sendo rastreado ❏ A cada novo frame de vídeo em que o Viola- Jones rodar, cada objeto será tratado como um novo objeto ❏ Existem ponderações para rastrear ❏ Estatística, comparar histogramas, algoritmos de associação, estimação de energia contínua, etc
  • 42. Rastrear partes do corpo humano para controlar interfaces
  • 43. Rastrear pedestres ❏ Por que seria útil um rastreador de pedestres?