O documento discute a visão computacional e o OpenCV. Ele introduz conceitos básicos de imagem digital e operações de filtros. Também descreve o algoritmo Viola-Jones para detecção de objetos em OpenCV e como ele pode ser usado para detectar vários objetos como rostos e placas de trânsito.
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
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
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
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
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
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