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
Download

Seminário de Multimídia - Centro de Informática da UFPE