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