VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY
FAKULTA ELEKTROTECHNIKY A KOMUNIKAČNÍCH TECHNOLOGIÍ ÚSTAV TELEKOMUNIKACÍ FACULTY OF ELECTRICAL ENGINEERING AND COMMUNICATION DEPARTMENT OF TELECOMMUNICATIONS
VODOZNAČENÍ STATICKÝCH OBRAZŮ
DIPLOMOVÁ PRÁCE MASTER’S THESIS
AUTOR PRÁCE AUTHOR
BRNO 2009
Bc. LUBOŠ ŠTÁGL
VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY
FAKULTA ELEKTROTECHNIKY A KOMUNIKAČNÍCH TECHNOLOGIÍ ÚSTAV TELEKOMUNIKACÍ FACULTY OF ELECTRICAL ENGINEERING AND COMMUNICATION DEPARTMENT OF TELECOMMUNICATIONS
VODOZNAČENÍ STATICKÝCH OBRAZŮ WATERMARKING STATIC IMAGES
DIPLOMOVÁ PRÁCE MASTER’S THESIS
AUTOR PRÁCE
Bc. LUBOŠ ŠTÁGL
AUTHOR
VEDOUCÍ PRÁCE SUPERVISOR
BRNO 2009
Ing. PETR ČÍKA
ABSTRAKT Tato diplomová práce se zabývá problematikou zabezpečení statických obrazových dat. Jde o přidání tajné informace (vodoznaku) do původního obrazu, tak aby nebylo možné vodoznak odstranit. Hlavním cílem této práce je realizovat dvě metody vodoznačení digitálních dat v programu Matlab. Jelikož je v dnešní době značné množství různých metod, byly vybrány pouze 2, a to metoda pro vkládání vodoznaku v jasové oblasti a ve frekvenční oblasti. Obě metody mají vodoznačit obraz způsobem, aby za prvé osoba jenž s obrazem pracuje nepoznala, že vizuální kvalita obrazu byla pozměněna a za druhé, vodoznačený obraz musí být co nejodolnější proti různým druhům útoků. Pro simulaci útoků byl vybrán program Checkmark.
KLÍČOVÁ SLOVA vodoznak, obraz, robustnost, patchwork, DCT, Checkmark, Matlab
ABSTRACT This diploma thesis is concerned in static pictures Security problems. That means, additional informations (watermark) are embedded to the original picture in a specific way. This complex picture structure (watermark) should be unremoval by different attacks runing processes. The main goal of this diploma thesis is realize two separated methods digital data watermarking in MATLAB program. For reason of a quite large scale of different watermarking methods are chosen at this time only two of take were choosen. First of the methods is Watermark injection in the spatial domain and the second in the freuquency domain. Both methods are set up in a special way and finish goals of the process. Expected result are, that digital picture user doesn’t know about the watermarking technique was aplied on this picture and the watermarking data are the most resistant as possible as can be. These attacks were simulated in Checkmark program.
KEYWORDS watermark, image, robust, patchwork, DCT, Checkmark, Matlab
ŠTÁGL, L. Vodoznačení statických obrazů.ŠTÁGL, L. Vodoznačení statických obrazů.. Brno: Vysoké učení technické v Brně, Fakulta elektrotechniky a komunikačních technologií, 2008. 74 s. Vedoucí diplomové práce Ing. Petr Číka.
PROHLÁŠENÍ Prohlašuji, že svou diplomovou práci na téma „Vodoznačení statických obrazůÿ jsem vypracoval samostatně pod vedením vedoucího diplomové práce a s použitím odborné literatury a dalších informačních zdrojů, které jsou všechny citovány v práci a uvedeny v seznamu literatury na konci práce. Jako autor uvedené diplomové práce dále prohlašuji, že v souvislosti s vytvořením této diplomové práce jsem neporušil autorská práva třetích osob, zejména jsem nezasáhl nedovoleným způsobem do cizích autorských práv osobnostních a jsem si plně vědom následků porušení ustanovení § 11 a následujících autorského zákona č. 121/2000 Sb., včetně možných trestněprávních důsledků vyplývajících z ustanovení § 152 trestního zákona č. 140/1961 Sb.
V Brně dne
...............
.................................. (podpis autora)
PODĚKOVÁNÍ Děkuji vedoucímu diplomové práce Ing. Petru Číkovi, za velmi užitečnou metodickou, pedagogickou a odbornou pomoc a další cenné rady při zpracování mé diplomové práce. Dále bych rád poděkoval svým rodičům za veškerou podporu během celého studia na vysoké škole.
V Brně dne : . . . . . . . . . . . . . . . . . . . . . . . . . .
.......................... (podpis autora)
OBSAH 1 Úvod
11
2 Člověk a vnímání světla 12 2.1 Vznik digitalního obrazu . . . . . . . . . . . . . . . . . . . . . . . . . 14 3 Digitální vodoznačení 3.1 Historie utajování informací . . . . . . . . . . . . . . . 3.2 Steganografie . . . . . . . . . . . . . . . . . . . . . . . 3.3 Kryptografie . . . . . . . . . . . . . . . . . . . . . . . . 3.4 Ochrana autorských práv . . . . . . . . . . . . . . . . . 3.5 Základní principy vodoznačení . . . . . . . . . . . . . . 3.6 Techniky digitálních vodoznaků . . . . . . . . . . . . . 3.6.1 Zabezpečovací systémy s digitálními vodoznaky 3.6.2 Oblasti vkládání vodoznaků . . . . . . . . . . . 3.6.3 Rozdělení digitálních vodoznaků . . . . . . . . . 3.7 Viditelný vodoznak . . . . . . . . . . . . . . . . . . . . 3.8 Kritéria pro neviditelný vodoznak . . . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
4 Patchworkuv algoritmus
15 15 16 17 19 20 22 22 23 24 27 27 30
5 Diskrétní kosinová transformace (DCT) 32 5.1 Dvourozměrná DCT (DCT2) . . . . . . . . . . . . . . . . . . . . . . . 33 6 RHC algoritmus 6.1 Zvýšení počtu koeficientů . . . . . . . . . . . . 6.2 Odstranění souvislých ploch - Chaotická mapa 6.3 Referenční registr a kontejner (RR,RC) . . . . 6.4 Proces vložení vodoznaku . . . . . . . . . . . 6.5 Proces extrakce vodoznaku . . . . . . . . . . . 7 Praktická část 7.1 Analýza obrazu po vložení vodoznaku 7.2 Způsoby útoků na vodoznačený obraz 7.2.1 Checkmark . . . . . . . . . . 7.2.2 Konfigurace Checkmarku . . . 7.3 Realizace patchworkova algoritmu . . 7.3.1 Vložení vodoznaku . . . . . . 7.3.2 Vytažení vodoznaku . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . .
. . . . . . .
. . . . .
. . . . . . .
. . . . .
. . . . . . .
. . . . .
. . . . . . .
. . . . .
. . . . . . .
. . . . .
. . . . . . .
. . . . .
. . . . . . .
. . . . .
. . . . . . .
. . . . .
. . . . . . .
. . . . .
. . . . . . .
. . . . .
. . . . . . .
. . . . .
. . . . . . .
. . . . .
36 36 37 39 40 42
. . . . . . .
44 44 45 45 47 49 49 53
7.4
7.3.3 Provedené útoku a hodnocení algoritmu . . . . . . . . . . . . 54 Realizace RHC algoritmu . . . . . . . . . . . . . . . . . . . . . . . . . 60 7.4.1 Výsledky RHC algoritmu . . . . . . . . . . . . . . . . . . . . . 63
8 Závěr
67
Literatura
68
Seznam symbolů, veličin a zkratek
70
Seznam příloh
71
A Přílohy k diplomové práci 72 A.1 Kompletní výsledky pro obě metody, získané programem checkmark . 72 B Obsah přiloženého CD
73
SEZNAM OBRÁZKŮ 2.1 2.2 2.3 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 4.1 5.1 5.2 5.3 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9
Rozklad světla pomocí optického hranolu. . . . . . . . . . . . . . . Kompletní spektrum známých záření. . . . . . . . . . . . . . . . . . Optický senzor zaznamenávající data. . . . . . . . . . . . . . . . . . Vyrytý text na dřevěné destičce. . . . . . . . . . . . . . . . . . . . . Technika mikroteček. . . . . . . . . . . . . . . . . . . . . . . . . . . Ceasarova šifra. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Šifrovací stroj ENIGMA. . . . . . . . . . . . . . . . . . . . . . . . . Blokové schéma vodoznačení. . . . . . . . . . . . . . . . . . . . . . Techniky pro tvorbu digitálních vodoznaků. . . . . . . . . . . . . . Rozdělení digitálních vodoznaků. . . . . . . . . . . . . . . . . . . . Viditelný digitální vodoznak. . . . . . . . . . . . . . . . . . . . . . . Požadavky kladené na digitální vodoznak. . . . . . . . . . . . . . . Princip pačvorkova algoritmu. (Patchwork) . . . . . . . . . . . . . . Porovnání DCT a DFT spekter. . . . . . . . . . . . . . . . . . . . . Bázové funkce matic 8x8 . . . . . . . . . . . . . . . . . . . . . . . . Zobrazení DCT koeficientů. . . . . . . . . . . . . . . . . . . . . . . Příklad zvýšení počtu koeficientů . . . . . . . . . . . . . . . . . . . Ukázka chování logistické mapy - bifurkační diagram . . . . . . . . Změna obrazu podle chaotické mapy. (a) je původní obraz, (b) naznačeno označení bloků 2x2 pro přehození (c) bloky již přesunuty . Výsledky po provedení blokového přeskládání (a) původní obraz, (b) 1x přeskládáno (c) 2x (d) 3x (e) 9x . . . . . . . . . . . . . . . . . . 3 možné způsoby zisku registrů . . . . . . . . . . . . . . . . . . . . Blokové schéma vložení vodoznaku . . . . . . . . . . . . . . . . . . Kvantizační JPEG matice . . . . . . . . . . . . . . . . . . . . . . . Blokové schéma vytažení vodoznaku . . . . . . . . . . . . . . . . . . Základní rozdělení a třídy útoků podle p. Shelby Pereira. . . . . . . Blokové schéma algoritmu pro vkládání vodoznaku. . . . . . . . . . Obraz použitý pro testovaní algoritmu. . . . . . . . . . . . . . . . . Grafické prostředí. . . . . . . . . . . . . . . . . . . . . . . . . . . . Kompletní rozklad do bitových rovin. . . . . . . . . . . . . . . . . . Vložení vodoznaku do vybraných hladin. . . . . . . . . . . . . . . . Rozklad obrazu a vytažení vodoznaku z vybrané hladiny. . . . . . . Výsledky získané po útoku JPEG kompresí. Vložením vodoznaku do 3 bitové hladiny, při PSNR obrazu 40.869 a . . . . . . . . . . . . . Výsledky získané po útoku vlnkovou kompresí a vložením vodoznaku do 3 bitové hladiny, při PSNR obrazu 40.864. . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
12 13 14 15 16 18 19 20 22 25 27 28 30 33 34 35 37 38
. 39 . . . . . . . . . . . .
39 40 41 41 43 47 50 50 51 52 54 55
. 58 . 58
7.10 7.11 7.12 7.13
Grafické prostředí vytvořené pro RHC algoritmus . . . . . . . . . . První krok při vodoznačení obrazu, Rth = 1 a alf a = 0.5 . . . . . . Prvky jenž byly modifikovány po provedení celého algoritmu . . . . Výsledky po provedení JPEG komprese se stupněm kvality komprese od Q=100 až po Q=10 . . . . . . . . . . . . . . . . . . . . . . . . . 7.14 Výsledky po provedení vlnkové komprese. Komprese je od kompresního poměru 1:1 do 1:40 . . . . . . . . . . . . . . . . . . . . . . . . B.1 Adresářová struktura CD. . . . . . . . . . . . . . . . . . . . . . . .
. 60 . 61 . 62 . 65 . 65 . 73
SEZNAM TABULEK 7.1 7.2 7.3 7.4
Útoky, které je možné provádět programem checkmark . . . . Útok kompresí JPEG, hladina H3 . . . . . . . . . . . . . . . . Útok vlnkovou kompresí, hladina H3 . . . . . . . . . . . . . . Provedeny a vyhodnoceny některé další útoky pro vodoznak Hladina H3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.5 Výsledky po útoku kompresí JPEG a vlnkovou kompresí . . . 7.6 Provedeny a vyhodnoceny další útoky pro metodu RHC . . . . A.1 Kompletní výsledky pro obě metody . . . . . . . . . . . . . .
. . . . . . . . . č. 2, . . . . . . . . . . . .
. 55 . 57 . 58 . . . .
59 64 66 72
1
ÚVOD
Technologický vývoj v oblasti hardwaru a softwaru za poslední léta směřuje od analogového zpracování dat k digitálnímu, což umožňuje, aby se obecně z počítače stalo zařízení, které dokáže zpracovávat, reprodukovat, nebo vyrobit vlastní digitální data v jakékoliv podobě. V dnešní „digitálníÿ době, kdy již také většina lidí vlastní nějaký ten digitální fotoaparát, MP3 přehrávač, kameru či laptop, dochází tak k rychlému rozšiřování multimediálních digitálních médií jako je audio, video a obraz. To sebou přineslo řadu výhod, jako například jejich snadné sdílení a díky internetu, který zažívá opravdu obrovský rozmach, dostupnost prakticky po celém světě. S tímto masovým používáním, kdy se přenáší stále větší množství informací v digitálním formátu, je bohužel také spojena možnost lehce „okopírovatÿ tato digitální data. Tato vlastnost může podněcovat k porušování autorských práv druhých osob. Můžeme tedy předpokládat, že každý kdo má přístup na Internet a bude si chtít např. použít cizí obrázek ve své prezentaci, si může prakticky zadarmo a bez jakýchkoli problémů či postihů digitální dílo zkopírovat a vydávat je za svoje vlastní. Tento fakt samozřejmě poškozoval pravé autory díla. Vznikla tedy naléhavá potřeba vymyslet různé postupy pro vymáhání autorských práv, která by chránila vlastníka těchto dat. Například obrazová data vystavená na webových serverech, je možné získat naprosto triviálním způsobem, jakým je například uložení kopie obrazovky a následně je vydávat za své vlastní dílo. Technika, která měla zamezit nelegálnímu šíření dat bez souhlasu autorů se jmenuje digitální vodoznak (digital watermarking). Reprezentuje platné řešení na tento problém a spočívá ve vložení nadbytečné informace např. do obrazových dat. Musí to být ale provedeno způsobem, který by nebyl pro oko postřehnutelný a aniž by tím byl znehodnocen náš obraz. Tento vzorek bitů vložený do digitálních dat následně umožňuje jednoznačně identifikovat zdroj, autora, tvůrce, vlastníka, distributora a nebo autorizovaného uživatele digitálních obrázků, videa a audia. Nese tedy důležité informace týkající se ochrany autorských práv, při kopírovaní dat a při autentifikaci dat. V této práci jak již plyne ze zadání, bychom se měli zaměřit na implementaci některé z metod využívající digitální vodoznak a pokusit se vytvořit grafické prostředí, které by názorně demonstrovalo průběh celého procesu vodoznačení.
11
2
ČLOVĚK A VNÍMÁNÍ SVĚTLA
Díky lidskému bádání vědci s postupem času přišly na to, že světelný paprsek nebo-li světlo lze modelovat jednak pomocí částic (sir Isaac Newton) a jednak pomocí vln (Christian Huygens). Experimenty bylo zjištěno, že se jednou chová jako částice a jindy jako vlna (Max Planck, Albert Einstein). Světlo je tvořeno proudem částic zvaných fotony, přičemž při šíření světla prostorem převažuje částicový charakter světla, zatímco při styku světla s prostředím se uplatňuje spíše jeho vlnový charakter. V této práci se spíše zaměříme na vlnový charakter, a budeme světlo brát jako postupnou vlnu složenou z elektrického a magnetického pole (James Clerk Maxwell). Byly tedy definovány 3 základní charakteristické vlastnosti světla, díky nimž můžeme detailněji popsat jeho chování. Jsou to : • Vlnová délka světla - rychlost či frekvence kmitání. • Intenzita světla - síla či amplituda vlny. • Polarizace světla - směr kmitání. Vlnovou délku označíme jako hlavní vlastnost světla, můžeme ji lehce spočítat pomocí vzorečku λ = fc . Kde c je rychlost světla ve vakuu(je to konstanta) a f je frekvence vlny. Rozsah vnímaných vlnových délek je dán především tím, že v oblasti viditelného světla pochází většina elektromagnetického záření ze Slunce, které dopadá na zemský povrch. Člověk „bohuželÿ registruje jen velmi malou část na zemi existujícího záření a ještě menší část záření existujícího v celém vesmíru [3](str. 11-14). Tento fakt měl na vývoj lidského zraku obrovský vliv. Lidské oko se přizpůsobovalo na přicházející paprsky ze Slunce, které byly propouštěny skrz zemskou atmosféru. Po dlouholetém zkoumání těchto paprsků vědci zjistili, že toto záření se neskládá pouze z jedné vlny, ale je v něm obsaženo více vlnových délek, které se dalo po použití různých filtrů od sebe oddělit např. pomocí optického hranolu (2.1). Zde se bílé světlo se při lomu rozloží na základní barevné složky.
Obr. 2.1: Rozklad světla pomocí optického hranolu.
12
Člověk vnímá světlo zhruba od 400nm do 700 nm, tyto různé vlnové délky světla si lidé pojmenovali jako barvu světla. Každá jedna konkrétní vlnová délka světla bude okem vnímána jako jedna konkrétní barva(např. modrá odpovídá 470 nm). Barvy, které je takto možné vytvořit, jsou tzv. spektrální barvy. Spektrální barvy vytvoří známou barevnou stupnici od fialové až po červenou, kde fialová reprezentuje dlouhé vlnové délky a červená krátké. Kompletní spektrum s různými vlnovými délkami od neviditelných až po viditelné můžeme vidět na obrázku 2.2. Stupnice má otevřené konce: vlnové délky elektromagnetických vln nemají žádnou principiální spodní ani horní hranici. Je tedy možné, že existuje další záření, jen o něm zatím nevíme.
Obr. 2.2: Kompletní spektrum známých záření. Lidské oko které je schopno tyto vlnové délky zachycovat a vyhodnocovat, je tvořeno z různých částí. Nejvýznamější z nich je sítnice, která je tvořena světlocitlivými buňkami - asi 130 miliony tyčinek (rods) a 7 miliony čípků (cones). Čípky jsou sice méně citlivé, ale zato dokáží rozlišovat barvu. Naproti tomu tyčinky jsou velmi citlivé, ale rozlišují jen „černobílouÿ. V naší práci budeme upravovat pouze šedotónové obrázky, kde různé urovně budeme zaznamenávat hodnotami 0 až 255 (0-černá, 255-bílá).
13
2.1
Vznik digitalního obrazu
Jak jsem se již zmínil v předchozí kapitole, oko funguje jako senzor, který díky odrazu světla od předmětů získává potřebné informace. Tyto data pak zpracovává a vyhodnocuje. Jelikož vznikla potřeba člověka si tyto data podobným způsobem uchovávat, zkonstruoval si přístroje, které to umožňovaly. Snímání obrazu a tvorba digitálního obrázku, se inspirovala u oka. U digitalního senzoru je na jeho plochu promítán obraz přes systém optických čoček v objektivu. Světelná energie, která přichází ze snímaného prostoru (scény), je v jednotlivých obrazových bodech (pixelech) převáděna na elektrický signál a uložena v podobě náboje. Náboj vzniká postupně během expozice čipu, kdy je otevřena uzávěrka fotoaparátu a světlo může dopadat na čip (Vzorkování). Po uzavření uzávěrky jsou vygenerované náboje z čipu postupně odváděny a měřeny speciálním zesilovačem pro každý jednotlivý pixel (Kvantování). Každý senzor je tvořen maticí světlocitlivých buněk. Čím více je těchto buněk, tím podrobněji bude obraz zaznamenán a tím více detailů a kresby bude obsahovat. Každá světlocitlivá buňka senzoru se přitom podílí na vytvoření finálního obrazu – pixelu. Slovo pixel vzniklo jako zkratka z „picture elementÿ, tedy prvek obrazu. Jako příklad uvedeme rozlišení senzoru 6 MPix, kde je fotoaparát tvořen maticí o rozměrech např. 3000 x 2000 pixelů. Výše uvedený popis značí obrázek 2.3.
Obr. 2.3: Optický senzor zaznamenávající data.
14
3 3.1
DIGITÁLNÍ VODOZNAČENÍ Historie utajování informací
Nejdříve si definujeme dva důležitě pojmy, jsou to steganografie a technika vodoznaků. Tyto pojmy spolu vzájemně velice úzce souvisí. Steganografie je věda, která se zabývá metodami skrytí informace. Pochází z řeckého slova steganós - schovaný a gráphein - psát. Z tohoto překladu tedy vyplývá, že je to věda zabývající se utajením komunikace prostřednictvím ukrytí zprávy. Zpráva je ukryta tak, aby si pozorovatel neuvědomil, že komunikace vůbec probíhá. Zachycení zprávy se rovná prolomení steganografie. Aby ani v tom případě nedošlo k prozrazení obsahu zprávy, zpravidla se kombinuje s kryptografií (šifrováním). První zmínkou o použití ručně dělaných papírových vodoznaků, které jsou předchůdci nynějších vodoznaků, jsou více než 700 let staré, nejstarší dokument s papírovým vodoznakem pochází z města Fabriano v Itálii z roku 1292 a sehrál významnou úlohu ve vývoji papírenského průmyslu. Ve starověkém Řecku, kdy byly šifrovací metody ještě v „plenkáchÿ, byly používány steganografické metody, které jsou z dnešního pohledu jednoduché až průhledné, používaly k přenosu zpráv dřevěné destičky zalité voskem. Vyrytá destička by mohla vypadat podobným způsobem jako na obrázku 3.1. Na této destičce bylo vyryto písmo a to bylo následně zalito voskem. Deska poté vypadala jako nepopsaná.
Obr. 3.1: Vyrytý text na dřevěné destičce. Další z metod, která byla hojně používána za II. světové války, byla technika mikroteček. Šlo o malé nezřetelné tečky na pásku filmu, které teprve při prohlédnutí pod mikroskopem obsahovaly drobné písmo. Za zmínku stojí také mnohostranný učenec Johannes Trithemius (* 1. únor 1462 v Trittenheimu; † 13. prosinec 1516 v Würzburgu). Byl to klášterní opat, který
15
Obr. 3.2: Technika mikroteček. vydal tři svazky díla Steganographia (napsána r. 1499 a vydána ve Frankfurtu r. 1606). Tento opat se ve svých dílech podrobně věnuje technikám kryptografie a steganografie.
3.2
Steganografie
Jak již bylo zmíněno v kapitole 3.1 steganografie je věda o utajení komunikace prostřednictvím ukrytí zprávy. Steganografie má obecně tu závadu, že sice poskytuje jistý stupeň utajení, ale když už se zprávu podaří odhalit, je celý její obsah prozrazen - pouhé zachycení zprávy se rovná i prozrazení jejího obsahu. Steganografie se proto zpravidla kombinuje s kryptografií. Steganografie a technika vodoznaků spolu vzájemně velice úzce souvisí. Obě techniky popisují způsoby subjektivně nevnímatelného přenosu informace pomocí vložení do krycích dat. Zatím co steganografie se používá především pro komunikaci mezi dvěma osobami, technika vodoznaků předpokládá využití způsobem „ jeden odesílatel – neomezené množství příjemcůÿ. Rozdíl mezi steganografii a technikou vodoznaků spočívá v požadavcích na jejich odolnost vůči útokům. Protože cílem steganografie je ukrytí skutečnosti, že tajná komunikace existuje, nekladou se na ni vysoké nároky na odolnost. Technika vodoznaků předpokládá velké množství příjemců a mezi nimi i takových příjemců, kteří se snaží vloženou informaci odstranit nebo poškodit. Proto techniky vodoznaků kladou vyšší požadavky na odolnost vůči útokům nepovolaných osob. V informačním věku se steganografie stále uplatňuje, ale změnila podobu. Tajná zpráva může být zakódována na místo nepodstatného šumu do zvukových souborů, dále do obrázků, videí a podobně. Častou aplikací steganografie při kódování informací do obrázků může být i ochrana děl podle autorského práva. V dnešní době je možné se potkat také s viditelnými papírovými vodoznaky na různých úředních dokumentech, ale asi mezi nejběžnější patří jejich používání na bankovkách. Tyto
16
vodoznaky inspirovali odborníky k používání vodoznaků také v souvislosti s digitálními daty. Forma vodoznaků (watermark) může být vzhledem k multimediálnímu charakteru dat různá - vodoznak může mít charakter textu, souboru čísel, audio signálu, binárního nebo víceúrovňového obrazu. Patrně nejznámější steganografické metody známé z historie jsou založeny na použití různých neviditelných inkoustů. Zprávy napsané takovouto tekutinou nebyly za běžných podmínek na papíře viditelné a svůj obsah odhalovaly teprve, pokud byly vystaveny zvláštnímu osvětlení nebo pokud prošly nějakou chemickou cestou, nejčastěji po zahřátí archu nad plamenem. Mezi tyto neviditelné inkousty patřily různé ovocné šťávy (vymačkaný citrón), mléko nebo moč. Dnes se můžeme v zábavné steganografii setkat s neviditelnými inkousty, které jsou běžně k dostání v obchodech, například v podobě fixů, jejichž písmo je čitelné, pouze pod ultrafialovým zářením.
3.3
Kryptografie
Než začnene popisovat obecný princip kryptografie, musíme si definovat některé důležité pojmy, jenž jsou úzce spjaty s pojmem kryptografie a bez nichž by se nám velice těžce tento pojem vysvětloval. Prvním z nich je kryptologie, přesně definovaný popis vyplývá z [2] a je to tedy věda o šifrování (kryptografii) a dešifrování (kryptoanalýze). Její název vychází z řeckého slova kryptos (skrytý) a vyjadřuje, co je jejím cílem - nikoliv utajování samotné existence zpráv, ale skrýtí jejího významu. Aby nešlo zprávu přečíst, je zpráva před zašifrováním podle pravidel předem dohodnutých příjemcem a odesilatelem změněna v zašifrovaný text, který je bez této úpravy nečitelný. Pokud takováto zpráva padne do ruky nepovolané osobě, je pro něj odhalení jejího obsahu bez znalosti přesných pravidel použitých k jejímu dešifrování jen velmi obtížné, nebo dokonce zcela nemožné. Hlavnímy pojmy v kryptologii jsou kódy a šifry. Pojem kód má v běžném jazyce velmi široký význam a často se používá obecně pro jakoukoliv metodu komunikace. Například pokud v rádiu hlasatel oznamuje výsledky fotbalových zápasů. Ve skutečnosti je však význam tohoto slova velmi specifický. V rámci kódu se slovo či fráze nahrazuje jiným slovem, číslem či symbolem. Například tajní agenti mají svá krycí(kodová) jména chránící jejich identitu, tedy slova používaná namísto skutečných jmen(Agent James Bond 007). Podobně lze slovní spojení Útok za úsvitu nahradit kódovým jménem Slunce a to zaslat veliteli, aby informace zůstala nepříteli skryta. Pokud se odesilatel a příjemce předem dohodli na kódu, pak jim význam slova Slunce bude zřejmý, zatímco ostatní kteří zprávu zachytí z ní nezjistí nic. Problémem kódů je skutečnost, že jsou nevyhnutelně poněkud nepružné - pří-
17
jemce i odesilatel nebudou moci komunikovat mimo dohodnuté kódy, jejich ”slovní zásoba” bude omezena. Podoba kódových slov bývá volena pokud možno náhodně - kódové slovo by nemělo mít jakoukoliv souvislost se samotným sdělením. Hrubou chybou by například bylo označovat letadla jmény ptáků, nebo lodě jmény ryb (pokud bychom chtěli, aby kódy sloužili k utajení infomace). Samo kódové slovo by nepříteli nemělo prozradit vůbec nic, nemělo by vzbuzovat jakékoliv podezření, které by ho vedlo k rozluštění zprávy. Největším nebezpečním pro kódová slova představuje samozdřejmě ztráta kódové knihy, a hned za ní následuje opakované použití identických kódových slov. Alternativou kódu je šifra, což je technika která působí na nižší úrovni, tím že nahrazuje písmena (respektive jakékoliv části informace) namísto celých slov, nebo slovních spojení (informačních celků). Pokud například nahradíte písmeno tím, jež po něm následuje v abecedě (tedy místo A napíšeme do zprávy B, místo B napíšeme C atd.), pak Útok za úsvitu přepíšeme jako ”Vupl ab vtwjuv” (mezery se zpravidla vynechávají, aby se protivníkovy ztížil odhad významu slov). Touto technikou byl proslavený Gaius Julius Caesar (100-44 př. Kr.) používal u svých vojsk jednoduchou substituci, která byla vyjádřena dnešními písmeny mezinárodní abecedy, vypadá takto: 3.3. Na prvním řádku je vypsána abeceda a na dalších je naznačena substituce od prvního až po 26 prvek (počet slov v abecede).
Obr. 3.3: Ceasarova šifra. Každou šifru můžeme popsat pomocí obecné metody, které se říká algoritmus, a pomocí klíče, který specifikuje detaily použitého šifrování. Padne-li nepříteli do rukou šifrový text, může se stát, že dokáže odhadnout jaký algoritmus byl použit, avšak nebude znát klíč (může se například domnívat, že každé písmeno otevřeného textu bylo nahrazeno jiným písmenem šifrové abecedy, ale nebude vědět o jakou šifrovou abecedu jde). U šifry tedy stačí, aby se odesilatel a příjemce dohodli na klíči, který definuje význam 26 znaků abecedy, a už si mohou vyměňovat libovolné zprávy. Je-li klíč spolehlivě střežen, pak nepřítel nemůže zachycenou zprávu dešifrovat bez
18
velkého úsilí. Zpravidla se volí taková složitost klíče, která zajišťuje bezpečnost před běžnými průlomovými prostředky - například tak, aby dešifrování zprávy vyzkoušením všech možných klíčů bylo tak časově náročné, že už na prozrazení zprávy nebude záležet (velmi důležité zprávy se například běžně šifrují tak, aby čas nutný k jejich dešifrování byl větší, než dosud známý věk vesmíru). Jedním z nejznámějších šifrovacích strojů je přístroj ENIGMA použit za 2 světové války. Přístroj byl schopen vyprodukovat dvaadvacet miliard různých kódových kombinací. Kdyby se o takový výkon pokusil kterýkoli schopný matematik, musel by počítat bez přestání ve dne v noci po dobu dvaačtyřiceti tisíc let. Enigma byla byla ve své době působivým strojem, který odstartoval novou epochu v historii šifrování a dešifrování. Jak vypadala si můžeme prohlédnout na obrázku 3.4.
Obr. 3.4: Šifrovací stroj ENIGMA.
3.4
Ochrana autorských práv
Jak již bylo řečeno v úvodu této práce, kterýkoliv člověk má nyní možnost jednoduchým způsobem okopírovat lehce cizí práci a vydávat ji tím za vlastní. Tímto způsobem pak mohlo dojít k problémům s prokázáním vlastníctví. Proto byly vytvořeny různé způsoby na ochranu vlastnictví. Mohou to být například Ochrana před kopírováním (Copy protection). Je to pokus najít všechny způsoby jak zabránit kopírování a nebo přístupu ke kopírování souborů. A dále je to Ochrana autorských práv (Copyright protection). Ta se zakládá na vložení autorských práv do digitálních dat bez zničení jejich kvality. Je
19
také možnost zakódovat do digitálních dat informaci o držiteli autorských práv a o kupujícím, čímž je možné najít ilegální kopii. Autorské právo nechrání samotné myšlenky či ideje, ale pouze konkrétní díla, konkrétní vyjádření takových myšlenek, dílo v objektivně vnímatelné podobě. Autorským dílem je pouze jedinečný výsledek tvůrčí činnosti autora, dílem není námět, zpráva, informace, metoda, teorie, vzorec, graf, tabulka fyzikálních konstant, výstup počítačového programu apod. samy o sobě. Dané dílo je chráněným autorským díc následovaným rokem a jménem autora. lem, se často signalizuje symbolem °
3.5
Základní principy vodoznačení
V této kapitole se budeme věnovat základní principům aktuálních systémů vodoznačení a jeho vložení,vytažení a detekci z chráněných dat. • Vložení vodoznaku: vložení jednoznačných dat určitou metodou do obrázku. • Vytažení vodoznaku: vytahnutí vodoznaku za účelem porovnání s původním, vloženým vodoznakem. • Detekce vodoznaku: rozhodovaní, či daná data jsou vloženým vodoznakem nebo ne. Vodoznačení pracuje na stejném principu jako symetrické šifrování, kde používáme stejných postupů pro zakódování a dekódování vodoznaku. Každý systém vodoznačení se sestává ze dvou nezávislých systémů: kodéru vodoznaku a dekodéru vodoznaku [2]. Kompletní systém značí obrázek 3.5.
Obr. 3.5: Blokové schéma vodoznačení.
20
Nejdříve si popíšeme obecně funkci vložení vodoznaku, která se odehrává v kodéru. Pro jednodušší popis si definujeme systém, který je popsán těmito parametry (I, W, K, Ek , Dk , Ct , Iw ), kde I jsou originální data, W je soubor vodoznačených dat, a K je soubor tajných klíčů. Klíč se v digitálním vodoznačení používá většinou jeden, ale pro lepší vlastnosti vodoznaku by se mělo použít klíčů několik. Aby případný útočník měl co nejmenší možnost vodoznak z dat odstranit. Výstupem z kodéru(Ek ) jsou data, která již obsahují vodoznak (Iw ). Situaci pro vložení vodoznaku popisuje značí rovnice 3.1. Ek : I × W × K → Iw
(3.1)
Dk : I × Iw × W × K → W 0
(3.2)
K vytažení a detekci vodoznaku dochází v dekodéru a je použito čtyř vstupních parametrů. Princip vychází z rovnice pro dekodovani 3.2. A jsou potřeba vodoznačená data, vodoznak, původní datový obsah a šifrovací klíč. Proces vytažení vodoznaku (viz. 3.5) je opačná operace k procesu vložení. Výstupem tohoto systému je poté vytažený vodoznak W 0 a shoda M vytaženého vodoznaku s vloženým(Ct ). Komparační funkce, které porovnává shodu vytaženého a vloženého vodoznaku vychází ze vztahu: 3.3. Extrahovaný vodoznak W 0 se většinou může lišit od vloženého vodoznaku W kvůli různým manipulacím, které mohly být provedeny ještě před vyhodnocením. K tomu aby znalec korespondující oběma vodoznaky určil jejich totožnost, využívá srovnávací funkce Ct , která srovnává originální vodoznak s extrahovaným vodoznakem. To je dáno mezí citlivosti τ : Pro porovnávání extrahovaného a skutečného vodoznaku se využívá hodnota citlivosti τ . Výsledkem tohoto porovnání by poté mělo být vyhodnocení zda se jedná o pravý vodoznak či nikoliv. Ct = (W 0 ∼ W ) → {0, 1}
(3.3)
Práh citlivosti závisí na vybraném algoritmu a v dokonalém systému by měl být schopen zřetelně identifikovat vodoznak.
21
3.6
Techniky digitálních vodoznaků
Na digitální vodoznak můžeme při jeho tvorbě pohlížet z různých hledisek viz. obrázek 3.6. Můžeme ho tedy dělit podle typu zabezpečovacích systémů pracující s digitálními vodoznaky. Dále podle metody používané k vkládání vodoznaku. Vložení vodoznaku se může uskutečňovat: V obrazové oblasti tj. vložení dat (vodoznaku) se přímo modifikují jasové hodnoty krycího obrazu. Nebo například ve frekvenční oblasti, tj. vložením dat (vodoznaku) se modifikují spektrální koeficienty obrazu. A jako třetí pohled můžeme dělit ještě podle toho jaký typ vodoznaku použijeme.
Obr. 3.6: Techniky pro tvorbu digitálních vodoznaků.
3.6.1
Zabezpečovací systémy s digitálními vodoznaky
Existují různé typy vodoznačících systémů, které se liší v počtu vstupních parametrů v kódovacím a dekódovacím subsystému.[5] Můžeme je rozdělit na : • Soukromé systému • Polosoukromé systémy • Veřejné systémy Privátní systémy - Tento systém má v digitálním světě označení nečitelné vodoznačení. Je charakteristický tím, že k vložení vodoznaku do originálních dat používá soukromý klíč. Při vytažení/detekci vodoznaku vyžaduje kromě soukromého klíče i originální data. Tento systém se dále dělí na dva typy: • Typ I - Detektor je schopen vytáhnout vodoznačení i ze zkreslených dat, pro správnou detekci vyžaduje původní originální obraz. Dk = (Iw , I) → W 0
(3.4)
22
• Typ II - Vyžaduje kromě původních originálních dat i vložený vodoznak. Dk = (Iw , I, W ) → W 0
(3.5)
Privátní systém zabezpečení vodoznakem dokáže vrátit změny v informačních datech způsobené útočníkem, protože používá na vstupu originální data. Polosoukromé systémy - U tohoto systému není potřeba mít původní originální data jako v případě tajných systému. Využívá se například u DVD, kde potřebujeme vědet, zda má daný uživatel povoleno přehrát obsah nebo ne, a pokud ne lze následně identifikovat originálního příjemce. Dk = (Iw , W, K) → W 0
(3.6)
Veřejné systémy - Tyto systémy nepotřebují k vytažení vodoznaku z chráněných dat původní originální data, ani kopii vloženého vodoznaku. K vytažení je potřeba znát soukromý klíč. K procesu vodoznačení používají veřejný klíč. Dk = (Iw , K) → W 0
3.6.2
(3.7)
Oblasti vkládání vodoznaků
Ukrývání vodoznaků do obrázků je hojně užívaná metoda, která navíc skýtá nepřeberné množství možností ukrývání. Jak je vidět z obrázku 3.6, základní systémy vkládající vodoznak do obrázků můžeme dělit podle typu použitého přístupu pro vkládání. Rozlišujeme tedy vodoznakové techniky na základě těchto 3 skupin: • Obrazová oblast (Jasová) • Frekvenční oblast • Parametrická oblast Vodoznaky vkládané v jasové oblasti - Slouží k označení, popřípadě k úmyslné degradaci obrazu – použití při ochraně autorských práv. Obraz je pozměněn jen z části, nebo úplně. Musíme vlastnit konkrétní vodoznak a znát metody vložení viditelného vodoznaku, abychom byli schopni rekonstruovat degradovaný obraz zpět do jeho původní podoby. Jedná se o nejjednodušší metodu vkládání vodoznaku, v podstatě se ale využívá pouze při vkládání viditelných vodoznaků. Může ale posloužit jako základní schéma vkládání vodoznaku do obrazu. Nejprimitivnější metodou je kódování do nejméně významného bitu, tedy LSB (Least Significant Bit). Vložení vodoznaku je založené na modifikaci jednotlivých
23
obrazových bodů (pixelů). Kde se provede výměna námi vygenerované hodnoty vodoznaku a vloží se na dané místo v původním obraze. Tento postup se opakuje až po vložení kompletního vodoznaku. Klasické barevné schéma R,G,B, kde je pro každou barevnou složku vyhrazen 1 byte, představuje prostor pro cca 16,7 milionu barev, což je více, než dokáže lidské oko rozlišit viz. Použijeme-li tedy poslední bit každého n-tého bytu pro uchování zprávy, některé body se nepatrně změní, lidské oko však změnu neodhalí. Příjemce z obrázku použije jen stanovené bity. Alternativou tohoto postupu je kódování do dvou posledních bitů. Lidské oko stále není schopno zaznamenat změnu. Frekvenční oblast - Transformovaná oblast obrazových dat představuje jiný popis obrazových dat pomocí tzv. „diskrétních ortogonálních transformacíÿ. Ortogonální transformace umožňují reprezentovat časové průběhy signálů ve formě určité matice či vektoru transformačních koeficientů. Ve spektrální oblasti se pak realizují potřebné operace, které zajišťují např. rychlejší vyhodnocení signálů, atd. Některé operace se snadněji realizují ve spektrální oblasti, jak v časové oblasti. Transformace nyní nacházejí široké uplatnění při kompresi dat, rozpoznávání obrazů a jejich analýze, a dalších odvětvích vědy. Po provedení transformace se určitým postupech modifikují hodnoty transformačních (frekvenčních) koeficientů. Daná modifikace záleží na typu použitého vodoznaku. Tyto metody jsou náročnější, ale tím také mnohem odolnější před možným odhalením. Použity mohou být například diskrétní Fourierova transformace (DFT), nebo diskrétní waveletová transformace(DWT)[8]. Po uplatnění vodoznaku na získané koeficienty z transformace se následně podle zvoleného transformace provede zpětná transformace do časové oblasti. Parametrická oblast - Metody pro vložení vodoznaku v parametrické oblasti jsou založené na modifikaci některých parametrů originálního signálu. Nejprve se ale signál musí přetransformovat do parametrické oblasti. Jednou z používaných technik je například metoda založená na fraktálovém popisu obrazu, kdy bývají upravovány parametry jasu nebo kontrastu. Výsledné vodoznaky, vložené metodou využívající fraktálové kódování, jsou odolné zejména proti kompresi nebo filtrování signálu. Všeobecně by se také dalo říci, že vodoznak W(x,y) je vložený do obrázku I(x,y) s koeficientem k, který zesiluje hodnoty pro získ najlepšího výsledku. Iw(x, y) = I(x, y) + k × W (x, y)
3.6.3
(3.8)
Rozdělení digitálních vodoznaků
V technice digitálních vodoznaků se používají různé typy vodoznaků, které většinou rozdělujeme do těchto skupin viz. obr. 3.7. Tento obrázek je jen pokračování rozdělení
24
z obrázku 3.6, který byl z důvodu rozměrů, rozdělen na dvě části.
Obr. 3.7: Rozdělení digitálních vodoznaků. Z hlediska postřehnutelnosti vodoznaku se rozlišuje: • Viditelné vodoznaky (visible watermarks) – jsou to viditelné obrazce vsunuté do jiných obrazců. Příkladem jsou např. loga. Představují analogii papírových vodoznaků. Slouží k zamezení použití určitých druhů označených dat (např. digitálních obrazů) ke komerčním účelům. • Skryté vodoznaky (hide watermarks) - Jsou přídavnou informací, která je vsunuta do původních informací bez toho, aby se podstatně narušil původní informační obsah, tedy není běžně viditelná. Důležitým požadavkem je robustnost vodoznaku, čili odolnost vůči jeho odstranění nepovolanou osobou bez znalosti klíče. Z hlediska odolnosti (resp. citlivosti) rozlišujeme: • Křehké vodoznaky (fragile watermarks) - se vyznačují svou jednoduchostí a sníženou odolností proti různým útokům na vodoznačný datový obsah. Jakmile je vodoznačný datový obsah modifikován, stávají se vložené vodoznaky nedetekovatelné. skupina těchto vodoznaků se používá k detekci různých modifikací původních vodoznačných dat. • Robustní vodoznaky - jsou navrženy tak, aby odolávaly manipulaci s daty a chrání do značné míry před útoky, snažící se o prolomení zabezpečených dat. Používají se hlavně pro ochranu vlastnického práva autora. Z hlediska možnosti uživatelů detekovat, resp. extrahovat vodoznak rozlišujeme: • Soukromé vodoznaky - používají se na extrakci/detekci vodoznaku vyžadují původní data.
25
• Veřejné vodoznaky - používají se na extrakci/detekci vodoznaku nevyžadují původní data. Jeden z dalších typů, který v tabulce již není je, podle typu krycích dat, tj. dat, do kterých se vodoznaky vkládají, rozlišujeme: • Textový vodotisk (text watermarking) – Vodoznak se vkládá do textových dat. • Zvukový vodotisk (audio watermarking) – Vodoznak se vkládá do zvukových dat. • Obrazový vodotisk (image watermarking) – Vodoznak se vkládá do obrazových data, resp. obrazové sekvence.
26
3.7
Viditelný vodoznak
Nejjednodušší ochranou fotografií distribuovaných v digitální podobě je jejich označení viditelným vodoznakem, to spočívá v jednoduchém znehodnocení fotografie textem nebo logem, které si autor umístí do snímku. Zasahuje-li vodoznak do nejdůležitějších částí snímku, je jeho ochrana prakticky 100% - případné odstranění vodoznaku se časově nevyplatí. Vodoznak přitom nemusí být extrémně rušivý může jít např. o hodně jemný text s vysokou průhledností - zde se hranice kreativity rozhodně nekladou. Autor obrázku si také může jednoduše dát svůj podpis přímo do obrázku. Což vede k jednoduché identifikaci majitele. Umístění vodoznaku do fotografie je velmi jednoduché. Dnes již je v oběhu mnoho rozličných programů, které dokáží vodoznak do obrazu vložit. A nemusí být rozhodně za peníze, ale ve formě freeware programů. Vložení vodoznaku pak probíhá automaticky a lze ho nastavit i pro více fotografií najednou. Některé programy, které to umožňují jsou Zoner Media Explorer, Adobe Photoshop . . . a výsledek by mohl vypadat například jako na obrázku 3.8, kde jsem vložil do obrázku své jméno jako podpis, nastavil bílou barvu písma a průhlednost 50%.
Obr. 3.8: Viditelný digitální vodoznak.
3.8
Kritéria pro neviditelný vodoznak
Jedním ze základních požadavků kladených na metody digitálního vodoznačení signálů, je vkládat vodoznak do obrazových dat takovým způsobem, aby byl dostatečně odolný proti poškození běžným operacím s obrazem: rozostření, zostření a běžné vylepšení kontrastu a barev v obraze, dále běžnému geometrickému zkreslení: což je otočení, posun, ořezávání a změna měřítka. A v neposlední řadě také proti útokům, které se snaží odstranit zabezpečená data.
27
Podle těchto požadavků kladených na vodoznak se vytvořil seznam pravidel, které musí být při tvorbě vodoznačení splněna. Mezi hlavní požadavky u digitálních vodoznaků patří zejména odolnost, nepostřehnutelnost a bezpečnost. A mezi doplňující požadavky na vodoznak lze zařadit např. složitost, spolehlivost detekce a kapacitu. • Odolnost (robustness). • Nepostřehnutelnost (nonperceptibility). • Bezpečnost (security). • Nadbytečnost (redundance) • Nedetekovatelnost (nondetectability). • Spolehlivost (complexity). • Kapacita (capacity). Odolnost, nepostřehnutelnost a bezpečnost jsou navzájem konfliktní. To znamená, že není možné současně splnit všechny najednou. Pokud potřebujeme vložit velké množství informací, nemůžeme současně požadovat vysokou odolnost vložených dat, nebo jejich nedetekovatelnost. Na druhé straně, pokud chceme dosáhnout vysoké odolnosti, neubráníme se snížení kvality označených dat nebo jejich jednodušší detekovatelnosti. Na následujícím obrázku 3.9 je schematicky znázorněna tato situace.
Obr. 3.9: Požadavky kladené na digitální vodoznak. Odolnost - Nemělo by být možné bez znalosti použité metody a tajného klíče odstranit vodoznak nebo jej znehodnotit tak, že se stane nečitelným. Modifikace zdrojových dat mohou být úmyslné (útoky) nebo neúmyslné (komprese, oříznutí, rotace atd.).
28
Nepostřehnutelnost - Modifikace hostitelských dat, která je zpusobena vložením další informace, tj. vodoznaku, by neměla přesáhnout práh citlivosti zraku nebo sluchu člověka. To znamená, že se musí stanovit určité kritérium vnímatelnosti, které bude použito nejen pro návrh vodoznaku, ale také pro zmenšení zkreslení, ke kterému dochází po vložení. Z toho vyplývá, že jednotlivé elementy hostitelských dat (vzorky, pixely, voxely - objemové elementy), které jsou použity k vložení vodoznaku, by měly být modifikovány jen nepatrně. Bezpečnost - Vložený digitální vodoznak je obvykle chráněn jedním nebo několika kryptografickými klíči, aby se ztížil přístup ke skrytému vodoznaku, a tak se zabránilo v jeho manipulaci nebo odstranění. Jakmile se vodoznak stane čitelným pro útočníka, ten již může snadno provést jeho destrukci, protože zná nejen princip vložení, ale zná přesně i místa, kde jsou vložen skrytá data vodoznaku. Nadbytečnost - Vzhledem k velmi malým povoleným zminám v hostitelských datech je nutné informaci vodoznaku s velkou nadbyteeností (redundantni) rozprostoit ve velkém množství elementu hostitelského signálu, aby bylo možné spolehlivi vytáhnout vložený vodoznak v případě porušování autorských práv. Zavedením nadbyteenosti do hostitelských dat vzniká tzv. globální odolnost vodoznaku, která dovolí znovu získání vodoznaku i z relativni malé části (krátkého úseku) chráněných dat. Nedetekovatelnost Neautorizovaná osoba by neměla být schopna na základě statistických metod odstranit vodoznak. To znamená, že ani vlastnictví velkého počtu digitálních prací označených stejným vodoznakem, by nemělo umožnit jeho detekci. Spolehlivost - Vodoznak by měl představovat dostatečný a spolehlivý důkaz o vlastnických právech k testovaným datům. Kapacita - Kapacita udává množství nadbytečné (vodoznačné) informace, která může být uložena do zdrojových dat. Kapacita vodoznaku je velmi důležitá vlastnost a úzce souvisí s odolností. Pokud totiž zdrojová data obsahují velké množství vložených informací, stává se vodoznak v případě útoku snáze detekovatelným. Naproti tomu při vložení minimálního počtu informačních bitů, které jsou obsaženy jen ve velmi malé oblasti zdrojových dat, je vodoznak prakticky odstraněn jakoukoli modifikací. Je tedy vždy důležité dobře rozhodnout jaké množství vložené informace je vhodné pro konkrétní případ.
29
4
PATCHWORKUV ALGORITMUS
Patchworkuv algoritmus je jeden z prvních algoritmu využívaných pro tvorbu vodoznaku a který se zároveň kdy objevil ve vědecké literatuře. Stalo se to v roce 1995(Bender). My si v této kapitole popíšeme jen jeho originální implementaci, jelikož tento algoritmus byl již mnohokrát pozměněn k jiných úkolům, stejně ale veškeré modifikaci vychází právě ze základního modelu algoritmu. Patchworkův algoritmus se používá převážně ve statických obrazových datech, nicméně určitě si časem najde využití i v dalších multimediálních odvětvích. Je typickým zástupcem vodoznaků z prostorové(jasové) domény, který spočívá na additivním principu a to takovým způsobem, že neznatelně vloží jednotlivé části(bity) vodoznaku do obrazu. Samotné vložení spočívá v náhodném vybrání množiny S obrázkových pixelů, následné rozdělení této množiny na dvě stejně velké množiny S1 a S2 . Pro zvýšení bezpečnosti vybrání těchto množin můžeme použít pro výběr prvků použít tajný klíč K, který bude znát jen autor obrázku. V dalším kroku si vezmeme množinu S1 a pixely v této množině zvětšíme o malou hodnotu d. Pixely v množině S2 snižíme o hodnotu d. Změněné pixely naším vodoznakem následně vrátíme zpět do původního obrazu. Výsledek tohoto postupu je znázorněno v obrázku 4.1.
Obr. 4.1: Princip pačvorkova algoritmu. (Patchwork) Pokud bychom chtěli být více specifičtí, zvolíme si pro náš vodoznak následující signál: +1
if I (i, k) ∈ S1 w (i, k) = −1 if I (i, k) ∈ S2 0 if I (i, k) ∈ /S
(4.1)
30
Kde I(i, k) je pixel původního obrazu na pozici (i, k). Ze vzorce 4.1 tedy vyplývá, že budeme zvyšovat pixely v množině S1 o 1 a v množině S2 budeme naopak hodnoty o 1 snižovat. Tento postup se dá pospsat následujícím způsobem: ai = ai + d bi = bi − d
⇒
ai = ai + 1 bi = bi − 1
(4.2)
Kde ai jsou prvky množiny S1 a bi množiny S2 . Podle Patchworkova algoritmu by se vložení vodoznaku po úpravě dalo zapsat následujícím způsobem: Iw (i, k) = I (i, k) + d · w (i, k) ,
(4.3)
Nyní máme již vodoznakem vložen, ale pro ověření pravosti potřebujeme námi vložená data vyextrahovat. Z patchworkova algoritmu je patrné, že nejsou pro ověření pravosti potřeba původní data. A proto je jen nutné získat pixely, které byly algoritmem změněny. Patchworkův detektor musí tedy získat stejnou množinu pixelů S jako kodér opět za použití tajného klíče. Postup detekce by měl být naprosto stejný jako u kodéru, vezmeme vzorky a porovnáváme jednotlivé pozice, to popisuje následující vzorec: ∆=
1 X 1 X 1 X a [i] − b [i] = (a [i] − b [i]) N1 N1 N2 N2 N N
(4.4)
Po dosazení ze vzorce 4.2 dostane výslednou rozhodovací funkci pro dekodér, která je: 2d pro vodoznačená data E {∆} = 0 pro nevodoznačená data
(4.5)
U patchworkova algoritmu musíme dávat pozor na robustnost vodoznaku, jelikož pixely jsou vybírány statisticky. Zvýšení robustnosti by mohlo vést k odhalení vodoznaku pomocí matematických metod a tím i k jeho následnému odstranění.
31
5
DISKRÉTNÍ KOSINOVÁ TRANSFORMACE (DCT)
Jak již bylo zmíněno v kapitole 3.6.2, patří diskrétní kosinová transformace (nyní jen DCT – Discrete Cosine Transform) do transformací ve frekvenční oblasti, ta převádí prostorový obrazový signál do kmitočtové domény. DCT provádí transformační kódování vzorků ať už jednorozměrných (hudba) nebo vícerozměrných (obraz). Diskrétní kosinová transformace je odvozena z diskrétní Fourierovy transformace tak, že vrací pouze reálnou složkou (kosinové složky). Jde o fourierovskou transformaci, což přináší základní nedostatek - složky v kmitočtové oblasti nenesou žádnou informaci o původní poloze v prostorové oblasti. Tato transformace je totiž určena k analýze statických (u obrazových signálů v prostoru neměnných) periodických signálů. Pokud bychom chtěli zpracovávat nestatická data, řešením je rozdělit původní prostorovou doménu na segmenty, které jsou dostatečně malé tak, aby se výše zmíněná vlastnost neprojevila. Ve skutečnosti jde o největší problém všech kompresí založených na DCT, neboť segmentace je zejména při vysokých stupních komprese (Komprese = data zakódujeme pomocí určitého schématu) zcela evidetní a vnáší do dekódovaného obrazu zkreslení v podobě tzv. blokových artefaktů, které je nutné odstraňovat následným speciálním zpracováním. Segmentace se provádí většinou na bloky o velikosti 8x8 pixelů. Pokud velikost obrazu není násobkem 8, doplní se okraje tak, aby nedošlo k velkému zvýšení stejnosměrné složky – většinou se zrcadlí pixely obrazu Nyní již přistoupíme k samotné transformaci. Existuje více typů diskrétních kosinových transformací, které jsou v literatuře označovány římskými číslicemi jako DCT I až DCT IV. My si v dalším textu představíme pouze DCT II. Ta je zdaleka nejpoužívanější a tvoří základ pro většinu praktických úloh, které DCT nějakým způsobem využívají. Definice DCT-II je následující [12]: N −1 X
·
µ
π 1 j n+ fj = α j xk cos N 2 k=0
¶¸
(5.1)
a analogicky inverzní DCT (také někde označována jako iDCT). ·
µ
−1 1 NX 1 π xn = f 0 αj fj cos j n+ 2 j=1 N 2
¶¸
(5.2)
Kde N značí řád/velikost DCT (v praktických aplikacích typicky 8 či 16) a hodnota indexu j leží v rozsahu 0..N − 1 a [x0 , x1 , . . . , xN ] je soubor zdrojových (vstupních)
32
prvků, [f0 , f1 , . . . , fN ] je soubor výsledných koeficientů DCT (vše reálná čísla). A v obou vzorcích je αj : q 1 N q αj = 2 N
pro u = 0
(5.3)
pro u 6= 0 q
P
−1 Jak je vidět z prvního vzorce pro u = 0 vyjde fj=0 = N1 N k=0 xk . Tento první transformační koeficient se nazývá střední hodnota, nebo-li stejnosměrný koeficient. V literatůře také označován jako DC koeficient. Ostatní jsou označovány jako AC koeficienty (střídavé).
Obr. 5.1: Porovnání DCT a DFT spekter. Při srovnání výsledku DCT a DFT můžeme obecně říci, že při použití DCT stačí méně spektrálních složek k tomu, abychom rekonstruovali původní signál ze spektra se stejnou přesností. Je to dáno rozdílnými spektry u obou transformací více u obr. 5.1. Můžeme vypozorovat, že u DCT je daleko více energie soustředěno v nižších spektrálních složkách. Z důvodu společného zpracování zvuku a obrazu v multimédiích nám nestačí hovořit pouze o popisu jednorozměrných signálů, ale musíme se zabývat také dvojrozměrnými diskrétními signály. Pro jejich označení budeme pro jednoduchost používat zkratku (2D Dimensional neboli DCT2).
5.1
Dvourozměrná DCT (DCT2)
Dvourozměrná DCT vychází vlastně, vzhledem k separabilnosti transformace z DCT prvního řádu. Provádí se zde DCT jednotlivých řádků, následovaná transformací
33
sloupců. Protože s tímto typem transformace budeme při vypracovávání diplomové práce pracovat, rozebereme si DCT2 také trošku podrobněji. Hlavní výhodou DCT2 je její využívání v kompresních standardech JPEG a MPEG, kde dochází díky DCT ke značné úspoře. To je také důvod, proč je DCT často používaná při vodoznačení digitálního obrazu a videa. Metoda s využitím DCT je založená na rozdělení zdrojového signálu do bloků, kdy je každý blok transformován samostatně. Používaná velikost bloků je 8 x 8 pixelů (obrazových bodů), což vede ke značnému zjednodušení při výpočtech. Výpočet 2DDCT koeficientů obrazu o velikosti N x N se provádí podle vztahu: C(u,v) = αu αv
N −1 N −1 X X x=0
q 1 N q αj = 2 N
"
#
"
π(2x + 1)u π(2y + 1)v f(x,y) cos cos 2N 2N y=0
#
pro u, v = 0
(5.4)
(5.5)
pro u, v 6= 0
Kde je u, v = 0..N − 1 a αu a αv viz. 5.5. Následně podmínky pro zpětnou tranformaci iDCT2: f(x,y) =
N −1 N −1 X X x=0
#
"
"
π(2x + 1)u π(2y + 1)v αu αv C(u,v) cos cos 2N 2N y=0
#
(5.6)
Na obrázku 5.2 jsou zobrazeny bázové funkce DCT, kde šedá představuje nulu, bílá představuje pozitivní hodnoty, a černá představuje záporné hodnoty [9].
Obr. 5.2: Bázové funkce matic 8x8 Jak je vidět z obrázku 5.3 po provedení DCT je většina energie obrazu soustředěna v nízkofrekvenční oblasti(1) (viz 5.2). Vysokofrekvenční složky (3) reprezentují pouze malou část energie obrazu, obsahují pouze informace o detailech obrazu. Proto je tedy vždy důležité určit hlavní požadavky na vodoznak nebo na konkrétní aplikaci.
34
Pokud by byl vodoznak vložen do nízkofrekvenční oblasti (2), dosáhlo by se vysoké odolnosti proti různým modifikacím, ale zároveň by tento postup mohl způsobit viditelné změny ve vodoznačeném obraze. Pokud je požadována vysoká nevnímatelnost, vodoznak se vkládá do vysokofrekvenční oblasti, tím je ale získán velice málo odolný vodoznak, který může být například snadno odfiltrován klasickou filtrací na potlačení šumu. Tyto vlastnosti vyplývají z charakteristiky citlivosti lidského oka. Na základě rozboru zmíněných podmínek je vhodnou oblastí pro vložení vodoznaku oblast středních frekvencí, tato oblast je kompromisem mezi odolností a viditelností vodoznaku a toho chceme při návrhu vodoznaku dosáhnout viz kapitola 3.8.
Obr. 5.3: Zobrazení DCT koeficientů.
35
6
RHC ALGORITMUS
Jak již bylo řečeno v dřívějších kapitolách, máme dvě hlavní domény, ve kterých můžeme vkládat vodoznak. První z nich je prostorová doména a druhá je frekvenční doména. U prostorové domény je hlavní vlastností při vložení vodoznaku změna jasu některého z vybraných pixelů. Jeden ze zástupců je například patchworkův algoritmus. Pokud bychom chtěli ale zvyšovat kapacitu vkládaného vodoznaku, je to sice možné, avšak poté je větší pravděpodobnost, že ukryté vodoznaky mohou být snadněji detekovány některou z počítačových analýz. Ve frekvenční doméně vkládáme vodoznak do frekvenčních koeficientů po provedení některé z nejčastěji používaných transformací(DFT,DCT,DWT). Díky těmto transformacím je těžší vložený vodoznak detekovat, avšak je zde jedno velké omezení, které limituje používání těchto metod pro vkládání vodoznaku. Nemůže vložit „objemnějšíÿ vodoznak kvůli zkreslení obrazu. Jelikož kmitočtové složky v tomto případě přímo korespondují s úrovní detailů v obraze, nízké kmitočty značí souvislé plochy beze změn, vysoké kmitočty poukazují na prudké změny barevné informace. Po provedení transformace viz. obrázek 5.3, bychom měli vkládat vodoznak do oblasti, kde jsou absolutní hodnoty koeficientů vyšší(significant coefficients), bohužel transformovaný obraz obsahuje jen několik těchto koeficientů a tím je limitována kapacita vloženého vodoznaku.
6.1
Zvýšení počtu koeficientů
Při frekvenční transformaci, nízké frekvence reflektují souvislé plochy v obrazu a vysoké frekvence oblasti z velkou změnou intenzity(šum). Pokud bude obraz obsahovat pouze souvisle oblasti, po transformaci nezískáme skoro žádné transformační koeficienty s požadovanou absolutní hodnotou, tím je zamezeno vložení vodoznaku do obrazu. Jestliže ale obraz obsahuje vyšší úroveň šumu, pak můžeme získat více důležitých koeficientů pro vložení požadovaného vodoznaku. Toto je hlavním principem RHC algoritmu (Robust Hight-Capacity). Na obrázku 6.1 je zobrazen postup algoritmu, v bodu A je původní obraz, bod C zobrazuje vyjádření původního obrazu přímo v hodnotách a nakonec bod E, je provedena DCT tohoto obrazu. V bode B došlo k přeskupení pozice jednotlivých pixelů a tim vznikl obraz, který obsahuje námi požadovaný šum. Tímto přeskupením jednotlivých pixelů se dramaticky zvýšil počet koeficientů, se kterými můžeme pracovat při vkládání vodoznaku, jak je vidět na v bodě F. Pokud bychom nastavili hodnotu pro výběr koeficientu pro vložení vodoznaku na hodnotu 70, získali bychom v prvním případě pouze 2 koeficienty, zatím co v druhém případě 14.
36
Obr. 6.1: Příklad zvýšení počtu koeficientů
6.2
Odstranění souvislých ploch - Chaotická mapa
Pro zvětšení kapacity vodoznaku byla použita technika chaotických map, která odstraní prostorovou souvislost a tím zvýši počet získaných koeficientů. Tato technika byla již dříve prezentována Zhao, Chen a Liu pro zvýšení robustnosti při vlnkové transformaci [11]. Jelikož je tradiční chaotická mapa založena na přesunu pouze samotných pixelů, musela být vytvořena metoda, jenž umožní blokový přesun pixelů za pomoci chaotické mapy. Jak již z názvu vyplývá chaotická mapa by měla mít chaotické vlastnosti, což znamená nahodilé. Tedy žádným možným způsobem nemůžeme predikovat příští hodnotu, která bude chaotickou mapou vygenerována. Pro náš účel nám posloužila logistická mapa, která náhodným způsobem generuje vektor podle našich vstupních parametrů. Logistická mapa je příkladem, kde velmi složité chaotické chování může vzniknout z velmi jednoduché nelineární dynamické rovnice. Mapa byla propagována biologem Robert May v roce 1976 a je to jedna z nejjednodušších map obecně. Původně byla vytvořena jako velmi jednoduchý model pro populační růst druhů v přítomnosti omezujících faktorů, takových jako je dodávka potravin nebo nemoc. Při studiu populačního růstu v uzavřeném prostoru (například se může jednat o ryby žijící v jednom rybníku) se pro jeho značně zjednodušený model došlo k závěru, že velikost populace v určitém časovém období, například pro každý rok, závisí na velikosti populace v jednom předchozím časovém období. Systém tedy nemá žádnou dlouhodobou „paměťÿ, ve které by si pamatoval všechny předešlé stavy. Populační růst klesá, jakmile celková část populace dosáhne či přesáhne určitou hodnotu Xm (příliš mnoho organismů v uzavřeném prostoru), a v menší populaci naopak dochází
37
k jejímu růstu. Matematicky toto může být psáno jako: xn+1 = R ∗ xn (1 − xn )
(6.1)
Kde x(1) je počáteční podmínka pro systém, R nabývá těchto hodnot v intervalu 0 ≤ R ≤ 4 nejčastěji se však nastaví hodnota na tento interval 3.5699456 ≺ R ≤ 4, kde je chaotické chování a co největší rozkmit hodnot v intervalu < 0, 1 > (vychází z bifurkačního diagramu). Tato mapa je velmi citlivá na počáteční podmínky, pokud zadáme jiné inicializační nastavení, vždy je vygenerována jiná posloupnost. Pro jasnější představu o chování jednorozměrného dynamického systému se proto používá účinný vizuální nástroj – bifurkační diagram obr. 6.2. Detailnější informace o vlastnostech logistické mapy naleznete na stránkách matematického světa viz. [?, logistic]
Obr. 6.2: Ukázka chování logistické mapy - bifurkační diagram Na obrázku 6.3 je naznačen postup pro přeskládávání obrazu, který můžeme rozdělit na několik jednotlivých částí. Nejdříve po načtení námi zvoleného obrazu, ho rozdělíme na bloky podle zvolené velikosti např. bloky 2x2 pixely. Tyto bloky dále označíme jakýmsi jednoznačným označením. Následně vygeneruje náhodnou sekvenci čísel (vektor), podle které budeme obraz přeskládávat. Na dalším obrázku 6.4 jsou pak vidět jednotlivé výsledky po vícekrát provedeném přeskupování.
38
Obr. 6.3: Změna obrazu podle chaotické mapy. (a) je původní obraz, (b) naznačeno označení bloků 2x2 pro přehození (c) bloky již přesunuty
Obr. 6.4: Výsledky po provedení blokového přeskládání (a) původní obraz, (b) 1x přeskládáno (c) 2x (d) 3x (e) 9x
6.3
Referenční registr a kontejner (RR,RC)
Dalším postupem v algoritmu je získání dvou registrů označovaným jako referenční registr a kontejner. Tento postup nese označení IBPC což znamená Intersectionbased pixels collecting, volně přeloženo střídavé vybírání pixelů. Vstupem pro tuto metodu je obraz o velikost 16 x 8 pixelů, ze kterého se následně některým ze 3 způsobů naznačených na obr. 6.5 získávájí registry, které budou sloužit pro výběr pixelů a vložení vodoznaku do obrazu. Každý pixel ve vstupním subobraze je označen jakousi značkou a to buď A, nebo B a po zvolení některého ze 3 způsobu výběru získáme dva oddělené registry. Nakonec zvolíme, že pixely označené A budou sloužit jako kontejner a pixely B budou reprezentovat referenční registr. Samozřejmě že
39
velikost těchto registrů bude 8 x 8 pixelů.
Obr. 6.5: 3 možné způsoby zisku registrů
6.4
Proces vložení vodoznaku
V předchozí kapitole jsme si popsali zisk referenčního registru a kontejneru, které jsou nejdůležitějšími částmi, jelikož kontejner budeme modifikovat pro vložení vodoznaku. Postup jakým probíhá vložení vodoznaku je blokově znázorněn na obrázku 6.6. Pro pochopení je nutné si ještě jednouše vysvětlit, co se v daném algoritmu odehrává : 1. Hi,j - načtený šedotónový obraz o rozměrech n x m. 16x8 2. H(i,j) rozdělíme na bloky 16 × 8, kde 1 ≤ i ≤ [n/16] a 1 ≤ j ≤ [m/8]. 8x8 3. Zisk HA8x8 (i,j) a HB(i,j) pomocí IBPC, každý o velikost bloku 8x8 pixelů. 8x8 4. DA8x8 i,j a DBi,j , získáno po DCT2 opět bloky 8 × 8 pixelů. 8x8 5. QA8x8 i,j a QBi,j , po DCT2 následně vyděleno kvatizační tabulkou.
6. Výběr koef. z QB díky Rth a vložení vodoznaku do QA na stejná místa. 8x8 je to RC s vloženým vodoznakem o velikost 8 × 8 pixelů. 7. Ei,j 8x8 matice vynásobená kvantizační maticí. 8. Mi,j 8x8 provedena inversní DCT2. 9. Ii,j
40
16x8 8x8 8x8 10. Ci,j použítím iverzní IBPC bloků Ii,j a HBi,j , jenž zůstal nezměněn.
11. O - upravený původní obraz
Obr. 6.6: Blokové schéma vložení vodoznaku Pro detailnější popis vložení vodoznaku musíme nejdříve získat matice DA a DB. Obě matice nejdříve podělíme kvantizační maticí, kterou získáme zadáním kvantizačního faktoru a základní kvantizační JPEG tabulkou viz. vzorec 6.2. Podělení koeficientů maticí je důležité z hlediska nalezení vhodných koeficientů pro vložení vodoznaku. Díky tomuto kroku by odstranění vodoznaku z obrazu jpeg kompresí, nemělo být tak jednoduché, jelikož vkládáme vodoznak do nižších frekvencí, které se „neměníÿ. Protože u typických obrázků se hodnoty důležité pro rozpoznání obrázku lidským vizuálním systémem (HVS) nachází v DCT koeficientech reprezentujících stejnosměrnou složku a také amplitudy kosinusových průběhů malých frekvencí.
Obr. 6.7: Kvantizační JPEG matice Vyšší frekvence se ve zpracovávaných obrázcích samozřejmě také vyskytují, u fotek se většinou jedná o normální šum či hrany, u kterých se projeví rozmazání a „kostičkováníÿ (zviditelnění bloků 8 × 8 pixelů). Při návrhu kvantizačních tabulek je velmi důležité vědět, jakou strukturu obrázku reprezentuje příslušný DCT koeficient
41
viz. obrázek 6.7. Pro QFaktor menší než 50 : T abnew = Qtable(i,j) ×
50 QF aktor
(6.2)
Pro QFaktor větší než 50 : T abnew = Qtable(i,j) × (2 − 0.02 × QF aktor)
(6.3)
8x8 Po zisku matic (QA8x8 (i,j) ) (kontejner) a (QB(i,j) ) (referenční registr) se již můžeme pustit do samotného vkládání vodoznaku do obrazu. Nejdříve budeme pracovat s referenčním registrem, ve kterém nalezneme pozice pro vložení vodoznačících dat, vodoznak je pak tedy vložen do korespondujících pozic v kontejneru (QA8x8 (i,j) ).
(V C ) + α(V R ) pro (k,l) (k,l) C S(k,l) )= C (V(k,l) ) ostatni
R (V(k,l) ) ≥ RRT h
(6.4)
C R 8x8 Kde (V(k,l) ) a (V(k,l) ) obsahují hodnoty z (QA8x8 (i,j) ) a (QB(i,j) ). Dále 0 ≤ k, l ≤ 7 a α > 0. Ještě poznamenejme, že čím větší dáme alfa, tím větší můžeme očekávat robustnost vodoznaku.
6.5
Proces extrakce vodoznaku
Extrakce vodoznaku z obrazu probíhá podobným způsobem jako vkládání. Pro správné vytažení vodoznaku potřebujeme vodoznačený obraz a původní vodoznak pro jejich následné porovnání. Následující postup jednoduše vysvětlí úkony jenž jsou prováděny pro zisk vodoznaku. 1. Oi,j - načtený šedotónový vodoznačený obraz o rozměrech n x m. 16x8 2. O(i,j) rozdělíme na bloky 16 × 8, kde 1 ≤ i ≤ [n/16] a 1 ≤ j ≤ [m/8]. 8x8 3. Zisk OA8x8 (i,j) a OB(i,j) pomocí IBPC, každý o velikost bloku 8x8 pixelů. 8x8 4. T A8x8 i,j a T Bi,j , získáno po DCT2 opět bloky 8 × 8 pixelů. 8x8 5. RA8x8 i,j a RBi,j , po DCT2 následně vyděleno kvatizační tabulkou.
6. Výběr koef. z RB díky Rth a extrakce vodoznaku z korespondujících pozic. 7. Kompletace vodoznaku z jednotlivých bloků.
42
Tento popsaný postup odpovídá obrázku 6.8, jenž je opačný k procesu vložení, s upraveným detektorem. Samotnou extrakci vodoznaku z vodoznačených dat popisuje následující vzorec. 1 w= 0
R R C ) − (W(k,l) ) ≥ α(V(k,l) ) pokud (W(k,l) ostatn
(6.5)
C R 8x8 Kde (W(k,l) ) a (W(k,l) ) obsahují hodnoty z (RA8x8 (i,j) ) (kontejner) a (RB(i,j) ) (referenční R registr). Dále 0 ≤ k, l ≤ 7 a α > 0 a (V(k,l) ) obsahuje původní hodnoty, které byly 8x8 získány při vkládání vodoznaku z registru (QB(i,j) ). 1
Obr. 6.8: Blokové schéma vytažení vodoznaku
1
Po naprogramování extrakce vodoznaku jsem dospěl k závěru, že takto navrhnutý detektor C C R nefunguje správně a musel být modifikován následujícím způsobem. (W(k,l) ) − (V(k,l) ) ≥ α(W(k,l) )
43
7
PRAKTICKÁ ČÁST
V této části práce již upustíme od teoretických vlastností jednotlivých problémů a pokusíme se vytvořit a modifikovat jednotlivé metody pro vkládádní vodoznaků a také následně tuto práci popsat. Dále v této části práce si také popíšeme postupy, jak danou metodu pro vložení vodoznaku otestovat, abychom měli možnost posoudit, jakým způsobem byl vytvořený algoritmus účinný, popřípadě ho ještě modifikovat.
7.1
Analýza obrazu po vložení vodoznaku
K analýze vlastnosti imperceptibility vložených vodoznaků a vytáhnutého vodoznaku se používají následující subjektivní a objektivní metody. Subjektivní kritéria je možné popsat dvojím způsobem: • Kvantitativně neboli známkami. • Kvalitativně neboli slovně. Jedná se o vizuální hodnocení kvality obrazu člověkem. Při hodnocení je obvykle k dispozici celá řada obrazů k posouzení. Při subjektivním hodnocení obrazu je potřebné navíc si uvědomit, že zrakový systém je nelineární systém. Proto např. obraz s vyšším odstupem SNR, ale skreslením na obrysech (hranách) se subjektivně může jevit horší v porovnání s obrazem s nižším odstupem SNR, ale se skreslením pozadí. Díky menší objektivitě v subjektivním vyhodnocování si člověk vytvořil metody, které lépě vyhodnocují daný obraz a nejsou náchylné na nedokonalost lidského oka jako detektoru. Existuje-li obraz o rozměrech M xN pak: e(x,y) = f(x,y) − g(x,y) ,
(7.1)
kde e je odchylka rekonstruovaného obrazu g(x,y) od originálu f(x,y) a x a y jsou souřadnice bodů v obraze. Střední kvadratická chyba(MSE - Mean Square Error): −1 N −1 X 1 MX M SE = e2(x,y) , M N x=0 y=0
(7.2)
Střední absolutní chyba (MAE - Mean absolute error): M AE =
−1 N −1 ¯ ¯ X 1 MX ¯ ¯ ¯e(x,y) ¯ M N x=0 y=0
(7.3)
44
Odstup signálu od šumu (v [dB]):
M −1 N −1 X X 1 SN R = 10log10 g2 M · N · M SE x=0 y=0 (x,y)
(7.4)
Vrcholový odstup signálu od šumu (Peak Signal to Noise Ratio) Ã
P SN R = 10log10
2552 M SE
!
(7.5)
Čím větší PSNR, tím je lepší kvalita vodoznačného obrazu ke vztahu k původnímu obrazu. Pro oveření vytáhnutého a originálního vodoznaku používáme normalizovanou vzájemnou korelaci (normalized cross-correlation, NCC) [6]:
M −1 N −1 X X
N CC =
0
M −1 N −1 X X
W(x,y) W(x,y) /
x=0 y=0
2 W(x,y)
(7.6)
x=0 y=0
Kde W je originální vodoznak, W 0 vytažený vodoznak. Výstup funkce je v rozmezí hodnot 0 až 1.
7.2
Způsoby útoků na vodoznačený obraz
Hlavní vlastností vodoznaku by měla být jeho neodstranitelnost. My sice vytvoříme zcela novou metodu pro vložení, ale musíme se ujistit, že není jen tak lehce prolomitelná. Abychom byli schopni metodu pro vodoznačení digitálních dat úspěšně otestovat, je nutné najít způsob, jak vodoznačená data podrobit co největšímu množství různých útoků a po každém útoku se pokusit modifikovaný vodoznak extrahovat. V tomto požadavku nám dostatečně poslouží programy pro provedení útoku na daný vodoznakem označený obrázek a zároveň již také vyhodnocující odolnost vodoznačených obrázků vůči různým způsobům napadení. V současné době máme možnost volit z nejméně tři veřejných nástrojů: Stirmark, Optimark a Checkmark. Po bližším prozkoumání těchto nástrojů jsem zjistil, že Optimark a Stirmark jsou psány v jazyce C. Tato skutečnost se nám moc nehodí, jelikož požadavek pro tvorbu našich programu byl takový, že bude použito prostředí MATLAB (Matematická laboratoř). Jelikož tedy budeme vytvářet metody v programu MATLAB je tedy vhodnější použít nástroj Checkmark, který je také psaný v matlabovkém prostředí.
7.2.1
Checkmark
Checkmark byl vyvinutý na univerzitě v Ženevě v roce 2001 (Pereira). Je vytvořen v programovacím prostředí MATLAB a běží pod Windows a Unix. Poskytuje efektivní a účinný nástroj k hodnocení technologií vodoznačení. Jeho poslední verze 1.2
45
je ke stažení na stránkách http://watermarking.unige.ch/Checkmark/. Checkmark v sobě zahrnuje nové vylepšené třídy útoku oproti předchozím nástrojům, jimiž jsou například vlnková komprese, projektivní transformace, deformace v obraze, podvzorkování a nadvzorkování. Byly také implementovány nové metody pro hodnocení kvality vodoznačného obrazu, vážená špičková hodnota signál-šum (weighted PSNR) a Watsonová metrika (Watson metric). Podíváme-li se trošku blíže na program Checkmark, zjistíme, že nám nabízí řadu možností v závislosti na tom, co chceme testovat. Jako první je potřeba zvolit nám vyhovující aplikaci. Pod názvem aplikace rozumíme určitý soubor útoků, jenž budou na daný obrázek aplikovány. Tyto útoky se liší aplikace od aplikace podle toho, jaká data mají být vodoznačená a k jakému účelu se mají použít. Nastavitelné aplikace v programu jsou: • Copyright – ochrana autorských práv – jde o útoky, kterým mohou být digitální data vystavena v průběhu přenosu internetem, nebo při pokusech útočníka zneškodnit vodoznak a současně zachovat kvalitu obrazu. • Banknote – testování algoritmů nejnáročnějších na odolnost vodoznaku, použití útoků které se snaží vodoznak co nejlépe zkopírovat nebo zlikvidovat. • Medical – testování ochrany různých lékařských dat, jako jsou rentgeny apod. Pro ochranu těchto dat se dají použít jen některé metody (například metody využívající ke vložení vodoznaku určitou část barevného spektra signálu by byly nepoužitelné, jelikož většina lékařských záznamů používá jen dvou barev). • Logo – aplikace testující možnosti útoků na data viditelně vodoznačená, tato data bývají nejodolnější, tudíž také útoky nejagresivnější a nejvíce degenerující obraz. • Nongeometric – z možných útoků jsou vyjmuty všechny geometrické útoky. Další nastavené výběry a srovnání děláme na základě možných útoků aplikovatelných na daný obrázek. Útoky rozdělujeme dle obrázku 7.1: • Odstranění části obrazu nebo přidání šumu, • Geometrické útoky, • Kryptografické útoky, • Protokolové útoky.
46
Obr. 7.1: Základní rozdělení a třídy útoků podle p. Shelby Pereira. Pokud by někdo projevil větší zájem o informace ohledně útoků a jejich dělení může si jednoduše dohledat na stránkách výrobce http://watermarking.unige.ch/Checkmark/. Výsledky testů z nástroje Checkmark jsou přehledně generovány do tabulek v HTML formátu, kde máme veškeré informace navolené při konfiguraci benchmarku. Výsledky jsou vyjádřeny procentuelně, díky tomu si člověk rychle udělá představu jak je jeho algoritmus „odolnýÿ.
7.2.2
Konfigurace Checkmarku
Po stažení zabaleného souboru ze stránek výrobce a jeho následného rozbalení do programového adresáře se vrhneme k jeho konfiguraci. Jelikož k této aplikaci není skoro žádná nápověda, je jeho nastavení obtižnější. Doporučil bych bedlivě přečíst veškeré odkazy na stránkách výrobce. Jak již bylo zmíněno v předchozích kapitolách, pracuje checkmark v prostředí MATLAB, bylo tedy nutné nainstalovat některou z dostupných verzí. V mém případě se jednalo o již dělší dobu osvědčenou verzi 7.1 (R14, SP3). Aby bylo možné pracovat s tímto nástrojem, je potřeba ho správně nastavit podle postupu na www stánkách v sekci FAQ (using the program). V první kroku je to upravení souboru getconfig.m, jelikož se v tomto souboru nastavují hlavně cesty k samotnému programu, jednotlivým obrázkům a výstupům. Jednotlivé položky jsou: • checkmarkPath - cesta k nástroji Checkmark, • SETUP.imagepath - cesta k vodoznačeným obrazům (vodoznačený i originál),
47
• SETUP.attackedsubdir - cesta pro ukládání vodoznačených obrazů po jednotlivýchh útocích, jen název bez úplné cesty. • SETUP.applicname - pro jaké aplikační účely se má Checkmark používat ,copyright, nongeometric, copyright, banknote, logo, medical, video, • SETUP.numims - počet vodoznačených obrázků na vstupu, • SETUP.techname - název metody vodoznačení, • SETUP.mainHTMLpage - název výstupní HTML stránky, • SETUP.HTMLPATH - cesta k HTML stránce. • SETUP.HTMLBASE-HREF - stejné jako v předchozím případě, • SETUP.HTML-IMAGES-PATH - cesta k obrázkům sloužící jako pozadí vygenerovaných výsledků, • SETUP.JARSPATH - cesta k JAR souborům (xalan.jar, xerxes.jar), slouží k vygenerování HTML stránky z XML formátu. Po správném nastavení souboru, bych měli spustit skript runCheckamrk.m, ten provede jednotlivé útoky na vodoznačený obraz vybrané danou třídou. Výsledky uloží do definované cesty. Dalším bodem je použití skriptu testDetector.m, kde příkaz „detectionresult = executedetector(fname);ÿ volá funkci executedetector.m, která musí být upravena podle metody vytažení vodoznaku s rozhodovací funkcí (0,1), jelikož funkce pro detekci vodoznaku zde není implementována. Metodu musíme vytvořit spolu s vložením vodoznaku a implementovat do tohoto skriptu. Výstupem je poté vygenerování XML formátu, kde jsou jednotlivé výsledky testu 1 . Ještě je potřeba na řádku 25 a 82 změnit příkaz: „com1=sprintf(’cd %s’,dir1); eval(com1);ÿ na „com1=cd(dir1);ÿ, pro změnu adresáře k obrázkům po útoku. Ještě menší poznámka k průběhu testu, kompletní test je pro 386 parametrově, nikoliv typově, různých útoků. Pokud bychom chtěli provádět jen některé je nutné upravit soubor copyright.cfg. Nyní máme vše potřebné nastavené a celý proces testování s vygenerováním výsledků spustíme jednoduše pomocí dávkového souboru doall.m.
1
Pokud vznikne chyba při generování html souboru, je potřeba upravit v souboru unige199964-copyright.xml řádek < attackref = copy1 − J100.jpg > 001 < /attack > na < attackref = copy1 − J100.jpg > 1 < /attack > je ale možné, že se tato chyba objevila pouze v mém případě
48
7.3
Realizace patchworkova algoritmu
Realizace patchworkova algoritmu je založena na změně vybraných prvků (pixelů) v obrazu. Tato metoda svou podstatou patří do technik, kde vodoznaky vkládané v jasové oblasti. Využívá se zde nedokonalosti lidského zraku, jelikož člověk není schopen rozpoznat určitý počet přechodů, nebo-li jasových úrovní. Metoda která využívá přímé začleňování vodoznačených dat do obrázku a využívá nedokonalosti lidského oka se nazývá LSB, o této jsme se zmínili již dříve a proto ji již nebudeme znovu popisovat. Tuto sekci rozdělíme do několika podčástí. V první se zaměříme na implementaci vodoznaku pomocí metody založené na patchworkově algoritmu a na stručný popis funkce pro vložení vodoznaku. V druhé části popíšeme získání vodoznaku z obrazu a nakonec v poslední části provedeme testování neviditelnosti vodoznaku a odolnost vůči vybraným útokům na obraz. V testovací části se zaměříme odolnost vůči JPEG kompresi, waveletové kompresi, zostření a dalších, které jsou obsaženy v programu checkmark. Samotný algoritmus budeme vytvářet v prostředí MATLAB, který patří již dlouhá léta mezi jedny z nejlepší programů pro práci s různými vektorovými a maticovými signály. Čimž obraz bezesporu je. V tomto případě byla použita verze 7.1.0. 246(R14) Service Pack 3.
7.3.1
Vložení vodoznaku
Nyní se již vrhneme do popisu samotného programu. První podmínkou pro úspěšný pokus je výběr vhodného „testovacího obrázkuÿ, v našem případě tedy obraz o definovaném horizontálním a vertikálním rozlišení, v 8-bitové barevné hloubce, resp. ve 256ti odstínech šedi. Dále je nutné si připravit obraz, které budeme vkládat do původního obrazu (vodoznak). Měl by to být pouze černobílý obrazék, kde jednotlivý pixel reprezentuje hodnota 1 a 0. Při tvorbě programu jsme postupovali takovým způsobem, že jsme si nejdříve vytvořili funkční posloupnost příkazů, která nám provedla samotné vložení a vytažení vodoznaku a jejich hodnocení, tato část však byla jen pouze polovina práce, bylo nutné ještě vytvořit grafické prostředí k tomuto skriptu. Grafické prostředí v MATLABU je příjemné zjednodušení pro zadávání dat do funkcí. Mohou zde být různé grafické prvky, jenž umožní spoustu nastavení dané funkce. Pokud by někoho zajímalo více toto prostředí může si nastudovat z [16]. Na obrázku 7.2 je zobrazen algoritmus pro vkládání vodoznaku do obrazu a je vytvořen takovým způsobem, že umí zpracovat obraz o (v zásadě) libovolné velikosti. Je ovšem potřeba brát v úvahu paměťové a výkonové nároky na hardware při
49
Obr. 7.2: Blokové schéma algoritmu pro vkládání vodoznaku. zpracování velkého obrazu, proto jsem pro tuto praktickou ukázku zvolil obraz „poměrně malýÿ, a to o velikosti 510x521 pixelů. I při těchto rozměrech samotné vložení vodoznaku trvá poměrně dlouho a možná by bylo vhodnější použít obraz menších rozměrů. Testování prováděno na sestavě s C2D o frekvenci 2.3GHz a proces trval více jak 1 minutu. Původní obraz dle mého výběru je na obr 7.3. Pokud by někdo potřeboval upravit popřípadě vyrobit potřebný obraz, dá se určitě pomocí grafického editoru můžeme použít libovolný editor, který nám dokáže vyrobit obraz v námi požadovaném formátu. Já jsem použil Adobe Photoshop, který jsem měl již dříve nainstalovaný.
Obr. 7.3: Obraz použitý pro testovaní algoritmu. Na obrázku 7.4 je již vytvořené prostředí pro práci s algoritmem (spouštíme
50
Obr. 7.4: Grafické prostředí. patch-gui.fig - hlavní grafické prostředí)2 . Ovládání je vcelku jednoduché, uživatel musí nejdříve načíst obraz do kterého budeme vkládat námi vytvořený vodoznak. Pokud toto neprovede není mu umožněno dále pracovat s prostředím. Po tomto nutném kroku jsme načetli připravený obraz do paměti. Odstíny šedi jsou definovány jako kombinace osmi bitů, tj. 28 =256 jasových úrovní šedé. Celou matici obrazu dále překonvertujeme na matici binárních hodnot a vytvoříme osm matic, každá bude obsahovat jednu složku obrazu, jednu bitovou rovinu. Takto získané bitové roviny jsem zároveň i uložil a dají se získat po stisku tlačítka „Kompletní rozkladÿ pod panelem nastavení. Námi načtený obraz rozložený do osmi bitových rovin zobrazuje obraz 7.5. V levo nahoře je hladina 0 a pokračuje v pravo až do 7 hladiny. Na panelu nastavení následně vybereme do které hladiny, budeme námi vkládaný vodoznak vkládat. Pokud tak neučiníme, zůstává nastavena hladina 7, je to 2
Pokud při spouštění grafického prostředí patch-gui.fig vypíše matlab chybovou hlášku, je potřeba gui spustit, z menu file, new, gui, a open gui
51
Obr. 7.5: Kompletní rozklad do bitových rovin. nastaveno kvůli chybě při zadávání. Jelikož máme načten obraz pro vložení vodoznaku a vybranou hladinu do které budeme náš vodoznak vkládat, musíme ještě získat vodoznak. V programu je možnost volit ze 2 různých typů vodoznaků a 4 možností. První 3 vodoznaky fungují na principu kde pro generování našich dat, která se pokusíme zakódovat do bitových rovin využíváme funkce, které nám vygenerují pseudonahodná data. V prostředí matlab se označuje jako randn, která byla ješte trochu modifikována, aby vyhovovala našemu algoritmu. V grafickém prostředí pak máme možnost volby 3 různých klíčů, po zatržení příslušného čísla u názvu klíče je po stisku tlačítka vložit vygenerován. Opět je automaticky vybrán vodoznak č.1. Po vybrání 4 vodoznaku máme možnost vložit do bitové roviny obrázek, na obrázku 7.4 je již provedeno vložení vodoznaku do 3 bitové roviny s vodoznakem 4. Výsledné obrazy po zakódování dat jsou zobrazeny v pravé části prostředí v panelu „Výsledkyÿ. První z nich je původní obraz z dané hladiny, v našem případě 3. Správnost tohoto obrazu si můžeme ověřit také stiskem tlačítka kompletní rozklad a následně porovnat. Druhý z obrazů reprezentuje modifikované koeficienty a poslední z nich je výsledný vodoznačený obraz. Pokud by uživatel potřeboval větší obrázky pro detailnější prozkoumání například vloženého vodoznaku, je zde možnost vybrat zobrazení vetších obrazů, které se nebudou vkládat do grafického prostředí, ale otevře se nové okno. Kde máte možnost si obraz otočit nebo zvětšit. Provede se to odškrtnutím na panelu nastavení.
52
Na obrázku 7.6 je provedeno vložení vodoznaku č.1 do různých hladin a to první, čtvrté a poslední bitové roviny. Z obrázků je patrné, že výběr bitové roviny pro kódování dat je viditelný na první pohled. V zásadě se lze držet pravidla, že pokud modifikujeme tzv. LSB (Least Significant Bite), rozdíl mezi originálním obrazem a zpracovaným obrazem nelze normálním okem pozorovat. Naopak čím více se v modifikacích blížíme prvnímu bitu (MSB – Most Significant Bit) o to více je na výsledném obrazu vidět sebemenší změna. Samotný patchworkův algoritmus jak vyplývá z kapitoly [4], kde vložení spočívá v náhodném vybrání množiny S obrázkových pixelů, následné rozdělení této množiny na dvě stejně velké množiny S1 a S2 . Tento postup byl při tvorbě algoritmu menším způsobem modifikován. A to tím způsobem, že sice vybereme množinu prvků S(což odpovídá celému obrazu), ale již pak neprovedeme rozdělení na dvě stejné množiny, ale na tři. Velikost těchto množin S1 a S2 a S3 je čistě náhodná. Kde S1 obsahuje prvky s hodnotou +d, S2 prvky s hodnotou -d a S3 prvky nezmenene. Pro tento postup byla vybrána logická operace XOR (eXclusive OR), která vodoznak zakóduje do dané bitové roviny. Změnou hodnoty v dané hladině, se provede změna o náme požadované d.
7.3.2
Vytažení vodoznaku
Proces vytažení vodoznaku je opačná operace k procesu vložení 7.2. K extrakci vodoznaku a tím i ověření pravosti, bude zapotřebí původní obraz I (bez vodoznaku) a obraz s vloženým vodoznakem IW , dále uživatelský klíč K. Uživatelský klíč je tvořen informacemi o použité bitové rovině, použitém vodoznaku a způsobu vložení obrazových prvků do bitové roviny při vkládání vodoznaku. Originální obraz I tedy rozložíme na bitové roviny tento postup opakujeme i pro obraz s vodoznakem IW , který rozložíme také na jednotlivé bitové roviny. Na základě uživatelského klíče K porovnáme vhodné bitové roviny a správnou selekcí prvků získáme vložený vodoznak WP . Postup extrakce vodoznaku je graficky znázorněn na obr. 7.7. Výstupem je poté vytažený vodoznak a míra shody vytaženého vodoznaku s vloženým. Tuto shodu popisuje normalizovaná vzájemná korelace viz vzorec 7.6 z kapitoly [7]. Detailnější kroky algoritmu vytažení vodoznaku jsou stejné jako u vložení, a proto je nebudu znovu popisovat. Extrahováním vodoznaku z obrazu dokazujeme autorská práva k obrazu, do kterého byl vložen. Na blokovém obrázku 7.7 je naznačena míra shody rovna 1 nebo 0 tzn. vytažený vodoznak je zcela stejný jako jeho originál a vytažený vodoznak není ani v jednom případě stejný. To ovšem platí jen v ideálním případě, který za normálních podmínek nikdy nenastane. Proto se v další kapitole zaměříme na provedení testů odolnosti na zrealizované metodě.
53
Obr. 7.6: Vložení vodoznaku do vybraných hladin. Pro zvýšení odolnosti vodoznaku je vhodné do obrazu vkládat co největší množství informací (jako v našem případě celý obraz). To může být realizováno např. vkládáním vodoznaku s většími rozměry nebo vícenásobným vkládáním vodoznaku vždy do jiné obrazové hladiny. Je to však limitováno neviditelností vložené informace. Při vkládání velmi velkého množství informací bude obraz do velké míry zkreslený, navíc se zvýší také vjemová viditelnost. V příloze na konci diplomové práce jsou pak zobrazeny zdrojové kódy, které obecně popisujeme v těchto kapitolách, počínaje rozkladem do jednotlivých rovin až po hodnocení vytaženého vodoznaku.
7.3.3
Provedené útoku a hodnocení algoritmu
Jak již bylo zmíněno v dřívější kapitole pro hodnocení výsledného algoritmu byl použit program checkmark, abychom zjistili zda je daná metoda vodoznačení vyhovující pro naše nároky. Víme již jak program nastavit a spustit, ale ještě si musíme říci, které útoky checkmark provádí. Pro přehlednost jsem vytvořil následující tabulku.
54
Obr. 7.7: Rozklad obrazu a vytažení vodoznaku z vybrané hladiny. Program checkmark využívá čtyř úrovňovou hierarchii, kde jsou útoky přehledně děleny na: útok.skupina - útok.typ - útok.třída - individuální.útok. Tab. 7.1: Útoky, které je možné provádět programem checkmark Odšumovací
Geometrické
Kryptografické
Protokolové
Filtering Remodulation JPEG JPEG 2000 Median filtering MAP Dithering Treshhold Noise Storm
Scale Crop Rotation Rotation Scale Aspect Ration Shear Linear Bending Warping Projective Collage Template Row/Column removal Down/Up sampling
Key Search Oracle
Copy Attack WM Inversion
Pro detailnější popis jednotlivých útoků je potřeba navštívit stránky http:// watermarking.unige.ch/Checkmark/, kde je jednotlivě každy útok popsán a zobrazen
55
na nějakém zkušebním obrazu. Z těchto vypsaných útoků byly vybrány jen některé, avšak kompletní výsledek po provedení všech útoků je v příloze k dané metodě. Pro naše testování byly vybrány útoky ze skupiny odšumovacích/kompresních útoků a některé geometrické. • Wienerův filter • Prahovaní - měkké, tvrdé - šedotónový obrázek je převeden na černo-bílý • Gausovské rozostření - založeno na filtrování obsahu • Median, midpoint a trimmed mean filtrování • Sampledownup - založeno na převzorkování obrazového signálu • DPR - Odšumování a remodulace • JPEG komprese • Vlnková transformace • Cropping - oříznutí obrazu Dále je potřeba nastavit hodnotu, zda je vytažený vodoznak rozeznatelný se svým originálem. Hranice je nastavena na hodnotu NCC = 0,75. Vytažený vodoznak je považován za shodný se svým originálem, pokud hodnota NCC je větší nebo rovna hodnotě 0,75. V opačném případě je vytažený vodoznak považován se svým originálem za neshodný. Při testování jsem však narazil na případ, že hodnota menší než stanovená i tak dobře popisovala původní vodoznak. Výsledky po útoku JPEG kompresí: Z tabulky 7.2 je patrné, že vložený vodoznak číslo 1, je odolný proti kompresi JPEG do parametru Q=90. S vyšším stupněm komprese se stává vložený vodoznak nedetekovatelný. Oproti vodoznaku č.2, který odolá až do hodnoty komprese Q=75. Pokud se ale podíváme na obrázek 7.9 a na faktor Q=70, lze ještě vložený vodoznak rozeznat. Výsledek u vodoznaku č.1 není bohužel moc uspokojivý a tomto případě by bylo vhodnější použít druhy typ vodoznaku. Více provedených testů je uloženo v příloze diplomové práce ve složce jpeq komprese, kde je vložen vodoznak do různých hladin a následně vytažen s různými výsledky. Výsledky po útoku vlnkovou kompresí: Výsledky některých dalších útoků: již jednotlivé výsledky nebudeme zobrazovat graficky pouze shrneme výsledky do tabulky 7.4. U geometrických útoků mezi něž patří oříznutí obrazu, deformace, rotace,posun, projektivní transformace, odstranění
56
Tab. 7.2: Útok kompresí JPEG, hladina H3 Kvalita Q[-]
NCC1
Shodnost1
NCC2
Shodnost2
100 95 90 85 80 75 70 60 50 40 30 20 10
0,9904 0,8588 0,7475 0,6900 0,6622 0,6484 0,6410 0,6285 0,6202 0,6146 0,6003 0,5960 0,5893
1 1 1 0 0 0 0 0 0 0 0 0 0
0,9853 0,8342 0,7695 0,7266 0,6957 0,6931 0,6770 0,6621 0,6278 0,6361 0,5821 0,5803 0,5774
1 1 1 1 1 1 0 0 0 0 0 0 0
řádku, sloupce atd, bylo vytažení vodoznaku prvního typu téměř vždy neúspěšné, vytažený vodoznak se až na malé výjimky neshodoval se svým originálem. Druhý typ, který vkládá stejný vodoznak do každého rohu obrazu již uspěl lépe, jelikož po například takovém oříznutí obrazu, kde se provede odstranění některých částí obrazu, zůstává stále neporušený vodoznak v jednom z nich a tím může být bezpečně detekovám majitel obrazu. 3 Při testování metody bylo zjištěno, že vkládat vodoznak by se mělo do 3 bitové hladiny, aby byla zaručena nevnímatelnost(nepostřehnutelnost) a zároveň odolnost proti odstranění. U vložení 2 typu vodoznaku do 4 bitové hladiny znatelně vodoznak „zviditelníÿ, pokud bychom ale vkládali první typ. Vložení do 4 bitové hladiny se tolik neprojeví viz. obrázek 7.6. Proto by mohlo vést ke zlepšení této metody spojení obou typů vodoznaků. A to například že bychom měli obraz, který bude plnit funkci vodoznaku, ten následně podle určitého klíče přeskládáme(provedeme permutaci) a vložíme do obrazu.
3
Kompletní vyhodnocení algoritmu po provedení všech 833 útoků, které nabízí program checkmark je ve složce hodnoceni-1/*.html na přiloženém CD
57
Obr. 7.8: Výsledky získané po útoku JPEG kompresí. Vložením vodoznaku do 3 bitové hladiny, při PSNR obrazu 40.869 a
Tab. 7.3: Útok vlnkovou kompresí, hladina H3 Komprese [-]
NCC1
Shodnost1
NCC2
Shodnost2
1:1 1:2 1:5 1:10 1:13 1:16 1:20 1:26 1:40 1:80
0,9865 0,8571 0,6387 0,5986 0,5907 0,5890 0,5876 0,5861 0,5826 0,5772
1 1 0 0 0 0 0 0 0 0
0,9815 0,8411 0,6569 0,5621 0,5559 0,5287 0,5290 0,5413 0,5046 0,5058
1 1 0 0 0 0 0 0 0 0
Obr. 7.9: Výsledky získané po útoku vlnkovou kompresí a vložením vodoznaku do 3 bitové hladiny, při PSNR obrazu 40.864.
58
Tab. 7.4: Provedeny a vyhodnoceny některé další útoky pro vodoznak č. 2, Hladina H3 Útok
NCC
Shoda
Útok
NCC
Shoda
cropping4-W150 cropping4-W350 cropping4-W60 cropping4-W80 cropping4-W800 dpr1 dpr2 dprcorr1 dprcorr2 gaussian1 gaussian2 hardthresh1 hardthresh2 medfilt1
0,68861 0,83503 0,57858 0,56420 0,98007 0,6621 0,65898 0,6498 0,64027 0,76763 0,76537 0,71096 0,70871 0,76745
0 1 0 0 1 0 0 0 0 1 1 0 0 1
medfilt2 medfilt3 midpoint1 midpoint2 sampledownup1 sampledownup2 sampledownup3 sampledownup4 softthresh1 softthresh2 trimmedmean1 trimmedmean2 im1wiener1 im1wiener2
0,96811 0,87506 0,57684 0,51481 0,94801 0,93727 0,87541 0,74857 0,67908 0,69312 0,79674 0,69572 0,66297 0,53786
1 1 0 0 1 1 1 0 0 0 1 0 0 0
59
7.4
Realizace RHC algoritmu
Tato kapitola je věnována druhé realizaci metody popsané v kapitole 6. Jde o poměrně novou metodu vkládání vodoznaku. Je založená na chaotickém přeskupení původního obrazu a následného provedení 2D-DCT. Kde dojde k výběru koeficientů pro vložení vodoznaku a jeho následné vložení. Jelikož byla zmíněna veškerá nutná teorie k tomuto algoritmu, pustíme se do samotného popisu programu a jeho funkcím. Na obrázku 7.10 je vytvořené gui pro tento algoritmus.
Obr. 7.10: Grafické prostředí vytvořené pro RHC algoritmus Grafické prostředí je rozděleno do 3 hlavních částí. První z nich najdeme úplně nahoře. Je zde vytvořené přehledné menu s tlačítky. Po samotném otevření prostředí jsou aktivní pouze 2 z nich, a to načtení obrazu a vodoznaku, které jsou velice důležité pro správnou fci programu. Pokud nebudou načteny tyto dva obrázky program Vám nepovolí dále pokračovat. 4 4
Pokud budeme načítat *. jpg obraz, je nutné abychom ho přejmenovali na Patchwork1.jpg, je to z důvodu hodnocení programem checkmark, pokud ale uživatel tento program nepoužívá, není důvod soubor přejmenovávat.
60
Po načtení těchto obrazů jsou zobrazeny v prostředí a to že nejvíce vlevo je původní obraz a pod samotným obrazem jsou také vypsány některé informace o něm. Dále načtený vodoznak je zde také zobrazen a to v levé části sekce pro vodoznaky.
Obr. 7.11: První krok při vodoznačení obrazu, Rth = 1 a alf a = 0.5 Pokud máme načteny obrazy, program nám dovolí provést výše popsané přeskupení obrazu a to stiskem tlačítka Chaos obrazu. Výsledek je vidět uprostřed. Pod tímto „chaotickýmÿ obrazem jsou ještě důležitá nastavení pro toto chaotické chování. Máme zde možnost výběru 2 typů chaotického chování a to jak chaotickou map tak funkci, která je obsažena přímo v programovém prostředí matlab. Jde o funkci randperm. Tyto dvě možnosti nám vygenerují tajný klíč, který je poté potřebný
61
pro správnou detekci vodoznaku, pokud bychom se pokusili dekódovat vodoznak z obrazu bez správného klíče, nebylo by to možné a výsledek by neodpovídal původnímu vodoznaku. Další volba je kolikrát budeme rotaci provádět, tato volba slouží ke zvětšení počtu koeficientů pro vklad vodoznaku. Dále je zde popupmenu, kde je možné vybrat jak velké bloky obrazu budeme přeskupovat. Následným vybráním se automaticky přepočte kolik je možné vytvořit takových to bloků v načteném obraze. Další dva posuvníky slouží k nastavení chování chaotické mapy, první s nich určuje počáteční podmínky pro generování čísel a druhý určuje rozkmit. Více o této problematice bylo napsáno zde: 6.2.
Obr. 7.12: Prvky jenž byly modifikovány po provedení celého algoritmu V neposlední řadě jsou zde tři editační pole, jenž nám slouží k zadávání hodnot nutných pro vložení vodoznaku, první z nich je kvantizační faktor, dále je zde špičková hodnota, ta určuje kolik koeficientů ve výsledku získáme pro vložení vodoznaku. A poslední z této trojice je alfa, tato hodnota určuje jak velká bude vnímatelnost vodoznaku v celkovém obraze.5 5
Po otevření grafického prostředí jsou automaticky nastaveny hodnoty: Kvantizační faktor=20, Rht = 1, Alf a = 0.2, tyto hodnoty musí volit s ohledem na vnímatelnost vodoznaku.
62
Jakmile máme vše nastaveno, a provedeno přeskupení obrazu, dojde k uvolnění tlačítka vodoznačit. Po stisku tohoto tlačítka je provedeno samotné vodoznačení obrazu, kde dojde k načtení zadaných hodnot z grafického prostředí a provedení vodoznačení s těmito hodnotami. Výsledný obraz je poté vidět v pravé části na obrázku 7.10. Na obrázku 7.11 je vyznačen první krok při vkládání vodoznaku. V části 7.11(a) je zobrazen původní obrázek Lena o rozměrech 512 x 512 pixelů. V části 7.11(b) je již obrázek 9x přeskupen. V části 7.11(c) je načtena matice o velikost 16 x 8 pro proces IBPC, kde následně vzniknou 2 oddělené registry RC a RR (část ??(d) a 7.11(e)). Na tyto dva registry je v bodech 7.11(f) a 7.11(g) provedena 2D-DCT. Poté jsou pomocí hodnoty Rth vybrány hodnoty, jenž jsou větší než daná špičková hodnota a na těchto pozicích jsou v registru RC 7.11(f) provedeny změny dle vzorce 6.4. Obrázek 7.12 zobrazuje výsledek po provedení celého algoritmu, kde bílé pixely jsou prvky, jenž byly modifikovány po vložení vodoznaku o rozměrech 60 x 60 pixelů, z čehož vyplývá že proběhla modifikace 3600 hodnot v kontejneru. Pravá část zobrazuje rozložení modifikovaných prvků po zpětně přeskládání obrazu. 6 Po provedení vložení vodoznaku již nezbývá nic jiného než vyhodnotit, zdali je námi vložený vodoznak odolný proti některým útokům. Opět byl použit program checkmark, jeho nastavení, popis a volba útoků je obdobná jako u předchozí metody 7.2.1, jen byl použit dekodér pro druhou metodu. Opět zde máme možnost volby, vyhodnocení extrakce vodoznaku můžeme buď jednotlivě stiskem tlačítka Dekodovat, nebo pomocí tlačítka Hodnocení CHECKM. po provedení útoku a zde je možnost zobrazení výsledků v html formátu. Kompilace do tohoto formátu se provede stiskem tlačítka HTML výstup.
7.4.1
Výsledky RHC algoritmu
V této kapitole provedeme některé útoky na námi vodoznačený obraz, testování bylo prováděno testovacím programem checkmark, jako tomu bylo u předešlé metody. Typy prováděných útoků zůstávají stejné jako u kapitoly 7.3.3, proto se jimi již nebudeme znovu zabývat a můžeme rovnou přistoupit k samotným výsledkům. Pro vložení vodoznaku byl opět vybrán obraz s karikaturou Leny o rozměrech 512 x 512 pixelů. Do toho obrazu byl vložen vodoznak o velikost 60 x 60 pixelů. Špičková hodnota byla nastavena na hodnotu 1, alfa bylo 0.2 a ostatní hodnoty byly nastaveny „defaultněÿ. Hodnocení zkreslení obrazu PSNR vyšlo 41.99. 6
Pokud získáme více pixelů pro vložení vodoznaku, než je vlastní velikost vodoznaku, provede se modifikace pixelů pouze do velikosti vodoznaku. Pokud získáme méně, je vložena jen část vodoznaku.
63
Dále byla nastavena hodnota shodnosti, zda je vytažený vodoznak rozeznatelný se svým originálem. Hranice byla nastavena opět na hodnotu NCC = 0,75. Vytažený vodoznak je považován za shodný se svým originálem, pokud hodnota NCC bude větší nebo rovna hodnotě 0,75. V opačném případě je získaný vodoznak považován za neshodný. Při testování vzniknul případ, kdy sice hodnota nebyla větší než stanovená, ale výsledek byl ještě dobře rozeznatelný. Avšak postup pro jednotlivé objektivní vyhodnocování má smysl pouze v případě, kdy se vyhodnocuje pouze pár obrázku, pokud by uživatel potřeboval vyhodnocovat např. 50 vodoznačených obrazů a jejich útoků, je hodnocení jednotlivých výsledků velice zdlouhavé a nemyslitelné. Výsledky po útoku JPEG a vlnkové kompresi: Výsledky po provedení některých Tab. 7.5: Výsledky po útoku kompresí JPEG a vlnkovou kompresí Kvalita Q[-]
NCC
Shoda
Komprese [-]
NCC
Shoda
100 90 85 80 75 60 50 40 30 25 15 10
1 0.9995 0,9927 0,9829 0,9683 0,9407 0,9157 0,8805 0,8424 0,8183 0,7214 0,6421
1 1 1 1 1 1 1 1 1 1 0 0
1:1 1:2 1:5 1:10 1:13 1:16 1:20 1:26 1:40 1:80
1 1 0,999 0.974 0,933 0,911 0,859 0,751 0,664 0,549
1 1 1 1 1 1 1 1 0 0
ůtoků si můžeme zobrazit jednotlivě, na obrázku 7.13 je výsledek po provedení JPEG komprese, je zde patrno že tato metoda odolává až do stupně kvality JPEG komprese Q = 25 a pokud bychom opravdu chtěli tak i Q =10, kde je ještě jakýsi vodoznak patrný. Na obrázku 7.14 je výsledek po provedení vlnkové komprese, opět je vidět že metoda odolala až skoro do stupně komprese 1:40, kde je vodoznak ještě patrný. Proti útokům kompresí byla tato metoda vodoznačení velmi dobře odolná. V tabulce 7.5 jsou shrnuty výsledky vytažení vodoznaku po útoku JPEG a vlnkovou kompresí.
64
Obr. 7.13: Výsledky po provedení JPEG komprese se stupněm kvality komprese od Q=100 až po Q=10
Obr. 7.14: Výsledky po provedení vlnkové komprese. Komprese je od kompresního poměru 1:1 do 1:40
65
Tab. 7.6: Provedeny a vyhodnoceny další útoky pro metodu RHC Útok
NCC
Shoda
Útok
NCC
Shoda
cropping4-W150 cropping4-W350 cropping4-W60 cropping4-W80 cropping4-W800 dpr1 dpr2 dprcorr1 dprcorr2 gaussian1 gaussian2 hardthresh1 hardthresh2 medfilt1
0,849 0,851 0,805 0,833 0,851 0,634 0,579 0,719 0,664 0,991 0,991 0,936 0,859 0,768
1 1 1 1 1 0 0 1 0 1 1 1 1 1
medfilt2 medfilt3 midpoint1 midpoint2 sampledownup1 sampledownup2 sampledownup3 sampledownup4 softthresh1 softthresh2 trimmedmean1 trimmedmean2 im1wiener1 im1wiener2
0,694 0,624 0,681 0,516 0,980 0,466 0,432 0,443 0,882 0,841 0,715 0,605 0,855 0,751
0 0 0 0 1 0 0 0 1 1 1 0 1 1
66
8
ZÁVĚR
Cílem této práce bylo realizovat dva různé algoritmy pro vodoznačení obrazu a následně vytvořit univerzální grafické rozhraní, které umožní zobrazení jednotlivých kroků vodoznačení. Tato práce je rozdělena do dvou hlavních částí. V první části práce, která je teoretická, jsem se seznámil s problematikou zabezpečení obrazových dat pomocí vložení vodoznaku. Dále jsem nastudoval techniky pro vložení vodoznaku a zrealizoval dvě metody vodoznačení, první z nich je v prostorové oblasti a druhá ve frekvenční oblasti. Záměrně byly vybrány různé oblasti pro vkládání vodoznaku, abychom zjistili, která z metod bude odolnější proti vybraným útokům. Ve druhé části, která se věnuje již praktické realizaci, je popsáno jakým způsobem se postupovalo při tvorbě grafických prostředí a jakých výsledků bylo dosaženo. První metoda je založena na principu patchworkova algoritmu, který využívá nedokonalosti lidského oka. Metoda pracuje na aditivní principu, kde algoritmus vloží neznatelně a náhodně jednotlivé bity vodoznaku do obrazu. Výsledky testů po otestování programem checkmark jsou uvedeny v kapitole 7.3.3. Mezi hlavní nedostatky této metody patří její malá odolnost proti provedeným útokům viz. tabulka A.1 a relativně dlouhá doba vkládání a získávání vodoznaku, jenž je způsobena rozkladem obrazu do jednotlivých bitových rovin a bohužel i rychlostí MATLABU, který po použití for cyklů velice dlouho tyto cykly zpracovává. Druhé metodě jsem realizoval složitější metodu, která provádí vodoznačení ve frekvenční oblasti. Narozdíl od první metody, jenž vkládala vodoznak i do detailových části obrázku, u této metody tomu bylo zabráněno použitím diskrétní kosinové transformace a vybráním příslušných koeficientů pro vložení vodoznaku. Tím že se metoda nevkládá vodoznak do detailových částí, není při zvyšujícím se JPEG faktoru vkládání ovlivňován celý obrázek, ale pouze jeho část. Což je jednou z hlavních výhod této metody oproti předchozí. Další výhodou je zisk většího počtu koeficientů pro vložení vodoznaku oproti klasickému algoritmu s DCT[12], to může být užitečné pokud budeme potřebovat vložit více informací o autorovi díla, případně můžeme vkládávat rozměrově větší vodoznak, bez ztráty obrazové kvality původního obrazu. Z důvodu velkého množství testovacích souborů (382) jsem vybral pouze dvě třídy útoků, kterými jsem se zabýval detailněji a to útok pomocí JPEG komprese a komprese pomocí vlnkové transormace. Porovnáním výsledků těchto dvou metod, jsem došel k závěru, že celkově druhá metoda se jeví jako výhodnější volba, už samotným odoláním více útokům až po rychlejší a časově méně náročný algoritmus.
67
LITERATURA [1] BOLDIŠ, P. : Bibliografické citace dokumentů podle ČSN ISO 690 a ČSN ISO 690-2 [online]. 2001, poslední aktualizace 28.3.2006 [cit. 22. 3. 2009]. Dostupné z URL:
. [2] CHUN-SHIEN, L. Multimedia Security: Steganography and Digital Watermarking Techniques for Protection of Intellectual Property. Hershey: Idea Group Publishing, 2004. ISBN: 1-59140-275-1 [3] ŘÍHA, K. : Pokročilé techniky zpracování obrazu, Brno: elektronický text, 105 s. [4] ARNOLD, M., SCHMUCKER, M., WOLTHUSEN, D. S. : Techniques and Applications of Digital Watermarking and Content Protection. Boston: Artech House, 2003. ISBN: 1-56243-131-2. [5] STEFAN KATZENBEISSER, FABIEN A.P. PETITCOLAS. : Information hiding techniques for steganography and digital watermarking. Boston: Artech House Publishers, 2000. ISBN 1-58053-035-4. [6] ČANDÍK, M. : Bezpečnost informačn9ch systémů, steganografie a digitální vodotisk. Ostrava, 2005. ISBN: 74-239-1662-X. [7] HOŠEK, J. : Vodoznačení Video Obsahu, Elektrorevue. 2007, 20 s. ISBN 12131539 [8] ČÍKA, P. : Přednášky z předmětu Multimédia, Brno: elektronický text [9] MALÝ J. : Srovnání metod pro ztrátovou kompresi obrazu, 2007, dostupné z URL: . [10] SHELBY PEREIRA, SVIATOSLAV VOLOSHYNOVKSIY, MARIBEL MADUENO, STÉPHANE MARCHAND-MAILLET, THIERRY PUN : Second generation benchmarking and application oriented evaluation, In Information Hiding Workshop III, Pittsburgh, PA, USA, April 2001. [11] ZHAO, D., G. CHEN, a W.LIU: A Chaos-Based Robust Wavelet-Domain Watermarking Algoritm., Chaos, Solitions and Fractals 22 (2004):47. [12] MILLER, M.L., G.J.DOER, and I.J.COX Applying Informed Coding and Embedding to Design a Robust High-Capacity Watermark. IEEE Trans. Image Processing 13(2004):792.
68
[13] Matematický svět - logistická mapa ,˙ Stránky dostupné z URL: < http://mathworld.wolfram.com/LogisticMap.html>. [14] The MathWorks, Inc. Matlab [počítačový program]. Ver. R2006a. [USA], 2005. dostupné z URL: . [15] VRBA, K., NAGY, Z. : Multimediální služby, Brno: elektronický text, 81 s. [16] ZAPLATÍLEK, K. - DOŇAR, B. MATLAB tvorba uživatelských aplikací. 1. vydání. Praha: BEN, 2004. 210 s. ISBN 80-7300-133-0.
69
SEZNAM SYMBOLŮ, VELIČIN A ZKRATEK MSB (Most Significant Bit) - nejvíce důležitý bit LSB
(Least Significant Bit) - neméně důležitý bit
XOR (Exclusive OR) - logická funkce DCT (Diskrétní kosinová transformace) - Discrete Cosine Transformation JPEG (Joint Photographic Experts Group) - Obrazový formát MAE (Střední absolutní chyba) - mean absolute error MSE (Střední kvadratická chyba) - mean square error SNR (Odstup signálu od šumu) - Signal to Noise Ratio PSNR (Maximální odstup signálu od šumu) - Peak Signal to Noise Ratio NCC (Normalizovaná křížová korelace) - Normalized Cross-Correlation
70
SEZNAM PŘÍLOH A Přílohy k diplomové práci 72 A.1 Kompletní výsledky pro obě metody, získané programem checkmark . 72 B Obsah přiloženého CD
73
71
A A.1
PŘÍLOHY K DIPLOMOVÉ PRÁCI Kompletní výsledky pro obě metody, získané programem checkmark
Tab. A.1: Kompletní výsledky pro obě metody Typ útoku
Hodnocení-2 [%]
Hodnocení-1 [%]
TemplateRemove(1) MAP(6) Filtering(3) Copy(1) JPEG(12) Wavelet(10) SampleDownUp(4) Remodulation(4) Crop(28) Row-col(49) ML(7) colorReduce(1) Warping(28)) Shearing(14) Scale(42) RotationScale(21) Rotation(21)) Projective(70) Linear(21)) Collage(2) Bending(2) Aspectratio(35)
100 100 100 100 92 80 25 25 18 14 14 0 0 0 0 0 0 0 0 0 0 0
0 0 67 100 42 30 75 1 29 49 57 0 0 0 0 0 0 1 0 0 100 0
Z tabulky A.1 je možné jednoduše zjistit, která z metod je ve výsledku lepší, pro provedené útoky. Tabulka je rozdělena do 3 částí, kde v levé jsou názvy tříd útoků a v závorce je uveden počet útoků dané třídy. Po sečtení bychom měli dostat číslo 382. Uprostřed této tabulky je hodnocení pro 2 metodu a v pravé části pak pro první metodu. Samotný checkmark pak vyhodnotil první metodu 8% úspěšností, kdežto druhou 12%. Tímto se potvrdil samotný závěr, že druhá metoda je odolnější.
72
B
OBSAH PŘILOŽENÉHO CD
Jako přílohu přikládám CD, kde se nachází vše co bylo vytvořeno při tvorbě diplomové práce práce. Je zde samotný text k bakalářské práci v elektronické podobě. Ta je uložena ve formátu pdf. Přikládám i „zdrojové kódyÿ, jelikož práce byla psaná v sázecím systému LATEX. Dále jsou zde uloženy všechny mnou naprogramované algorit my pro obě dvě metody. Jak bylo dáno požadavkem, jsou vytvořeny v programovém prostředí MATLAB. K jednotlivým metodám jsou v samostatných složkách uloženy, výsledky v html formátu, jenž byly získány jako výstup z testovacího programu checkmark. Jako poslední část přikládám ruzné obrazové soubory, na kterých máme možnost si vyzkoušet obě metody, které byly vytvořeny. Tyto soubory jsou součástí jednotlivých metod, ale pokud uživatel bude potřebovat je samozřejmostí, že může použít pro testování své obrázky.
Obr. B.1: Adresářová struktura CD. Adresářová struktůra je na obrázku B.1, kde : • hodnoceni-1 – výsledky testu pro první metodu (přípona html) • hodnoceni-2 – výsledky testu pro druhou metodu (přípona html) • metoda-1 – obsahuje skripty první metody v prostředí MATLAB • metoda-2 – obsahuje skripty druhé metody v prostředí MATLAB • Text – text této práce ve formátu pdf (sablona.pdf) • texty-pouzite – texty pouzité při tvorbě diplomové práce
73