Vous êtes sur la page 1sur 6

Bases de donnes Multimdia Oracle Intermedia

Plan
Le package ORDSYS
ORDSource, ORDImage, ORDImageSignature

Bases de donnes Multimdia Oracle Intermedia


Oracle fournit des types spcifiques (Objetrelationnels) et des mthodes pour stocker et grer des documents multimdia.
ORDSource qui contient des informations de base communes tous les types de mdia et les donnes mdia, elles-mmes (le mdia) ORDImage pour la gestion des images
ORDImageSignature pour l'indexation et la comparaison d'images

ORDVideo,ORDAudio

Le type ORDSource
Mthodes

Les types ORDImage et ORDImageSignature


Dfinitions et mthodes
Bases de donnes Multimdia 1

ORDAudio pour la gestion des mdias audio, ORDVideo pour les vidos, ORDoc pour le stockage et la gestion de mdias htrognes y compris image, audio et vido.
Bases de donnes Multimdia

Bases de donnes Multimdia Oracle Intermedia


La classe ORDSource
Contient les informations de stockage des fichiers des classes ORDImage
Et des classes ORDVideo et ORDAudio.

Bases de donnes Multimdia Oracle Intermedia


Le type ORDSource est dfini par :
localData BLOB, srcType VARCHAR2(4000),
Contient les donnes stockes localement comme un BLOB (4Go). Identifie le type de source de donnes (FILE HTTP ) (FILE, HTTP, ) Emplacement des donnes (selon le type de la source)
FILE -> directory, HTTP -> URL ou user-defined

srcLocation VARCHAR2(4000), srcName VARCHAR2(4000), updateTime DATE, local NUMBER,


Dernire date de modification (1= BLOB, 0=externe) Nom du fichier

Est utilise par les autres classes de ORDSYS Supporte les accs aux donnes stockes de type BLOB, BFILE ou URL.

Bases de donnes Multimdia

Bases de donnes Multimdia

Bases de donnes Multimdia Oracle Intermedia


Les mthodes (communes pour ORDVideo, ORDAudio, ORDImage)
clearLocal( ), setLocal( ), isLocal( ), openSource( ) closeSource( ) getSource( ) ), ), ), setSource(), getSourceType( ), getSourceLocation( ), getSourceName( ), readFromSource( ), writeToSource(), trimSource( ), processSourceCommand( ), export( ), getBFile( ), getContent( ), deleteContent( ), getMimeType( ), setMimeType( ), getUpdateTime( ), setUpdateTime( ),
Bases de donnes Multimdia 5

Bases de donnes Multimdia Oracle Intermedia


Exemple :
DECLARE obj ORDSYS.ORDDoc; BEGIN
SELECT p.product INTO obj FROM media p WHERE p.product_id=1;

-- set source t a fil t to file obj.setSource('file','FILE_DIR','speaker.wav'); -- get source information DBMS_OUTPUT.PUT_LINE('Source type is ' || obj.getSourceType); DBMS_OUTPUT.PUT_LINE('Source location is ' || obj.getSourceLocation); DBMS_OUTPUT.PUT_LINE('Source name is ' || obj.getSourceName); COMMIT; END; /
Bases de donnes Multimdia 6

Bases de donnes Multimdia Oracle Intermedia


Exemple : Lecture dans un buffer du contenu d'un mdia
DECLARE obj ORDSYS.ORDImage; buffer RAW(4000); i INTEGER; ctx RAW(64) :=NULL; BEGIN i := 20; SELECT p.product_photo into obj from media p WHERE p.product_id = 1; obj.readFromSource(ctx,1,i,buffer); DBMS_OUTPUT.PUT_LINE('Length is ' || TO_CHAR(obj.getContentLength(ctx))); COMMIT; EXCEPTION ... END; /
Bases de donnes Multimdia 7

Bases de donnes Multimdia Oracle Intermedia


Exemple : Export d'un objet interne (ORDImage dans un Fichier externe)
CREATE OR REPLACE DIRECTORY FILE_DIR as '/mydir/work'; GRANT READ,WRITE ON DIRECTORY FILE_DIR TO 'RON'; BEGIN CONNECT RON/RON / DECLARE obj ORDSYS.ORDImage; ctx RAW(64) :=NULL; BEGIN SELECT product_photo INTO obj FROM pm.online_media WHERE product_id = 3515; obj.export(ctx,'file','FILE_DIR','testimg.jpg'); COMMIT; EXCEPTION ... END; /
Bases de donnes Multimdia 8

Bases de donnes Multimdia Oracle - ORDImage


La gestion des images est ralise l'aide du type ORDImage.
CREATE OR REPLACE TYPE ORDImage AS OBJECT ( source ORDSource, height INTEGER, width INTEGER, contentLength INTEGER, fileFormat VARCHAR2(4000), contentFormat VARCHAR2(4000), compressionFormat VARCHAR2(4000), mimeType VARCHAR2(4000), -- description des mthodes ... );
Bases de donnes Multimdia 9

Bases de donnes Multimdia Oracle - ORDImage


Mthodes du type ORDImage Pour dfinir les proprits d'une image (automatiquement)
setProperties( ), (contrle) checkProperties( )

Pour connatre les valeurs des attributs


getCompressionFormat( ), getContentFormat( getContentLength( ), getDicomMetadata( ), getFileFormat( ), getHeight( ), getMetadata( ), getWidth( )

Pour transfrer une image vers ou depuis un fichier


import( ), importFrom( )

Pour effectuer certains traitements sur l'image


process( ), processCopy( ), (ou la copier) copy( )
Bases de donnes Multimdia 10

Bases de donnes Multimdia Oracle - ORDImage


Exemples : Affichage du format de compression de l'image DECLARE image ORDSYS.ORDImage;
compression_format VARCHAR2(4000);

Bases de donnes Multimdia Oracle - ORDImage


Calcul des caractristiques d'une image
DECLARE image ORDSYS.ORDImage; BEGIN SELECT p.product_photo INTO image FROM media p WHERE p.product_id = 1 FOR UPDATE; image.setProperties(); i tP ti () DBMS_OUTPUT.PUT_LINE('width = ' || image.getWidth()); DBMS_OUTPUT.PUT_LINE('height = ' || image.getHeight()); DBMS_OUTPUT.PUT_LINE('size = ' || image.getContentLength()); DBMS_OUTPUT.PUT_LINE('file type = ' || image.getFileFormat()); DBMS_OUTPUT.PUT_LINE('type = ' || image.getContentFormat()); DBMS_OUTPUT.PUT_LINE('compression = ' || image.getCompressionFormat()); DBMS_OUTPUT.PUT_LINE('image mime type = ' || image.getMimeType()); UPDATE media p SET p.product_photo = image WHERE p.product_id=1; COMMIT; END; /
11 Bases de donnes Multimdia 12

BEGIN SELECT p.product_photo INTO image FROM media p WHERE p.product_id =1; compression_format := image.getCompressionFormat(); DBMS_OUTPUT.PUT_LINE('Compression format is ' || compression_format); COMMIT; END; /
Bases de donnes Multimdia

Bases de donnes Multimdia Oracle - ORDImage


Exemple : Transfert d'une image externe (fichier) dans l'image interne (BLOB du ORDImage)
DECLARE obj ORDSYS.ORDImage;
ctx RAW(64) :=NULL;

Bases de donnes Multimdia Oracle - ORDImage


Constructeurs du type ORDImage
Pour un type interne BLOB (init())
BEGIN INSERT INTO media ( di (product_id, d t id product_photo) VALUES (1, ORDSYS.ORDImage.init()); COMMIT; END; /
Bases de donnes Multimdia 14

BEGIN SELECT p.product_photo INTO obj FROM media p WHERE p.product_id = 1 FOR UPDATE; obj.importFrom(ctx,'file','FILE_DIR','speaker.jpg'); UPDATE media p SET p.product_photo = obj WHERE p.product_id = 1; COMMIT; END; /
Bases de donnes Multimdia 13

Bases de donnes Multimdia Oracle - ORDImage


Constructeurs du type ORDImage
Pour un type interne BFile (init( avec paramtres)) BEGIN INSERT INTO media (product id, (product_id, product_photo) VALUES (1,ORDSYS.ORDImage.init('FILE', 'FILE_DIR','speaker.jpg')); COMMIT; END; /
Bases de donnes Multimdia 15

Bases de donnes Multimdia Oracle - ORDImageSignature


Une image comporte des proprits associes limage elle-mme et des images peuvent tre compares en comparant ces proprits. Les images sont compares sur leurs attributs dfinis dans la signature de l'image.
La signature comporte des informations sur le contenu physique de limage

Bases de donnes Multimdia

16

Bases de donnes Multimdia Oracle - ORDImageSignature


Oracle Intermedia supporte 42 formats d'images
Plus connus jpg, bmp, Plus spcifiques dfx (Autocad),

Bases de donnes Multimdia Oracle - ORDImageSignature


Chaque image insre dans la base est analyse,
Segmentation de l'image en plusieurs zones, bases sur la couleur. Chaque zone est dfinie par une couleur, une texture et une forme.

La L comparaison des images est base sur les i d i tb l attributs de leurs signatures. Cette signature est gnre partir des proprits de l'image, qui sont transcrites en attributs visuels. La requte porte sur les attributs de la signature.
Bases de donnes Multimdia 17

pour dfinir les valeurs des attributs visuels.

L'emplacement de ces attributs visuels est reprsent par un attribut "location"


La combinaison de cet attribut avec un des trois attributs visuels (couleur, texture, forme) forme un critre de recherche. aux diffrentes zones de l'image et au fond de l'image

La signature contient toutes les informations relatives


Bases de donnes Multimdia 18

Bases de donnes Multimdia Oracle - ORDImageSignature


La comparaison de 2 images se base donc sur la comparaison de leurs signatures.
signature ORDSYS.ORDImageSignature

Bases de donnes Multimdia Oracle - ORDImageSignature


La couleur
La proprit "color" reprsente la distribution des couleurs dans l'image. g
% des couleurs

Elles peuvent gnres par la mthode


generateSignature

La comparaison est alors base sur les couleurs locales et globales, la structure et le texture de l'image.
La mthode evaluateScore permet de comparer deux signatures et d'valuer leur ressemblance. La mthode isSimilar permet en plus de fixer un seuil de ressemblance et retourne 1 si le seuil est atteint et 0 sinon
Bases de donnes Multimdia 19

La couleur et l'attribut "location" reprsentent la rpartition des couleurs et o elles apparaissent.


Rpartition des couleurs dans l'image

Bases de donnes Multimdia

20

Bases de donnes Multimdia Oracle - ORDImageSignature


La forme La structure de l'image peut tre utilise pour rechercher rpondre des requtes sur des formes simples :
Lignes d'horizon dans un paysage Structures rectangulaires dans les btiments Structures organiques comme les arbres
Bases de donnes Multimdia 21

Bases de donnes Multimdia Oracle - ORDImageSignature


La texture
Elle est utilise pour les requtes portant sur des i d images ayant la mme motif tl tif
Marbre, sable, pierre

Ces images sont difficiles classifier par manque de vocabulaire sur les textures
Difficult pour exprimer les requtes

Bases de donnes Multimdia

22

Bases de donnes Multimdia Oracle - ORDImageSignature


L'attribut "localisation"
Il ne reprsente pas un attribut visuel, mais il est utilis en combinaison avec l'un des 3 attributs visuels
Couleur Forme Texture

Bases de donnes Multimdia Oracle - ORDImageSignature


Le poids
Il permet de pondrer l'importance accorde un attribut. Le poids doit tre compris entre 0 et 1.
Si le poids est 0, l'attribut est ignor; Si le poids est 1, une similarit complte est attendue sur cet attribut.

La valeur du poids d'un attribut doit tre initialise une valeur >0.
Bases de donnes Multimdia 23 Bases de donnes Multimdia 24

Bases de donnes Multimdia Oracle - ORDImageSignature


Le score Il reprsente la mesure de similarit entre deux images calcule partir des valeurs des attributs visuels. La valeur du score est comprise entre 0 et 100. Plus la similarit est grande, plus le score est petit
Score=0, images similaires Score=100, aucune similarit

Bases de donnes Multimdia Oracle - ORDImageSignature


Le degr de similarit entre 2 images est donc calcul partir
Des scores pour chacun des attributs visuels Des poids

Similarit =
poids_couleur*score_couleur + poids_forme*score_forme + poids_texture*score_texture (somme des poids =1, 0<=score<=100
25 Bases de donnes Multimdia 26

Bases de donnes Multimdia

Bases de donnes Multimdia Oracle - ORDImageSignature


Le seuil Il permet de fixer la valeur qui sert de filtre pour slectionner les images images.
Si le score est <= seuil, l'image est slectionne, Si le score est > seuil, l'image est considre comme diffrente et non retenue.

Bases de donnes Multimdia Oracle - ORDImageSignature


CREATE OR REPLACE TYPE ORDImageSignature AS OBJECT ( signature BLOB -- les informations de localisation, texture, forme et couleur -- sont stockes dans un BLOB STATIC FUNCTION i it RETURN ORDImageSignature, init ORDI Si t STATIC FUNCTION evaluateScore(sig1 IN ORDImageSignature, sig2 IN ORDImageSignature, weights IN VARCHAR2) RETURN FLOAT, STATIC FUNCTION isSimilar(sig1 IN ORDImageSignature, sig2 IN ORDImageSignature, weights IN VARCHAR2, threshold IN FLOAT) RETURN INTEGER, MEMBER PROCEDURE generateSignature(image IN ORDImage) );

Bases de donnes Multimdia

27

Bases de donnes Multimdia

28

Bases de donnes Multimdia Oracle - ORDImageSignature


Constructeur : init( ) RETURN ORDImageSignature; Cette mthode est une mthode static qui initialise le BLOB vide (empty_blob())
BEGIN INSERT INTO media (product_id, product_photo, product_photo_signature) VALUES (1, ORDSYS.ORDImage.init('FILE', 'FILE_DIR','speaker.jpg'), ORDSYS.ORDImageSignature.init()); COMMIT; END; /
Bases de donnes Multimdia 29

Bases de donnes Multimdia Oracle - ORDImageSignature


Mthode de comparaison de deux images
Avec retour de la valeur du score evaluateScore(sig1 IN ORDImageSignature, sig2 IN ORDImageSignature, weights IN VARCHAR2) RETURN FLOAT; Exemple de comparaison de deux images : -- dclarations DECLARE t_image ORDSYS.ORDImage; c_image ORDSYS.ORDImage; image_sig ORDSYS.ORDImageSignature; compare_sig ORDSYS.ORDImageSignature; score FLOAT;
Bases de donnes Multimdia 30

Bases de donnes Multimdia Oracle - ORDImageSignature


-- calcul de la signature de la 1re image SELECT p.product_photo, p.product_photo_signature INTO t_image, image_sig t image image sig FROM media p WHERE p.product_id = 1 FOR UPDATE; image_sig.generateSignature(t_image); UPDATE media p SET p.product_photo_signature = image_sig WHERE product_id =1;
Bases de donnes Multimdia 31

Bases de donnes Multimdia Oracle - ORDImageSignature


-- calcul de la signature de la 2me image SELECT p.product_photo, p.product_photo_signature INTO c_image, compare_sig compare sig FROM media p WHERE p.product_id = 2 FOR UPDATE; compare_sig.generateSignature(c_image); UPDATE media p SET p.product_photo_signature = compare_sig WHERE product_id = 2;
Bases de donnes Multimdia 32

Bases de donnes Multimdia Oracle - ORDImageSignature


-- Comparaison des signatures
SELECT p.product_photo_signature INTO image_sig FROM media p WHERE p.product_id = 1; SELECT p.product photo signature INTO compare sig p.product_photo_signature compare_sig FROM media p WHERE p.product_id = 2; score:=ORDSYS.ORDImageSignature.evaluateScore(image_s ig,compare_sig,'color="1.0",texture=0,shape=0,locatio n=0'); DBMS_OUTPUT.PUT_LINE('Score is ' || score); END; /
Bases de donnes Multimdia 33

Bases de donnes Multimdia Oracle - ORDImageSignature


Mthode de comparaison isSimilar (retourne 0 ou 1) isSimilar(sig1 IN ORDImageSignature, sig2 IN ORDImageSignature, weights IN VARCHAR2, threshold IN FLOAT) RETURN INTEGER;
value := ORDSYS.ORDImageSignature.isSimilar (image_sig1,image_sig2,'color="1.0",texture=0,shap e=0,location=0',10);

Bases de donnes Multimdia

34

Bases de donnes Multimdia Oracle - InterMedia


Conclusion
Aperu du package ORDSYS
Avec les types ORDSource, ORDImage, ORDImageSignature

Et les mthodes des types Utilisation dans des programmes PL/SQL

Bases de donnes Multimdia

35