BD Multimídia
Valéria Times
04/27/23 © CIn/UFPE 2
Tratamento de Dados Multimídia
04/27/23 © CIn/UFPE 3
Oracle InterMedia
Áudio, Imagem, Vídeo e Documento Gerenciar imagens, áudios e vídeos de uma maneira integrada com outras informações através de tipos de objetos Estende confiabilidade, disponibilidade e gerenciamento de dados do Oracle para conteúdos multimídia na Internet/Web, comércio eletrônico e aplicações ricas em mídia
04/27/23 © CIn/UFPE 4
Oracle InterMedia
Consiste de tipos de objetos junto com métodos relacionados para gerenciar e processar dados multimídia
ORDAudio, ORDVideo, ORDImage, ORDDoc Armazenam informações da origem dos dados em um tipo objeto-relacional conhecido como ORDSource
04/27/23 © CIn/UFPE 5
Oracle InterMediaTipo ORDSource
Provê o acesso a uma variedade de fontes de dados multímidiaTodos os tipos do Oracle Intermedia possuem um atributo deste tipoPrincipais atributos:
localData srcNamesrcTypesrcLocation
updateTimelocal
04/27/23 © CIn/UFPE 6
Oracle InterMediaComo Oracle interMedia verifica a similaridade
Dados os pesos para cada atributo visual, o sistema calcula uma medida de similaridade para cada atributo visual, chamada de pontuação ou distânciaPesos informados correspondem a valores entre [ 0 ; 1 ] e pelo menos um deles, deve ser maior que zeroPontuação calculada pode variar de 0.0 (nenhuma diferença) até 100.0 (máxima diferença possível)
04/27/23 © CIn/UFPE 7
Oracle InterMediaPontuação de três imagens para dois atributos visuais: cor e formato
Imagem 1
Imagem 2
Imagem 3
Cor
Formato
Imagem 1: dado de referência (consulta)Imagens 2 e 3: mantidas no BD
04/27/23 © CIn/UFPE 8
Oracle InterMediaComo interMedia verifica a similaridade (Cont.)
Grau de similaridade consiste na soma dos produtos entre a distância de cada atributo visual e seu respectivo pesoExemplo: Atributo Visual Distância PesoCor 15 0.7Textura 5 0.2Formato 50 0.1
Grau = 0.7 * 15 + 0.2 * 5 + 0.1 * 50 = 16.5
04/27/23 © CIn/UFPE 9
Oracle InterMediaComo interMedia verifica a similaridade (Cont.)
Exemplo: Recupere todas as imagens semelhantes a uma dada imagemCURSOR obtenhafotos IS SELECT produto_id , produto_foto FROM tabela WHERE ORDSYS.IMGSimilar ( foto_ass,
comp_ass, ´color = “0.4”, texture = “0.10”, shape = “0.3”, location = “0.2” ´ , 20 )
= 1 ;Os pesos e o limite são dependentes da aplicação e determinados através de tentativas e testes.
04/27/23 © CIn/UFPE 10
Oracle InterMediaMétodos do Tipo ORDImageSignature
Construtor: init()Inicializa instâncias deste tipo
BEGININSERT INTO tabela (produto_id, produto_foto, foto_ass)VALUES (1910, ORDSYS.ORDImage.init('FILE','FILE_DIR‘,'speaker.jpg'),ORDSYS.ORDImageSignature.init()) ;COMMIT;END; /
04/27/23 © CIn/UFPE 11
Oracle InterMediaMétodos do Tipo ORDImageSignature (cont.)
generateSignature()Gera uma assinatura para uma dada imagem
DECLARE t_image ORDSYS.ORDImage ; image_sig ORDSYS.ORDImageSignature ;BEGINSELECT p.produto_foto, p.foto_ass INTO t_image, image_sigFROM tabela p WHERE p.produto_id = 2402 FOR UPDATE;
-- Gera a assinaturaimage_sig.generateSignature (t_image) ;
UPDATE tabela p SET p.foto_ass = image_sigWHERE p.produto_id = 2402; END; /
04/27/23 © CIn/UFPE 12
Oracle InterMediaMétodos do Tipo ORDImageSignature (cont.)
isSimilar()Verifica se duas assinaturas são similares
DECLAREimage_sig1 ORDSYS.ORDImageSignature;image_sig2 ORDSYS.ORDImageSignature;valor INTEGER;BEGIN SELECT foto_ass INTO image_sig1 FROM tabela WHERE produto_id = 1910;
SELECT foto_ass INTO image_sig2 FROM tabela WHERE produto_id = 1940;
04/27/23 © CIn/UFPE 13
Oracle InterMediaisSimilar()
-- Compara as imagesvalor := ORDSYS.ORDImageSignature.isSimilar(image_sig1,image_sig2,'color="1.0",texture=0,shape=0,location=0',10);
IF valor = 1 THEN DBMS_OUTPUT.PUT_LINE(‘As imagens são similares');ELSIF valor = 0 THEN DBMS_OUTPUT.PUT_LINE(‘As imagens não são similares');END IF;
Possui operadores:IMGSimilar()IMGScore()
04/27/23 © CIn/UFPE 14
Oracle InterMediaMétodos do Tipo ORDImageSignature (cont.)
evaluateScore()Computa a distância entre duas assinaturas com base na influência dos pesos passados como parâmetrosRetorna um valor entre 0.0 (imagens idênticas) e 100.0 (imagens diferentes)
04/27/23 © CIn/UFPE 15
Oracle InterMediaDECLARE t_image ORDSYS.ORDImage; c_image ORDSYS.ORDImage; image_sig ORDSYS.ORDImageSignature; compare_sig ORDSYS.ORDImageSignature; pont FLOAT;BEGINSELECT p.produto_foto, p.foto_ass INTO t_image, image_sigFROM tabela pWHERE p.produto_id = 1910 FOR UPDATE;
-- Gera a assinaturaimage_sig.generateSignature(t_image);
UPDATE tabela p SET p.foto_ass = image_sigWHERE p.produto_id =1910;
04/27/23 © CIn/UFPE 16
Oracle InterMediaSELECT p.produto_foto, p.foto_ass INTO c_image, compare_sig FROM tabela pWHERE p.produto_id = 1940 FOR UPDATE;
-- Gera a assinaturacompare_sig.generateSignature(c_image);
UPDATE tabela p SET p. foto_ass = compare_sigWHERE produto_id = 1940;
SELECT p.produto_foto, p.foto_ass INTO t_image, image_sigFROM tabela pWHERE p.produto_id = 1910;
SELECT p.produto_foto, p.foto_ass INTO c_image, compare_sig FROM tabela p WHERE p.produto_id = 1940;
04/27/23 © CIn/UFPE 17
Oracle InterMedia-- Comparação entre duas imagens baseada na cor
score:=ORDSYS.ORDImageSignature.evaluateScore(image_sig,compare_sig,'color="1.0",texture=0,shape=0,location=0');DBMS_OUTPUT.PUT_LINE(‘Distancia = ' || score) ;END ;/
04/27/23 © CIn/UFPE 18
Oracle InterMediaUso de Índices no Oracle interMedia
Tipo ORDImageIndexPermite definição, construção e manuteção de um índice para imagensUma vez criado, ele é automaticamente atualizado quando imagens são inseridas, atualizadas ou removidas do BDO nome do índice pode ter até 24 caracteresÍndices devem ser criados sobre os campos de assinatura e usados em grandes BD
04/27/23 © CIn/UFPE 19
Oracle InterMediaDECLARE t_image ORDSYS.ORDImage ; image_ass ORDSYS.ORDImageSignature ;BEGIN
SELECT p.produto_foto , p.foto_ass INTO t_image , image_ass FROM tabela pWHERE p.produto_id = 1910 FOR
UPDATE ;-- Gera uma assinatura:image_ass.generateSignature (t_image) ;UPDATE tabela p SET p. foto_ass =
image_ass ;WHERE p.produto_id = 1910 ;COMMIT ; END ; /
04/27/23 © CIn/UFPE 20
Oracle InterMedia
CREATE INDEX idx1 ON tabela (foto_ass) INDEXTYPE IS ORDSYS.ORDIMAGEINDEX PARAMETERS(´ORDImage_Filter_Tablespace =
<nome> , ORDImage_Index_Tablespace = <nome>
´ ) ;ANALYZE INDEX idx1 COMPUTE
STATISTICS ;
04/27/23 © CIn/UFPE 21
Oracle InterMedia
id_midia locado duracao preco capa nome_capa
Type t_midia
titulo diretor genero trailer nome_trailer
sinopse nome_sinops
Type t_dvd under t_midia
Exemplo
album artista estilo faixa nome_faixa
letra nome_letra
Type t_cd under t_midia
04/27/23 © CIn/UFPE 22
Oracle InterMedia
Criação dos Tipos
CREATE OR REPLACE TYPE t_midia AS OBJECT ( id_midia integer , locado varchar2 (5 ) , duracao integer , preco number (10 , 2 ) , nome_capa varchar2 (100 ) , capa ORDSYS.ORDImage , capa_sig ORDSYS.ORDImageSignature ) not final ;
04/27/23 © CIn/UFPE 23
Oracle InterMedia
Criação dos Tipos (Cont.)
CREATE OR REPLACE TYPE t_dvd UNDER t_midia ( titulo varchar2 ( 255 ) , diretor varchar2 ( 255 ) , genero varchar2 ( 255 ) , nome_trailer varchar2 (100 ) , trailer ORDSYS.ORDVideo , nome_sinopse varchar2 (100 ) , sinopse ORDSYS.ORDDoc ) ;
04/27/23 © CIn/UFPE 24
Oracle InterMedia
Criação dos Tipos (Cont.)
CREATE OR REPLACE TYPE t_cd UNDER t_midia ( album varchar2 ( 255 ) , artista varchar2 ( 255 ) , estilo varchar2 ( 255 ) , nome_faixa varchar2 (100 ) , faixa ORDSYS.ORDAudio , nome_letra varchar2 (100 ) , letra ORDSYS.ORDDoc ) ;
04/27/23 © CIn/UFPE 25
Oracle InterMedia
Criação de Tabelas
CREATE TABLE dvd OF t_dvd ( id_midia primary key ) ;
CREATE TABLE cd OF t_cd ( id_midia primary key ) ;
04/27/23 © CIn/UFPE 26
Oracle InterMedia
Inserção de um CD no BD
CREATE OR REPLACE PROCEDURE insereCD ( duracao integer , preco number , nome_capa varchar2 , album varchar2 , artista varchar2 , estilo varchar2 , nome_faixa varchar2 , nome_letra varchar2 ) IS id_cd INT ; CapaObj ORDSYS.ORDImage ; CapaObj_sig ORDSYS.ORDImageSignature ; ctx_capa RAW (4000) : = NULL ;
04/27/23 © CIn/UFPE 27
Oracle InterMedia
FaixaObj ORDSYS.ORDAudio ; ctx_faixa RAW (4000) : = NULL ;
LetraObj ORDSYS.ORDDoc ; ctx_letra RAW (4000) : = NULL ;
BEGIN -- insere a tuplaINSERT INTO cd VALUES (t_cd (seq_id_midia.nextVal, ´false´ , duracao, preco, nome_capa, ORDSYS.ORDImage.init (´FILE ´ , `IMAGENS´ , nome_capa) , ORDSYS.ORDImageSignature.init() , album , artista , estilo , nome_faixa , ORDSYS.ORDAudio.init() , nome_letra , ORDSYS.ORDDoc.init() ) ) ;
04/27/23 © CIn/UFPE 28
Oracle InterMedia
-- pega o identificador da tupla inserida SELECT max (id_midia) INTO id_cd from cd ;
-- seleciona a tupla inseridaSELECT c.capa , c.capa_sig INTO CapaObj , CapaObj_sigFROM cd c WHERE c.id_midia = id_cd FOR UPDATE ;
-- seta as propriedades da imagem inserida CapaObj.setProperties ; CapaObj.import ( ctx_capa ) ; CapaObj_sig.generateSignature (CapaObj) ; UPDATE cd SET capa = CapaObj , capa_sig = CapaObj_sig WHERE id_midia = id_cd ; COMMIT ;
04/27/23 © CIn/UFPE 29
Oracle InterMedia
-- pega o som inserido para colocar seu conteudo SELECT c.faixa INTO FaixaObj FROM cd c WHERE c.id_midia = id_cd FOR UPDATE ;
-- seta as propriedades do objeto do tipo audio FaixaObj.setSource (´FILE ´, `AUDIOS´, nome_faixa) ; FaixaObj.import ( ctx_faixa ) ; FaixaObj_setProperties (ctx_faixa) ;
-- atualiza a tupla UPDATE cd c SET c.faixa = FaixaObj WHERE c.id_midia = id_cd ;
COMMIT ;
04/27/23 © CIn/UFPE 30
Oracle InterMedia
-- coloca o documento na tupla SELECT c. letra INTO LetraObj FROM cd c WHERE c.id_midia = id_cd FOR UPDATE ;
LetraObj.setSource ( ´FILE ´, `DOCUMENTOS´, nome_letra) ; LetraObj.setMimeType ( ´application / pdf´) ; LetraObj.import ( ctx_letra , FALSE ) ; UPDATE cd c SET c. letra = LetraObj WHERE c.id_midia = id_cd ;
COMMIT ; END ;
04/27/23 © CIn/UFPE 31
Roteiro para Projeto MultimídiaCriar Minimundo, modelo conceitual e esquema relacionalImplementar as tabelas no SGBD, com atributos ORDAudio, ORDVideo, ORDImage e ORDDocImplementar procedimentos para inserção e recuperação de dados multimídia do BDImplementar métodos para realização de consultas baseadas em contextoTestar e colocar o sistema em funcionamentoData da Entrega: 26 / 11 / 09
04/27/23 © CIn/UFPE 32
Roteiro para Nota Máxima
Descrição de MinimundoModelagem ConceitualEsquema RelacionalFazer uso dos tipos do Oracle Intermedia (ORDAudio, ORDVideo, ORDDoc e ORDImage)Inserir e recuperar dados multimidia do BD, incluindo consultas de contexto.Defesa do projeto com qualidade e segurança
corretos
Top Related