interMedia

Werbung
Multimedia Datenbankprodukte
Dr. Harald Kosch
ITEC at Universität Klagenfurt
Inhalt LUT1


Multimedia in Datenbanken durch Erweiterung von
objekt-relationalen Datenbanksystemen
Überblick über gängige Systeme:



Informix DataBlades
IBM DB2 Extenders
Oracle interMedia – genauer später
2
Inhalt LUT2

Einführung in die interMedia Multimedia Datenbank
von Oracle 9i

Allgemeine Merkmale und Architektur
3
Inhalt LUT3

Bildverwaltung mit Hilfe des ORDImage Datentypes



Datentyp Definition und Methoden
Realisierung der Suchfunktionalität
Komplettes Anwendungsbeispiel
4
Inhalt LUT4

Forschungsprodukte





MIRROR Datenbank
DISIMA Datenbank
MARS Datenbank
SMOOTH Datenbank
Beschreibung des Oracle Multimedia Data Cartridge
5
LUT1: Kommerzielle Produkte - Überblick
6
Motivation und Einleitung

Multimedia Anwendungen benötigen spezielle Datentypen
und Funktionen in der Datenbank, welches das Basissystem
üblicher kommerzieller (Oracle, IBM, Informix) Datenbanken
nicht zur Verfügung stellt, unter anderem:




Speicherung und Verwaltung von Bild-, Audio- oder Video-Daten
Speicherung von beschreibenden Daten dieser Medien (wie Grösse,
Format, etc.)
Ähnlichkeitssuche
Physikalische Indexe für den Zugriff und der Suche von Mediendaten
-> Erweiterung des Datenbanksystems um neue Funktionalität,
aber ein DBS kann nicht alle möglichen Erweiterungen
vorhersehen

Lösungen, die gängige Datenbanksysteme realisiert haben:


Offene (erweiterbare) Datenbanksysteme
Anpassung je nach Bedarf
7
Ebenen der Erweiterbarkeit

Erweiterung des Typsystems um anwendungsspezifische
Datentypen




Erweiterung der Anfragesprache um neue Operationen



Neue Resultattypen in der SELECT-Klausel
Neue Prädikate in der WHERE-Klausel
Erweiterung um passende Methoden des physischen
Datenbankentwurfs


Räumliche, zeitliche, sowie Bild-, Audio- und Videodatentypen
Angereichertes Typsystem allein bietet noch keine allgemeine Lösung
Typsystem muss an spezielle Bedürfnisse anpassbar sein
Indextypen für benutzerdefinierte Datentypen
Erweiterung der Anfrageoptimierung um neue Regeln


Selektivitäts- und Kostenfunktionen für benutzerdefinierte Funktionen
und Indexe
Kombination von Indexen
8
Erweiterungsmodule


Serverseitige Pakete, die
Funktionalität für
bestimmte Anwendungen
bieten – Insellösungen.
Kommerzielle Module:
Informix DataBlades,
Oracle Cartridges, IBM
Extenders) beinhalten:



Spezielle MultimediaDatentypen
Indexmethoden
Anfrageoptimierung
9
Multimedia in Informix durch DataBlades

DataBlade ist ein:





Verfügbare Multimedia Ausprägungen:



Software-Paket, das die Funktionalität des
Datenbankservers erweitert
Besteht aus SQL-Anweisungen und Code, in SPL (Stored
Procedure Language) oder einer externen
Programmiersprache geschrieben
Kann spezielle Zugriffsmethoden definieren und
Funktionen für den Aufbau, die Verwaltung und
Verwendung von Indexen bereitstellen
Kann Selektivitäts- und Kostenfunktionen für den
Anfrageoptimierer bereitstellen
Excalibur Image DataBlades
Video DataBlades
Erster am Markt (seit über 5 Jahren operationell).
10
Multimedia in Oracle durch Cartridges

Oracle Data Cartridge ist ein:






Software-Paket, das die Funktionalität des Datenbankservers
erweitert
Besteht aus benutzerdefinierten Datentypen und Methoden
Code-Implementierung in PL/SQL, C, C++, JAVA
Kann eigene Zugriffsmethoden definieren und Funktionen für den
Aufbau, die Verwaltung und die Verwendung spezieller
Indexstrukturen bereitstellen
Kann Selektivitäts-und Kostenfunktionen enthalten, die bei der
Verarbeitung Cartridge-definierter Operationen vom
Anfrageoptimierer benutzt werden
Verfügbare Multimedia Cartridges

interMedia (Text, Audio, Bilder, Video, Dokumente)


Wird später im Detail vorgestellt
Robustes System – viele Anwendungen durch Oracle`s
technet Webportal gefördert.
11
Multimedia in IBM durch Extenders

IBM Extender ist ein:





Software-Paket, das die Funktionalität des Datenbankservers
erweitert
Besteht aus benutzerdefinierten Datentypen und Funktionen
Kann Zugriffsmethoden mit Funktionen für den Aufbau, die
Verwaltung und Verwendung spezieller Indexstrukturen bereitstellen
Kann Selektivitäts- und Kostenfunktionen für die Anfrageoptimierung
definieren
Verfügbare Multimedia Extenders

Image, Audio, Video, Text Extender
System mit der höchsten angebotenen Funktionalität.
Integriert das beste Bildretrievalsystem QBIC.
Wenig präsent in offener Anwendungsentwicklung.

12
LUT2: Oracle interMedia – eine kommerzielle
Multimediadatenbank
13
Oracle’s 9i interMedia

Oracle interMedia stellt eine Reihe von Services zur
Speicherung, Verwaltung und Suche in
multimedialen Daten zur Verfügung:





Verwaltung von Meta- und Mediendaten
Speicherung und Suchfunktionalität, die
Suchfunktionalität beschränkt sich auf Bilder
Unterstützung aller populären Formate
Oracle interMedia ist eine Multimedia-Datenbank
welche in das Oracle Datenbankmanagementsystem
(DBMS) integriert ist.
Basiert auf der Cartridgetechnologie von Oracle,
welche es ermöglicht, spezielle DBMS zu entwerfen
(siehe vorherige Lerneinheit).
14
interMedia Architektur
15
interMedia – Verwaltung der Inhalte
Oracle interMedia unterstützt Speicherung, Suche,
and Verwaltung von:




Binary Large Objects (BLOBs): werden im DBMS gespeichert
(lokale Speicherung). Sie unterliegen der
Grössenbeschränkung eines BLOBS. Alle Arten von
multimedialen Inhalten können so gespeichert werden.
File-based Large Objects (BFILEs): werden in externen
Dateisystemen gespeichert und von der Datenbank
referenziert. Sie können natürlich über DB-Operationen
ausgelesen und gespeichert werden.
URLs, welche multimediale Daten referenzieren.
Streaming Audio oder Video: Daten, die in spezialisierten
Medienservern gespeichert sind und von dort kontinuierlich
übertragen werden.
16
ORD*
Oracle interMedia benützt OR(Objekt-Relationale)-DB Typen
um multimediale Daten zu verwalten. Die Datentypen sind:
ORDAudio, ORDImage, ORDVideo und ORDDoc
 Jeder dieser Typen führt eine Reihe von Attributen (u.U mit
Meta-Dateninformationen) und Methoden ein.
 Medien-Daten sind Audio, Bild, Video und die Kombination
dieser (ORDDoc).
 Metadaten sind Daten über die Mediendaten, sowie die
Größe, Art der Komprimierung, Format, etc.
 Methoden sind Prozeduren und Funktionen welche die
Objekte verwalten, wie z.B. getProperties( ) und
setProperties( ) zur Abfrage der Eigenschaften der
Mediendaten.
Es gibt auch noch den Texttyp auf den wir hier nicht genauer
eingehen können, der interessierte Leser wird auf
technet.oracle.com verwiesen.
17
Datentypen Oracle 9i: Gesamtübersicht

Built-in Datentypen







Building Block Typen


Building block: Object Types, REFs, Varrays, Nested Tables
ANSI SQL unterstütze Datentypen


Character_data types: CHAR, VARCHAR2, NCHAR, NCHAR2
Number_data types: NUMBER(p,s)
Long_and_row_data types: LONG, LONG RAW, RAW
Date time_data types: DATE, TIMESTAMP, INTERVAL
Large_object_data types: BLOB, CLOB, NCLOB, BFILE
Rowid_data types: ROWID, UROWID
Die meisten ANSI SQL-Typen werden von Oracle unterstützt, ausser:
GRAPHIC, VARGRAPHIC, LONG VARGRAPHIC, TIME, TIMESTAMP
Cartridge Datentypen




any_types: SYS.AnyType, SYS.AnyData, SYS.AnyDataSet
XML_types: SYS.XMLType, SYS.UriType
spatial_types: MDSYS.SDO_Geometry
media_types: ORDSYS.ORDAudio, ORDSYS.ORDImage, ORDSYS.ORDVideo,
ORDSYS.ORDDoc
18
ORDImage in weiterer Folge


ORDImage stellt als einziger Datentyp
(bisher) Suchfunktionalität zur Verfügung.
Der Unterschied liegt in der
Ähnlichkeitssuche, denn über die Inhalte der
Attribute eines Datentyps kann natürlich
immer gesucht werden.
ORDVideo and ORDAudio haben ähnliche
Methodenschnittstellen (ausgenommen die
Suche wie ORDImage).
19
LUT3: Oracle interMedia praktisch
20
Oracle InterMedia Image
Oracle InterMedia Image bietet die Grundfunktionalität zur
Manipulation, Speicherung und zum Laden digitaler Bilder
und
 Ähnlichkeitssuche in Bilddaten, welche sich auf Farbe,
Kontur und Textur beziehen.

Zentraler Datentyp: ORDImage
Der ORDImage OR-DB Type stellt zur Verfügung:




Höhe / Breite / Größe des Bildes
Dateityp / Format
Kompression Format
MIME-Typ
21
OrdImage - Definition
-
Definition von ORDImage
CREATE OR REPLACE TYPE ORDImage AS OBJECT
(
-- TYPE ATTRIBUTES
source
ORDSource,
height
INTEGER,
width
INTEGER,
contentLength
INTEGER,
fileFormat
VARCHAR2(4000),
contentFormat
VARCHAR2(4000),
compressionFormat
VARCHAR2(4000),
mimeType
VARCHAR2(4000),
-- METHOD DECLARATION
...
22
ORDImage – Create Table
- Beispiel der Benutzung von ORDImage
CREATE TABLE fotos(
foto_id INTEGER,
fotograph VARCHAR2(64),
annotierung VARCHAR2(255),
foto ORDSYS.ORDImage);
23
ORDImage - Insert
INSERT INTO fotos (foto_id, fotograph, annotierung, foto)
VALUES(1, 'John MacIvor', 'red plaid',
ORDSYS.ORDImage.init('file','ORDIMGDIR','redplaid.gif'));
Das sourceLocation Argument 'ORDIMGDIR' von
ORDSYS.ORDImage.init() muss ein lokales Verzeichnis
sein.
CREATE DIRECTORY ORDIMGDIR AS
'<MYIMAGEDIRECTORY>'; GRANT READ ON DIRECTORY
ORDIMGDIR TO <user-or-role>;
24
Retrieval visueller Informationen

Retrieval visueller Informationen


Index anlegen / verwenden
Inhaltsbasiertes Retrieval durchführen
basierend auf visuellen Attributen des Bildes (Farbe,
Struktur, Textur)
[ ex ] Gib mir alle Informationen über rote Autos
25
Visuelle Informationen - Methoden/Operationen
( 1 ) Signatur und Ähnlichkeit


ORDImageSignature Typ
ORDSYS.ORDImageSignature.init();
Anlegen einer Signatur, die auf Farbe, Textur, Struktur
des Bildinhalts basiert

IMGSimilar ( ):
Vergleich der Signatur zweier Bilder. Ermittelt wird, ob
die Bilder einer vom Benutzer eingegeben Menge von
Kriterien entsprechen.
26
Visuelle Informationen - Methoden /Operationen
( 2 ) Eigenschaften von Bildern extrahieren

setProperties ( ):
wichtige Eigenschaften des Bildes aus den Bilddaten
herauslesen.
vgl. “get” – wird verwendet, um individuell
gespeicherte Attribute des Bildes abzufragen, etwa
über die Höhe oder Breite in Pixel.
getHeight ( ) , getWidth ( )
27
Visuelle Informationen - Methoden /Operationen
( 3 ) Eigenschaften des Bildes überprüfen

checkProperties ( ):
Überprüfen, ob die Eigenschaften, die in den Attributen
eines Bildobjektes gespeichert sind, mit den
tatsächlichen Eigenschaften des Bildes
übereinstimmen
( 4 ) Bilder modifizieren

Process ( ) / processCopy ( ):
Konvertierung und Komprimierung des Bildformats,
grundlegende Funktionen zur Bearbeitung,
einschließlich Skalieren und Cutting.
28
Visuelle Informationen - Methoden /Operationen
( 5 ) Bilder verschieben / kopieren


copy ( ) / processCopy ( )
export ( ) / import ( ) / importFrom ( ):
nützlich, um Bilder zwischen Datenbanken und
externen Datenquellen zu transferieren.
( 6 ) Bildmerkmale manuell festlegen

setProperties ( ):
Bestimmte Merkmale explizit bestimmen
29
Inhaltsbasiertes Retrieval - Konzepte

Wie inhaltsbasiertes Retrieval funktioniert
Definition / Erklärung der visuellen Attribute.
(globale Farben, lokale Farben, Textur, Struktur)


Ähnlichkeitssuche mittels festgelegter
Vergleichsbilder


Die Gewichtung der visuellen Attribute bestimmt den
Grad der Ähnlichkeit zwischen Bildern.
Verwendung von Indexen, um die Suche zu
beschleunigen
30
Wie inhaltsbasiertes Retrieval funktioniert

Inhaltsbasiertes Retrieval-System



Verarbeitung der Informationen, die in den Bilddaten
enthalten sind
Jedes in die Datenbank eingefügte Bild wird analysiert.
Eine Repräsentation des Inhalts wird in einem
Signaturvektor gespeichert.
Signatur enthält alle Informationen über die
Merkmale der visuellen Attribute:




Globale Farben : Verteilung der Farben im Gesamtbild
Lokale Farben : Farbverteilungen / wo sie in einem Bild auftreten
Textur : Low-level Muster and Texturen im Bild
Struktur : Formen, die im Bild vorkommen
31
Wie inhaltsbasiertes Retrieval funktioniert
( 1 ) Globale Farben and Lokale Farben


Globale Farben : vollständige Ähnlichkeit (Punktzahl=0.0)
Lokale Farben : keine Ähnlichkeit (Punktzahl=100)
32
Wie inhaltsbasiertes Retrieval funktioniert
Abbildung a
Abbildung b


Abbildung a sehr ähnlich (Punktzahl=0.0) bezüglich
globaler Farben.
Abbildung b sehr ähnlich (Punktzahl=0.02461) bezüglich
lokaler Farben.
33
Wie inhaltsbasiertes Retrieval funktioniert
( 2 ) Textur
am nützlichsten für Bilder mit kompletter Textur
(wie Kataloge aus Holzmaserungen, Marmor, Sand, Steine)

Abbildung a zeigt zwei ähnliche Arbeitsmuster (Punktzahl=4.1)
34
Wie inhaltsbasiertes Retrieval funktioniert
( 3 ) Struktur



Streng beschränkt auf bestimmte Größen oder
Positionen
Nützlich um Objekte zu erfassen, wie zum
Beispiel Horizontlinien in Landschaften.
Nützlich um Abfragen auf einfache Formen
durchzuführen.
(Abbildung a) sehr ähnlich in Struktur.
35
Wie Ähnlichkeitssuche funktioniert
( 1 ) Gewicht


Grad der Ähnlichkeit / Verschiedenheit
zwischen zwei Bildern.
Werte des Gewichtes


Positive reelle Zahlen
Addiert zu 100%
36
Wie Ähnlichkeitssuche funktioniert
( 2 ) Berechnung der Ähnlichkeit
Grad der Ähnlichkeit hängt von einer gewichteten
Summe ab, die die Gewichtung und die
Entfernung aller vier visuellen Attribute des
Vergleichbildes und des Testbildes reflektiert
[ Gewichtung ]
37
Wie Ähnlichkeitssuche funktioniert


Wenn Gewichtungssumme  Grenzwert
Dann Treffer
Hauptziel


inhaltsbasiertes Retrieval, um unwichtige Bilder
zu eliminieren
Man kann sich auf die Bilder konzentieren, die
den gesuchten Inhalt beinhalten.
38
Wie Ähnlichkeitssuche funktioniert
( 3 ) Grenzwert

Beim Matchen der Bilder wird ein Grenzwert zugewiesen.
DECLARE
t_bild ORDSYS.ORDImage;
i INTEGER;
bild_sig ORDSYS.ORDImageSignature;
query_signatur ORDSYS.ORDImageSignature;
BEGIN
SELECT foto_id, foto, foto_sig INTO i, t_bild, bild_sig FROM fotos
WHERE ORDSYS.IMGSimilar(foto_sig,
query_signatur, 'color="0.2" texture="0.1" shape="0.5"
location="0.2"', 25) = 1;
Generierte
END;
Signatur
39
Indexunterstützung zum Signaturvergleich

Für bessere Performanz mit großen
Bilddatenbanken


Erstellen und Verwenden eines Index, um die
Bildsignaturen zu durchsuchen.
CREATE INDEX bildindex ON fotos(foto_sig) INDEXTYPE
IS ORDSYS.ORDImageIndex
PARAMETERS(' ORDIMG_FILTER_TABLESPACE =
ordimage_idx_tbs_1, ORDIMG_INDEX_TABLESPACE =
ordimage_idx_tbs_2');
Wie bei jedem Index muss der Tablespace
(ordimage_idx_tbs_1 and ordimage_idx_tbs_2) zuerst
erstellt werden.

IMGSimilar()-Abfragen verwenden diesen Index.
40
interMedia : komplettes Beispiel


Beispiel : Bücherdatenbank
Erstellung des Bildverzeichnisses für die
Bücherdatenbank (Benutzer: system)
CREATE DIRECTORY IMGDIR AS 'C:\';
41
Erstellung der Bildtabelle
CREATE TABLE buecher (
id INTEGER PRIMARY KEY,
isbn INTEGER,
titel VARCHAR2(30),
autor VARCHAR2(30),
preis INTEGER,
inhalt VARCHAR2(200),
foto ORDSYS.ORDImage,
foto_sig ORDSYS.ORDImageSignature
);
42
Einfügeprozess (1/2)

Einfügen eines Buches und Initiierung des
Bildelements
DECLARE
img ORDSYS.ORDImage;
sig ORDSYS.ORDImageSignature;
ctx RAW(4000):= NULL;
BEGIN
INSERT INTO buecher (id, isbn, titel, autor, preis, inhalt, foto, foto_sig)
VALUES(1, 3544651, 'Java, die Referenz', 'David Flanagan', 60, 'Java-Klassen',
ORDSYS.ORDImage.init('file', 'IMGDIR', 'Sample.jpg'),
ORDSYS.ORDImageSignature.init() );
43
Einfügeprozess (2/2)

Laden des Bildes und die Generierung der
Signatur
SELECT B.foto, B.foto_sig INTO img, sig
FROM buecher B WHERE B.id = 1 FOR UPDATE;
img.import(ctx);
sig.generateSignature(img);
UPDATE buecher B
SET B.foto = img,
B.foto_sig = sig
WHERE B.id = 1;
END;
44
Überprüfung der Metadaten
DECLARE
buch_id Integer; bild ORDSYS.ORDImage; buchtitel varchar2(30);
getData BOOLEAN;
BEGIN
SELECT id, titel, foto INTO buch_id, buchtitel, bild FROM buecher WHERE id = 1;
dbms_output.put_line(' Id : ' || buch_id || ' - Titel : '|| buchtitel);
getData := bild.checkProperties();
IF getData THEN
dbms_output.put_line('Höhe:
'|| bild.getHeight());
dbms_output.put_line('Breite:
'|| bild.getWidth());
dbms_output.put_line('MIME-Typ:
'|| bild.getMimeType());
dbms_output.put_line('Dateiformat: '|| bild.getFileFormat());
dbms_output.put_line('Größe:
'|| TO_CHAR(bild.getContentLength()));
END IF;
END;
45
Ähnlichkeitssuche (1/2)

Deklarierung eines CURSORs
DECLARE
grenzwert NUMBER;
vergleich_sig ORDSYS.ORDImageSignature;
ergebnis_foto ORDSYS.ORDIMAGE;
id_foto INTEGER;
titel_foto VARCHAR2(30);
CURSOR rech_fotos IS
SELECT B.id, B.foto
FROM buecher B
WHERE ORDSYS.IMGSimilar(B.foto_sig, vergleich_sig,
'color="0,6" texture="0,2" shape="0,1" location="0,1"', grenzwert)=1;
46
Ähnlichkeitssuche (2/2)
BEGIN
-- Auswahl des Bildes, das als Vergleichsbasis dient
SELECT B.foto_sig INTO vergleich_sig FROM buecher B
WHERE B.id = 1;
grenzwert := 30.0;
-- Ähnlichkeitssuche
OPEN rech_fotos;
LOOP
FETCH rech_fotos INTO id_foto, ergebnis_foto;
EXIT WHEN rech_fotos%NOTFOUND;
-- Ausgabe des Ergebnisses
dbms_output.put_line(id_foto);
END LOOP;
CLOSE rech_fotos;
END;
47
Kombinierte Abfrage
SELECT Q.id, Q.titel, Q.foto.getCompressionFormat()
FROM buecher Q, buecher E
WHERE E.id=1 AND
ORDSYS.IMGSimilar(Q.foto_sig, E.foto_sig, 'color=1', 50.0)=1
AND Q.foto.getWidth() > 32
AND Q.foto.getContentLength() > 10000;
48
LUT4: Forschungsprodukte
49
Herunterladen