Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Multimedia Datenbankprodukte

Ähnliche Präsentationen


Präsentation zum Thema: "Multimedia Datenbankprodukte"—  Präsentation transkript:

1 Multimedia Datenbankprodukte
Multimedia Datenbankprodukte Dr. Harald Kosch ITEC at Universität Klagenfurt Vier LUTs werden hier präsentiert, die erste gibt einen Überblick über kommerzielle Multimediadatenbanken. Die zweite LUT führt im Detail die Architektur unseres Schwerpunktsystems Oracle interMedia ein. Die dritte, und umfangreichste LUT, bespricht die technischen Details der Programmierung von Oracle interMedia und gibt ein Komplettbeispiel. Das vierte LUT beschreibt Forschungsprodukte, insbesondere geht es auf das Multimedia Data Cartridge, eine MPEG-7 Multimedia Systemerweiterung von Oracle ein.

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 Die erste LUT gibt einen groben Überblick über drei ausgewählte und repräsentative kommerzielle Multimediadatenbanksysteme. Die drei Systeme sind Informix Multimedia DataBlades (jetzt IBM), die IBM DB2 Multimedia Extenders und Oracle interMedia. Alle drei Systeme sind als Erweiterung des jeweiligen objekt-relationalen Basissystems realisiert.

3 Inhalt LUT2 Einführung in die interMedia Multimedia Datenbank von Oracle 9i Allgemeine Merkmale und Architektur Diese Lerneinheit stellt interMedia von seiner Funktionalität (allgemein) und seiner Architektur dar.

4 Inhalt LUT3 Bildverwaltung mit Hilfe des ORDImage Datentypes
Inhalt LUT3 Bildverwaltung mit Hilfe des ORDImage Datentypes Datentyp Definition und Methoden Realisierung der Suchfunktionalität Komplettes Anwendungsbeispiel Diese Lerneinheit ist zweigeteilt. Im ersten Teil beschreiben wir die Eigenschaften des ORDImage Datentyps. Dieser Datentyp wurde als Beispiel ausgewählt, da er die meiste Funktionalität von allen Mediendatentypen, welche in Oracle realisiert sind, zur Verfügung stellt. Zuletzt zeigen wir ein Komplettbeispiel der Realisierung einer Bilddatenbank mit Oracle interMedia. Es werden sowohl die Speicherung, als auch die Suche demonstriert.

5 Inhalt LUT4 Forschungsprodukte
Inhalt LUT4 Forschungsprodukte MIRROR Datenbank DISIMA Datenbank MARS Datenbank SMOOTH Datenbank Beschreibung des Oracle Multimedia Data Cartridge Diese Lerneinheit ist zweigeteilt. Im ersten Teil geben wir einen Überblick über verschiedene Forschungsprodukte, die MIRROR, die DISIMA, die MARS und die SMOOTH Datenbank. Dann beschreiben wir die Funktionalität des Oracle Multimedia Data Cartridges, welches wir kürzlich an der Universität Klagenfurt zur Speicherung und Abfrage von MPEG-7 Dokumenten entwickelt haben.

6 LUT1: Kommerzielle Produkte - Überblick
LUT1: Kommerzielle Produkte - Überblick

7 Motivation und Einleitung
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 Gängige Datenbanken bieten eine recht gute Unterstützung für einfache Attribute wie z.B. CHAR, INT und teilweise auch die Möglichkeit, große Objekte (sog. BLOBs) zu speichern. Allerdings reichen diese so genannten Basisfunktionalitäten nicht aus, um multimediale Daten effizient zu speichern, zu verwalten und in ihnen zu suchen. Es fehlen vor allem Verwaltungsfunktionen, die speziell auf den Mediendaten operieren. Weiterhin werden keine beschreibenden Daten dieser Medien verwaltet, eine Ähnlichkeitssuche ist nicht realisierbar und zu guter Letzt werden in einem solchen Basissystem keine mehr-dimensionalen Indexstrukturen zur Verfügung gestellt. Inzwischen bieten aber einige Hersteller objektrelationaler Datenbankverwaltungssysteme (ORDBMS) spezielle Erweiterungsmodule an, die einer besseren Integration multimedialer Daten in ihre Systeme dienen. Die betrachteten kommerziellen Systeme setzten sich aus einem Basissystem, welches nicht Multimedia-aware ist, und einer Multimedia-Erweiterung zusammen. Drei kommerzielle Systeme werden hier betrachtet, interMedia auf Oracle aufsetzend, Informix Datablades, und die Multimedia Extenders auf IBM DB2 aufsetzend. Alle drei Systeme nützen die Erweiterungsmechanismen ihrer Basissysteme aus.

8 Ebenen der Erweiterbarkeit
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 Vier Ebenen der Erweiterung der Basissystem sind notwendig, um eine Multimediaerweiterung aufzubauen. Erstens eine Erweiterung des Typsystems um anwendungsspezifische Datentypen für räumliche, zeitliche, Bild-, Audio- und Videodatentypen. Neben dem Typsystem ist die Anfragesprache von Bedeutung. SQL hat zwar kürzlich mit SQL/MM einen Standard für Multimediaerweiterung herausgebracht, allerdings unterscheiden sich die verschiedenen kommerziellen Ausprägungen stark von diesem Standard. Ein Grund ist sicher die zu späte Standardisierung, andererseits auch die verschiedenen Implementierungen der Methoden, welche für die Multimedia-Datentypen zur Verfügung gestellt wurden. Hier müssen sowohl neue Resultattypen in der SELECT-Klausel für die Präsentierung der multimedialen Ergebnisse, als auch neue Prädikate in der WHERE-Klausel für die Ähnlichkeitsabfragen eingeführt werden. Insgesamt bleibt zu hoffen, dass eine Vereinheitlichung in Richtung SQL/MM in der Zukunft angestrebt wird. Indexe für Multimedia sind ein weiterer wichtiger Erweiterungspunkt. Es müssen für die neuen Multimediadatentypen neue Indizes zur Verfügung gestellt werden, z.B. für die Suche in den multi-dimensionalen Daten. Die Verwendung von Indexen ist in den gängigen Produkten noch nicht wirklich ausgereift, so es ist nicht möglich zwischen mehreren Alternativen zu wählen (z.B. für nieder- und hochdimensionale Featurevektoren).

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 Prinzipiell gibt es zwei unterschiedliche Erweiterungsstrategien eines ORDBMS Basissystems, zum einen durch eine Installation von serverseitigen Pakten, welche den Zugriff auf die Abfragen und die Verwaltung der Medien regeln. Das kann allerdings zu Insellösungen führen. Zum anderen wird die Strategie durch Module, welche das DBMS in den jeweiligen Systemkomponenten erweitern, durchgeführt. * BILD* Das obige Bild beschreibt den Erweiterungsprozess. Zu erweitern ist das Typensystem und der Typmanager. Es muss der SQL-Parser erweitert werden um die neuen Multimediakonstrukte zu bearbeiten, und auch der Anfrageoptimierer um Multimediaabfrage zu optimieren. Im Bereich des DBMS muss auch die Anfrageverarbeitung und der Speichermanager erweitert werden.

10 Multimedia in Informix durch DataBlades
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). Die Erweiterung des Informix Datenbanksystems geschieht durch so genannte DataBlades. Das sind Softwarepakete, welche die Funktionalität des Datenbankservers erweitern. Im Prinzip besteht ein DataBlade aus SQL-Anweisungen und Code aus einer speziellen Stored Procedure Language. Es können spezielle Zugriffsmethoden realisiert werden. Das Excalibur Image Datablade ist eines von zwei Datablades, das sich mit Bildern in der Datenbank beschäftigt. Es ist eine Entwicklung des Datenbankherstellers Informix in Zusammenarbeit mit der Firma Excalibur, die ihrerseits eine Bibliothek aus dem Bereich Bildverarbeitung eingebracht hat. Das Excalibur Image Datablade stellt neben den üblichen Manipulationsfunktionen hauptsächlich Funktionen zur inhaltsbasierten Suche zur Verfügung. So beschränkt sich die Funktionalität zur Veränderung von Bildern im Wesentlichen auf die Konvertierungsfunktionen zwischen verschiedenen Grafikformaten, Skalierung bestehender Bilder (z.B. Thumbnails) und Veränderung der Farbzusammensetzung bestehender Bilder (z.B. Farbbild in Graustufen konvertieren). Die Video Datablades haben eine kleinere Funktionalität als Datablades für Bilder, so werden im Prinzip nur Zugriffsoperatoren zur Verfügung gestellt. Die Informix Multimedia Datablades sind die ersten am Markt verfügbaren Multimediaerweiterungen eines ORDBMS Basissystems.

11 Multimedia in Oracle durch Cartridges
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. Data Cartridge ist die Technologie, um spezialisierte Datenbanken in das Oracle DMBS zu realisieren. Die Cartridgetechnologie besteht prinzipiell aus benutzerdefinierten Datentypen und Methoden. Es können aber auch eigene Zugriffsmethoden und Funktionen für den Aufbau und die Verwendung spezieller Indexstrukturen definiert werden. Mit interMedia können sowohl Audio, Bilder, Text, Video als auch Dokumente mit unterschiedlichen Medien verwaltet werden. interMedia wird im Detail in der nächsten Lerneinheit behandelt. Es ist ein robustes System, welches durch die Offenlegung der Beispielanwendungen im technet Webportal gefördert ist. Wir haben auch eine solche Implementierung für eine MPEG-7 Multimedia Datenbank entworfen, welche wesentlich über die von interMedia zur Verfügung gestellte Funktionalität in Hinblick auf Meta-Daten und Suche hinausgeht (diese DB wird in der übernächsten Lerneinheit beschrieben).

12 Multimedia in IBM durch Extenders
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. Das Erweiterungsmodul der IBM DB2 Datenbank heißt Extender. Sie ist der Cartridgetechnologie von Oracle im Aufbau ähnlich und stellt neben Datentypen und Methoden auch die Möglichkeit zur Verfügung, eigene Zugriffsmethoden zu realisieren. Mit dem DB2 Image, Audio und Video Extender können die drei wichtigsten Multimediadatenarten verwaltet werden. Hierzu verwendet DB2 die Datentypen DB2Image, DB2Audio und DB2Image. Der Datentyp DB2Image wird verwendet, um das eigentliche Bild und die damit verbundenen Attribute zu speichern. Ein solches DB2Image stellt aber lediglich eine Art Zugriffshandle auf die eigentlichen Daten dar, die in so genannten Verwaltungsunterstützungstabellen (VUT) untergebracht sind. Diese VUT müssen vom Datenbankadministrator angelegt werden, bevor Daten vom Typ DB2Image in die Datenbank eingefügt werden. Über DB2Image kann auf die Bildattribute wie Bildformat, Höhe, Breite und Tiefe (Anzahl der Farben) zugegriffen werden; sowie auf zusätzliche Attribute, die für die Verwaltung oder für beschleunigte Abfragen wichtig sind (thumbnail, importer, importTime, updater, updateTime, fileName und comment). All diese Attribute können über spezielle UDFs (User defined Functions) abgefragt werden, welche DB2Image dann als Parameter verwenden. Der eigentliche Bildinhalt kann entweder in einer externen Datei oder als BLOB in der Verwaltungsunterstützungstabelle gespeichert werden.

13 LUT2: Oracle interMedia – eine kommerzielle Multimediadatenbank
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). interMedia führt eine Reihe von Datentypen zur Verwaltung von multimedialen Daten und deren Meta-Daten ein. Neben den Multimedia-Datentypen werden eine Reihe von Methoden zur Verwaltung der Daten, sowie zur Speicherung und Konvertierung angeboten. In den letzten Jahren, von der Version 8i angehend, wurden immer mehr Datentypen unterstützt, so dass interMedia nun die gängigsten Formate unterstützt. interMedia nützt die Erweiterungsmöglichkeiten, die durch Oracle angeboten werden, und deswegen ist interMedia ein echte Multimedia-Datenbank, die sowohl Indexoperationen als auch Anfrageoptimierungen durchführt.

15 interMedia Architektur
interMedia Architektur *BILD* Die im Bild dargestellte Architektur von interMedia unterstützt die von Oracle angebotene 3-tier verteilte Architektur (Datenbankserver, Applikationsserver, Endenutzer). Es werden zum einen interMedia java-Klassen angeboten, die es ermöglichen, auf die Bilddaten mittels JDBC (Java Database Connectivity) zuzugreifen (vom mittel tier, z.B. dem Applikations- oder Web Server oder vom Endbenutzer). Weiterhin ist die Unterstützung von „Streaming Servers“ zu erwähnen. Oracle unterstützt einige Servertypen, z.B: real time streaming server, die dann direkt auf die in der Datenbank gespeicherten Medien zugreifen können, um einen kontinuierlichen Strom an die Endbenutzer auszusenden. Am back-end, also im Datenbankserver, findet man zu einem den MediaParser, der es ermöglicht, Meta-Daten von den Mediendaten zu extrahieren und zum anderen die Medien für die Verarbeitung zu parsen. Die Suchfunktionalität wird mittels der Java Advanced Imaging Libraries realisiert.

16 interMedia – Verwaltung der Inhalte
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. Oracle 9i interMedia kennt 4 verschiedene Speicherungsarten für Medien und Meta-Daten. Die erste ist der Binary Large Objects (BLOB) zur internen Speicherung von Medien- und Meta-Daten. Dieser ist sicher für alle Nicht-Video Daten von Relevanz. Daten können natürlich auch extern abgelegt werden, hier unterscheidet man die stark- oder lose gekoppelte Referenzierung als File-based Large Objects (BFILE), oder über eine URL. Im ersteren Fall hat man Operationen zur Speicherung und Verwaltung der abgelegten Daten. Im letzten Fall werden Daten auf einem Streaming Server abgelegt und in der Datenbank referenziert.

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. Oracle interMedia hat seine 4 objeckt-relationale (OR-)Mediendatentypen mit ORD als Prefix benannt. Die Ausprägungen gibt es für Audio, Bilder, Video und einen Mix-Datentyp ORDDoc welche multimediale Dokumente unterstützt. Die Datentypen definieren Attribute und Methoden. Attribute dienen vor allem der Speicherung von Meta-Daten über die Mediencharakteristika. 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
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 Die folgenden Klassen von Datentypen existieren in Oracle 9i: 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 SWL-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 Bemerkenswert ist hier der Besitzer des Datentyps für Multimedia: ORDSYS!, also derjenige Benutzer, dem das Cartridge gehört !

19 ORDImage in weiterer Folge
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). 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
LUT3: Oracle interMedia praktisch

21 Oracle InterMedia Image
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 Alle ORD* Typen besitzen Operationen, um Format, Kompressions Format, oder Dateityp abzufragen. Allerdings besitzen ORDAudio, ORDVideo und ORDDoc keine Möglichkeiten der Ähnlichkeitssuche. Die durch den Objekttyp ORDImage repräsentierten Bilder besitzen dagegen die Ähnlichkeitssuche welche sich auf Farb-, Kontur- und Texturmerkmale bezieht. Darüber hinaus stellt ORDImage die Methoden process oder processCopy zur Verfügung, durch die mit Hilfe eines Kommandostrings Formatkonvertierungen und andere Transformationen möglich sind, auch ist für diesen Datentyp eine Ähnlichkeitssuche möglich.

22 OrdImage - Definition Definition von ORDImage ...
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 ... Elemente des ORDImage Datentyps: Höhe und Breite (in Pixeln) Grösse (in Bytes) Graphikformat (z.B. GIF oder BMP) Art der Farbkodierung (S/W, Anzahl der Graustufen/Farben) Art der Komprimierung (z.B. JPEG oder LZW)

23 ORDImage – Create Table
ORDImage – Create Table - Beispiel der Benutzung von ORDImage CREATE TABLE fotos( foto_id INTEGER, fotograph VARCHAR2(64), annotierung VARCHAR2(255), foto ORDSYS.ORDImage); Das folgenden Beispiel zeigt die Verwendung des ORDImage Datentyps: CREATE TABLE fotos( foto_id INTEGER, fotograph VARCHAR2(64), annotierung VARCHAR2(255), foto ORDSYS.ORDImage); Zuerst wird eine Tabelle “fotos” angelegt, die ein Attribut “foto” mit dem Datentyp ORDSYS.ORDImage, durch den die Bilder in die Datenbank gespeichert werden können.

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>; Das folgende insert Statement zeigt wie man eine Instanz der Beispieltabelle mit einem Element vom Typ ORDImage befüllt. Das Bild wird über eine Datei im lokalen Dateisystem referenziert. INSERT INTO fotos (foto_id, fotograph, annotierung, foto) VALUES(1, 'John MacIvor', 'red plaid', ORDSYS.ORDImage.init('file','ORDIMGDIR','redplaid.gif')); Um die Instanz korrekt einzugeben, ist es von Nöten, dass die sourcelocation der Methode ORDSYS.ORDImage.init() korrekt gesetzt ist. Dieses geschieht durch vorheriges Anlegen eines DIRECTORY unter dem Benutzer SYS: CREATE DIRECTORY ORDIMGDIR AS '<MYIMAGEDIRECTORY>'; GRANT READ ON DIRECTORY ORDIMGDIR TO <user-or-role>;

25 Retrieval visueller Informationen
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 Das Retrieval umfasst den Prozess der Lokalisierung (Navigation oder Suche) und der eigentlichen Ausgabe von Medienobjekten. Der Benutzer kann Indexe anlegen und verwenden, und dann das inhaltsbasierte (als deutsche Übersetzung von „content-based“) Retrieval durchführen. Die Suche basiert auf inneren visuellen Attributen des Bildes, wie zB Farbe, Struktur, oder Textur. Der große Vorteil beim Verwenden der inhaltsbasierten Suche ist die Verringerung von Zeit und Aufwand beim Beschaffen von bild-basierenden Informationen. [ex] Gib mir alle Informationen über rote Autos - man wählt ein Bild mit einem rotem Auto aus, und kann so ähnliche Bilder in der Datenbank suchen - falls nur bestimmte rote Autos angezeigt werden sollen, kann man der Abfrage weitere Einschränkungen hinzufügen (bezüglich Form, Struktur etc.)

26 Visuelle Informationen - Methoden/Operationen
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. Um Bilder anhand ihrer Merkmale schneller suchen zu können, stellt der ORDImage Datentyp Signaturen für die Bilder zur Verfügung. In einem sogenannten Signaturvektor werden verschiedene visuelle Attribute wie Farben, Textur oder Struktur abgespeichert. Mit dem Aufruf ORDSYS.ORDImageSignature.init(); werden diese Informationen für das jeweilige Bild extrahiert, und ein Signaturvektor in dem Objekttyp ORDImageSignature gespeichert. Die Suche nach Bildern mit bestimmten Merkmalen, und damit auch der Vergleich zweier Bilder anhand bestimmter Merkmale, werden dadurch erheblich verbessert. Die Methode ORDImageSignature.IMGSimilar() ermöglicht einen Vergleich von Bildern durch ihre Signatur. Ermittelt wird, ob das Bild bestimmte Merkmale erfüllt. Auf Basis eines Kommandostrings werden zwei Bilder verglichen, wobei IMGSimilar() im Erfolgsfall ‘1‘ zurückgibt.

27 Visuelle Informationen - Methoden /Operationen
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 ( ) ( 2 ) Extrahieren der Bildeigenschaften setProperties ( ) : Nachdem ein Bild kopiert oder gespeichert wurde, liest setProperties ( ) die Bilddaten, um die aktuellen Attribute herauszufiltern. Die unterstützten Eigenschaften sind zB Farben, Textur oder Struktur. Die speziellen Merkmale des Bildes werden in Attributfelder gespeichert. als Vergleich: Die Methoden getHeight ( ) / getWidth ( ) werden verwendet, um individuell abgespeicherte Attribute des Bildes abzufragen (Höhe, bzw. Breite in Pixel). Hier wird nicht das Bild gelesen, sondern nur die gespeicherten Attribute abgefragt.

28 Visuelle Informationen - Methoden /Operationen
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. ( 3 ) Überprüfen der Eigenschaften der Bilder CheckProperties ( ) : Hier wird überprüft, ob die Eigenschaften, die in den Attributen des Bildobjekts gespeichert sind, mit den tatsächlichen Eigenschaften des Bildes übereinstimmen. ( 4 ) Modifizieren der Bilder Process ( ) : Das Bild wird bearbeitet und überschrieben. Verändert werden kann das Bildformat (zB JPEG zu GIF), Komprimierungsqualität (niedrig, mittel, hoch) oder das Dateiformat, (zB TIFF, JFIF, BMPF). Weitere Funktionen sind: Skalieren (zB von einem fixen Skalierung zu einer spezifischen Anzahl von Pixeln), und Cutting. ProcessCopy ( ) : Das Bild wird bearbeitet und kopiert. Funktionalität siehe Process ( )

29 Visuelle Informationen - Methoden /Operationen
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 ( 5 ) Kopieren / Verschieben von Bildern copy ( ) , processCopy ( ) (siehe Punkt 4) dienen zum Kopieren des (ev. bearbeiteten) Bildes. export ( ) , import ( ) , importFrom ( ) : ermöglichen ein einfaches Transferieren von Bilddaten von der Datenbank zu einer externen Datenquelle und umgekehrt. ( 6 ) Manuelle Festlegung von Bildmerkmalen setProperties ( ) : bestimmte Merkmale können auch explizit bestimmt werden (zB setUpdateTime ( ) : legt die Zeit fest, wann das Bild zuletzt verändert wurde – defaultwert ist SYSDATE)

30 Inhaltsbasiertes Retrieval - Konzepte
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 Im Folgenden werden die Konzepte des inhaltsbasierten Retrievals vorgestellt: Am Beginn wird ein Überblick über die Funktionsweise des inhaltsbasierten Retrievals gegeben. Im Vordergrund stehen die visuellen Attribute eines Bildes (globale und lokale Farben, Textur und Struktur). Ein wichtiges Konzept im inhaltsbasierten Retrieval ist der Vergleich von Bildern. Bei diesem Bildvergleich werden die oben genannten visuellen Attribute mit verschiedenen Gewichten belegt (d.h. dass etwa die Ähnlichkeit der Form wichtiger sein kann als die Ähnlichkeit der Farben) Bei der Suche nach bestimmten Bildern wird eine Indizierung verwendet. Die Suche kann dadurch erheblich beschleunigt werden.

31 Wie inhaltsbasiertes Retrieval funktioniert
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 Jedes Bild, das in die Datenbank kopiert oder eingefügt wird, wird auf bestimmte visuelle Attribute analysiert. Ein inhaltsbasiertes Retrieval-System verarbeitet die Informationen, die in den Bilddaten enthalten sind und erschafft ein abstraktes Objekt dieses Inhalts in Hinsicht auf die visuellen Eigenschaften. Eine kompakte Repräsentation des Bildinhalts wird im Signaturvektor gespeichert. Der Vorteil dieser Vorgangsweise ist, dass einige Abfragen auf dem abstrakten Objekt (ORDImageSignature ) schneller bearbeitet werden, als wenn sie auf dem Bild selber ausgeführt werden. Die visuellen Attribute des Bildes, die in der Signatur gespeichert sind, sind folgende: Globale Farben: Verteilung der Farben innerhalb des Bildes. Diese Verteilung schließt alle Farben ein, aber nicht die Lage. Lokale Farben: Verteilung der Farben und wo genau sie im Bild vorkommen (hier ist die Lage von Bedeutung!). Textur: Low-level Muster und Texturen innerhalb des Bildes, wie zB Körnigkeit oder Ebenheit. Struktur: Formen, die im Bild erscheinen. Sie werden bestimmt durch Formcharakterisierungstechniken, wie zB Kantenerkennung. All diese Daten über die Merkmale der visuellen Attribute werden in der Signatur gespeichert.

32 Wie inhaltsbasiertes Retrieval funktioniert
Wie inhaltsbasiertes Retrieval funktioniert ( 1 ) Globale Farben and Lokale Farben Globale Farben : vollständige Ähnlichkeit (Punktzahl=0.0) Lokale Farben : keine Ähnlichkeit (Punktzahl=100) * Hier steht die Abbildung f-32 Vergleicht man die beiden Bilder der Abbildung (f-32) in Bezug auf globale Farben, dann ist die Ähnlichkeit zu 100 % gegeben, da jede der drei Farben (Rot, Blau, Gelb) mit der selben Häufigkeit in beiden Bildern vorkommt. Bezieht man den Vergleich auf lokale Farben, so beträgt die Ähnlichkeit 0 %, da nach lokalen Farbübereinstimmungen (Überschneidungen der Farben beim Übereinanderlegen der Bilder) gesucht wurde, die aber nicht vorhanden sind. Die Punktzahl ist das Ergebnis einer ähnlichkeitsmessenden Funktion. Das Ergebnis ist 0.0, wenn die Bilder anhand der gewählten Kriterien gleich sind. Kann keine Übereinstimmung gefunden werden, liefert die Funktion als Punktzahl 100.

33 Wie inhaltsbasiertes Retrieval funktioniert
Wie inhaltsbasiertes Retrieval funktioniert Abbildung a Abbildung a sehr ähnlich (Punktzahl=0.0) bezüglich globaler Farben. Abbildung b sehr ähnlich (Punktzahl= ) bezüglich lokaler Farben. Abbildung b * Hier steht die Abbildung f-33a Die Abbildung (f-33a) zeigt zwei Bilder, bei denen der Vergleich für globale Farben eine Punktzahl von 0.0 für “sehr ähnlich” ergibt. Der Anteil an roten und blauen Farbpunkten ist, auf das Gesamtbild bezogen, bei beiden Bildern gleich, obwohl die Position der Farben unterschiedlich ist. *Hier steht die Abbildung f-33b Der Vergleich der zwei unteren Bilder (Abbildung f-33b) ergibt eine Punktzahl von für lokale Farben, also auch “sehr ähnlich“. Der schwarze Hintergrund ist bei beiden Bildern sehr ähnlich, die Position des blauen Vierecks (linkes Bild) stimmt mit der Position des blauen Ovals (rechtes Bild) überein, nur einige Farbpunkte unterscheiden sich durch die verschiedenen blauen Formen.

34 Wie inhaltsbasiertes Retrieval funktioniert
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) Die Beschreibung mittels Textur eignet sich am ehesten für Bilder, die eine komplette Textur haben, also zB Kataloge aus Holzmaserungen, Marmor, Sand oder Steine. Diese sind allgemein schwer mit Hilfe von Schlüsselworten zu katalogisieren, weil das Vokabular für Texturen begrenzt ist. Abbildung a zeigt zwei ähnliche Texturen mit der Punktzahl 4.1.

35 Wie inhaltsbasiertes Retrieval funktioniert
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. Eine weitere Vergleichsmöglichkeit von Bildern ist es, die Ähnlichkeit der Struktur zu messen. Strukturen sind streng beschränkt auf bestimmte Größen oder Positionen im Bild. Objekte von gleicher Größe oder Position sind ähnlicher als Objekte in verschiedenen Größen. Strukturen sind nützlich um Objekte zu erfassen, wie zB eine Horizontlinie in einer Landschaft, rechteckigen Strukturen bei Gebäuden oder organische Strukturen von Bäumen. Sehr nützlich sind Strukturen auch bei Abfragen einfacher Formen, wie Kreise oder Rechtecke, besonders wenn das gesuchte Bild von Hand gezeichnet wurde oder Farben nicht relevant sind. * Hier steht Abbildung f-53 In der Abbildung (f-53) werden zwei Bilder mit sehr ähnlicher Struktur gezeigt. (Abbildung a) sehr ähnlich in Struktur.

36 Wie Ähnlichkeitssuche funktioniert
Wie Ähnlichkeitssuche funktioniert ( 1 ) Gewicht Grad der Ähnlichkeit / Verschiedenheit zwischen zwei Bildern. Werte des Gewichtes Positive reelle Zahlen Addiert zu 100% Beim Vergleichen von zwei Bildern spielt der Grad der Ähnlichkeit oder auch Verschiedenheit eine große Rolle. Die visuellen Eigenschaften sind nicht alle gleich wichtig im Vergleichsprozess, deshalb erhalten alle Attribute ein “Gewicht”, mit dem ein Ähnlichkeitsmaß für jede visuelle Eigenschaft errechnet wird. Jedes Gewicht repräsentiert, wie empfindlich der Vergleichsprozess sein soll, zB sehr ähnlich, wenig ähnlich oder gar nicht ähnlich. Die Werte sind positive reelle Zahlen und dürfen in Summe 100 % nicht überschreiten.

37 Wie Ähnlichkeitssuche funktioniert
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 *Hier steht Abbildung f-37 In der Abbildung (f-37) werden als Beispiel verschiedene Entfernungen der vier visuellen Attribute (globale und lokale Farben, Textur und Struktur) dargestellt. Eine kleinere Entfernung bedeutet eine bessere Übereinstimmung und damit auch eine größere Ähnlichkeit. Die Punktzahl reicht von 0 (keine Unterschiede) bis 100 (sehr viele Unterschiede). Neben den Entfernungen werden auch die Gewichte der Attribute angegeben. Die Ähnlichkeit des Gesamtbildes hängt dann von der Entfernung jedes einzelnen visuellen Attributes und der Gewichtung ab. Entfernung und Gewichtung jedes Attributes werden multipliziert und damit eine gewichtete Summe gebildet. Diese Gewichtungssumme reflektiert am Ende die Ähnlichkeit (oder Verschiedenheit) des Testbildes mit dem Vergleichsbild. [ Gewichtung ]

38 Wie Ähnlichkeitssuche funktioniert
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. Die Gewichtungssumme, welche die Ähnlichkeit zweier Bilder reflektiert, wird mit einem Grenzwert verglichen. Der Grenzwert zeigt an, mit welcher Punktezahl das Testbild noch als “ähnlich“ eingestuft wird, und ab wann nicht mehr. Dadurch können bei der inhaltsbasierten Suche unwichtige Bilder sofort eliminiert werden, und man kann sich auf die Bilder konzentrieren, die den gesuchten Inhalt auch wirklich beinhalten.

39 Wie Ähnlichkeitssuche funktioniert
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; Beim Vergleich der Ähnlichkeit von Bildern wird ein Grenzwert zugewiesen: In der Methode ORDSYS.IMGSimilar( ) wird die generierte Signatur (query_signatur) und der Grenzwert (25) verwendet. Beispiel: 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, --Generierte Signatur 'color="0.2" texture="0.1" shape="0.5“ location="0.2"', 25) = 1; --Grenzwert (25) END; Generierte Signatur

40 Indexunterstützung zum Signaturvergleich
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. Für eine bessere Performanz bei Abfragen und großen Bilddatenbanken werden Indexe verwendet um die Signaturen zu vergleichen. Durch die Verwendung von Indexen wird die Suche erheblich beschleunigt. Erstellen eines Indexes: 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. Alle inhaltsbasierten Abfragen mit der Methode IMGSimilar() verwenden diesen Index.

41 interMedia : komplettes Beispiel
interMedia : komplettes Beispiel Beispiel : Bücherdatenbank Erstellung des Bildverzeichnisses für die Bücherdatenbank (Benutzer: system) CREATE DIRECTORY IMGDIR AS 'C:\'; komplettes Beispiel zur Erläuterung der Funktionalität von interMedia: Erstellung einer Bücherdatenbank Dazu muss ein Bildverzeichnis erstellt werden (Benutzer: system): CREATE DIRECTORY IMGDIR AS 'C:\';

42 Erstellung der Bildtabelle
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 ); Im folgenden SQL-Statement wird eine Tabelle “buecher“ angelegt, mit dem Primärschlüssel „id“, und mehreren Attributen (isbn, titel, autor, preis, inhalt). Außerdem gibt es ein Attribut „foto“, mit dem Datentyp ORDSYS.ORDImage, und die dazugehörige Signatur des Bildes. 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ügen eines Buches und Initiierung des Bildelements
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, , 'Java, die Referenz', 'David Flanagan', 60, 'Java-Klassen', ORDSYS.ORDImage.init('file', 'IMGDIR', 'Sample.jpg'), ORDSYS.ORDImageSignature.init() ); Einfügeprozess: Methode zum Einfügen des ersten Tupels, zum Laden des Bildes und zur Generierung der Signatur (wird auf der nächsten Folie fortgesetzt): Am Beginn werden einige Variablen deklariert, die später für das Importieren des Bildes und die Generierung der Signatur benötigt werden. Außerdem wird der erste Datensatz in die Datenbank eingefügt. Das Bild soll aus dem Bildverzeichnis IMGDIR sein, und hat den Namen „Sample.jpg“. Durch den Aufruf von ORDImageSignature.init( ) wird eine Signatur erstellt. 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, , 'Java, die Referenz', 'David Flanagan', 60, 'Java-Klassen', ORDSYS.ORDImage.init('file', 'IMGDIR', 'Sample.jpg'), ORDSYS.ORDImageSignature.init() );

44 Einfügeprozess (2/2) Laden des Bildes und die Generierung der Signatur
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; Einfügeprozess (Fortsetzung): Durch die folgenden Anweisungen wird das Bild geladen und die dazugehörige Signatur des Bildes generiert. Zuerst werden die beiden Attribute (foto und foto_sig) des gewünschten Datensatzes für ein Update ausgewählt. SELECT B.foto, B.foto_sig INTO img, sig FROM buecher B WHERE B.id = 1 FOR UPDATE; Danach wird das Bild importiert und die dazugehörige Signatur generiert: img.import(ctx); sig.generateSignature(img); Am Schluss müssen nur noch das importierte Bild und die generierte Signatur des Datensatzes upgedatet werden. UPDATE buecher B SET B.foto = img, B.foto_sig = sig WHERE B.id = 1; END;

45 Überprüfung der Metadaten
Ü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; Ü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)
Ä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; Ähnlichkeitssuche: Zur Ähnlichkeitssuche wird ein Cursor deklariert, der die vorhandenen Datensätze durchlaufen soll, und Bilder sucht, die den angegebenen Eigenschaften ähnlich sind (Farbe: 0,6; Textur: 0,2; Form: 0,1; Lage: 0,1). In diesem Beispiel ist also ist die Ähnlichkeit der Merkmale Form und Lage ein wenig wichtiger als die Ähnlichkeit der Farbe. Der Grenzwert gibt an, wie ähnlich die Bilder in ihrer Gesamtheit sein müssen, um in der Ergebnismenge vertreten zu sein. Die Ähnlichkeitsabfrage mit IMGSimilar( ) liefert „1“ zurück, falls das Testbild den Ähnlichkeitskriterien entspricht. 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)
Ä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; Ähnlichkeitssuche (Fortsetzung): Hier wird ein Bild ausgewählt, das als Vergleichsbasis dienen soll, ein Grenzwert festgesetzt, und dann die Ähnlichkeitssuche durchgeführt. Der in der vorigen Folie deklarierte Cursor wird jetzt dazu verwendet, um die Datensätze auszuwählen. Als Ergebnis wird die ID der ähnlichen Fotos ausgegeben. 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; Bei der kombinierten Abfrage wird die Suche durch mehrere Angaben eingeschränkt. Im folgenden Beispiel wird nicht nur die Ähnlichkeit der Bilder verglichen, sondern auch die Breite des Bildes und die Größe des Bildes werden eingeschränkt: 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; Einschränkungen der Ergebnismenge können wie gewohnt in der Where-Klausel des SQL-Statements mit UND- oder ODER-Verknüpfung angegeben werden.

49 LUT4: Forschungsprodukte
LUT4: Forschungsprodukte


Herunterladen ppt "Multimedia Datenbankprodukte"

Ähnliche Präsentationen


Google-Anzeigen