multimedia datenbankprodukte dr. harald kosch itec at universität klagenfurt
TRANSCRIPT
Multimedia Datenbankprodukte
Dr. Harald KoschITEC at Universität Klagenfurt
2
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
3
Inhalt LUT2
Einführung in die interMedia Multimedia Datenbank von Oracle 9i Allgemeine Merkmale und Architektur
4
Inhalt LUT3
Bildverwaltung mit Hilfe des ORDImage Datentypes Datentyp Definition und Methoden Realisierung der Suchfunktionalität
Komplettes Anwendungsbeispiel
5
Inhalt LUT4
Forschungsprodukte MIRROR Datenbank DISIMA Datenbank MARS Datenbank SMOOTH Datenbank
Beschreibung des Oracle Multimedia Data Cartridge
6
LUT1: Kommerzielle Produkte - Überblick
7
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
8
Ebenen der Erweiterbarkeit Erweiterung des Typsystems um
anwendungsspezifische Datentypen 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
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
Indextypen für benutzerdefinierte Datentypen Erweiterung der Anfrageoptimierung um neue Regeln
Selektivitäts- und Kostenfunktionen für benutzerdefinierte Funktionen und Indexe
Kombination von Indexen
9
Erweiterungsmodule Serverseitige Pakete,
die Funktionalität für bestimmte Anwendungen bieten – Insellösungen.
Kommerzielle Module: Informix DataBlades, Oracle Cartridges, IBM Extenders) beinhalten:
Spezielle Multimedia-Datentypen
Indexmethoden Anfrageoptimierung
10
Multimedia in Informix durch DataBlades DataBlade ist ein:
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
Verfügbare Multimedia Ausprägungen: Excalibur Image DataBlades Video DataBlades
Erster am Markt (seit über 5 Jahren operationell).
11
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.
12
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.
13
LUT2: Oracle interMedia – eine kommerzielle Multimediadatenbank
14
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).
15
interMedia Architektur
16
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.
17
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.
18
Datentypen Oracle 9i: Gesamtübersicht
Built-in 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
Building Block Typen Building block: Object Types, REFs, Varrays, Nested Tables
ANSI SQL unterstütze Datentypen 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
19
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).
20
LUT3: Oracle interMedia praktisch
21
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
22
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
...
23
ORDImage – Create Table
- Beispiel der Benutzung von ORDImage
CREATE TABLE fotos(foto_id INTEGER, fotograph VARCHAR2(64), annotierung VARCHAR2(255), foto ORDSYS.ORDImage);
24
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>;
25
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
26
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.
27
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 ( )
28
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.
29
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
30
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
31
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
32
Wie inhaltsbasiertes Retrieval funktioniert
( 1 ) Globale Farben and Lokale Farben
Globale Farben : vollständige Ähnlichkeit (Punktzahl=0.0)
Lokale Farben : keine Ähnlichkeit (Punktzahl=100)
33
Wie inhaltsbasiertes Retrieval funktioniert
Abbildung a sehr ähnlich (Punktzahl=0.0) bezüglich globaler Farben.
Abbildung b sehr ähnlich (Punktzahl=0.02461) bezüglich lokaler Farben.
Abbildung a
Abbildung b
34
Wie inhaltsbasiertes Retrieval funktioniert
( 2 ) Texturam nützlichsten für Bilder mit kompletter Textur
(wie Kataloge aus Holzmaserungen, Marmor, Sand, Steine)
Abbildung a zeigt zwei ähnliche Arbeitsmuster (Punktzahl=4.1)
35
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.
36
Wie Ähnlichkeitssuche funktioniert
( 1 ) Gewicht Grad der Ähnlichkeit /
Verschiedenheit zwischen zwei Bildern.
Werte des Gewichtes Positive reelle Zahlen Addiert zu 100%
37
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 ]
38
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.
39
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; END;
Generierte Signatur
40
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.
41
interMedia : komplettes Beispiel
Beispiel : Bücherdatenbank
Erstellung des Bildverzeichnisses für die Bücherdatenbank (Benutzer: system)
CREATE DIRECTORY IMGDIR AS 'C:\';
42
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);
43
Einfügeprozess (1/2)
DECLARE img ORDSYS.ORDImage; sig ORDSYS.ORDImageSignature; ctx RAW(4000):= NULL; BEGININSERT 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() );
Einfügen eines Buches und Initiierung des Bildelements
44
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;
45
Ü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;
46
Ä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;
47
Ä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;
48
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;
49
LUT4: Forschungsprodukte