Banco de Dados Multimídia 5. Vídeo Prof. Cláudio Baptista Video- Introdução Porquê necessitamos de vídeo? Para representar movimento (motion) O que podemos fazer com dados de video? – capturar, armazenar, apresentar, editar -- (sem considerar o conteúdo) – query, busca, indexação -- dependente de contexto Video sequence = Video stream (physical, raw data) + Video information (meaning) Video - Motivação – A grande quantidade de vídeos produzidos que necessitam de recuperação por – Ex.: Um ano de video da NBA mostrando os melhores eventos: Número total de jogos num ano: 29 * 82 / 2 + 91 = 1280 (jogos) Precisamos de 1280 * 3 = 3840 (horas) para navegar sequencialmente se usando um video player – Uma facilidade de acesso randômico pode reduzir este tempo pode ser reduzido a poucos dias. Video - Motivação Porquê agora? Porquê agora? Imagem & Video An image is captured when a camera scans a scene Colour => Red (R), Green (G) and Blue (B) array of digital samples Density of samples (pixels) gives resolution A video is captured when a camera scans a scene at multiple time instants Each sample is called a frame giving rise to a frame rate (frames/sec) measured in Hz TV (full motion video) is 25Hz Mobile video telephony is 8-15 Hz Video Data Compressão Compressão Representação de Vídeo Analógico: convertido para digital usando uma placa de captura de vídeo (digitalização) Digital: AVI, MPEG-1,-2,-4 Representação de Vídeo Representação de Vídeo Level Granularity Descriptive features Video meta concept, producer, director Episode macro events description Clip or Shot mini action, talk, goal Frame micro object and its spatial relationship Representação de Vídeo Características de vídeo Comparação com dados alfanuméricos Characteristic Video data Alphanumeric data Symbol Set Inifinite Finite Resolution High Low Interpretation Ambiguity High Low Interpretation Efforts High Low Data Volume Large Small Similarity Measure Ill difined Well Defined BD Vídeo Tipos de consulta: 1. Usuário pode ter visto uma cena de um video e deseja recuperá-la 2. Usuário pode estar procurando por um vídeo que ele nunca viu antes 3. Usuário pode ter apenas uma vaga idéia do que ele está procurando. BD Vídeo Meta: determinar a sintaxe e semântica de um video. Passo 1: identificar a sintaxe: Um filme é composto por segmentos, cenas e tomadas. - Quadro (Frame): uma imagem do vídeo - Tomadas (shots): sequência contínua de frames de uma câmera com início e fim bem definidos. - Cena (Episode): coleção de shots adjacentes focando os mesmos objetos e descrevendo uma cadeia completa de ações. - Segmento: é um grupo de cenas, não necessariamente adjacentes, ligados por uma linha comum de ações. Categoria: News Data: 10/12/96 Duração: 15 min Fonte: Globo Num. Estórias: M Keywords: C. Grande, Micarande, Turismo, festa ... Segmento index: 1 Título: Folia nos blocos Num. Shots: K Frame inicial: 00000 Frame final: 02000 Evento: narração, entrevistas, diálogos, ... Shot index: 1 Frame inicial: 00000 Frame final: 00300 Camera: still Nível de audio: médio Num. Pessoas: 10 Keywords: dança, festa animação, ... clip Segmento 1 ... Shot 1 ... Frame 00000 ... Segmento M Shot K Frame 00300 BD Vídeo • Passo 2: semântica Uso de metadata para especificar a semântica do video. Através de anotações, capturas de texto, e algoritmos de segmentação de imagem (similar a proc. de imagens). • BD Video pode ser indexado por: - dados bibliográficos: título, abstract, assunto, gênero - dados estruturados: segmento, cena e tomada - dados de conteúdo: uso de keyframes e keywords. Análise de Movimento O processo de análise de movimento é dividido em 3 estágios: detecção de objetos em movimento trajetória de objetos análise final de movimento Modelo de Informação de Video CBR em video usa: anotação manual para descrever informação semântica (lento) representação icônica usando métodos automáticos para detecção de mudança de cena (cortes) (perde a propriedade de movimento) propriedades estáticas derivadas usando técnicas de análise de imagens (perde aspecto temporal do video) Caracterização de Informação de Video Tipos de informações físicas associados com video: Objeto -- video stream atributos (length, size, frame numbering) informação (format resolution headers, frame rate) O que pode ser derivado de um video? O -- conjunto de objetos presentes num video M -- conjunto de representações de movimento Features, spatial relationships, derivados de O Spatiotemporal info derivada de O e M juntos Spatiotempotal info fornecida pelo designer Temporal relationships inferidos de M Image information Operadores de Video Além dos clássicos: FF, play, record, Rewind, stop e pause Inserir um video em outro Extrair um video clip Extração de cortes Extrair uma imagem de um video Operadores de atributos de video v_length:Video -> Integer frame_rate: Video -> Integer size: Video -> Integer resolution: Video -> String compression: Video -> String Video Segmentation Segmentação de Vídeo: O que é importante? Segmentação de Vídeo: O que é importante? Problema Semântico Video Segmentation Video Segmentation Video Segmentation Semantic Indexing Overview Projetos: Informedia Projetos: IBM Marvel Áudio Prof. Cláudio Baptista Áudio Processamento de Fala Reconhecimento de Fala Síntese de Fala Reconhecimento de Música Reconhecimento de Fala Motivação: •How can machines make sense of – and participate in – human communication? recognizing, interpreting, understanding, generating Underpins richer, human-centred approaches to computing perceptual computers that can interpret their environment technological enhancements to human-human communication Características Ácústicas Process the speech waveform to obtain a representation that emphasizes those aspects of the speech signal most relevant to ASR Dificuldades no Reconhecimento da fala Speech recognition is difficult due to several sourcesv of variation Size - number of words in the vocabulary, perpelexity Style - continuous speech or isolated; planned or spontaneous; Speaker characteristics and accent - tuned for a single speaker, or speaker-independent? Acoustic environment - noise, competing speakers, channel conditions (microphone, phone line, ...) Conhecimento linguístico One could construct a speech recognizer using linguistic knowledge Acoustic phonetic rules to relate spectrogram representations of sounds to phonemes Base pronunciations of words stored in a dictionary Morphological rules to construct inflected forms Grammatical rules to model syntax Semantic and pragmatic constraints Very difficult to take account of the variability of spoken language with such approaches Machine Learning Intense effort needed to derive and encode linguistic rules that cover all the language Speech has a high degree of variability (speaker, pronunciation, spontaneity, ...) Difficult to write a grammar for spoken language - many people rarely speak grammatically Data-driven approach Construct simple models of speech which can be earned from large amounts of data (thousands of hours of speech recordings) Solução: Métodos Estatísticos Redes Bayesianas Cadeias de Markov Música O que é MIR? Born ca. 1960’s in IR research Major recent growth precipitated by advent of networked digital music collections Informed by multiple disciplines andliteratures DEfinindo MIR Music Information Retrieval (MIR) is the process of searching for, and finding, music objects, or parts of music objects, via a query framed musically and/or in musical terms Music Objects: Scores, Parts, Recordings (WAV, MP3, etc.), etc. Musically framed query: Singing, Humming, Keyboard, Notation-based, MIDI file, Sound file, etc. Musical terms: Genre, Style, Tempo, etc. Porquê MIR é complexo? Multifaceted O que é Oracle interMedia Produto que estende o Oracle9i Adiciona características multimídia Responsável por gerenciar, armazenar e recuperar imagens, áudio, vídeo e texto interMedia Text – Serviço de procura em documentos Oracle Visual Information Retrieval (VIR) – Recuperação baseada em conteúdo O que é Oracle interMedia Tanto dados multimídia quanto dados tradicionais são suportados pelo banco de dados Dados multimídia podem ser: Compartilhados por múltiplas aplicações Gerenciados sob controle da tecnologia relacional Oferecidos em um servidor que suporta milhares de usuários interMedia Áudio, Imagem e Vídeo O Oracle interMedia pode armazenar: Binary Large Objects (BLOBs) – localmente no banco de dados File-Based Large objects (BFILEs) – arquivos do sistema operacional, externos ao BD URLs – armazenadas em um servidor HTTP Dados de áudio e vídeo streaming – armazenados em servidores especializados Orientado a Objetos O interMedia usa tipos de objeto semelhantes a classes Java e C++ ORDAudio, ORDImage, ORDVideo Instâncias dos objetos são compostas dos dados da mídia e de metadados São exemplos desses metadados: Tamanho, duração, formato ou tipo de compressão Objetos incluem métodos específicos da mídia Extensível O interMedia foi programado para ser extensível Tipos de extensões possíveis: Criar um novo tipo de objeto ou um tipo de objeto composto baseado nos tipos já oferecidos Plugins para outras fontes externas de mídia Refazer métodos como o setProperties() Suportar novos formatos de áudio, vídeo e imagem Conceitos de Áudio O objeto ORDAudio consiste do campo de dados onde o áudio é armazenado, mais uma série de metadados O interMedia pode armazenar e recuperar qualquer formato de áudio Pode extrair automaticamente os metadados para uma série de formatos populares Metadados de Áudio Exemplos de metadados para áudio: Formatos Tipos de compressão Número de canais Taxa de execução Tamanho de amostra Duração Conceitos de Vídeo O objeto ORDVideo é semelhante ao ORDAudio Mudanças apenas nos metadados e nos métodos de determinação automática Assim como para áudio, o ORDVideo extrai metadados para os formatos mais populares Armazena e recupera qualquer tipo de vídeo Metadados de Vídeo Exemplos de metadados de vídeo: Formatos Tipos de compressão Taxas de frame Tamanho de frame Resolução de frame Tempo de duração Número de cores Taxa de transferência Oracle Visual Information Retrieval Extensão do Oracle8i destinada a fazer Content- Based Retrieval e conversão de formatos de imagem Consiste de um objeto que armazena ou referencia a imagem e métodos que gerenciam e fazem processamentos As imagens possuem uma série de atributos específicos Atributos de Imagem Largura Altura Tamanho Tipo ou formato do arquivo Tipo ou formato de compressão Tipo da imagem (monocromática, colorida, etc.) Tipo MIME A classe ORDVir A classe ORDSYS.ORDVir é a base para as funcionalidades do VIR Criação de índices para a coluna de imagens da tabela Recuperação por conteúdo Composta da imagem, atributos de imagem, métodos específicos e um atributo assinatura Métodos do ORDVir Análise e Comparação Analyse() – analisa a imagem e gera uma assinatura (atributo signature), usada para a realização de Content-Based Retrieval VIRScore() e VIRSimilar() – comparam assinaturas de duas imagens e determinam se elas são similares Métodos do ORDVir Extração de Propriedades setProperties() – determina automaticamente as propriedades características da imagem Métodos “get” – retornam alguns atributos individualmente. Ex: getHeight() e getWidth() Verificação de Propriedades checkProperties() – verifica se as propriedades armazenadas conferem com a imagem Métodos do ORDVir Modificação process() e processCopy() – usados para conversão de formato, compressão e funções de manipulação, como corte da imagem e scaling Movimentação copy() e processCopy() – copiam imagens em outro objeto ORDVir Métodos do ORDVir Movimentação (cont.) export(), import() e importFrom() – usados para mover imagens entre bancos de dados setSource() – ajusta ou altera informações sobre imagens armazenadas externamente Exclusão deleteContent() – remove os dados do atributo BLOB Fundamentos de Content-Based Retrieval Solução para recuperação em grandes bancos de dados de imagens Podem ser usados dados inseridos manualmente, mas com a adição e modificação de imagens em um grande banco, a entrada manual de atributos é ruim Extração automática de características da imagem para procura por comparação Funcionamento do ContentBased Retrieval Um sistema de Content-Based Retrieval processa as informações contidas em uma imagem e cria uma abstração Operações de consulta operam nessa abstração, ao invés de operar na imagem No VIR, essa abstração é a assinatura, sendo armazenada em um vetor Funcionamento do ContentBased Retrieval A assinatura contém informações a respeito dos seguintes atributos visuais: cor global, cor local, textura e estrutura As imagens do banco são recuperadas através de uma imagem de comparação O score é a distância relativa entre as imagens Quanto menor o score, mais semelhantes as imagens Cor Global e Cor Local Cor global refere-se à distribuição de cores em toda a imagem, enquanto cor local considera a distribuição de cores e a localização Comparativo: Cor Global e Cor Local Imagens semelhantes pela cor global (score = 0) Imagens semelhantes pela cor local (score = 0,02461) Textura e Estrutura Imagens semelhantes pela textura (score = 4,1) Imagens semelhantes pela estrutura (score = 0,61939) Funcionamento da Busca Para a realização de consultas, atribui-se pesos para cada um dos atributos visuais citados Scores são calculados para cada atributo, então calcula-se a média ponderada Um limite (threshold) é atribuído Imagens com score global abaixo do limite são retornadas como semelhantes Funcionamento da Busca Exemplo: considerando-se os scores e pesos Scores – cor global = 15, cor local = 90, textura = 5 e estrutura = 50 Pesos - cor global = 0.1, cor local = 0.6, textura = 0.2 e estrutura = 0.1 Score Global: (0,1 x 15 + 0,6 x 90 + 0,2 x 5 + 0,1 x 50) = 61,5 Invertendo-se os pesos de cor global e local: (0,6 x 15 + 0,1 x 90 + 0,2 x 5 + 0,1 x 50) = 24 Exemplos de Código usando Content-Based Retrieval Criação de uma tabela CREATE TABLE stockphotos (photo_id NUMBER, photographer VARCHAR2(64), annotation VARCHAR2(255), photo ORDSYS.ORDVir); Carregando Imagens na Tabela DECLARE image ORDSYS.ORDVIR; IdNum NUMBER; ctx RAW(4000) :=NULL; BEGIN IdNum := 1; INSERT INTO stockphotos VALUES (IdNum, ’Janice Gray’, ’Beach scene, balls on water’, ORDSYS.ORDVIR.init(’FILE’,’ORDVIRDIR’,’virdemo1.dat’)); SELECT photo INTO image FROM stockphotos WHERE photo_id = IdNum FOR UPDATE; image.import(ctx); image.Analyze; UPDATE stockphotos SET photo = image WHERE photo_id = IdNum; COMMIT; Recuperação de uma Imagem DECLARE image ORDSYS.ORDVIR; myid INTEGER :=1; BEGIN SELECT photo INTO image FROM stockphotos WHERE photo_id = myid; END; Recuperação de Imagens Usando Imagem de Comparação DECLARE threshold NUMBER; compare_sig RAW(2000); compare_img ORDSYS.ORDVir; photo_id NUMBER; photographer VARCHAR2(64); annotation VARCHAR2(255); photo ORDSYS.ORDVIR; CURSOR getphotos IS SELECT photo_id, photographer, annotation, photo FROM stockphotos T WHERE ORDSYS.VIRSimilar(T.photo.Signature, compare_sig, ’globalcolor="0.2" localcolor="0.3" texture="0.1" Recuperação de Imagens Usando Imagem de Comparação BEGIN SELECT s.photo INTO compare_img FROM stockphotos s WHERE photo_id = 1; compare_img.Analyze; compare_sig:= compare_img.signature; threshold := 25; OPEN getphotos; LOOP FETCH getphotos INTO photo_id, photographer, annotation, photo; EXIT WHEN getphotos%NOTFOUND; -- Nesse ponto exibe-se ou armazena-se os resultados END LOOP; Criação de um Índice CREATE INDEX imgindex ON stockphotos(photo.signature) INDEXTYPE IS ordsys.ordviridx PARAMETERS(’ORDVIR_DATA_TABLESPACE = tbs_1,ORDVIR_INDEX_TABLESPACE = tbs_2’);