campus party - computer vision

65
ITA Daniel Lélis Baggio [email protected] TORP – The Open Robot Project Módulo de Visão Computacional

Upload: dannyxyz22

Post on 28-Nov-2014

5.051 views

Category:

Technology


2 download

DESCRIPTION

This was the vision lecture I've presented in Campus Party 2009

TRANSCRIPT

Page 1: Campus Party - Computer Vision

ITA

Daniel Lélis [email protected]

TORP – The Open Robot ProjectMódulo de Visão Computacional

Page 2: Campus Party - Computer Vision

The Open Robot Project | Módulo de Visão Computacional | [email protected] | 2

Tópicos

O que é a visão computacional? Como os computadores veem? Filtros OpenCV Algoritmos

– Segmentação por cor

– Detecção de movimento por diferença absoluta

– Classificadores: detecção de faces

– Fluxo óptico

– Estimativa de posição e rotação 3D

– Leitura de caracteres

Módulo de visão computacional do TORP

Page 3: Campus Party - Computer Vision

The Open Robot Project | Módulo de Visão Computacional | [email protected] | 3

Usos de visão computacional Reconhecimento

– Objetos, classes de objetos

• Ex: Reconhecimento facial, veículos

Imagens médicas

– IVUS, tomografia computacional

Visão estéreo

Detecção de movimento, tracking

Augmented Reality

Reconstrução de cenas: SLAM

Page 4: Campus Party - Computer Vision

The Open Robot Project | Módulo de Visão Computacional | [email protected] | 4

SLAM – Simultaneous Localization and Mapping

http://www.youtube.com/watch?v=bq5HZzGF3vQ

Page 5: Campus Party - Computer Vision

The Open Robot Project | Módulo de Visão Computacional | [email protected] | 5

SLAM – Simultaneous Localization and Mapping

The Mobile Robot Programming Toolkit (MRPT)

http://babel.isa.uma.es/mrpt/index.php/Main_Page

Page 6: Campus Party - Computer Vision

The Open Robot Project | Módulo de Visão Computacional | [email protected] | 6

Visão Estéreo

Profundidade

Page 7: Campus Party - Computer Vision

The Open Robot Project | Módulo de Visão Computacional | [email protected] | 7

Visão Estéreo

Profundidade

Page 8: Campus Party - Computer Vision

The Open Robot Project | Módulo de Visão Computacional | [email protected] | 8

Visão Estéreo

Page 9: Campus Party - Computer Vision

The Open Robot Project | Módulo de Visão Computacional | [email protected] | 9

Visão Estéreo

Page 10: Campus Party - Computer Vision

The Open Robot Project | Módulo de Visão Computacional | [email protected] | 10

Visão Estéreo

Page 11: Campus Party - Computer Vision

The Open Robot Project | Módulo de Visão Computacional | [email protected] | 11

Visão Estéreo – mapa de profundidade

Page 12: Campus Party - Computer Vision

The Open Robot Project | Módulo de Visão Computacional | [email protected] | 12

Augmented Reality

http://www.youtube.com/watch?v=enXTKvhE7yk

Page 13: Campus Party - Computer Vision

The Open Robot Project | Módulo de Visão Computacional | [email protected] | 13

Tópicos

O que é a visão computacional? Como os computadores veem? Filtros OpenCV Algoritmos

– Segmentação por cor

– Detecção de movimento por diferença absoluta

– Classificadores: detecção de faces

– Fluxo óptico

– Estimativa de posição e rotação 3D

– Leitura de caracteres

Módulo de visão computacional do TORP

Page 14: Campus Party - Computer Vision

The Open Robot Project | Módulo de Visão Computacional | [email protected] | 14

Como os computadores veem?

Page 15: Campus Party - Computer Vision

The Open Robot Project | Módulo de Visão Computacional | [email protected] | 15

Como os computadores veem?

Page 16: Campus Party - Computer Vision

The Open Robot Project | Módulo de Visão Computacional | [email protected] | 16

O que é uma imagem?

Vetor 2d de pixels

Imagens binárias:

– Pixels são bits

Imagens em tom de

cinza:

– Pixels são escalares

Imagens coloridas:

– Pixels são vetores

– A ordem pode variar (RGB, BGR, HSV, YUV)

– Podem conter um canal alpha para sobreposições

Page 17: Campus Party - Computer Vision

The Open Robot Project | Módulo de Visão Computacional | [email protected] | 17

O que é uma imagem?

Vetor 2d de pixels

Imagens binárias:

– Pixels são bits

Imagens em tom de

cinza:

– Pixels são escalares

Imagens coloridas:

– Pixels são vetores

– A ordem pode variar (RGB, BGR, HSV, YUV)

– Podem conter um canal alpha para sobreposições

Page 18: Campus Party - Computer Vision

The Open Robot Project | Módulo de Visão Computacional | [email protected] | 18

O que é uma imagem?

Vetor 2d de pixels

Imagens binárias:

– Pixels são bits

Imagens em tom de

cinza:

– Pixels são escalares

Imagens coloridas:

– Pixels são vetores

– A ordem pode variar (RGB, BGR, HSV, YUV)

– Podem conter um canal alpha para sobreposições

Page 19: Campus Party - Computer Vision

The Open Robot Project | Módulo de Visão Computacional | [email protected] | 19

O que é uma imagem?

Vetor 2d de pixels

Imagens binárias:

– Pixels são bits

Imagens em tom de

cinza:

– Pixels são escalares

Imagens coloridas:

– Pixels são vetores

– A ordem pode variar (RGB, BGR, HSV, YUV)

– Podem conter um canal alpha para sobreposições

Page 20: Campus Party - Computer Vision

The Open Robot Project | Módulo de Visão Computacional | [email protected] | 20

O que é uma imagem?

Vetor 2d de pixels

Imagens binárias:

– Pixels são bits

Imagens em tom de

cinza:

– Pixels são escalares

Imagens coloridas:

– Pixels são vetores

– A ordem pode variar (RGB, BGR, HSV, YUV)

– Podem conter um canal alpha para sobreposições

Page 21: Campus Party - Computer Vision

The Open Robot Project | Módulo de Visão Computacional | [email protected] | 21

Tópicos

O que é a visão computacional? Como os computadores veem? Filtros OpenCV Algoritmos

– Segmentação por cor

– Detecção de movimento por diferença absoluta

– Classificadores: detecção de faces

– Fluxo óptico

– Estimativa de posição e rotação 3D

– Leitura de caracteres

Módulo de visão computacional do TORP

Page 22: Campus Party - Computer Vision

The Open Robot Project | Módulo de Visão Computacional | [email protected] | 22

Imagens ruidosas e filtros: Gaussian Blur

Page 23: Campus Party - Computer Vision

The Open Robot Project | Módulo de Visão Computacional | [email protected] | 23

Imagens ruidosas e filtros: Gaussian Blur

Gaussian Blur

Blur simples (convolução 3x3):

1 2 1

2 4 2

1 2 1

Como filtrar uma imagem no GIMP?

Page 24: Campus Party - Computer Vision

The Open Robot Project | Módulo de Visão Computacional | [email protected] | 24

Tópicos

O que é a visão computacional? Como os computadores veem? Filtros OpenCV Algoritmos

– Segmentação por cor

– Detecção de movimento por diferença absoluta

– Classificadores: detecção de faces

– Fluxo óptico

– Estimativa de posição e rotação 3D

– Leitura de caracteres

Módulo de visão computacional do TORP

Page 25: Campus Party - Computer Vision

The Open Robot Project | Módulo de Visão Computacional | [email protected] | 25

OpenCV

Biblioteca open source de visão computacional

http://sourceforge.net/projects/opencvlibrary/

Desenvolvida e mantida pela Intel

Escrita em C e C++, roda em Linux, Windows e Mac

OS X com interfaces para Python, Ruby, Matlab e

outras linguagens. Otimizada para aplicações em

tempo real (> 15 fps)

Prover infra-estrutura para aplicações de visão

computacional de fácil utilização: mais de 500 funções

Page 26: Campus Party - Computer Vision

The Open Robot Project | Módulo de Visão Computacional | [email protected] | 26

OpenCV

Composta por 4 sub-módulos:

CV

Processamento de imagens

Algoritmos de visão

MLL

Classificadores estatísticos

Ferramentas de clusterização

HighGUI

GUI, entrada e

saída

de imagens e vídeos

CXCore

estruturas básicas e

algoritmos, suporte a XML,

funções de desenho

Page 27: Campus Party - Computer Vision

The Open Robot Project | Módulo de Visão Computacional | [email protected] | 27

Tópicos

O que é a visão computacional? Como os computadores veem? Filtros OpenCV Algoritmos

– Segmentação por cor

– Detecção de movimento por diferença absoluta

– Classificadores: detecção de faces

– Fluxo óptico

– Estimativa de posição e rotação 3D

– Leitura de caracteres

Módulo de visão computacional do TORP

Page 28: Campus Party - Computer Vision

The Open Robot Project | Módulo de Visão Computacional | [email protected] | 28

Camshift - Continuously Adaptive Mean Shift Algorithm

Page 29: Campus Party - Computer Vision

The Open Robot Project | Módulo de Visão Computacional | [email protected] | 29

Camshift - Continuously Adaptive Mean Shift Algorithm

Page 30: Campus Party - Computer Vision

The Open Robot Project | Módulo de Visão Computacional | [email protected] | 30

Camshift

Demonstração

Onde encontrar o software?

– Programas de demonstração da biblioteca OpenCv

• /usr/local/share/opencv/samples/c/camshiftdemo

Page 31: Campus Party - Computer Vision

The Open Robot Project | Módulo de Visão Computacional | [email protected] | 31

Tópicos

O que é a visão computacional? Como os computadores veem? Filtros OpenCV Algoritmos

– Segmentação por cor

– Detecção de movimento por diferença absoluta

– Classificadores: detecção de faces

– Fluxo óptico

– Estimativa de posição e rotação 3D

– Leitura de caracteres

Módulo de visão computacional do TORP

Page 32: Campus Party - Computer Vision

The Open Robot Project | Módulo de Visão Computacional | [email protected] | 32

Detecção de movimentos - Diferença absoluta

cvAbsDiff(frame1gray,frame2gray,result)

cvShowImage("res",result)

cvThreshold(result,result,30,255,CV_THRESH_BINARY)

cvShowImage("res1",result)

Page 33: Campus Party - Computer Vision

The Open Robot Project | Módulo de Visão Computacional | [email protected] | 33

Detecção de movimentos - Diferença absoluta

Importante: desabilitar ganho automático da webcam

Page 34: Campus Party - Computer Vision

The Open Robot Project | Módulo de Visão Computacional | [email protected] | 34

Tópicos

O que é a visão computacional? Como os computadores veem? Filtros OpenCV Algoritmos

– Segmentação por cor

– Detecção de movimento por diferença absoluta

– Classificadores: detecção de faces

– Fluxo óptico

– Estimativa de posição e rotação 3D

– Leitura de caracteres

Módulo de visão computacional do TORP

Page 35: Campus Party - Computer Vision

The Open Robot Project | Módulo de Visão Computacional | [email protected] | 35

Cascata de classificadores – Viola Jones

Detecção de feições

Face tracking

Page 36: Campus Party - Computer Vision

The Open Robot Project | Módulo de Visão Computacional | [email protected] | 36

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 37: Campus Party - Computer Vision

The Open Robot Project | Módulo de Visão Computacional | [email protected] | 37

Cálculo das Features – Integral Image

Soma dos valores de cada pixel (x,y)– Pode ser rapidamente computada com somente uma

passagem pela imagem

Page 38: Campus Party - Computer Vision

The Open Robot Project | Módulo de Visão Computacional | [email protected] | 38

Cálculo das Features Soma no interior de um Retângulo

– Sejam A, B, C e D os valores dos retângulos considerando-se o canto superior esquerdo da imagem

– Logo, a soma dos valores do retângulo ABCD é dada por:• SOMA = A – B – C + D

Somente três adições são necessárias para qualquer tamanho de retângulo!

Page 39: Campus Party - Computer Vision

The Open Robot Project | Módulo de Visão Computacional | [email protected] | 39

AdaBoost: Super Efficient Features Selector

Classificadores fracos = Features

A cada iteração:– Calculam-se os valores de cada feature em cada exemplar– Ordenam-se os exemplares pelos valores dos features– Seleciona-se o melhor feature / threshold– Recalculam-se os pesos dos exemplar

Page 40: Campus Party - Computer Vision

The Open Robot Project | Módulo de Visão Computacional | [email protected] | 40

Principais features identificadas

Page 41: Campus Party - Computer Vision

The Open Robot Project | Módulo de Visão Computacional | [email protected] | 41

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 42: Campus Party - Computer Vision

The Open Robot Project | Módulo de Visão Computacional | [email protected] | 42

Cascata de classificadores: visando tempo-real

Prioridade de rejeição de background nos estágios iniciais

Imagem em escala de cinza (8 bits), 320x240, 500 mil janelas

Tempo de deteção ~ 10ms (1 face) ~20 ms (nenhuma face)

25 estágios, 2912 features, menor janela 24x24

Otimizado para encontrar apenas a maior face

70% a 80% das janelas são rejeitadas nos 2 primeiros estágios

Page 43: Campus Party - Computer Vision

The Open Robot Project | Módulo de Visão Computacional | [email protected] | 43

Pré processamento Conversão para escala de cinza

– cvCvtColor( img, cinza, CV_BGR2GRAY );

• RGB[A]->Gray: Y<-0.299*R + 0.587*G + 0.114*B

Redimensionamento

– cvResize( cinza, imagem_reduzida, CV_INTER_LINEAR );

Normalização de brilho

– cvEqualizeHist( imagem_reduzida, imagem_reduzida );

• 1. calcular histograma H para src.

• 2. normalizar histograma, de forma que a soma seja 255.

• 3. computar a integral do histograma:

• H’(i) = somatório0≤j≤iH(j)

• 4. transformar a imagem usando H’ como look-up table: dst(x,y)=H’(src(x,y))

Page 44: Campus Party - Computer Vision

The Open Robot Project | Módulo de Visão Computacional | [email protected] | 44

Face Tracker

Onde encontrar o software?

– Programas de demonstração da biblioteca OpenCv

• /usr/local/share/opencv/samples/c/facedetect

Page 45: Campus Party - Computer Vision

The Open Robot Project | Módulo de Visão Computacional | [email protected] | 45

Tópicos

O que é a visão computacional? Como os computadores veem? Filtros OpenCV Algoritmos

– Segmentação por cor

– Detecção de movimento por diferença absoluta

– Classificadores: detecção de faces

– Fluxo óptico

– Estimativa de posição e rotação 3D

– Leitura de caracteres

Módulo de visão computacional do TORP

Page 46: Campus Party - Computer Vision

The Open Robot Project | Módulo de Visão Computacional | [email protected] | 46

Optical Flow

Objetivo: recuperar vetores de movimento aparente

entre um par de imagens

Pode-se utilizar o algoritmo de Lucas-Kanade para

verificar a velocidade de cada feição

Método diferencial de dois framesI(x,y,z,t) = I(x + δx,y + δy,z + δz,t + δt)

Page 47: Campus Party - Computer Vision

The Open Robot Project | Módulo de Visão Computacional | [email protected] | 47

Lucas-Kanade

Page 48: Campus Party - Computer Vision

The Open Robot Project | Módulo de Visão Computacional | [email protected] | 48

Lucas-Kanade

Demostração do Lucas Kanade

Onde encontrar o software?

– Programas de demonstração da biblioteca OpenCv

• /usr/local/share/opencv/samples/c/lkdemo

Page 49: Campus Party - Computer Vision

The Open Robot Project | Módulo de Visão Computacional | [email protected] | 49

Tópicos

O que é a visão computacional? Como os computadores veem? Filtros OpenCV Algoritmos

– Segmentação por cor

– Detecção de movimento por diferença absoluta

– Classificadores: detecção de faces

– Fluxo óptico

– Estimativa de posição e rotação 3D

– Leitura de caracteres

Módulo de visão computacional do TORP

Page 50: Campus Party - Computer Vision

The Open Robot Project | Módulo de Visão Computacional | [email protected] | 50

POSIT: “Pose from Orthography and Scaling with Iteration” Estimar posicionamento e rotação 3D de um objeto

conhecido

Page 51: Campus Party - Computer Vision

The Open Robot Project | Módulo de Visão Computacional | [email protected] | 51

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 52: Campus Party - Computer Vision

The Open Robot Project | Módulo de Visão Computacional | [email protected] | 52

EHCI – Enhanced Human Computer Interaction

Utilização do algoritmo Posit para obter head tracking

com 6 graus de liberdade

Page 53: Campus Party - Computer Vision

The Open Robot Project | Módulo de Visão Computacional | [email protected] | 53

EHCI – Enhanced Human Computer Interaction

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

Demonstração EHCI

Page 54: Campus Party - Computer Vision

The Open Robot Project | Módulo de Visão Computacional | [email protected] | 54

Tópicos

O que é a visão computacional? Como os computadores veem? Filtros OpenCV Algoritmos

– Segmentação por cor

– Detecção de movimento por diferença absoluta

– Classificadores: detecção de faces

– Fluxo óptico

– Estimativa de posição e rotação 3D

– Leitura de caracteres

Módulo de visão computacional do TORP

Page 55: Campus Party - Computer Vision

The Open Robot Project | Módulo de Visão Computacional | [email protected] | 55

Reconhecimento de Caracteres - OCR

Bibliotecas:

– OCR Opus http://code.google.com/p/ocropus/

– Tesseract http://code.google.com/p/tesseract-ocr/

Page 56: Campus Party - Computer Vision

The Open Robot Project | Módulo de Visão Computacional | [email protected] | 56

Reconhecimento de Caracteres - OCR

Page 57: Campus Party - Computer Vision

The Open Robot Project | Módulo de Visão Computacional | [email protected] | 57

Tópicos

O que é a visão computacional? Como os computadores veem? Filtros OpenCV Algoritmos

– Segmentação por cor

– Detecção de movimento por diferença absoluta

– Classificadores: detecção de faces

– Fluxo óptico

– Estimativa de posição e rotação 3D

– Leitura de caracteres

Módulo de visão computacional do TORP

Page 58: Campus Party - Computer Vision

The Open Robot Project | Módulo de Visão Computacional | [email protected] | 58

Arquitetura de visão computacional do TORP

Page 59: Campus Party - Computer Vision

The Open Robot Project | Módulo de Visão Computacional | [email protected] | 59

Instalação de drivers – UVC PWC

USB Video Device Class - Linux

– http://linux-uvc.berlios.de/

Philips USB Webcam driver for Linux

– http://www.saillard.org/linux/pwc/

Instalação dos drivers para Gumstix

– http://www.theopenrobotproject.org/tiki-index.php?

page=Installation+Instructions

V4L, V4L2: APIs para captura de vídeo para Linux

– http://linuxtv.org/v4lwiki/index.php/Main_Page

Page 60: Campus Party - Computer Vision

The Open Robot Project | Módulo de Visão Computacional | [email protected] | 60

Mjpeg streamer

Servidor http + obtenção frames UVC

./mjpg_streamer -o "output_http.so -w ./www"

http://sourceforge.net/projects/mjpg-streamer/

Page 61: Campus Party - Computer Vision

The Open Robot Project | Módulo de Visão Computacional | [email protected] | 61

Referências

Gary Bradsky & Adrian Kaehler “Learning OpenCV”

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 62: Campus Party - Computer Vision

The Open Robot Project | Módulo de Visão Computacional | [email protected] | 62

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 63: Campus Party - Computer Vision

The Open Robot Project | Módulo de Visão Computacional | [email protected] | 63

Agradecimentos

Page 64: Campus Party - Computer Vision

The Open Robot Project | Módulo de Visão Computacional | [email protected] | 64

Agradecimentos

Page 65: Campus Party - Computer Vision

The Open Robot Project | Módulo de Visão Computacional | [email protected] | 65

Dúvidas, sugestões e contribuições

Daniel Lélis Baggio

[email protected]