Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Michael Maduch1 Multimediale Datenbanken mit Oracle8i interMedia Audio, Image and Video Vortrag für Oberseminar Datenbanken Michael Maduch.

Ähnliche Präsentationen


Präsentation zum Thema: "Michael Maduch1 Multimediale Datenbanken mit Oracle8i interMedia Audio, Image and Video Vortrag für Oberseminar Datenbanken Michael Maduch."—  Präsentation transkript:

1 Michael Maduch1 Multimediale Datenbanken mit Oracle8i interMedia Audio, Image and Video Vortrag für Oberseminar Datenbanken Michael Maduch

2 2 Inhalt 1. Einleitung 2. ORDAudio 3. ORDVideo 4. ORDImage

3 Michael Maduch3 Einleitung -interMedia Audio, Image and Video ist eine Komponente von Oracle8i interMedia -diese Komponente erlaubt die Verwaltung von Bilder, Tönen und Video in einer integrierten Weise mit anderen Unternehmensinformationen über Objekttypen und benutzerdefinierte Datentypen -interMedia audio, image and video unterstützt das Speichern, Wiederfinden und Verwalten multimedialer Daten in Oracle8i

4 Michael Maduch4 Einleitung - folgendes kann verwaltet werden: -Binary large objects (BLOBs) -File-based large objects (BFILEs) - URLs - Streaming audio or video - andere spezielle Multimediaformate

5 Michael Maduch5 Einleitung -Oracle8i benutzt Objekttypen, ähnlich Java und C++- Klassen, zum beschreiben von Sound-, Bild- und Videodaten - diese Objekttypen sind: -ORDAudiofür Audiodaten -ORDVideofür Videodaten -ORDImagefür Bilddaten -ORDSourcefür Anwendungen

6 Michael Maduch6 Einleitung - diese Objekte enthalten Attribute (Metadaten und Mediendaten) und Methoden (zur Datenmanipulation) -Mediendaten sind Daten zum aktuellen Medium -Metadaten sind Informationen über die Daten, wie -Objektlänge, Kompression, Format -Speicherinformationen (Datentyp, Speicherplatz/Ort) -Sourcenamen -Charakteristische Daten der jeweiligen Medien (Audio, Video oder Bild) -Methoden sind Prozeduren, welche auf die Objekte angewendet werden können, z.B. getContent() oder process()

7 Michael Maduch7 Einleitung -die interMedia-Objekte (ORDAudio, ORDVideo,...) haben ein gemeinsames Speichermodell für Daten -gespeichert werden kann in einer Datenbank, in einem BLOB, dabei unterstützt die Transaktionskontrolle von Oracle oder -außerhalb einer Datenbank (BFILEs, HTTP-Server, Medien-Server)

8 Michael Maduch8 Einleitung - Oracle8i interMedia audio, image and video ist so entworfen, daß es erweitert werden kann -von Haus aus unterstützt es eine Basis-Menge an Audio-, Bild- und Videodaten-Eigenschaften -erweiterbar mit Hilfe von: -Erzeugen eines neuen Formates, basierend auf Definition vorhandener Formate -Erzeugen neuer Plugins für erweiterte Unterstützung bei den Mediendaten

9 Michael Maduch9 Einleitung -Oracle8i ist ein ORDB-Verwaltungssystem -Objektrelationale Typen: ORDAudio, ORDVideo ORDImage ORDSource -weitere Informationen darüber: -Oracle8i Application Developer´s Guide - Large Objects (LOBs) -Oracle8i Concepts

10 Michael Maduch10 Einleitung -Anwendungen können mir Hilfe von SQL, PL/SQL oder Java über ORD-Typen auf MM-Daten zugreifen und diese auch manipulieren -für Benutzung von Java siehe auch: Oracle8i interMedia audio, image and video Java Client Users Guide and Reference

11 Michael Maduch11 Einleitung -Zugriff auf Attribute innerhalb eines Objekts erfolgt mit der Syntax: variable.data_attribute -Aufruf von Methoden eines Objekts erfolgt mit der Syntax: variable.function(parameter1,parameter2,...)

12 Michael Maduch12 Der Dateityp Audio

13 Michael Maduch13 Audio -unterstützte Audioformate

14 Michael Maduch14 Audio

15 Michael Maduch15 Audio -weitere Audioformate: -AIFF - Format -AIFF-C - Format

16 Michael Maduch16 Audio -Definition des Typs ORDAudio CREATE OR REPLACE TYPE ORDAudio AS OBJECT ( -- ATTRIBUTES description VARCHAR2(4000), source ORDSource, format VARCHAR2(31), mimeType VARCHAR2(4000), comments CLOB,

17 Michael Maduch17 -- AUDIO RELATED ATTRIBUTES encoding VARCHAR2(256), numberOfChannels INTEGER, samplingRate INTEGER, sampleSize INTEGER, compressionType VARCHAR2(4000), audioDuration INTEGER, -- METHODS -- Methods associated with the date attribute MEMBER FUNCTION getUpdateTime RETURN DATE, PRAGMA RESTRICT_REFERENCES(getUpdateTime, WNDS, WNPS, RNDS, RNPS), MEMBER PROCEDURE setUpdateTime(current_time DATE), -- Methods associated with the description attribute MEMBER PROCEDURE setDescription(user_description IN VARCHAR2), MEMBER FUNCTION getDescription RETURN VARCHAR2, PRAGMA RESTRICT_REFERENCES(getDescription, WNDS, WNPS, RNDS, RNPS),

18 Michael Maduch18 -- Methods associated with the mimeType attribute MEMBER PROCEDURE setMimeType(mime IN VARCHAR2), MEMBER FUNCTION getMimeType RETURN VARCHAR2, PRAGMA RESTRICT_REFERENCES(getMimeType, WNDS, WNPS, RNDS, RNPS), -- Methods associated with the source attribute MEMBER FUNCTION processSourceCommand( ctx IN OUT RAW, cmd IN VARCHAR2, arguments IN VARCHAR2, result OUT RAW) RETURN RAW, MEMBER FUNCTION isLocal RETURN BOOLEAN, PRAGMA RESTRICT_REFERENCES(isLocal, WNDS, WNPS, RNDS, RNPS), MEMBER PROCEDURE setLocal, MEMBER PROCEDURE clearLocal,

19 Michael Maduch19 MEMBER PROCEDURE setSource( source_type IN VARCHAR2, source_location IN VARCHAR2, source_name IN VARCHAR2), MEMBER FUNCTION getSource RETURN VARCHAR2, PRAGMA RESTRICT_REFERENCES(getSource, WNDS, WNPS, RNDS, RNPS), MEMBER FUNCTION getSourceType RETURN VARCHAR2, PRAGMA RESTRICT_REFERENCES(getSourceType, WNDS, WNPS, RNDS, RNPS), MEMBER FUNCTION getSourceLocation RETURN VARCHAR2, PRAGMA RESTRICT_REFERENCES(getSourceLocation, WNDS, WNPS, RNDS, RNPS), MEMBER FUNCTION getSourceName RETURN VARCHAR2, PRAGMA RESTRICT_REFERENCES(getSourceName, WNDS, WNPS, RNDS, RNPS),

20 Michael Maduch20 MEMBER PROCEDURE import(ctx IN OUT RAW), MEMBER PROCEDURE importFrom( ctx IN OUT RAW, source_type IN VARCHAR2, source_location IN VARCHAR2, source_name IN VARCHAR2), MEMBER PROCEDURE export( ctx IN OUT RAW, source_type IN VARCHAR2, source_location IN VARCHAR2, source_name IN VARCHAR2), MEMBER FUNCTION getContentLength(ctx IN OUT RAW) RETURN INTEGER, PRAGMA RESTRICT_REFERENCES(getContentLength, WNDS, WNPS, RNDS, RNPS), MEMBER FUNCTION getContentInLob( ctx IN OUT RAW, dest_lob IN OUT NOCOPY BLOB, mimeType OUT VARCHAR2, format OUT VARCHAR2),

21 Michael Maduch21 MEMBER FUNCTION getContent RETURN BLOB, PRAGMA RESTRICT_REFERENCES(getContent, WNDS, WNPS, RNDS, RNPS), MEMBER PROCEDURE deleteContent, -- Methods associated with file operations on the source MEMBER FUNCTION openSource(userArg IN RAW, ctx OUT RAW) RETURN INTEGER, MEMBER FUNCTION closeSource(ctx IN OUT RAW) RETURN INTEGER, MEMBER FUNCTION trimSource(ctx IN OUT RAW, newlen IN INTEGER) RETURN INTEGER, MEMBER PROCEDURE readFromSource( ctx IN OUT RAW, startPos IN INTEGER, numBytes IN OUT INTEGER, buffer OUT RAW), MEMBER PROCEDURE writeToSource( ctx IN OUT RAW, startPos IN INTEGER, numBytes IN OUT INTEGER, buffer IN RAW),

22 Michael Maduch22 -- Methods associated with the comments attribute MEMBER PROCEDURE appendToComments(amount IN BINARY_INTEGER, buffer IN VARCHAR2), MEMBER PROCEDURE writeToComments(offset IN INTEGER, amount IN BINARY_INTEGER, buffer IN VARCHAR2), MEMBER FUNCTION readFromComments(offset IN INTEGER, amount IN BINARY_INTEGER := 32767) RETURN VARCHAR2, PRAGMA RESTRICT_REFERENCES(readFromComments, WNDS, WNPS, RNDS, RNPS), MEMBER FUNCTION locateInComments(pattern IN VARCHAR2, offset IN INTEGER := 1, occurrence IN INTEGER := 1) RETURN INTEGER, MEMBER PROCEDURE trimComments(newlen IN INTEGER), MEMBER PROCEDURE eraseFromComments(amount IN OUT NOCOPY INTEGER, offset IN INTEGER := 1),

23 Michael Maduch23 MEMBER PROCEDURE deleteComments, MEMBER PROCEDURE loadCommentsFromFile(fileobj IN BFILE, amount IN INTEGER, from_loc IN INTEGER := 1, to_loc IN INTEGER := 1), MEMBER PROCEDURE copyCommentsOut(dest IN OUT NOCOPY CLOB, amount IN INTEGER, from_loc IN INTEGER := 1, to_loc IN INTEGER := 1), MEMBER FUNCTION compareComments( compare_with_lob IN CLOB, amount IN INTEGER := , starting_pos_in_comment IN INTEGER := 1, starting_pos_in_compare IN INTEGER := 1) RETURN INTEGER, PRAGMA RESTRICT_REFERENCES(compareComments, WNDS, WNPS, RNDS,RNPS), MEMBER FUNCTION getCommentLength RETURN INTEGER, PRAGMA RESTRICT_REFERENCES(getCommentLength, WNDS, WNPS, RNDS, RNPS),

24 Michael Maduch24 -- Methods associated with audio attributes accessors MEMBER PROCEDURE setFormat(knownformat IN VARCHAR2), MEMBER FUNCTION getFormat RETURN VARCHAR2, PRAGMA RESTRICT_REFERENCES(getFormat, WNDS, WNPS, RNDS, RNPS), MEMBER FUNCTION getFormat(ctx IN OUT RAW) RETURN VARCHAR2, MEMBER PROCEDURE setEncoding(knownEncoding IN VARCHAR2), MEMBER FUNCTION getEncoding RETURN VARCHAR2, PRAGMA RESTRICT_REFERENCES(getEncoding, WNDS, WNPS, RNDS, RNPS), MEMBER FUNCTION getEncoding(ctx IN OUT RAW) RETURN VARCHAR2, MEMBER PROCEDURE setNumberOfChannels(knownNumberOfChannels IN INTEGER), MEMBER FUNCTION getNumberOfChannels RETURN INTEGER, PRAGMA RESTRICT_REFERENCES(getNumberOfChannels, WNDS, WNPS, RNDS, RNPS), MEMBER FUNCTION getNumberOfChannels(ctx IN OUT RAW) RETURN INTEGER, MEMBER PROCEDURE setSamplingRate(knownSamplingRate IN INTEGER), MEMBER FUNCTION getSamplingRate RETURN INTEGER, PRAGMA RESTRICT_REFERENCES(getSamplingRate, WNDS, WNPS, RNDS, RNPS), MEMBER FUNCTION getSamplingRate(ctx IN OUT RAW) RETURN INTEGER,

25 Michael Maduch25 MEMBER PROCEDURE setSampleSize(knownSampleSize IN INTEGER), MEMBER FUNCTION getSampleSize RETURN INTEGER, PRAGMA RESTRICT_REFERENCES(getSampleSize, WNDS, WNPS, RNDS, RNPS), MEMBER FUNCTION getSampleSize(ctx IN OUT RAW) RETURN INTEGER, MEMBER PROCEDURE setCompressionType(knownCompressionType IN VARCHAR2), MEMBER FUNCTION getCompressionType RETURN VARCHAR2, PRAGMA RESTRICT_REFERENCES(getCompressionType, WNDS, WNPS, RNDS,RNPS), MEMBER FUNCTION getCompressionType(ctx IN OUT RAW) RETURN VARCHAR2, MEMBER PROCEDURE setAudioDuration(knownAudioDuration IN INTEGER), MEMBER FUNCTION getAudioDuration RETURN INTEGER, PRAGMA RESTRICT_REFERENCES(getAudioDuration, WNDS, WNPS, RNDS, RNPS), MEMBER FUNCTION getAudioDuration(ctx IN OUT RAW) RETURN INTEGER, MEMBER PROCEDURE setKnownAttributes(knownFormat IN VARCHAR2, knownEncoding IN VARCHAR2, knownNumberOfChannels IN INTEGER, knownSamplingRate IN INTEGER, knownSampleSize IN INTEGER, knownCompressionType IN VARCHAR2, knownAudioDuration IN INTEGER),

26 Michael Maduch26 -- Methods associated with setting all the properties MEMBER PROCEDURE setProperties(ctx IN OUT RAW), MEMBER FUNCTION checkProperties(ctx IN OUT RAW) RETURN BOOLEAN, MEMBER FUNCTION getAttribute( ctx IN OUT RAW, name IN VARCHAR2) RETURN VARCHAR2, MEMBER PROCEDURE getAllAttributes( ctx IN OUT RAW, attributes IN OUT NOCOPY CLOB), -- Methods associated with audio processing MEMBER FUNCTION processAudioCommand( ctx IN OUT RAW, cmd IN VARCHAR2, arguments IN VARCHAR2, result OUT RAW) RETURN RAW );

27 Michael Maduch27 Audio -werden Methoden benutzt, die als erstes Argument ctx haben, müssen Voraussetzungen geschaffen werden -vor dem ersten Aufruf dieser Methoden muß der Client die ctx-Struktur allokieren und mit NULL initialisieren und anschließend die openSoucre()- Methode aufrufen -jetzt kann das Source-Plugin den Kontext für den Client initialisieren -wenn die Verarbeitung beendet ist, sollte der Client die closeSource()-Methode aufrufen

28 Michael Maduch28 Audio Beispiel einer Audio - Tabellen - Definition CREATE TABLE TAUD(n NUMBER, aud ORDSYS.ORDAUDIO) storage (initial 100K next 100K pctincrease 0); INSERT INTO TAUD VALUES(1, ORDSYS.ORDAudio( NULL, ORDSYS.ORDSOURCE(EMPTY_BLOB(), NULL, NULL, NULL, SYSDATE, NULL), NULL, EMPTY_CLOB(), NULL, 0, 0, 0, NULL, 0) );

29 Michael Maduch29 Audio INSERT INTO TAUD VALUES(2, ORDSYS.ORDAudio( NULL, ORDSYS.ORDSOURCE(EMPTY_BLOB(), NULL, NULL, NULL, SYSDATE, NULL), NULL, EMPTY_CLOB(), NULL, 0, 0, 0, NULL, 0) ); CREATE TABLE TS(n NUMBER, s ORDSYS.ORDSOURCE); INSERT INTO TS VALUES(1, ORDSYS.ORDSOURCE(EMPTY_BLOB(), NULL, NULL, NULL, SYSDATE, NULL)); INSERT INTO TS VALUES(2, ORDSYS.ORDSOURCE(EMPTY_BLOB(), NULL, NULL, NULL, SYSDATE, NULL));

30 Michael Maduch30 Audio INSERT INTO TS VALUES(3, ORDSYS.ORDSOURCE(EMPTY_BLOB(), NULL, NULL, NULL, SYSDATE, NULL)); INSERT INTO TS VALUES(4, ORDSYS.ORDSOURCE(EMPTY_BLOB(), NULL, NULL, NULL, SYSDATE, NULL));

31 Michael Maduch31 Audio -Packages oder PL/SQL-Plugins -dienen als Anleitung für Entwicklung eigener Audioformate -als Beispiel das Package: ORDPLUGINS.ORDX_DEFAULT_AUDIO CREATE OR REPLACE PACKAGE ORDX_DEFAULT_AUDIO authid current_user AS --AUDIO ATTRIBUTES ACCESSORS FUNCTION getFormat(ctx IN OUT RAW, obj IN ORDSYS.ORDAudio) RETURN VARCHAR2;

32 Michael Maduch32 FUNCTION getEncoding(ctx IN OUT RAW, obj IN ORDSYS.ORDAudio) RETURN VARCHAR2; FUNCTION getNumberOfChannels(ctx IN OUT RAW, obj IN ORDSYS.ORDAudio) RETURN INTEGER; FUNCTION getSamplingRate(ctx IN OUT RAW, obj IN ORDSYS.ORDAudio) RETURN INTEGER; FUNCTION getSampleSize(ctx IN OUT RAW, obj IN ORDSYS.ORDAudio) RETURN INTEGER; FUNCTION getCompressionType(ctx IN OUT RAW, obj IN ORDSYS.ORDAudio) RETURN VARCHAR2; FUNCTION getAudioDuration(ctx IN OUT RAW, obj IN ORDSYS.ORDAudio) RETURN INTEGER; PROCEDURE setProperties(ctx IN OUT RAW, obj IN OUT NOCOPY ORDSYS.ORDAudio); FUNCTION checkProperties(ctx IN OUT RAW, obj IN OUT ORDSYS.ORDAudio) RETURN NUMBER; FUNCTION getAttribute(ctx IN OUT RAW, obj IN ORDSYS.ORDAudio, name IN VARCHAR2) RETURN VARCHAR2;

33 Michael Maduch33 PROCEDURE getAllAttributes(ctx IN OUT RAW, obj IN ORDSYS.ORDAudio, attributes IN OUT NOCOPY CLOB); --AUDIO PROCESSING METHODS FUNCTION processCommand(ctx IN OUT RAW, obj IN OUT NOCOPY ORDSYS.ORDAudio, cmd IN VARCHAR2, arguments IN VARHAR2, result OUT RAW) RETURN RAW; PRAGMA RESTRICT_REFERENCES(getFormat, WNDS, WNPS, RNDS, RNPS); PRAGMA RESTRICT_REFERENCES(getEncoding, WNDS, WNPS, RNDS, RNPS); PRAGMA RESTRICT_REFERENCES(getNumberOfChennels, WNDS, WNPS, RNDS, RNPS); PRAGMA RESTRICT_REFERENCES(getSamplingRate, WNDS, WNPS, RNDS, RNPS); PRAGMA RESTRICT_REFERENCES(getSampleSize, WNDS, WNPS, RNDS, RNPS); PRAGMA RESTRICT_REFERENCES(getCompressionType, WNDS, WNPS, RNDS, RNPS); PRAGMA RESTRICT_REFERENCES(getAttribute, WNDS, WNPS, RNDS, RNPS); PRAGMA RESTRICT_REFERENCES(getAudioDuration, WNDS, WNPS, RNDS, RNPS); END; /

34 Michael Maduch34 Audio - weiter Packages ORDPLUGINS.ORDX_AUFF_AUDIO - Package ORDPLUGINS.ORDX_AIFF_AUDIO - Package ORDPLUGINS:ORDX_AIFC_AUDIO - Package ORDPLUGINS.ORDX_WAVE_AUDIO - Package

35 Michael Maduch35 Audio - Erweiterung von interMedia für Unterstützung neuer Audioformate -dies geschieht in 4 Schritten: -entwerfen eines neuen Audiodatenformates -implementieren des neuen Formates und benennen, z.B.: ORDX_MY_AUDIO.SQL -installieren des neuen Plugins unter ORDPLUGINS -Zugriffsrechte freigeben, z.B. für PUBLIC

36 Michael Maduch36 Audio -Package-Listing für eigenes Audioformat CREATE OR REPLACE PACKAGE BODY ORDX_MY_AUDIO AS --AUDIO ATTRIBUTES ACCESSORS FUNCTION getFormat(ctx IN OUT RAW, obj IN ORDSYS.ORDAudio) RETURN VARCHAR2 IS --Your variables go here BEGIN --Your code goes here END;

37 Michael Maduch37 Audio FUNCTION getEncoding(ctx IN OUT RAW, obj IN ORDSYS.ORDAudio) RETURN VARCHAR2 IS --Your variables go here BEGIN --Your code goes here END; FUNCTION getNumberOfChannels(ctx IN OUT RAW, obj IN ORDSYS.ORDAudio) RETURN INTEGER IS --Your variables go here BEGIN --Your code goes here END;...

38 Michael Maduch38 Audio - Beispiele Define a Song Object CREATE TYPE songObject as OBJECT ( cdRef REF CdObject, -- REF into the cd table songId VARCHAR2(20), title VARCHAR2(4000), artist VARCHAR2(4000), awards VARCHAR2(4000), timePeriod VARCHAR2(20), duration INTEGER, clipRef REF clipObject, -- REF into the clips table (music video) txtcontent CLOB, audioSource ORDSYS.ORDAUDIO );

39 Michael Maduch39 Audio Create a Table Named SongsTable CREATE TABLE SongsTable of songObject (UNIQUE (songId), songId NOT NULL);

40 Michael Maduch40 Audio Insert a Song into the SongsTable Table -- insert a song into the songs table INSERT INTO SongsTable VALUES (NULL, 00, Under Pressure, Queen, no awards, 80-90, 243, NULL, EMPTY_CLOB(), ORDSYS.ORDAudio(NULL, ORDSYS.ORDSource(EMPTY_BLOB(),NULL,NULL,NULL,NULL,NULL), NULL, NULL, EMPTY_CLOB(), NULL, NULL, NULL, NULL, NULL, NULL)); -- check songs insertion SELECT s.title FROM SongsTable s WHERE songId = 00

41 Michael Maduch41 Der Datentyp Video

42 Michael Maduch42 Video -die Definition des Typs ORDVideo CREATE OR REPLACE TYPE ORDVideo AS OBJECT ( -- ATTRIBUTES description VARCHAR2(4000), source ORDSource, format VARCHAR2(31), mimeType VARCHAR2(4000), comments CLOB,

43 Michael Maduch43 Video -- VIDEO RELATED ATTRIBUTES width INTEGER, height INTEGER, frameResolution INTEGER, frameRate INTEGER, videoDuration INTEGER, numberOfFrames INTEGER, compressionType VARCHAR2(4000), numberOfColors INTEGER, bitRate INTEGER, -- METHODS...

44 Michael Maduch44 Video -werden Methoden benutzt, die als erstes Argument ctx haben, müssen Voraussetzungen geschaffen werden -vor dem ersten Aufruf dieser Methoden muß der Client die ctx-Struktur allokieren und mit NULL initialisieren und anschließend die openSoucre()- Methode aufrufen -jetzt kann das Source-Plugin den Kontext für den Client initialisieren -wenn die Verarbeitung beendet ist, sollte der Client die closeSource()-Methode aufrufen

45 Michael Maduch45 Video - Beispiel einer Video-Tabellen-Definition CREATE TABLE TVID(n NUMBER, vid ORDSYS.ORDVIDEO) storage (initial 100K next 100K pctincrease 0); INSERT INTO TVID VALUES(1, ORDSYS.ORDVideo( NULL, ORDSYS.ORDSOURCE(EMPTY_BLOB(), NULL, NULL, NULL, SYSDATE, NULL), NULL, EMPTY_CLOB(),0,0,0,0,0,0,0,0,0) );

46 Michael Maduch46 Video INSERT INTO TVID VALUES(2, ORDSYS.ORDVideo( NULL, ORDSYS.ORDSOURCE(EMPTY_BLOB(), NULL, NULL, NULL,SYSDATE,NULL), NULL, EMPTY_CLOB(),0,0,0,0,0,0,0,0,0) );

47 Michael Maduch47 Video -Packages oder PL/SQL-Plugins ORDPLUGINS.ORDX_DEFAULT_VIDEO - Package -dient als Anleitung zur Entwicklung eigener Videoformate - weitere Packages ORDPLUGINS.ORDX_AVI_VIDEOAUDIO - Package ORDPLUGINS:ORDX_QT_VIDEO - Package ORDPLUGINS.ORDX_MOOV_VIDEO - Package ORDPLUGINS.ORDX_MPEG_VIDEO - Package

48 Michael Maduch48 Video -Erweiterung von interMedia zur Unterstützung neuer Videoformate -dies geschieht in 4 Schritten -entwerfen eines neuen Videodatenformates -implementieren des neuen Formates und benennen, z.B.: ORDX_MY_VIDEO.SQL -installieren des neuen Plugins unter ORDPLUGINS -Zugriffsrechte freigeben, z.B. für PUBLIC

49 Michael Maduch49 Video -Package für eigenes Audioformat CREATE OR REPLACE PACKAGE BODY ORDX_MY_VIDEO AS --VIDEO ATTRIBUTES ACCESSORS FUNCTION getFormat(ctx IN OUT RAW, obj IN ORDSYS.ORDVideo) RETURN VARCHAR2 IS --Your variables go here BEGIN --Your code goes here END;...

50 Michael Maduch50 -Beispiele Define a Clip Object CREATE TYPE clipObject as OBJECT ( videoRef REF VideoObject, -- REF into the video table clipId VARCHAR2(20), -- Id inside of the clip table title VARCHAR2(4000), director VARCHAR2(4000), casting ORDSYS.ORDAnnotations,-- Pairs of characters/actors category VARCHAR2(20), copyright VARCHAR2(4000), producer VARCHAR2(4000), awards VARCHAR2(4000), timePeriod VARCHAR2(20), rating VARCHAR2(256), duration INTEGER, cdRef REF CdObject, -- REF into a CdObject(soundtrack) txtcontent CLOB, coverImg REF ORDSYS.ORDImage, -- REF into the ImageTable videoSource ORDSYS.ORDVideo );

51 Michael Maduch51 Video Create a Table Named clipsTable CREATE TABLE ClipsTable of clipObject (UNIQUE (clipId), clipId NOT NULL) NESTED TABLE casting.annotations STORE AS annot_store_table2;

52 Michael Maduch52 Video Insert a Video Clip into the clipsTable Table -- Insert a Video Clip into the ClipsTable insert into ClipsTable values (NULL, 11, Oracle Commercial, Larry Ellison, ORDSYS.ORDAnnotations(NULL), commercial, Oracle Corporation,, no awards, 90s no rating,

53 Michael Maduch53 Video 30, NULL, EMPTY_CLOB(), NULL, ORDSYS.ORDVIDEO(Oracle Commercial 1 Video Clip, ORDSYS.ORDSource(EMPTY_BLOB(),NULL,NULL,NULL,NULL,NULL), QuickTime File Format, video/quicktime, EMPTY_CLOB(), 160, 120, 72, 15, 30, 450, Cinepak, 256, 15000));

54 Michael Maduch54 Der Datentyp Image

55 Michael Maduch55 Image -die unterstützten Bildformate

56 Michael Maduch56 Image

57 Michael Maduch57 Image -weitere Bildformate: -CALS Raster - Format -JFIF - Format -PCX - Format -PICT - Format -Raw Pixel - Format -Sun Raster - Format -Targa - Format -TIFF - Format

58 Michael Maduch58 Image -Definition des Typs 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...

59 Michael Maduch59 Image -werden Methoden benutzt, die als erstes Argument ctx haben, müssen Voraussetzungen geschaffen werden -vor dem ersten Aufruf dieser Methoden muß der Client die ctx-Struktur allokieren und mit NULL initialisieren und anschließend die Soucre.open()- Methode aufrufen -jetzt kann das Source-Plugin den Kontext für den Client initialisieren -wenn die Verarbeitung beendet ist, sollte der Client die Source.close()-Methode aufrufen

60 Michael Maduch60 Image -Beispiel einer Video-Tabellen-Definition CREATE TABLE emp ( ename VARCHAR2(50), salary NUMBER, job VARCHAR2(50), department INTEGER, photo ORDSYS.ORDImage, large_photo ORDSYS.ORDImage); DECLARE Image ORDSYS.ORDImage;

61 Michael Maduch61 Image BEGIN INSERT INTO emp VALUES (John Doe, 24000, Technical Writer, 123, ORDSYS.ORDImage(ORDSYS.ORDSource(empty_blob(),file,ORDIMGDIR, jdoe.gif,SYSDATE,0), NULL,NULL,NULL,NULL,NULL,NULL,NULL), ORDSYS.ORDImage(ORDSYS.ORDSource(empty_blob(),file,ORDIMGDIR, jdoe.gif,SYSDATE,0), NULL,NULL,NULL,NULL,NULL,NULL,NULL)); SELECT large_photo INTO Image FROM emp WHERE ename = John Doe FOR UPDATE; Image.setProperties; UPDATE emp SET large_photo = Image WHERE ename = John Doe; COMMIT; END; /

62 Michael Maduch62 Image -Beispiele Adding a New Column of Type ORDImage to the emp Table ALTER TABLE emp ADD (photo ORDSYS.ORDImage);

63 Michael Maduch63 Image Adding ORDImage Types to a New Table CREATE TABLE emp ( ename VARCHAR2(50), salary NUMBER, job VARCHAR2(50), department INTEGER, photo ORDSYS.ORDImage, large_photo ORDSYS.ORDImage );

64 Michael Maduch64 Image Insert a Row into a Table with Empty Data in the ORDImage Type Column (BLOB) INSERT INTO emp VALUES ( John Doe, 24000, Technical Writer, 123, ORDSYS.ORDImage(ORDSYS.ORDSource(empty_blob(), NULL,NULL,NULL,SYSDATE,1), NULL,NULL,NULL,NULL,NULL,NULL,NULL)); Insert a Row into a Table with an Image in the ORDImage Type Column (BFILE) INSERT INTO emp VALUES ( John Doe, 24000, Technical Writer, 123, ORDSYS.ORDImage(ORDSYS.ORDSource(empty_blob(),file,ORDIMGDIR, jdoe.gif,SYSDATE,0), NULL,NULL,NULL,NULL,NULL,NULL,NULL));

65 Michael Maduch65 Image Inhalts-basierte Suche bei Bilddaten -dies läßt Fragen basierend auf innere visuelle Attribute der Bilder durchführen -zum Beispiel Farbe, Struktur oder Textur -man ist nicht nur auf Schlüsselworte oder ähnliches angewiesen -die zu Grunde liegende Technologie wurde von Virage, Inc, einem führendem Unternehmen auf diesem Gebiet entwickelt

66 Michael Maduch66 Image -ein Beispiel: -eine Datenbank mit Bildern von Autos -man will alle roten Autos suchen -zuerst ein Bild mit rotem Auto auswählen und dann ähnliche Bilder suchen -da Autos aber immer irgendwie ähnlich aussehen, kann die Genauigkeit der Abfrage noch erhöht werden, indem man der Farbe mehr Gewicht verleiht als z.B. der Struktur

67 Michael Maduch67 Image -Anwendungen können mir Hilfe von SQL, PL/SQL oder Java über ORDVir Bilder zugreifen und diese auch manipulieren -für Benutzung von Java siehe auch: Oracle8i Visual Information Retrieval Java Client Users Guide and Reference

68 Michael Maduch68 Image -Zugriff auf Attribute innerhalb eines Objekts erfolgt mit der Syntax: variable.data_attribute -Aufruf von Methoden eines Objekts erfolgt mit der Syntax: variable.function(parameter1,parameter2,...)

69 Michael Maduch69 Image -es gibt zwei Möglichkeiten um Bilder suchen zu lassen: -über Informationen die Benutzer in DB eingetragen hat, wie Titel, beschreibende Schlüsselwörter in eingeschränktem Vokabular oder vorbestimmten Klassifikationen -über automatische Bildmerkmalsextraktion und Gegenstandserkennung, um Bildinhalt einzustufen, das ist Vorgehensweise bei inhalts-basierender Suche

70 Michael Maduch70 Image -der primäre Vorteil beim Benutzen der inhalts-basierenden Suche ist die Verringerung von Zeit und Aufwand beim Beschaffen von bild-basierenden Informationen -einige Gebiete, wo inhalts-basierende Suche nützlich sein kann: (hier ist die Abfrage: finde Gegenstand, der wie dieser aussieht) -Warenzeichen und Copyrights -Kunstgalerien und Museen -Mode und Stoff-Design -Kriminaltechnik -so könnte ein Käufer im Internet-Shop eine Suchanfrage eingeben: Finde grünen Mantel mit roten Punkten

71 Michael Maduch71 Image -ein inhatsbasierendes Suchsystem verarbeitet die enthaltenen Bilddaten und erschafft ein abstraktes Objekt dieses Inhalts in Hinsicht auf die visuellen Eigenschaften -einige Abfragen werden mit dem abstrakten Objekt schneller fertig, als mit dem Bild -so wird jedes Bild einer Datenbank analysiert und eine kompakte Repräsentation seines Inhalts in einer Signatur abgelegt

72 Michael Maduch72 Image -so eine Signatur enthält beispielsweise: global Color: Verteilung der Farben innerhalb des Bildes, diese Verteilung schließt alle Farben ein, aber nicht die Lage local Color: Verteilung der Farbe und wo sie im Bild vorkommt Texture: low-level Muster und Texturen innerhalb des Bildes, wie z.B. Körnigkeit oder Ebenheit Structure: Formen, die im Bild erscheinen, sie werden bestimmt durch Formcharakterisierungstechniken, wie Kantenerkennung Facial: repräsentiert die einzigartigen Charakteristiken von Gesichtern, wie Form und Größe der Nase, Augenabstand,... aber: Gesichtssignaturen werden mit einer separat erhältlichen Software (kaufen) von Viisage Technology, Inc.

73 Michael Maduch73 Image -all diese Kenndaten für visuelle Attribute werden in der Signatur gespeichert, diese hat eine Größe zwischen 1000 und 2000 Byte -für bessere Performance bei großen Bilddatenbanken ist es besser einen Index, basierend auf den Signaturen, zu erstellen

74 Michael Maduch74 Image -Bild kann gefunden werden, indem es mit einem Vergleichsbild zusammenpaßt (übereinstimmt) -der Vergleichsvorgang erfordert die Signaturen beider Bilder -Bilder sind aber selten gleich und so wird der Vergleich über eine ähnlichkeitsmessende Funktion, basierend auf den visuellen Attributen, geführt -als Ergebnis entsteht eine verhältnismäßige Entfernung zwischen beiden Bildern -dieses Ergebnis wird benutzt, um den Grad der Ähnlichkeit herauszufinden -kleinere Entfernung bedeutet bessere Übereinstimmung der Bilder

75 Michael Maduch75 Image -globale und lokale Farben -wie gesagt: globale Farben repräsentieren die Verteilung von Farben innerhalb eines Bildes, und lokale Farben repräsentieren die Verteilung einzelner Farben und ihre Lage im Bild

76 Michael Maduch76 Image Bild 1Bild 2 -werden die Bilder nun auf global Farben verglichen, dann sind sie gleich: -Ergebnis der ähnlichkeitsmessenden Funktion ist 0.0, weil jede Farbe mit gleicher Prozentzahl in beiden Bildern vorkommt -werden die Bilder auch nach lokalen Farbe verglichen, dann sind sie nicht gleich -hier ist das Ergebnis 100, weil es keine Überschneidungen gibt

77 Michael Maduch77 Image -Abbildung zeigt zwei Bilder, wo der Vergleich ein sehr nah (0.0) für globale Farben ergibt

78 Michael Maduch78 Image -Abbildung zeigt zwei Bilder, wo der Vergleich ein sehr nah ( ) für lokale Farbe ergibt

79 Michael Maduch79 Image -Textur und Struktur -Bilder, die komplette Texturen haben, z.B. Marmor oder Steine, sind allgemein schwer mit Hilfe von Schlüsselworten zu katalogisieren, weil das Vokabular für Texturen begrenzt ist -Texturen können allein (ohne Farben) oder aber auch mit kleinen Farbflächen, wie bei Holz oder Stoffmuster, verwendet werden

80 Michael Maduch80 Image -Abbildung zeigt zwei ähnliche Texturen

81 Michael Maduch81 Image -eine Struktur wird nicht strikt auf eine bestimmte Größe oder Position beschränkt -aber Objekte von gleicher Größe oder Position sind ähnlicher als Objekte in verschiedenen Größen -Strukturen sind nützlich um Objekte zu erfassen, wie die Horizontlinie einer Landschaft, rechteckigen Strukturen an Gebäuden oder organische Strukturen bei Bäumen -eine Struktur ist sehr nützlich zur Abfrage einfacher Formen, wie Kreise oder Rechtecke, besonders wenn das gesucht Bild von Hand gezeichnet wurde und Farben nicht so von Bedeutung sind

82 Michael Maduch82 Image -Abbildung zeigt zwei Bilder, die sehr nah in Bezug auf die Struktur sind

83 Michael Maduch83 Image -Gesichtserkennung -Visual Information Retrieval unterstützt die Gesichtserkennungssoftware von Viisage Technology, Inc. -Dieses Programm analysiert Bilder von Gesichtern und generiert eine Gesichtssignatur, basierend auf verschiedenen einmaligen biometrischen Charakteristika -Nach der Erzeugung der Signatur kann man die Methoden Convert(), VIRScoure() und VIRSimilar(), um Bilder zu vergleichen

84 Michael Maduch84 Image -wenn Bilder verglichen werden sollen, müssen die visuellen Eigenschaften ein Gewicht erhalten -damit errechnet Visual Information Retrieval ein Ähnlichkeitsmaß für jede visuelle Eigenschaft -jedes Gewicht repräsentiert, wie empfindlich der Vergleichsprozeß sein soll, z.B. sehr ähnlich, wenig ähnlich oder gar nicht ähnlich -mit den Gewichten wird ein sogenannter Score bzw. die Entfernung zwischen zwei Bilder ermittelt -der Score reicht von 0 (keine Unterschiede) bis 100 ( sehr viele Unterschiede)

85 Michael Maduch85 Image - Beispiele Create a New Table Containing an Image SQL> CREATE TABLE stockphotos (photo_id NUMBER, photographer VARCHAR2(64), annotation VARCHAR2(255), photo ORDSYS.ORDVir); Ergebnis: Column Name Null? Type PHOTO_ID NUMBER PHOTOGRAPHER VARCHAR2(64) ANNOTATION VARCHAR2(255) PHOTO ADT(2880)

86 Michael Maduch86 Image Add an Image Column to an Existing Table ALTER TABLE stockphotos ADD (photo ORDSYS.ORDVir); Retrieve an Image (Simple Read) DECLARE image ORDSYS.ORDVIR; myid INTEGER; BEGIN -- Select the desired photograph from the stockphotos table. SELECT photo INTO image FROM stockphotos WHERE photo_id = myid; END;

87 Michael Maduch87 Image Retrieve Images Similar to a Comparison Image - Global color: Local color: Texture: Structure: 0.4 DECLARE threshold NUMBER; compare_sig RAW(2000); compare_img ORDSYS.ORDVir; photo_id NUMBER; photographer VARCHAR2(64); annotation VARCHAR2(255); photo ORDSYS.ORDVIR;

88 Michael Maduch88 Image -- Define cursor for matching. Set weights for the visual attributes. CURSOR getphotos IS SELECT photo_id, photographer, annotation, photo FROM stockphotos T WHERE ORDSYS.VIRSimilar(T.photo.Signature, compare_sig, globalcolor="0.2" localcolor="0.3" texture="0.1" structure="0.4", threshold)=1; BEGIN -- Create BLOB object SELECT s.photo INTO compare_img FROM stockphotos s WHERE photo_id = 1; -- Generate signature of comparison image, which resides in compare_img. compare_img.Analyze; compare_sig:= compare_img.signature;

89 Michael Maduch89 Image -- Set the threshold value. threshold := 25; -- Retrieve rows for matching images OPEN getphotos; LOOP FETCH getphotos INTO photo_id, photographer, annotation, photo; EXIT WHEN getphotos%NOTFOUND; -- Display or store the results.. END LOOP; CLOSE getphotos; END;

90 Michael Maduch90 -Quellen -Oracle8i interMedia audio, image and video User´s Guide and Reference -Oracle8i Visual Information Retrieval User´s Guid and Reference


Herunterladen ppt "Michael Maduch1 Multimediale Datenbanken mit Oracle8i interMedia Audio, Image and Video Vortrag für Oberseminar Datenbanken Michael Maduch."

Ähnliche Präsentationen


Google-Anzeigen