1. Bases de données Multimédia Bases de données Multimédia
Oracle Intermedia Oracle Intermedia
Oracle fournit des types spécifiques (Objet-
Plan relationnels) et des méthodes pour stocker et
Le package ORDSYS gérer des documents multimédia.
ORDSource, ORDImage, ORDImageSignature ORDSource qui contient des informations de base
communes à tous les types de média et les données
média,
ORDVideo,ORDAudio elles-mêmes (le média)
Le type ORDSource ORDImage pour la gestion des images
Méthodes ORDImageSignature pour l'indexation et la comparaison
d'images
Les types ORDImage et ORDImageSignature ORDAudio pour la gestion des médias audio,
Définitions et méthodes ORDVideo pour les vidéos,
ORDoc pour le stockage et la gestion de médias
hétérogènes y compris image, audio et vidéo.
Bases de données Multimédia 1 Bases de données Multimédia 2
Bases de données Multimédia Bases de données Multimédia
Oracle Intermedia Oracle Intermedia
La classe ORDSource Le type ORDSource est défini par :
localData BLOB,
Contient les informations de stockage des Contient les données stockées localement comme un BLOB (4Go).
fichiers des classes ORDImage srcType VARCHAR2(4000),
Identifie le type de source de données (FILE HTTP …)
(FILE, HTTP, )
Et des classes ORDVideo et ORDAudio. srcLocation VARCHAR2(4000),
Emplacement des données (selon le type de la source)
Est utilisée par les autres classes de ORDSYS FILE -> directory, HTTP -> URL ou user-defined
srcName VARCHAR2(4000),
Supporte les accès aux données stockées de Nom du fichier
type BLOB, BFILE ou URL. updateTime DATE,
Dernière date de modification
local NUMBER,
(1= BLOB, 0=externe)
Bases de données Multimédia 3 Bases de données Multimédia 4
Bases de données Multimédia Bases de données Multimédia
Oracle Intermedia Oracle Intermedia
Les méthodes (communes pour ORDVideo, Exemple :
ORDAudio, ORDImage) DECLARE obj ORDSYS.ORDDoc;
BEGIN
clearLocal( ), setLocal( ), isLocal( ), SELECT p.product INTO obj FROM media p WHERE p.product_id=1;
openSource( ) closeSource( ) getSource( )
), ), ), -- set source t a fil
t to file
setSource(), getSourceType( ), getSourceLocation( ), obj.setSource('file','FILE_DIR','speaker.wav');
getSourceName( ), readFromSource( ), writeToSource(), -- get source information
DBMS_OUTPUT.PUT_LINE('Source type is ' ||
trimSource( ), processSourceCommand( ), obj.getSourceType);
export( ), getBFile( ), DBMS_OUTPUT.PUT_LINE('Source location is ' ||
obj.getSourceLocation);
getContent( ), deleteContent( ),
DBMS_OUTPUT.PUT_LINE('Source name is ' ||
getMimeType( ), setMimeType( ), obj.getSourceName);
getUpdateTime( ), setUpdateTime( ), COMMIT; END; /
Bases de données Multimédia 5 Bases de données Multimédia 6
1
2. Bases de données Multimédia Bases de données Multimédia
Oracle Intermedia Oracle Intermedia
Exemple : Export d'un objet interne (ORDImage dans un Fichier
Exemple : Lecture dans un buffer du contenu d'un média externe)
DECLARE obj ORDSYS.ORDImage; CREATE OR REPLACE DIRECTORY FILE_DIR as '/mydir/work';
buffer RAW(4000); GRANT READ,WRITE ON DIRECTORY FILE_DIR TO 'RON';
i INTEGER; BEGIN
ctx RAW(64) :=NULL; CONNECT RON/RON
/
BEGIN i := 20; DECLARE obj ORDSYS.ORDImage;
SELECT p.product_photo into obj from media p WHERE ctx RAW(64) :=NULL;
p.product_id = 1;
BEGIN
obj.readFromSource(ctx,1,i,buffer);
SELECT product_photo INTO obj FROM pm.online_media
DBMS_OUTPUT.PUT_LINE('Length is ' || WHERE product_id = 3515;
TO_CHAR(obj.getContentLength(ctx))); obj.export(ctx,'file','FILE_DIR','testimg.jpg');
COMMIT; COMMIT;
EXCEPTION ... EXCEPTION ...
END; / END; /
Bases de données Multimédia 7 Bases de données Multimédia 8
Bases de données Multimédia Bases de données Multimédia
Oracle - ORDImage Oracle - ORDImage
La gestion des images est réalisée à l'aide du type
ORDImage. Méthodes du type ORDImage
Pour définir les propriétés d'une image (automatiquement)
CREATE OR REPLACE TYPE ORDImage AS OBJECT ( setProperties( ), (contrôle) checkProperties( )
source ORDSource,
Pour connaître les valeurs des attributs
height INTEGER, width INTEGER,
getCompressionFormat( ), getContentFormat(
contentLength INTEGER,
getContentLength( ), getDicomMetadata( ),
fileFormat VARCHAR2(4000),
getFileFormat( ), getHeight( ), getMetadata( ), getWidth( )
contentFormat VARCHAR2(4000),
compressionFormat VARCHAR2(4000), Pour transférer une image vers ou depuis un fichier
mimeType VARCHAR2(4000), import( ), importFrom( )
-- description des méthodes Pour effectuer certains traitements sur l'image
... process( ), processCopy( ), (ou la copier) copy( )
);
Bases de données Multimédia 9 Bases de données Multimédia 10
Bases de données Multimédia Bases de données Multimédia
Oracle - ORDImage Oracle - ORDImage
Exemples : Affichage du format de compression de l'image Calcul des caractéristiques d'une image
DECLARE image ORDSYS.ORDImage;
DECLARE image ORDSYS.ORDImage; BEGIN
compression_format VARCHAR2(4000); SELECT p.product_photo INTO image FROM media p WHERE p.product_id
BEGIN = 1 FOR UPDATE;
SELECT p.product_photo INTO image FROM media p image.setProperties();
i tP ti ()
DBMS_OUTPUT.PUT_LINE('width = ' || image.getWidth());
WHERE p.product_id =1; DBMS_OUTPUT.PUT_LINE('height = ' || image.getHeight());
compression_format := DBMS_OUTPUT.PUT_LINE('size = ' || image.getContentLength());
image.getCompressionFormat(); DBMS_OUTPUT.PUT_LINE('file type = ' || image.getFileFormat());
DBMS_OUTPUT.PUT_LINE('type = ' || image.getContentFormat());
DBMS_OUTPUT.PUT_LINE('Compression format is ' || DBMS_OUTPUT.PUT_LINE('compression = ' ||
compression_format); image.getCompressionFormat());
COMMIT; DBMS_OUTPUT.PUT_LINE('image mime type = ' ||
image.getMimeType());
END; UPDATE media p SET p.product_photo = image WHERE p.product_id=1;
/ COMMIT; END; /
Bases de données Multimédia 11 Bases de données Multimédia 12
2
3. Bases de données Multimédia Bases de données Multimédia
Oracle - ORDImage Oracle - ORDImage
Exemple : Transfert d'une image externe (fichier) dans Constructeurs du type ORDImage
l'image interne (BLOB du ORDImage)
DECLARE obj ORDSYS.ORDImage; Pour un type interne BLOB (init())
ctx RAW(64) :=NULL;
BEGIN BEGIN INSERT INTO media (
di (product_id,
d t id
SELECT p.product_photo INTO obj FROM media p WHERE product_photo)
p.product_id = 1 FOR UPDATE;
VALUES (1, ORDSYS.ORDImage.init());
obj.importFrom(ctx,'file','FILE_DIR','speaker.jpg');
UPDATE media p SET p.product_photo = obj WHERE COMMIT;
p.product_id = 1; END;
COMMIT;
END; /
/
Bases de données Multimédia 13 Bases de données Multimédia 14
Bases de données Multimédia Bases de données Multimédia
Oracle - ORDImage Oracle - ORDImageSignature
Constructeurs du type ORDImage Une image comporte des propriétés associées à
Pour un type interne BFile (init( avec paramètres))
l’image elle-même et des images peuvent être
BEGIN
comparées en comparant ces propriétés.
INSERT INTO media (product id,
(product_id,
product_photo)
Les images sont comparées sur leurs attributs
VALUES (1,ORDSYS.ORDImage.init('FILE',
'FILE_DIR','speaker.jpg')); définis dans la signature de l'image.
COMMIT; La signature comporte des informations sur le contenu
END; physique de l’image
/
Bases de données Multimédia 15 Bases de données Multimédia 16
Bases de données Multimédia Bases de données Multimédia
Oracle - ORDImageSignature Oracle - ORDImageSignature
Oracle Intermedia supporte 42 formats d'images Chaque image insérée dans la base est analysée,
Plus connus jpg, bmp, … Segmentation de l'image en plusieurs zones, basées sur la
couleur.
Plus spécifiques dfx (Autocad), … Chaque zone est définie par une couleur, une texture et une
forme.
La
L comparaison des images est basée sur les
i d i tb é l pour définir les valeurs des attributs visuels.
attributs de leurs signatures.
L'emplacement de ces attributs visuels est représenté par
Cette signature est générée à partir des un attribut "location"
propriétés de l'image, qui sont transcrites en La combinaison de cet attribut avec un des trois attributs visuels
attributs visuels. (couleur, texture, forme) forme un critère de recherche.
La signature contient toutes les informations relatives
La requête porte sur les attributs de la signature. aux différentes zones de l'image
et au fond de l'image
Bases de données Multimédia 17 Bases de données Multimédia 18
3
4. Bases de données Multimédia Bases de données Multimédia
Oracle - ORDImageSignature Oracle - ORDImageSignature
La comparaison de 2 images se base donc sur la
comparaison de leurs signatures.
La couleur
signature ORDSYS.ORDImageSignature La propriété "color" représente la distribution
Elles peuvent générées par la méthode des couleurs dans l'image.
g
generateSignature % des couleurs
La comparaison est alors basée sur les couleurs locales La couleur et l'attribut "location" représentent la
et globales, la structure et le texture de l'image. répartition des couleurs et où elles apparaissent.
La méthode evaluateScore permet de comparer deux signatures
et d'évaluer leur ressemblance.
Répartition des couleurs dans l'image
La méthode isSimilar permet en plus de fixer un seuil de
ressemblance et retourne 1 si le seuil est atteint et 0 sinon
Bases de données Multimédia 19 Bases de données Multimédia 20
Bases de données Multimédia Bases de données Multimédia
Oracle - ORDImageSignature Oracle - ORDImageSignature
La forme La texture
La structure de l'image peut être utilisée Elle est utilisée pour les requêtes portant sur
pour rechercher répondre à des requêtes des i
d images ayant la même motif
tl ê tif
sur des formes simples : Marbre, sable, pierre …
Lignes d'horizon dans un paysage Ces images sont difficiles à classifier par
Structures rectangulaires dans les bâtiments manque de vocabulaire sur les textures
Structures organiques comme les arbres Difficulté pour exprimer les requêtes
Bases de données Multimédia 21 Bases de données Multimédia 22
Bases de données Multimédia Bases de données Multimédia
Oracle - ORDImageSignature Oracle - ORDImageSignature
L'attribut "localisation" Le poids
Il ne représente pas un attribut visuel, mais il Il permet de pondérer l'importance accordée à
est utilisé en combinaison avec l'un des 3 un attribut.
attributs visuels Le poids doit être compris entre 0 et 1.
Couleur Si le poids est 0, l'attribut est ignoré;
Si le poids est 1, une similarité complète est
Forme
attendue sur cet attribut.
Texture
La valeur du poids d'un attribut doit être
initialisée à une valeur >0.
Bases de données Multimédia 23 Bases de données Multimédia 24
4
5. Bases de données Multimédia Bases de données Multimédia
Oracle - ORDImageSignature Oracle - ORDImageSignature
Le score Le degré de similarité entre 2 images est donc
Il représente la mesure de similarité entre deux calculé à partir
images calculée à partir des valeurs des
attributs visuels. Des scores pour chacun des attributs visuels
La valeur du score est comprise entre 0 et 100. Des poids
Plus la similarité est grande, plus le score est Similarité =
petit poids_couleur*score_couleur
Score=0, images similaires + poids_forme*score_forme
Score=100, aucune similarité
+ poids_texture*score_texture
(somme des poids =1, 0<=score<=100
Bases de données Multimédia 25 Bases de données Multimédia 26
Bases de données Multimédia Bases de données Multimédia
Oracle - ORDImageSignature Oracle - ORDImageSignature
CREATE OR REPLACE TYPE ORDImageSignature AS OBJECT
Le seuil ( signature BLOB
Il permet de fixer la valeur qui sert de -- les informations de localisation, texture, forme et couleur
-- sont stockées dans un BLOB
filtre pour sélectionner les images
images. STATIC FUNCTION i it RETURN ORDImageSignature,
init ORDI Si t
STATIC FUNCTION evaluateScore(sig1 IN ORDImageSignature, sig2 IN
Si le score est <= seuil, l'image est ORDImageSignature, weights IN VARCHAR2) RETURN FLOAT,
sélectionnée, STATIC FUNCTION isSimilar(sig1 IN ORDImageSignature, sig2 IN
ORDImageSignature, weights IN VARCHAR2, threshold IN FLOAT)
Si le score est > seuil, l'image est considérée RETURN INTEGER,
comme différente et non retenue. MEMBER PROCEDURE generateSignature(image IN ORDImage)
);
Bases de données Multimédia 27 Bases de données Multimédia 28
Bases de données Multimédia Bases de données Multimédia
Oracle - ORDImageSignature Oracle - ORDImageSignature
Constructeur : init( ) RETURN ORDImageSignature; Méthode de comparaison de deux images
Cette méthode est une méthode static qui initialise le Avec retour de la valeur du score
BLOB à vide (empty_blob()) evaluateScore(sig1 IN ORDImageSignature, sig2 IN
ORDImageSignature, weights IN VARCHAR2) RETURN FLOAT;
BEGIN
Exemple de comparaison de deux images :
INSERT INTO media (product_id, product_photo,
product_photo_signature) -- déclarations
VALUES (1, ORDSYS.ORDImage.init('FILE',
DECLARE
'FILE_DIR','speaker.jpg'), t_image ORDSYS.ORDImage;
ORDSYS.ORDImageSignature.init()); c_image ORDSYS.ORDImage;
COMMIT; image_sig ORDSYS.ORDImageSignature;
END; compare_sig ORDSYS.ORDImageSignature;
/ score FLOAT;
Bases de données Multimédia 29 Bases de données Multimédia 30
5
6. Bases de données Multimédia Bases de données Multimédia
Oracle - ORDImageSignature Oracle - ORDImageSignature
-- calcul de la signature de la 1ère image -- calcul de la signature de la 2ème image
SELECT p.product_photo, SELECT p.product_photo,
p.product_photo_signature INTO p.product_photo_signature INTO c_image,
t_image, image_sig
t image image sig FROM media p WHERE compare_sig
compare sig FROM media p WHERE
p.product_id = 1 FOR UPDATE; p.product_id = 2 FOR UPDATE;
image_sig.generateSignature(t_image); compare_sig.generateSignature(c_image);
UPDATE media p SET UPDATE media p SET
p.product_photo_signature = image_sig p.product_photo_signature = compare_sig
WHERE product_id =1;
WHERE product_id = 2;
Bases de données Multimédia 31 Bases de données Multimédia 32
Bases de données Multimédia Bases de données Multimédia
Oracle - ORDImageSignature Oracle - ORDImageSignature
-- Comparaison des signatures Méthode de comparaison isSimilar (retourne 0 ou 1)
SELECT p.product_photo_signature INTO image_sig FROM isSimilar(sig1 IN ORDImageSignature, sig2 IN
media p WHERE p.product_id = 1; ORDImageSignature, weights IN VARCHAR2, threshold
SELECT p.product photo signature INTO compare sig
p.product_photo_signature compare_sig IN FLOAT) RETURN INTEGER;
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 value := ORDSYS.ORDImageSignature.isSimilar
n=0'); (image_sig1,image_sig2,'color="1.0",texture=0,shap
DBMS_OUTPUT.PUT_LINE('Score is ' || score); e=0,location=0',10);
END;
/
Bases de données Multimédia 33 Bases de données Multimédia 34
Bases de données Multimédia
Oracle - InterMedia
Conclusion
Aperçu du package ORDSYS
Avec les types ORDSource, ORDImage,
ORDImageSignature
Et les méthodes des types
Utilisation dans des programmes PL/SQL
Bases de données Multimédia 35
6