Seminário de Multimídia
OpenCV e suas aplicações
{avap,bcs2,gamsd,jspff,jblj,rar3}@cin.ufpe.br
Roteiro
Introdução
Visão computacional
OpenCV
TouchLib
ReactTable
Visão Computacional
Transformação de dados
De: imagem estática ou stream de vídeo
Para: decisão ou nova representação
Transformações com objetivo específico
Dados de entrada podem conter informação contextual
Visão Computacional
Decisão
“tem uma pessoa nessa cena”
“existem 14 células doentes nessa imagem”
Representação
Transformar uma imagem colorida em tons de cinza
Remover o movimento da câmera de uma sequência de
imagens
Visão Computacional
Cérebro
Sistemas de atenção – identificam áreas importantes de um
campo visual
Múltiplos fluxos de processamento de informação
Associações cruzadas / experiência adquirida /
condicionamento
Máquina
Sequência de números
OpenCV
OpenCV
Open source computer vision library
Infra-estrutura de visão computacional de fácil uso
Aplicações sofisticadas de CV rapidamente construídas
Otimizada para tempo real
Multi-plataforma, C/C++
APIs low-level e high-level
OpenCV - Contexto
99/2000
Intel Research Initiative
Aplicações de uso intensivo da CPU
Real-time ray tracing
MIT Media Lab
Código passado de mão em mão
OpenCV
Infra-estrutura de visão computacional largamente
disponível
Core de código implementado
Especificações de algoritmos
Intel Russia: gerenciou, codificou, otimizou
OpenCV - Objetivos
Avançar a pesquisa em CV
Prover código aberto e otimizado
Não reiventar a roda
Disseminar o conhecimento de CV
Infra-estrutura comum
Código prontamente legível e transferível
Avançar aplicações comerciais em CV
Código portável, otimizado e gratuito
Licença BSD Intel
OpenCV - Objetivos
Crescimento da área de CV
O crescimento das aplicações exigiria processadores mais
rápidos
Mais lucro para a Intel
OpenCV
C/C++, Python, Visual Basic, Ruby, Matlab
Linux (POSIX), Windows, Mac OS X
Eficiência Computacional
Foco em tempo real, C otimizado, processadores multicore
Mais otimização: Intel’s IPP
Integrated Performance Primitives
Algoritmos de baixo nível otimizados
OpenCV - Funcionalidades
Manipulação de dados de imagens
E/S de imagem e vídeo
Manipulação de matrizes e vetores
Rotinas de álgebra linear
Estruturas de dados dinâmicas
Processamento de imagem básico
OpenCV - Funcionalidades
Análise estrutural
Calibragem de câmera
Análise de movimento (tracking)
Reconhecimento de objetos
GUI Básica
Rotulagem de imagem
OpenCV - Módulos
cxcore
Estruturas de dados e álgebra linear
Transformadas de dados, persistência de objetos,
gerenciamento de memória, mainpulação de erros,
carregamento dinâmico de código
Desenho, texto, matemática básica
cv
Processamento de imagem, análise de estrutura,
movimento e tracking, reconhecimento de padrões,
calibragem de câmera (em C)
OpenCV - Módulos
cvcam
Interface de câmera
cvaux
Eigen objects (técnica de reconhecimento), gestures,
contorno de regiões, matching de formas, descritores de
texturas, tracking de olhos e bocas, descoberta de
esqueletos, segmentação de background-foreground,
calibragem de câmera (em C++)
Alguns migrarão para cv, outros, não
OpenCV - Módulos
HighGUI
Interface de usuário
Armazenamento e chamada de imagem/vídeo
ml
Aprendizagem de máquina
Clustering, classificação e análise de dados
Suficientemente genérica
OpenCV – Quem usa?
IBM, Microsoft, Intel, Sony, Siemens, Google
Stanford, MIT, CMU, Cambridge, INRIA
Yahoo Groups: 20,000 membros
China, Japão, Rússia, Europa, Israel
Estabilidade (?)
OpenCV
Câmeras de vigilância, imagens e vídeo na web,
interfaces de jogos, imagens aéreas, monitoramento de
segurança, veículos não-tripulados, análises biomédicas,
inspeção automática de produção, robótica
Touchlib
OpenCV
DShow filters, Demo apps,
Scripting Environment
OpenCV(C++ classes, High-level C functions)
Switcher
Low level C-functions
IPP
(Optimized low level functions)
OpenCV
Alguns módulos:
Detector de bordas
OpenCV
Alguns módulos:
Detector de Faces
Cadeias de Markov
…
1
n
OpenCV
Alguns módulos:
Detector de Faces
Cadeias de Markov
i
OpenCV
Alguns módulos:
Detector de Contornos
OpenCV
Alguns módulos:
Detector de Objetos e orientação 3D
TouchLib
Biblioteca para criação de superfícies de interação
multi-toque
Capaz de adquirir as imagens a partir de diversos
dispositivos
Realiza detecção e tracking dos blobs
Capaz de reconhecer diversos eventos de toque e
envia-los a sua aplicação
TouchLib
Assim, a touchlib atua como um driver para a mesa
multi-toque de modo a aplicação poder interpretar os
toque do usuário
A aplicação fica responsável pelo retorno ao usuário
Vem com um software para calibrar e testar a câmera
que será utilizada
Técnicas de captura
FTIR – frustrated total internal reflection
Luz infra-vermelha ilumina internamente um painel acrílico
Capturada por uma câmera infra-vermelha
Mais popular
Técnicas de captura
Difused Illumination
Luz infra-vermelha é
colocada embaixo de
um painel de
vidro/acrílico, com um
difusor
Quando objeto toca a
superfície, ela reflete
mais luz e é detectada
pela câmera
MS surface
Técnicas de captura
Gap method
A luz infra-vermelha é despejada sobre o painel através de
um pequeno espaço
Quando alguem toca o painel, reflete a luz, que é
detectada
Baseado em sensores
Teste de capacitância
Utiliza um grid eletrônico
iPhone
Processamento da imagem
Fluxo de aplicação multi-toque
Após serem capturadas, as imagens contém blobs
brancos (as digitais do usuário)
A imagem é processada e as coordenadas dos blobs
são obtidas
Touchlib então detecta padrões de toque e repassa pra
aplicação
Usa-se um projetor para dar retorno ao usuário
Fluxo de aplicação multi-toque
Suporte para aplicações
Muitas plataformas para desenvolvimento de aplicações
multi-toque:
Adobe Flash
Java
vvvv
C++
Pode interagir utilizando o protocolo TUIO
Sobre o projeto
Criado pelo grupo NUI – Natural User Interface
Grupo interessado em novos métodos e conceitos de
IHC
Realidade aumentada
Reconhecimento de gestos, voz, escrita, etc.
Visão computacional
Visualização de informações
Exemplo
Lux framework: framework para design de experiencia,
visualização de informação
reacTable
Um novo instrumento musical
eletrônico e acústico
Multiusuário
IU através de uma mesa tangível
reacTable
O movimento e identificação de artefatos físicos na
superfície da mesa controlam a sinterização de sons
Dynamic Patching
Utiliza a troca de informações através de pacotes UDP
ID
Orientacao
Localização
Utiliza o protocolo TUIO que é baseado no Open Sound
Control (OSC)
reacTable
reacTable
reacTable
Atualmente fornece dois modelos para compra
Concert table
Table for public installations
O preço de uma mesa da segunda categoria pode
chegar até aproximadamente $23.000
O sintetizador gráfico pode ser configurado através de
um arquivo de XML.
reacTable
Suporta que outros instrumentos também participem da
sessão
Exemplo: trombone
Modelos colaborativos
Colaboração local
Separação espacial
Espaço compartilhado
Colaboração remota
reacTable
Como ele processa a informação captada pela
câmera?
ReacTIVision
reacTIVision
Framework de visão computacional para rastrear
marcadores
Open-source
Multi-plataforma
Retorna uma mensagem OpenSound Control
Para qualquer cliente ligado
Via UDP na porta 3333
Como funciona?
Rastreia marcadores especialmente desenvolvidos em
tempo real
Também rastreia os dedos
Como funciona?
Pré-processamento da imagem capturada
Binarização e segmentação
Procura por padrões de alta profundidade
Recuperação do centro e orientação do marcador
Codifica a presença, localização orientação e
identidade do marcador
Como funciona?
Na segmentação, pequenos círculos podem ser
recuperados
Usa-se um algoritmo complementar para diferenciar os
dedos de distorções
Exemplos
Exemplos
Exemplos
Projeto semelhante
Jam-O-Drum
Exemplos
Cantora Bjork
Dúvidas