520 likes | 614 Views
Seminário de Multimídia. Aplicações que utilizam o OpenCV {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
E N D
Seminário de Multimídia Aplicações que utilizam o OpenCV {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 • 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 Open source Open source DShow filters, Demo apps, Scripting Environment OpenCV(C++ classes, High-level C functions) Switcher Low level C-functions Open source Open source 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 Pi - Probabilidade Escolha o max(Pi) 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
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
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 • Atualmente fornece dois modelos para venda • 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 • Vídeo 1 - reacTable
Exemplos • Vídeo 2 - reacTable
Exemplos • Projeto semelhante • Jam-O-Drum