Multimédiás adatbázisok Szemináriumi előadás 2011.április 4.

Slides:



Advertisements
Hasonló előadás
Tananyag: konzultáció
Advertisements

2012. tavaszi félév Vitéz Gergely. A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele.
Adatbázis gyakorlat 1. Szerző: Varga Zsuzsanna ELTE-IK (2004) Budapest
© Kozsik Tamás Adatbáziskezelés •Relációs adatbáziskezelők •Noha a Java objektum-elvű, egyelőre nem az objektum-elvű adatbáziskezelőket támogatja.
Adatbázisok SQL. TARTALOM Szijártó M.2 Témakörök  Az SQL tulajdonságai  A műveletek fajtái  Objektum-műveletek  Lekérdezések Tulajdonságok és műveletek.
PL/SQL folytatás Kurzorok Alprogramok Tárolt eljárások ADATBÁZIS ALAPÚ RENDSZEREK.
Felhasználói felületek és üzleti logika Bollobás Dávid ASP.NET
2012. tavaszi félév Vitéz Gergely. A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele.
Delphi programozás alapjai
Adatbázis kezelés. Hierarchikus modell Legrégebbi modell, ma már nem használatos. Az adatokat fákban tároljuk, ahol minden pont a szegmens adatokat, és.
Adatbázis alapú rendszerek
– SQL 2: Adatok kezelése – Tarcsi Ádám, január 30. Adatbázis gyakorlat.
– Adattáblák & adatok kezelése – Tarcsi Ádám január Adatbázis gyakorlat.
PL/SQL I. ADATBÁZIS ALAPÚ RENDSZEREK.  PL/SQL = Procedural Language/SQL  utasítást ; zárja le  PL/SQL blokk lezárása: /  kis- és nagybetű egyenértékű.
megismerése, mintaadatbázis létrehozása
INSERT INTO Egy vagy több rekordot ad hozzá a táblához. Egyetlen rekordot hozzáfűző kifejezés: INSERT INTO cél_tábla (mező1,mező2,…) VALUES (érték1, érték2,
Triggerek II. ADATBÁZIS ALAPÚ RENDSZEREK.  Az Oracle kifinomult módon támogatja a sorszámozások generálását  Szekvencia: olyan adatbázis-objektum, amely.
Adatbázis alapú rendszerek
Készítette: Sárközi Anikó
Delphi programozás alapjai Nagyváradi Anett PTE PMMK MIT.
SQL92 lehetőségek KL A tábla B tábla C view adatok VIEW működése utasítás: SELECT.. FROM A,B … SELECT.. FROM C Az adatok a hivatkozáskor állítódnak elő.
ORACLE ORDBMS adminisztrációs feladatok 6. rész dr. Kovács László 2004.
Adattáblák létrehozása, módosítása, tranzakciók, megszorítások Rózsa Győző.
Oktassunk adatbázis-kezelést! Micskei Zoltán Microsoft Referencia Iskola.
Oracle multimédia Kiss Attila Információs Rendszerek Tanszék
Delphi programozás 8. ELŐADÁS ADO ActiveX Data Objects.
WEB Technológiák ISAPI ME Általános Informatikai Tsz. dr. Kovács László.
PHP I. Alapok. Mi a PHP? PHP Hypertext Preprocessor Szkriptnyelv –Egyszerű, gyors fejlesztés –Nincs fordítás (csak értelmező) Alkalmazási lehetőségek:
Anyagadatbank c. tárgy gyakorlat Féléves tematika Adatbázis alapfogalmak, rendszerek Adatmodellek, adatbázis tervezés Adatbázis műveletek.
DML. Új rekord beszúrása: INSERT INTO tábla (oszlop1,oszlop2,…) VALUES (érték1,érték2,…); Rekord módosítása: UPDATE tábla SET oszlop = érték WHERE feltétel;
Access XP Kifejezés-szerkesztő Összehasonlító operátorok:
Adatbázis adminisztrátori ismeretek
Adattáblák létrehozása, módosítása, tranzakciók, megszorítások Rózsa Győző.
2012. tavaszi félév Vitéz Gergely. A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele.
2012. tavaszi félév Vitéz Gergely. A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele.
A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele a minimum elégséges érdemjegynek!
Felhasználók és jogosultságok
SQL DDL DATA DEFINITION LANGUAGE. Táblák létrehozása CREATE TABLE táblanév ( oszlopnév1 típus(méret) /DEFAULT érték/ /NOT NULL/, oszlopnév2 típus(méret)
Készítette: Tóth Ervin
Fejlesztés PHP-NUKE portál rendszerre Horváth Zoltán Második Magyarországi PHP Konferencia március 27. Copyright PHP Konferencia,
AICC, IEEE, SCORM, fogalmak. Tananyagok cseréje (export-import) Támogatja az együttműködéseket Támogatja a felhasználóbarát környezet kialakítását Megoldja.
Készítette: Lipp Marcell
SQL-Structured Query Language. Parancs(utasítás) csoportok CREATE - táblák létrehozása ALTER – táblák módosítása DROP – táblák törlése DDL –Data Definition.
SQL.
Adatbázis kezelés.
MSSQL szerver 2005/2008.
XML fejlesztések TSQL fejlesztések Tábla paraméter SQLCLR fejlesztések 8k limit feloldása Több paraméteres UDA-ek Ordered UDF-ek Entity Framework ADO.NET.
ORACLE ORDBMS adminisztrációs feladatok 3. rész dr. Kovács László 2004.
1 Sramó András Adatbázis-technológia V. előadás Adatbázis-technológia 5. előadás Az SQL.
Adatbázis-kezelés Tarcsi Ádám január. 15. MySQL és PHP.
– SELECT - 2. – Tarcsi Ádám március Adatbázis gyakorlat.
Tarcsi Ádám, Adatbázis gyakorlat – Adattáblák – Tarcsi Ádám, január.
PL/SQL alapok Adatbázis-kezelés.
Adatbázis rendszerek II
Ma az un. Relációs adatmodelleket használjuk.
Szerver és kliens gép közötti kommunikáció Adattárolási modellek  OLTP: OnLine Transaction Processing az MSSQL Szervert egy időben egyszerre sok felhasználó.
5. gyakorlat Fleiner Rita.
Webprogramozó tanfolyam
A Visual Basic nyelvi elemei
Adatbázis-kezelés 3-4. Adatok lekérdezése utasítás általános formája SELECT [ALL/DISTINCT] {*/, …, } FROM [ ], …, [ ] [WHERE GROUP BY, …, HAVING ORDER.
Egy lekérdezés végrehajtása SELECT o1 FROM T1 WHERE o2 = … Hogyan jutnak el a megfelelő sorokból a mező értékei a klienshez?
Gráfadatbázisok Rácz Gábor.
Az 5,6,7 laborok VBA anyagának összefoglalása
Adatbázisszintű adatmodellek
Sapientia - Erdélyi Magyar Tudományegyetem (EMTE) Csíkszereda
Adatbázis alapú rendszerek
Triggerek gyakorlás.
Neumann János Informatikai Kar
Triggerek Kalmár György.
Logisztikai projekt - gyakorlat Adatbázis-elmélet
Előadás másolata:

Multimédiás adatbázisok Szemináriumi előadás 2011.április 4.

Adatbázisok Áttekintés a Cosmin Stoica Sphaiu: A multimedia database server: Implementations and functions c. cikke alapján. A cikk a képek tárolása és feldolgozásával foglalkozik. Elemzett multimédiás megoldások: MySQL Microsoft SQL Server Oracle Saját

MySQL A multimédiás adatok egyetlen tárolási módja a BLOB. TINYBLOB BLOB MEDIUMBLOB LONGBLOB Nincsenek speciális függvények a multimédiás tartalmak kezelésére. Csak olyan lekérdezések hathatóak végre, amelyeket „normál” SQL segítségével megtehetünk.

Microsoft SQL Server A multimédiás adatokat két módon is lehet tárolni: Külső szerveren: ilyenkor az adatbázisban csak a tartalom elérési útját tároljuk. Az adatbáziban: VARBINARY típusú oszlopokban tárolható. Maximális méret 2GB. Nincsenek multimédiás tartalmakat kezelő függvények. A tartalmak megtekintéséhez és kezeléséhez külső programokra van szükség.

Oracle Az Oracle a multimédiás tartalmak kezelése során megvalósítja a tartalmakra vonatkozó szabványokat. Képek esetén: ISO/IEC :2001 SQL/MM Part 5: Still Image Standard Objektumokként kezeli a multimédiás anyagokat: ORDImage ORDVideo ORDAudio

Oracle A tartalmak kezelésére viszonylag sok függvény áll a felhasználó rendelkezésére. Nagy hátránya: drága, így a kisebb cégek számára nem jelenthet megoldást. Később folytatjuk.

„Saját” megoldás Az általuk készített szerver próbálja ötvözni a pozitív tulajdonságokat. Megfelelően tudja kezelni a képeket. Lehessen olyan képekre vonatkozó lekérdezéseket végrehajtani, amelyek tartalmi információkon alapulnak. Legyen olcsó, azaz minél szélesebb körben használható. Megvalósult? A cikk szerint szabadalmaztatás alatt van. Nem találtam meg a kész megoldást, és cikkek sem hivatkoznak rá.

„Saját” megoldás A fejlesztés C++ segítségével történt. Cél volt egy olyan megoldás megalkotása, amely nem kíván a felhasználóktól túl sok új ismeretet: A standard SQL-en alapuljanak a lekérdezések. A képi tartalmi lekérdezések szerkezete egyszerű legyen. A felépítést modulárisan képzelték el, mivel így könnyebben kezelhetőek a feladatok.

„Saját” megoldás Elvi vázlat:

„Saját” megoldás Main modul: A klienssel tartja a kapcsolatot. Fogadja a lekérdezéseket. Feldolgozza azokat, majd meghatározza, hogy melyik modulokat kell meghívni a kérés végrehajtásához. Processing modul: Kinyeri a paramétereket a lekérdezésből. Ennek megfelelő adatokat keres az adatbázisfile-okban.

„Saját” megoldás Characteristics Extraction Module: Akkor lép működésbe, amikor olyan képeket tartalmazó lekérdezés érkezik, amely még nem szerepel az adatbáziban. Kinyeri a szín és textura információkat a képből. Database Files Manager: Ez a modul férhet hozzá a file-okhoz. A modul biztosítja az egyes file-okhoz tartozó lock-ok kezelését is.

„Saját” megoldás Az adatbázisban elérhető fontosabb funkciók: create database use database create table alter table select * from table selectImage from table drop delete

„Saját”megoldás Mivel a cikk írásakor kísérleti megoldást készítettek így viszonylag kevés típust implementáltak: integer double varchar image

„Saját” megoldás SelectImage: selectImage * from Patients where age>50 and picture like queryimage

„Saját” megoldás Képek hasonlóságára két jellemzőt használ: Textura információk Színhisztogram A lekérdezések során ezek külön-külön vagy együtt is használhatóak. Amennyiben mind a két jellemzőt használjuk, akkor a két jellemző által szolgáltatott hasonlósági mértékek számtani közepe lesz a végleges hasonlósági mérték.

„Saját” megoldás - tesztelés A megoldás jóságát a következő két jellemző alapján tesztelték:

„Saját” megoldás - tesztelés Az adatbázisban 170 fénykép található a következő eloszlásban: Polip: 75 kép Gyulladás: 30 kép Rectocolite: 29 kép Tumor: 36 kép Olyan képeket szerettek volna visszakapni, amelyekhez a diagnózis „gyulladás”. A tesztelés során mind a két jellemzőt használták. Tesztelés: ld. Cikk.

Oracle multimédia Az Oracle multimédia három típusú multimédiás tartalom kezelésére alkalmas: Audio Kép Videó Mindhárom típushoz tartoznak saját – de hasonló – metódusok, amelyek segítségével a tartalmak kezelhetőek. Részletesebben a képek kezeléséről lesz szó.

Oracle multimédia Az Oracle a képeket két módon is tudja tárolni: Binary Large Object (BLOB) ORDImage objektum A képes tartalmakat kezelő függvények használatának érdekében ez utóbbit célszerű használni. Ebben az esetben egy egyszerű tábla tulajdonképpen két oszlopból állhat. Ennek ellenére a képek összes jellemző adata könnyen kezelhető.

Oracle multimédia

Amennyiben egy ORDImage objektumot szeretnénk egy táblába elhelyezni, akkor először meg kell hívnunk az objektum init() metódusát. Paraméterek nélkül: csak inicializálja az új elem helyét. Paraméterekkel: el is helyezi az elemet a táblába. A kép beszúrása előtt el kell azt helyeznünk a szerver megfelelő könyvárába. A táblába illesztés az objektum importFrom() metódusával történik.

Oracle multimédia create or replace procedure photos2_import(dest_id number, descript varchar2, filename varchar2) is img ordsys.ordimage; ctx raw(64) := null; begin insert into photos2 (id, description, image) values (dest_id, descript, ordsys.ordimage.init()) returning image into img; img.importFrom(ctx, 'file', 'VBA_DIR', filename); update photos2 set image=img where id=dest_id; end; Kép importja:

Oracle multimédia Kép exportja: create or replace procedure image_export (source_id number, filename varchar2) as imgSrc ordsys.ordimage; ctx raw(64) := null; begin select image into imgSrc from photos2 where id=source_id; imgSrc.export(ctx, 'FILE', ‚VBA_DIR', filename); end;

Oracle multimédia Az ORDImage objektumok adatait azok metódusaival lehet kezelni. Ezek közül néhány: copy() getCompressionFormat() getHeight() process() processCopy() getMetadata() putMetadata()

Oracle multimedia A get… függvények arra szolgálnak, hogy az obejektumok – azaz a képek -, tárolt adatait lekérdezzük. A metaadatokat is le tudjuk kérdezni a getMetadata() segítségével. A copy segítségével készíthetünk másolatot az objektumunkról. A process() a képek manipulációját biztosítja.

Oracle multimédia Kép magasságának lekérdezése: select id, ph.image.getheight() from photos2 ph Fileforma, tartalom formájának lekérdezése: select id, ph.image.getfileformat(), ph.image.getcontentformat(), ph.image.getcompressionformat() from photos2 ph

Oracle Multimédia Oracle interMedia fileformátumok: Oracle tartalmi formátum (pl.):

Oracle multimédia A process() és processCopy() függvények arra szolgálnak, hogy manipulálni tudjuk a képeket. Néhány példa maninpulációra: scale rotate contentformat fileformat

Oracle multimédia create or replace procedure f4_2_image_processCopy(source_id number, verb varchar2) is imgSrc ordsys.ordimage; imgDst ordsys.ordimage; begin update album set result=ordsys.ordimage.init() where id=source_id; select pic into imgSrc from album where id=source_id; select result into imgDst from album where id=source_id for update; imgSrc.processCopy(verb, imgDst); update album set result=imgDst where id=source_id; end;

Oracle multimédia call f4_2_image_processcopy(1,'scale=0.5') call f4_2_image_processcopy(1,'rotate=90') call f4_2_image_processcopy(1,'contentformat=8bitgray') Kép átméretezése: Kép forgatása: Szürkeskálássá alakítás:

Oracle Multimédia A metaadatok lekérdezésére a getMetadata() függvény szolgál. A metaadatok tárolására négyféle szabvány létezik, melyeket az Oracle támogat: Ordimage: az objektum „saját” metaadatai. EXIF: jellemzően a fényképezők által szolgáltatott metaadatok IPTC XMP: az Adobe által „kitalált” szabvány, amely tulajdonképpen egy RDF leírás. Közös jellemzőjük, hogy az adatokat XML formátumban tárolják.

Oracle multimédia Az Oracle támogatja az XML adatok tárolását XMLType típus használatával. Az XMLType-nak is saját függvényei vannak, amelyek segítségével a tárolta adatokon műveleteket végezhetünk. Egy ilyen függvény az extract(), amely XMLType típusú adatokból tudja kinyerni a benne tárolt információkat. A kép meta információit a következő lépésekben nyerhetjük ki: getMetadata() segítségvel az ORDImage objektumból megszerezzük a metaadatokat. extract() segítségével az XLMType-ból kiolvassuk az XML-t.

Oracle multimédia create or replace procedure extractmetadata_photos2(inID in integer) is img ordsys.ordimage; metav XMLSequenceType; meta_root varchar2(40); xmlORD XMLType; xmlXMP XMLType; xmlEXIF XMLType; xmlIPTC XMLType; begin select image into img from photos2 where id= inID; metav := img.getMetadata('ALL');

Oracle multimédia for i in 1..metav.count() LOOP meta_root := metav(i).getRootElement(); CASE meta_root WHEN 'ordImageAttributes' THEN xmlORD := metav(i); WHEN 'xmpMetadata' THEN xmlXMP := metav(i); WHEN 'iptcMetadata' THEN xmlIPTC := metav(i); WHEN 'exifMetadata' THEN xmlEXIF := metav(i); ELSE NULL; END CASE; END LOOP; UPDATE photos2 SET metaORDImage = xmlORD, metaEXIF = xmlEXIF, metaIPTC = xmlIPTC, metaXMP = xmlXMP WHERE id = inid; END extractMetadata_photos2;

Oracle multimédia select ph.id, ph.description, ph.metaordimage.extract('/') meta from photos2 ph

Oracle multimédia MetaORDimage

Oracle multimédia iptcxmp

Oracle multimédia EXIF

Oracle multimédia Az Oracle interMedia segítségével megtehető, hogy a képek között tartalmi alapú kereséseket végezzünk. Az ilyen jellegű feladatok végrehajtásához ORDImageSignatureType típusú objektumok használatára van szükség. Saját metódusaik: init() evaluateScore() generateSignature() isSimilar()

Oracle multimédia A függvények alkalmazása során a képek négy jellemzőjét vehetjük figyelembe: Színhisztogram Textúra Alakzatok elhelyezkedése Alakzatok formája Az egyes jellemzők számításáról bővebb információt nem találtam.

Oracle multimédia generateSignature() Feladata, hogy egy ORDImage objektum szignatúráját előállítsa. create or replace procedure sig_calc_photos2(dest_id number) is sign ordsys.ordimagesignature; img ordsys.ordimage; begin update photos2 set sig=ordsys.ordimagesignature.init() where id=dest_id; select sig, image into sign, img from photos2 where id=dest_id for update; sign.generateSignature(img); update photos2 set sig=sign where id=dest_id; end;

Oracle multimédia evaluateScore() Feladata, hogy két ORDImageSignatura objektumról megállapítsa a „hasonlósági távolságot”. A felsorolt négy paraméter közül tetszőlegeseket lehet figyelembe venni a távolság számításánál, amelyeket súlyozhatunk is [0,1] számokkal. Az eredmény a két objektum távolsága lesz, melyet egy [0,100] érték reprezentál.

Oracle multimédia create or replace procedure evaluateScore_photos2(id1 number, id2 number, verb varchar2) is sig1 ordsys.ordimagesignature; sig2 ordsys.ordimagesignature; score float; begin select sig into sig1 from photos2 where id=id1; select sig into sig2 from photos2 where id=id2; score:=ordsys.ordimagesignature.evaluatescore(sig1, sig2, verb); dbms_output.put_line('Score is ' || score); end;

Oracle multimédia A példákban az alábbi két képet hasonlítjuk össze.

Oracle multimédia Összehasonlítás csak színek alapján: call evaluatescore_photos2(2, 3, 'color=1.0')Score is 2,92833 Összehasonlítás csak textúra alapján: call evaluatescore_photos2(2, 3, 'texture=1.0')Score is,1992 Összehasonlítás forma és elhelyezkedés alapján: call evaluatescore_photos2(2, 3, 'shape=1.0 location=1.0') Score is 15,8149 Több paraméter súlyozva: call evaluatescore_photos2(2, 3, 'color=0.8 shape=0.8 location=0.2') Score is 9,8685

Oracle multimédia isSimilar() Feladata azt megadni, hogy két kép hasonló-e. Gyakorlatilag ugyanaz, mint az előző függvény, de megadható egy küszöbérték, amely alatt hasonlónak tekinthető a két kép. Kimenő értékek: 0: nem hasonló 1: hasonló

Oracle multimédia create or replace procedure isSimilar_photos2(id1 number, id2 number, verb varchar2, score float) is sig1 ordsys.ordimagesignature; sig2 ordsys.ordimagesignature; similar integer; begin select sig into sig1 from photos2 where id=id1; select sig into sig2 from photos2 where id=id2; similar:=ordsys.ordimagesignature.issimilar(sig1, sig2, verb, score); dbms_output.put_line('Similar is ' || similar); end;

Oracle multimédia call evaluatescore_photos2(2, 3, 'color=0.8 shape=0.8 location=0.2') Score is 9,8685 call isSimilar_photos2(2, 3, 'color=0.8 shape=0.8 location=0.2', 10) Similar is 1 call isSimilar_photos2(2, 3, 'color=0.8 shape=0.8 location=0.2', 7) Similar is 0

Oracle multimédia Egy táblában egy példaképhez hasonló képek keresése az előző függvényekkel könnyen elvégezhető. create or replace procedure similars1(s_id number, verb varchar2) is sig1 ordsys.ordimagesignature; sig2 ordsys.ordimagesignature; score float; id1 number; descript varchar2(200); img ordsys.ordimage; cursor photos is select id, description, image, sig from photos2;

Oracle multimédia begin select sig into sig1 from photos2 where id=s_id; open photos; loop fetch photos into id1, descript, img, sig2; exit when photos%NOTFOUND; score:=ordsys.ordimagesignature.evaluatescore(sig1, sig2, verb); dbms_output.put_line('ID: ' || id1 || 'Decription: ' || descript || 'Score: ' || score); end loop; close photos; end;

Oracle multimédia call similars1(2, 'color=1'); ID: 5 Decription: gryllus Score: 74,856 ID: 2 Decription: Kaszas Attila Score: 0 ID: 3 Decription: Kaszas Attila tukor Score: 2,92833 ID: 1 Decription: Haumann Peter Score: 74,4967 ID: 4 Decription: Gryllus Dorka Score: 74,856 ID: 6 Decription: gryllus Score: 74,856 ID: 7 Decription: hortobagy Score: 33,2272

Oracle multimédia create or replace procedure similars2(s_id number, verb varchar2, score float) is sig1 ordsys.ordimagesignature; sig2 ordsys.ordimagesignature; similar float; sim varchar2(10); id1 number; descript varchar2(200); img ordsys.ordimage; cursor photos is select id, description, image, sig from photos2;

Oracle multimédia begin select sig into sig1 from photos2 where id=s_id; open photos; loop fetch photos into id1, descript, img, sig2; exit when photos%NOTFOUND; similar:=ordsys.ordimagesignature.isSimilar(sig1, sig2, verb, score); if similar=1 then sim:='true'; else sim:='false'; end if; dbms_output.put_line('ID: ' || id1 || ' Decription: ' || descript || ' similar: ' || sim); end loop; close photos; end;

Oracle multimédia call similars2(2, 'color=0.8 shape=0.8 location=0.2', 10); ID: 5 Decription: gryllus similar: false ID: 2 Decription: Kaszas Attila similar: true ID: 3 Decription: Kaszas Attila tukor similar: true ID: 1 Decription: Haumann Peter similar: false ID: 4 Decription: Gryllus Dorka similar: false ID: 6 Decription: gryllus similar: false ID: 7 Decription: hortobagy similar: false