Balizarea imaginilor statice folosind transformarea wavelet discretă

81
Facultatea de Electronică şi Telecomunicaţii Universitatea Politehnica Timişoara Naforniţă Corina Balizarea imaginilor statice folosind transformarea wavelet discretă Raport de cercetare din cadrul grantului CNCSIS, de tip TD, cod 47, numar 33385/29.06.04 Timişoara – 2004 Facultatea de Electronică şi Telecomunicaţii

Transcript of Balizarea imaginilor statice folosind transformarea wavelet discretă

Page 1: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii Universitatea Politehnica Timişoara

Naforniţă Corina

Balizarea imaginilor statice folosind transformarea wavelet discretă

Raport de cercetare din cadrul grantului CNCSIS, de tip TD, cod 47, numar 33385/29.06.04

Timişoara – 2004 Facultatea de Electronică şi Telecomunicaţii

Page 2: Balizarea imaginilor statice folosind transformarea wavelet discretă

Cuprins

I. Balizarea numerică, operaţie de autentificare a semnalelor multimedia................. 1 1.1 Introducere .................................................................................................................... 1 1.2 Concepte de bază în watermarking (balizare) .............................................................. 3 1.3 Aplicaţii posibile ale balizării numerice ....................................................................... 6 1.4 Balizare: proceduri elementare ..................................................................................... 8 1.5 Principalele proprietăţi ale metodei de balizare.......................................................... 11 1.6 Balizare şi înregistrare pentru o protecţie eficientă .................................................... 14 II. Balizarea imaginilor folosind transformarea wavelet discretă.............................. 15 2.1 Clasificarea tehnicilor de balizare............................................................................... 15 2.2 Modele de bază pentru watermarking......................................................................... 16 2.3 Evaluarea performanţelor unei metode de balizare .................................................... 17 2.4 Balizare în domeniul spaţial/temporal ........................................................................ 19 2.5 Balizare în domeniul transformatelor ......................................................................... 19 III. Metoda de balizare propusă .................................................................................... 24 3.1 Introducere .................................................................................................................. 24 3.2 Arhitectură .................................................................................................................. 24 3.3 Cele două variante ale metodei propuse ..................................................................... 29 3.4 Rezultatele obţinute în urma simulărilor..................................................................... 35 3.5 Concluzii ..................................................................................................................... 40 Anexa 1 ............................................................................................................................. 41 Anexa 2 ............................................................................................................................. 61 Anexa 3 ............................................................................................................................. 74

Page 3: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

Capitolul I

Balizarea numerică, operaţie de autentificare a semnalelor multimedia

1.1 Introducere

Nevoia de protejare a informaţiei digitale împotriva copierii şi manipulării ilegale a apărut o dată cu dezvoltarea pe scară largă a comunicaţiilor prin intermediul Internet-ului. Publicarea electronică şi comerţul electronic a informaţiilor digitale cresc pericolul de falsificare şi furt intelectual.

Dezvoltarea rapidă a tehnologiei digitale face foarte necesară dezvoltarea metodelor pentru protejarea produselor multimedia împotriva pirateriei. Atacurile pirat includ accesul ilegal al datelor pe Internet, modificări ale conţinutului făcute cu rea-voinţă, retransmisia copiilor neautorizate. Impactul acestui gen de atacuri ar putea fi foarte mare atât pe plan financiar (pierderi financiare cauzate de accesarea şi folosirea neautorizată a datelor), precum şi în planul securităţii.

Când este vorba de semnale analogice, problema se rezolvă de la sine, deoarece copiile sunt de o calitate mai redusă decât originalele (casete audio şi video). În schimb, informaţia digitală poate fi copiată perfect şi distincţia între original şi copii este dificil, dacă nu imposibil de făcut. În plus, nu există nici un mecanism pentru a depista copierea ilegală sau modificarea conţinutului. Aceste noi probleme în securitatea multimedia nu sunt tratate cu tehnici de securizare orientate pe conexiune. În cele ce urmează, se explică trei noţiuni importante: cheia criptografică, autentificarea şi protecţia dreptului de autor.

Cheia criptografică publică sau secretă

Datele transmise prin comunicaţiile în reţele pot fi protejate împotriva utilizatorilor neautorizaţi prin aplicarea tehnicilor bazate pe criptografie. Datele originale sunt criptate de proprietar folosind o cheie privată. Utilizatorii pot decripta datele primite folosind un algoritm hard sau soft. Condiţia necesară pentru o decriptare cu success este ca utilizatorul să deţină cheia privată a furnizorului sau o cheie asociată publică (sau parţial publică). Un deziderat este implementarea rapidă a algoritmului de criptare-decriptare. În plus creşterea volumului de date datorată criptării ar trebui să fie în limite rezonabile. Lungimea cheii ar trebui să fie suficientă pentru a preveni decriptarea neautorizată prin proceduri iterative de tip trial and error.

În consecinţă, asigurarea unui canal sigur de informaţie se referă la restricţionarea accesului, criptarea şi/sau autentificarea informaţiei. Aceasta este o problemă rezolvată, pentru care există protocoale de securizare. Ea este însă o problemă diferită de cea a protejării dreptului de autor.

1

Page 4: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

Autentificare Manipularea conţinutului datelor poate fi făcută în diferite scopuri, legale sau ilegale, prin compresie, reducerea zgomotului, modificarea datelor cu rea intenţie. Produsul modificat nu este autentic. De aceea, utilizatorii ar trebui să poată verifica originalitatea conţinutului unui produs digital. Verificarea conţinutului poate fi făcută adăugând semnături digitale în datele transmise. O semnătură digitală este un mesaj codat care se potriveşte cu conţinutul unui document digital autentic. Procedurile de verificare a autenticităţii se bazează pe algoritmi publici şi pe chei publice. Orice modificare nesemnificativă adusă produsului sau semnăturii ar trebui să ducă la neautentificare. Totuşi, semnături sigure şi eficiente pentru produse multimedia (care de obicei au o cantitate mare de date) nu sunt fezabile. În general, lungimea semnăturii este proporţională cu cantitatea de date „semnate”. Protejarea dreptului de autor Reproducerea unui produs digital este uşor de făcut şi gratis. Într-un mediu de comunicaţii (world wide web), este posibilă retransmisia copiilor în toată lumea. Dreptul de autor poate fi încălcat de persoane care pretind în mod ilegal drepturile de exploatare a produsului. O tehnică de protejare a drepturilor de autor folosită de canalele de televiziune este inserarea unui logo vizibil în imaginea digitală. Totuşi, un astfel de logo poate fi uşor înlăturat şi ulterior orice dovadă despre proprietarul legal este pierdută. Problema protejării proprietăţii intelectuale a produselor digitale a fost tratată în ultimii ani prin introducerea noţiunii de watermarks (balize). Balizele modifică imperceptibil datele digitale prin înglobarea unei informaţii de copyright codată. Balizele pot contribui şi la verificarea conţinutului. În Fig. 1.1, se prezintă schematic un sistem de protejare a datelor în format digital. Acestea sunt reprezentate prin simbolul D; se mai notează cu D’ datele criptate, cu S semnătura, iar W reprezintă baliza.

Fig. 1.1: Reprezentare schematică a criptării datelor, verificarea autenticităţii şi balizarea datelor.

D’=F(D)

D

criptare

semnare

balizare

D S

D+W

decriptare

verificare

detecţie baliză

D

Autentic? Da/Nu

Există W? Da/Nu

2

Page 5: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

1.2 Concepte de bază în watermarking (balizare) Manipularea datelor în format digital şi transmiterea lor spre utilizatori poate fi făcută prin serviciile web. Utilizatorul poate avea acces la un produs interesant, fie direct de pe pagina web a proprietarului de drept, fie printr-o bibliotecă digitală, fie printr-un intermediar. Un produs digital poate să fie prezentat în forma sa originală sau ca parte dintr-o aplicaţie multimedia mai mare. Considerăm un sistem elementar de distribuţie a produselor digitale prezentat în Fig. 1.2.

Fig. 1.2: Sistem de distribuţie elementar al produselor digitale. Sunt posibile atacurile pentru violarea dreptului de autor sau modificări făcute cu rea intenţie.

FURNIZOR REŢEA UTILIZATOR

Piraterie (Atacatori)

Utilizatorul primeşte un produs digital de la un editor care are drept de autor, şi care poate fi şi autorul original. Accesul şi transmiterea produsului au loc într-un mediu de comunicaţii. Atacatorii pot aduce daune proprietarului de copyright, prin reproducerea şi retransmiterea ilegală a produselor digitale. Mai mult, ei pot face modificări asupra produselor, furnizând utilizatorilor produse neautentice (false). De aceea, editorul şi utilizatorul au nevoie de protecţie:

- proprietarul dreptului de autor necesită o metodă de protejare eficientă în tot domeniul accesibil de adrese,

- utilizatorii cer produse autentice atunci când le achiziţionează pe căi legale. Trebuie să menţionăm că utilizatorii nu aduc daune altora pentru că nu retransmit sau expun produse pe pagini web publice. Astfel, atacatorii sunt editori neautorizaţi.

Prezentăm în cele ce urmează trei situaţii considerate în aplicaţiile obişnuite de securitate. Studiem pe scurt fiecare situaţie posibilă şi arătăm deficienţele tehnicilor de protejare în protejarea produselor multimedia. Considerăm pirateria în primul rând ca activitatea de copiere ilegală şi/sau revânzarea produselor multimedia digitale. Uşurinţa cu care se pot face copii identice face pirateria o problemă majoră în securitatea informaţională.

În prima situaţie (Fig. 1.3), Alice vinde un produs multimedia lui Peter. Deşi informaţia poate fi protejată în timpul transmisiei către Peter, folosind algoritmi stabiliţi de criptare, produsul va fi neprotejat o dată ce este decriptat de Peter. Cu alte cuvinte, nu există nici un mecanism care să îl împiedice pe Peter să facă copii ilegale ale produsului cumpărat de la Alice. De aceea, există nevoia unei nivel de securitate adiţional care să asigure protejarea proprietăţii intelectuale.

3

Page 6: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

Fig. 1.3: Limitările tehnicilor tradiţionale de securizare în problema pirateriei. Alice îi vinde lui Peter un produs multimedia. Deşi informaţia poate fi protejată în timpul transmisiei către Peter, folosind proceduri stabilite de securizare, aceasta va fi neprotejată atunci când este decriptată de Peter. Abordările obişnuite de autentificare nu sunt nici ele potrivite pentru protejarea conţinutului produsului multimedia împotriva falsificării. Falsificarea se referă la orice fel de modificare sau contrafacere a unui semnal dat. În Fig. 1.4, prezentăm o astfel de situaţie posibilă. Alice îi trimite informaţii lui Bob. Înainte de a ajunge la acesta, semnalul poate suferi distorsiuni întâmplătoare, cum ar fi eronarea aleatoare a biţilor, sau pierderi de pachete. Aceste distorsiuni întâmplătoare nu afectează integritatea semnalului. În plus, este posibil ca Tom, care are acces la date, să modifice cu rea-voinţă semnalul pentru a ascunde informaţii false. Procedurile obişnuite de autentificare trec datele care trebuie să fie autentificate printr-o funcţie hash one-way pentru a produce o secvenţă de biţi cunoscută ca şi semnătură digitală. Semnalul şi semnătura digitală sunt transmise către Bob. La recepţie, Bob trece semnalul primit prin aceeaşi funcţie hash one-way, şi poate compara secvenţa obţinută de biţi cu semnătura digitală primită. Dacă cele două secvenţe se potrivesc, atunci semnalul este considerat autentic/credibil, altfel se consideră că a avut loc o falsificare.

Fig. 1.4: Limitările securizării obişnuite în problema falsificării. Bob nu poate să facă diferenţa între distorsiuni întâmplătoare, care nu afectează integritatea semnalului, şi distorsiunile făcute cu rea voinţă de către Tom, pentru a-l induce în eroare pe Bob. Deşi procedura de autentificare specificată este eficientă pentru unele tipuri de date, ea nu este eficientă pentru semnale multimedia, deoarece nu se poate face deosebirea între cele două tipuri de distorsiuni. În ambele situaţii, semnalul este modificat. Când distorsiunile

4

Page 7: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

sunt întâmplătoare, semnalul mai este perceptual credibil. În multe aplicaţii, se doreşte posibilitatea de a caracteriza distorsiunile semnalului, pentru a facilita deciziile cu privire la integritatea conţinutului. Fig. 1.5 prezintă procesul de fraudă care se referă la orice fel de înşelătorie sau impostură. Se observă în figură că Fred îi trimite informaţii lui Bob. Fred ar vrea să pară că expeditorul a fost Alice. Pentru a preveni acest tip de atacuri, pot fi trimise mesaje criptate care să conţină informaţia separată de autentificare a expeditorului real. Cu toate acestea, semnalele multimedia suferă deseori schimbări în timpul tranzitului. Aceste schimbări pot elimina îmtâmplător informaţia de autentificare, în aşa fel încât Bob nu va putea identifica cu uşurinţă proprietarul de drept al produsului multimedia.

Fig. 1.5: Limitările securizării convenţionale în problema fraudei. Din moment ce informaţia de autentificare este deseori transmisă ca informaţie adiţională semnalului, ea poate fi eliminată în timpul conversiei în alt format sau în timpul compresiei. Ca urmare, Bob va fi incapabil să afle dacă semnalul primit este sau nu de la Alice.

Pentru a trata neajunsurile metodelor de securizare tradiţionale discutate mai sus, a fost propusă metoda de înglobare a unei informaţii invizibile în produse multimedia, numită digital watermarking (balizare numerică). Balizarea este mai potrivită pentru semnale multimedia, cum ar fi imagini, audio şi video, deoarece conţinutul lor este protejat, în opoziţie cu formatul digital, care poate suferi conversii. În acest fel, informaţia de autentificare este înglobată în semnalul multimedia, chiar şi după conversii ale formatului sau alte prelucrări. Balizele sunt generate în mod privat şi apoi ar trebui să fie detectate folosind chei private sau publice în funcţie de întrebuinţarea lor. A. Balizare pentru protejarea dreptului de autor

Baliza (numită şi etichetă pentru copyright sau ştampilă invizibilă în acest caz) conţine informaţie specifică proprietarului legal (de exemplu un logo) sau este un semnal aleator dar unic pentru respectivul proprietar. Protejarea se face în felul următor:

- Fiecare proprietar de copyright deţine un număr unic (sau un set de numere) care constituie cheia privată a balizei Kpr.

5

Page 8: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

- Folosind cheia privată şi un algoritm public sau privat, proprietarul dreptului de

autor modifică datele digitale care sunt balizate (este exclusă adăugarea de informaţii cum ar fi un antet sau altele).

- Folosind un algoritm de detecţie, proprietarul de copyright poate verifica sau decoda modificările făcute de el însuşi şi poate folosi această informaţie ca un indicator al proprietăţii legale asupra respectivului produs.

B. Balizare pentru autentificare

Aşa cum am spus în introducere, problema verificării autenticităţii produselor digitale se rezolvă cu ajutorul semnăturilor digitale. Autenticitatea este legată de un produs original de referinţă şi de obicei are de-a face cu originalitatea conţinutului, numele autorului, data la care produsul a fost creat, proprietarul dreptului de autor, etc. Balizele se referă în principal la partea de autenticitate asociată cu originalitatea conţinutului (termenii de integritate a datelor, verificarea conţinutului sau dovada modificării datelor sunt de asemenea folosiţi). Se schiţează următoarea schemă de bază:

- Autorul original deţine o cheie privată unică Kpr. - Cu ajutorul unui algoritm ce foloseşte cheia privată, datele sunt modificate cu

scopul de a îngloba informaţia de autenticitate. Algoritmul ar trebui să furnizeze şi o cheie publică Kpub.

- Receptorul poate să verifice autenticitatea produsului. El poate să-şi folosească cheia publică Kpub şi un algoritm public care furnizează un răspuns binar ce indică autenticitatea sau nu.

1.3 Aplicaţii posibile ale balizării numerice Balizarea numerică prezintă interes şi pentru aplicaţii care nu ţin de securizarea informaţională [2].

1. Monitorizarea transmisiilor TV – Dacă o firmă care îşi face publicitate, doreşte să afle câte din reclamele plătite au fost efectiv transmise, poate să monitorizeze transmisiile TV cu ajutorul observatorilor umani. Desigur, acest lucru se poate dovedi extrem de costisitor şi în plus nefiabil. Există de asemenea sisteme de monitorizare, care nu apelează la observatori umani. Acestea se împart în două categorii: pasive şi active. Sistemele de monitorizare pasive, încearcă să recunoască direct conţinutul difuzat, la fel ca şi observatorii umani. Aceste sisteme sunt calculatoare care compară semnalul difuzat cu semnalele pe care le au în baza de date (şi anume, semnalele care reprezintă spoturile publicitare). Aceste sisteme se pot dovedi nepractice, din cauza mărimii bazelor de date. În practică, aceste sisteme nu sunt folosite pentru a verifica dacă, de exemplu, o reclamă a fost difuzată. Ele sunt folosite mai ales pentru a obţine date despre competitori. Pentru a obţine acurateţea cerută de procesul de verificare, ar trebui folosite sisteme de monitorizare active, care se bazează pe informaţii asociate, difuzate o dată cu conţinutul propriu-zis al reclamelor. Balizarea poate fi o soluţie pentru monitorizarea activă a transmisiilor TV.

6

Page 9: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

2. Identificarea proprietarului – Acest lucru se poate face printr-o inscripţionare

vizibilă a autorului. Acest tip de „marcare” a proprietăţii poate însă fi uşor eliminat din semnalul multimedia respectiv. Cel mai bun exemplu în acest sens este decuparea unei porţiuni dintr-o imagine, care să nu conţină „marca” autorului. Deoarece balizele pot fi imperceptibile şi inseparabile de semnalul original, pot reprezenta o soluţie ideală pentru identificarea autorului.

3. Dovada proprietăţii – Ar fi de dorit ca balizele să servească nu numai pentru a

„marca” proprietatea, dar chiar să o dovedească. Dacă Alice creează o imagine şi o balizează cu marca „© 2003 Alice”, atunci Bob poate fura imaginea respectivă, şi folosind un program de procesare a imaginilor, poate înlocui marca cu „© 2003 Bob”. Dacă Alice nu a înregistrat imaginea la o autoritate centrală, ea va trebui să demonstreze că imaginea îi aparţine. Dacă atacatorul nu dispune de un detector al balizei, eliminarea balizei poate fi greu de făcut. Pe de altă parte, chiar dacă baliza nu poate fi eliminată, folosind propriul sistem de balizare, Bob poate să arate că baliza lui ar exista în originalul lui Alice [6]. Astfel, o terţă parte nu ar putea să îşi dea seama cui aparţine imaginea. Această problemă ar putea fi rezolvată dacă, în loc de a demonstra proprietatea prin marcare, s-ar demonstra că o imagine derivă din alta.

4. Înregistrarea operaţiilor efectuate (Transaction tracking) – Baliza

înregistrează una sau mai multe operaţii care au fost făcute asupra copiei unui produs multimedia. De exemplu, baliza poate „memora” o identitate a cumpărătorului (se presupune că fiecare cumpărător are o copie diferită a originalului, balizele nefiind aceleaşi).

5. Autentificarea conţinutului – Acest lucru poate fi realizat prin înglobarea

semnăturii digitale în semnalul multimedia. Această semnătură mai este cunoscută şi sub numele de marcă de autentificare. Dacă un semnal ce conţine o astfel de marcă este modificat, se poate afla cum a fost distorsionat.

6. Controlul copierii (Copy Control) – Prevenirea apariţiei copiilor ilegale poate fi

făcute prin criptare. Există trei posibilităţi prin care un adversar poate obţine acces neautorizat la produse multimedia: dacă decriptează datele fără a avea o cheie; dacă obţine o cheie prin reverse-engineering; sau cel mai simplu dacă obţine o cheie în mod legal, făcând copii ilegale ale datelor decriptate. Balizele însă pot rămâne în conţinut şi după decriptare. Cu toate acestea, protejarea DVD-urilor împotriva copierii nu a fost făcută încă cu succes, deoarece nu orice DVD-player conţine un detector al balizei.

7

Page 10: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

1.4 Balizare: proceduri elementare A. O definiţie de bază pentru balizare

În literatura de specialitate se pot întâlni diferite definiţii pentru baliza digitală [1, 2, 3]. Balizele pentru imaginile digitale sunt tratate ca manipulări LSB, coduri ascunse de marcare, texturi invizibile, constrângeri secrete în domenii de transformare etc.

Putem defini baliza ca un semnal numeric W, care este suprapus pe produsele digitale printr-un proces de înglobare. Se poate descrie W ca un semnal cu componente binare sau, mai general, ternare [1]:

( ) ( ) { }{ }dWkkwkwW ˆ ,1, 0, 1; ∈−∈= (1.1)

unde este spaţiul de date digital (matrice) al balizei de dimensiune d=1, 2, 3 pentru audio, imagini fixe, respectiv video. Vectorul

dWk indică poziţiile matricii (coordonatele în

spaţiul ). dW B. Generarea balizei Fie W setul de semnale de balizare posibile. În conformitate cu teorema de existenţă a unei chei asociate, considerăm spaţiul finit de chei K [1]. Dacă X este setul de imagini digitale fixe, atunci o metodă de generare a balizei W ar trebui să fie definită de următoarea funcţie:

G : X×K→W, W = G (X, K) (1.2) unde K∈K este cheia de balizare şi X∈X este produsul în care este înglobată baliza. Pentru un anumit produs X şi un semnal de balizare W, extragerea cheii ar trebui să fie imposibilă. C. Înglobarea balizei Considerând semnalul de balizare ( ){ }kwW = , produs de G, procesul de înglobare a balizei este definit ca o suprapunere a lui W peste produsul original ( ){ }kxX =0 . Notăm procedura de înglobare prinε şi o definim după cum urmează:

ε : X×W×R X, X→ w = ε (X0, W; l) (1.3) Parametrul l care este o valoare reală este asociat energiei de înglobare a balizei sau, echivalent, vizibilităţii balizei. În practică, în locul unui singur parametru l, este nevoie şi de o mască de înglobare L pentru a atinge o înglobare satisfăcătoare. L este formată luând în considerare caracteristicile sistemului vizual-auditiv uman.

8

Page 11: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

Fig. 1.6 ilustrează procesul general de balizare descris de ecuaţia (1.3). O baliză, care de multe ori este alcătuită dintr-o secvenţă binară de biţi, este inserată într-un semnal gazdă cu ajutorul unei chei [2]. Procedeul de înglobare impune schimbări mici în semnal, determinate de cheie şi de baliză, pentru a genera semnalul balizat.

Fig. 1.6: Procesul de înglobare a balizei. Baliza este înglobată cu ajutorul unei chei, făcând schimbări imperceptibile în semnalul multimedia original.

Semnal multimedia original X0

Baliza W 0100100010...

Algoritm de balizare ε

Semnal multimedia balizat Xw

Cheie K Algoritm de înglobare a datelor la nivelul semnalului

D. Căutare pe Web Copii ilegale ale produselor digitale sunt căutate pe pagini web accesibile şi suspecte. De aceea, balizarea ar trebui combinată şi cu o procedură automată de căutare pe web, notată cu S, care furnizează procedurii de detecţie a balizei produsele găsite pe un anumit domeniu.

(SX = domeniu de reţea ∈X ), X (1.4) E. Detecţia balizei Detectorul are la intrare un produs multimedia balizat sau nu, şi posibil distorsionat, precum şi baliza originală. Răspunsul detectorului poate fi estimarea balizei înglobate în semnalul multimedia W~ , sau evidenţa dacă aceasta există [6].

Algoritmul de detecţie este notat cu D şi definit după cum urmează [1]:

D : X×K→{ }1,0

D(X, W) , sau ⎩⎨⎧

=restîn 0

în există dacă 1 XW

( ) WWX ~, =D

(1.5)

9

Page 12: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

Detecţia balizei ar trebui să fie făcută fără a recurge la produsele originale. Folosirea originalelor poate genera un volum mare de calcul. Modul de detecţie a balizei se face generând mai întâi baliza folosind G. G se bazează exclusiv pe produsul X care urmează a fi verificat precum şi pe cheia K. Procesul de detecţie şi extragere al balizei este ilustrat în Fig. 1.7.

Fig. 1.7: Detecţia balizei poate fi făcută fără sau cu ajutorul semnalului multimedia original.

Răspunsul detectorului 1 – baliza există 0 – baliza nu există

Detecţia balizei D, Extragerea balizei Baliza recuperată W~

01011011......

Semnal multimedia balizat, posibil distorsionat X

Semnal multimedia original X0

Cheie K

Detectorul care recurge la semnalul multimedia original pentru a verifica existenţa balizei într-un semnal multimedia primit, care poate fi o versiune distorsionată a semnalului multimedia balizat, se numeşte informat [2]. Dacă el nu are nevoie de semnalul original, detectorul este blind (neinformat). Cele două sisteme se cheamă în mod generic sistem de balizare privat, respectiv public. [12]. În practică, realizarea lui D implică următoarele erori:

- tipul I de eroare: baliza este detectată, deşi nu există (fals pozitiv). - tipul II de eroare: baliza nu este detectată, deşi ea există (fals negativ).

Erorile enunţate mai sus apar cu probabilităţile de alarmă falsă (Pfa), respectiv de rejecţie (Prej). Dacă este valoarea ce indică certitudinea unei detectări pozitive atunci putem scrie [1, 6]:

faPc −= 1

⇒≥ threscc baliza există. (1.6)

Parametrul este nivelul de certitudine pentru detecţie şi este ales de către furnizorul care face detecţia. Testarea ipotezelor poate fi folosită pentru estimarea statistică a certitudinii şi a manipulării erorii. În general, când probabilitatea unui fals pozitiv devine nesemnificativă ( ), probabilitatea de a rejecta o baliză creşte ( ) şi invers. Această situaţie este ilustrată în Fig. 1.8 unde este considerată statistica t-test [1].

thresc

0→faP 1→rejP

10

Page 13: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

Fig. 1.8. Detecţie de baliză prin statistica t-test. Ipotezele nulă şi alternativă reprezintă probabilităţile de existenţă a balizei respectiv inexistenţa ei. Erorile de tip I şi II sunt diferite de zero pentru orice valoare a lui t, derivată din t-test [1].

0 Eroare tip II (Prej)

t0 Eroare tip I (Pfa)

t

Ipoteza nulă H0

Ipoteza alternativă H1

t-test

F. Căutare de produse în baze de date (biblioteci) Furnizorii şi creatorii îşi memorează produsele într-o bibliotecă personală notată cu L . Dându-se un produs X, furnizorul ar trebui să fie capabil să găsească o metodă de potrivire/căutare cu scopul de a verifica dacă X este sau nu inclus în biblioteca sa L . m

( )⎩⎨⎧ ∈

= rest în 0

dacă 1,ˆ

LL

XXm

(1.7)

O procedură de matching (identificare) este bazată, în general, pe algoritmi foarte complecşi. De aceea, nu este nici convenabil şi nici fezabil să se aplice procedura m tuturor produselor de pe domeniile web din sfera de interes. Procedura este folosită pentru a confirma proprietatea asupra unui produs, atunci când detecţia balizei se face cu un nivel de certitudine mic, dar nu neglijabil.

ˆm

1.5 Principalele proprietăţi ale metodei de balizare

Aşa cum am văzut, balizele numerice sunt structuri invizibile înglobate în semnalul gazdă pentru a „marca” proprietatea [7]. Din cadrul balizelor numerice fac parte codurile de copyright sau de autentificare, sau „legende”, care sunt absolut necesare pentru interpretarea semnalului. Aceste balize, existente în semnalul multimedia, trec neobservate de obicei şi pot fi depistate doar cu un detector adecvat. Cele mai răspândite tipuri de semnale care se balizează sunt imaginile statice, semnalele audio şi semnalele video numerice. În cele ce urmează, ne vom referi mai ales la imagini statice, aceleaşi principii putându-se aplica şi celorlalte tipuri de date.

11

Page 14: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

A. Protecţia dreptului de autor Pentru a eficientă, o baliză trebuie să fie [1, 5, 8]:

1. Imperceptibilă – Baliza ar trebui să fie perceptual invizibilă, sau prezenţa sa nu ar trebui să interfereze cu datele care trebuiesc protejate. Cu toate acestea, chiar şi diferenţe abia vizibile se accentuează dacă produsul original este direct comparat cu cel balizat. De aceea, aceste diferenţe rămân neobservate pentru un observator uman deoarece produsul original este accesibil numai proprietarului legal.

2. Robustă – Baliza trebuie să fie dificil de înlăturat (teoretic imposibil de înlăturat). Dacă se dispune doar de o informaţie parţială despre baliză (de exemplu, nu se cunoaşte cu exactitate localizarea balizei în imagine), atunci încercările de înlăturare sau de distrugere a balizei ar trebui să conducă la degradarea severă a calităţii imaginii. Evident, o baliză folosită cu scopul de protejare a dreptului de autor ar trebui să fie detectabilă până în punctul în care calitatea produsului rămâne în limite acceptabile pentru orice tip de modificare. În particular, o baliză ar trebui să fie robustă la:

a. Procesări obişnuite ale semnalului – Baliza ar trebui să poată fi încă extrasă, chiar dacă imaginii i se aplică procesări obişnuite. Acestea pot fi conversii D/A, A/D, reeşantionare, compresie cu pierderi, precum şi îmbunătăţiri obişnuite aplicate unei imagini cum ar fi îmbunătăţirea contrastului, corecţia culorilor, egalizarea histogramei etc.

b. Distorsiuni geometrice obişnuite (pentru imagini şi video) – Balizele din imagini şi video ar trebui să fie rezistente şi împotriva operaţiilor geometrice cum ar fi rotire, translaţie, decupare, scalare.

c. Atacuri de subterfugiu: prin înţelegere secretă/complotare şi falsificare – În plus, baliza ar trebui să fie robustă împotriva mai multor indivizi care fiecare deţine o copie balizată a datei. Cu alte cuvinte, baliza ar trebui să fie robustă împotriva combinării copiilor aceluiaşi original. De asemenea, dacă o baliză urmează să fie folosită ca probă juridică, trebuie să fie imposibil pentru atacatori să combine imaginile lor pentru a genera o baliză diferită, validă cu intenţia de a înşela o terţă parte.

3. Universală – Acelaşi algoritm de balizare numerică ar trebui să fie aplicabil pentru toate cele trei tipuri de date considerate. Acest lucru serveşte în balizarea produselor multimedia. De asemenea, această caracteristică este favorabilă pentru implementarea de algoritmi de balizare a imaginilor şi semnalelor video pe suport hardware comun.

4. Neambiguă – Recuperarea balizei ar trebui să identifice fără îndoială proprietarul. De asemenea, acurateţea identificării proprietarului ar trebui să se degradeze progresiv în faţa atacurilor.

Alte proprietăţi pe care balizele ar trebui să le aibă sunt [1]:

5. Complexitate – Semnalele de balizare ar trebui să fie foarte complexe. Acest lucru este necesar pentru a se putea produce un set suficient de balize sesizabile. Un set foarte mare de balize previne refacerea unei balize anumite prin proceduri

12

Page 15: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

iterative de tip trial and error. În majoritatea cazurilor, complexitatea unei balize este direct legată de mărimea produsului în care ea trebuie să fie înglobată.

6. Cheia asociată – Balizele ar trebui să fie asociate cu un număr de identificare numit cheia balizei. Cheia este folosită pentru a forma, detecta şi înlătura baliza. Prin urmare, cheia ar trebui să fie privată şi să caracterizeze exclusiv proprietarul legal. Orice semnal digital, extras dintr-un produs digital se presupune că este baliza dacă şi numai dacă el este asociat cu o cheie printr-un algoritm bine stabilit. Această condiţie previne crearea unor balize contrafăcute, discutate de Craver pe larg în [6].

7. Detecţie/căutare automată – Balizele ar trebui să combine în mod facil o metodă de căutare care scanează automat orice domeniu accesibil în reţea.

8. Detecţie de încredere – Balizele ar trebui să constituie o dovadă suficientă şi de încredere a proprietăţii asupra unui anume produs. Detecţia alarmelor false ar trebui să apară foarte rar (de preferinţă niciodată). O anumită baliză este o dovadă credibilă pentru a demonstra posesia dreptului de autor atunci când probabilitatea de eroare la înglobarea ei într-o imagine digitală este nesemnificativă. Totuşi, detecţia cu un nivel de certitudine scăzut poate fi făcută cu scopul de a reduce probabilitatea de refuz în timpul monitorizării pe web. rejP

9. Invizibilitate statistică – Balizele nu ar trebui să poată să fie refăcute folosind metode statistice. De exemplu, proprietatea unui număr mare de produse digitale, balizate cu aceeaşi cheie, nu ar trebui să permită extragerea balizei aplicând metode statistice. De aceea, balizele ar trebui să depindă de conţinutul produsului.

10. Balize multiple – Ar trebui să fim capabili să înglobăm un număr suficient de balize în aceeaşi imagine. Fiecare baliză ar trebui să fie detectabilă folosind cheia unică corespunzătoare. Această caracteristică pare să fie necesară deoarece nu putem preveni ca cineva să balizeze un produs deja balizat. Este de asemenea avantajos în cazurile în care dreptul de autor este transferat de la un proprietar la altul (un proces asemănător celui de amprentare). Menţionăm că proprietarul legal al imaginii este singurul care poate dispune de o copie a imaginii care conţine baliza sa.

B. Verificarea conţinutului

Protecţia originalităţii conţinutului cere o invizibilitate perceptuală, complexitate a balizei, validitatea cheii, detecţia de încredere şi invizibilitate statistică aşa cum s-a văzut anterior. Totuşi, balizele fragile (nu robuste) sunt cerute, de exemplu, în cazul balizelor care nu ar trebui să fie detectate când s-au făcut modificări asupra produselor. Totuşi, robusteţea este de dorit în cazurile în care modificările nu afectează autenticitatea, adică:

1. Compresia cu calitate foarte mare 2. Înlăturarea părţilor neinteresante 3. Alte modificări nesemnificative făcute pentru a introduce produsul într-un mediu

multimedia

13

Page 16: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

1.6. Balizare şi înregistrare pentru o protecţie eficientă Tehnicile de balizare dezvoltate până astăzi, prezintă diferite dezavantaje care împiedică formarea unui sistem de protecţie universal, de încredere, bazat exclusiv pe balizare. Principalele dezavantaje sunt [1]: Instabilitatea în raport cu pierderea/furtul cheii – Balizarea se bazează pe o cheie privată constantă. Când un atacator află sau găseşte o cheie privată, el are posibilitatea să înlăture balizele corespondente cheii respective din toate produsele în mod direct. Ulterior, violarea dreptului de autor pentru toate produsele furnizorului respectiv devine o sarcină uşoară. De asemenea, pot fi distribuite produse falsificate. Robusteţe/fragilitate eficientă – Balizele folosite pentru protecţia dreptului de autor ar trebui să fie robuste la toate modificările posibile. De asemenea, verificarea conţinutului necesită balize cu o fragilitate adecvată faţă de o varietate de procesări. Cererile de mai sus nu se ating cu uşurinţă. Eficienţa balizei împotriva tehnicilor noi de procesare sau atacuri – Robusteţea balizei, securitatea şi rezistenţa ei la atacuri este testată pentru tehnicile de procesare cunoscute până în prezent. Balizarea nu poate să îşi garanteze eficienţa în viitor. Noi tehnici de compresie sau de filtrare care să înlăture cu uşurinţă balizele din produsele deja distribuite pot fi dezvoltate în viitor. Detecţia publică nesigură – Detecţia balizei folosind chei publice este esenţială pentru verificarea conţinutului. Totuşi, detecţia publică poate crea dificultăţi în dezvoltarea tehnicilor de balizare sigure şi eficiente împotriva atacurilor pirat. Din cauza problemelor menţionate anterior, balizarea nu poate asigura o protecţie eficientă de una singură. Totuşi, ea poate constitui o parte importantă a unei metode de ansamblu de protecţie. Înregistrarea produselor la o autoritate de încredere este o cale bine cunoscută pentru protejarea drepturilor de proprietate intelectuală (pentru cărţi, software etc). Informaţiile de înregistrare pot fi folosite ca o dovadă inatacabilă a proprietăţii şi drepturilor legale. Un sistem de protecţie bazat pe înregistrarea produsului necesită următoarele acţiuni:

1. Furnizorul este o autoritate de încredere, care furnizează o cheie de balizare unică. 2. Înglobarea balizei se face folosind cheia înregistrată. 3. Produsul balizat este înregistrat la autoritatea de încredere înainte de a fi

distribuit. Copia înregistrată este datată şi originalitatea şi proprietatea legală sunt marcate. Înregistrarea după balizare poate contribui la o protecţie eficientă în diferite moduri. Se pot observa următoarele:

- Furnizorul face o căutare automată a balizei în reţea. Când se foloseşte un nivel de certitudine scăzut, siguranţa unui rezultat pozitiv este refăcută căutând în biblioteca L. Deţinerea unei copii înregistrate este dovada proprietăţii dreptului de autor, în faţa justiţiei.

- Verificarea conţinutului poate fi făcută de autoritatea de înregistrare şi de un server public destinat special pentru acest scop. Utilizatorul care doreşte să îşi verifice conţinutul unui produs ar trebui să acceseze acel server particular la care produsul a fost înregistrat. Serverul poate verifica integritatea conţinutului făcând o balizare privată şi apoi trimiţând rezultatul către utilizator.

14

Page 17: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

Capitolul II

Balizarea imaginilor folosind transformarea wavelet discretă 2.1 Clasificarea tehnicilor de balizare

Tehnicile de balizare existente pot fi clasificate după cum urmează: • Perceptibile, • Imperceptibile.

o Fragile, o Robuste.

Publice, Private. În domeniul spaţial/temporal, În domeniul transformatei.

Deşi în Cap. I am vorbit de balize imperceptibile, există şi balize perceptibile.

Acestea din urmă creează schimbări sesizabile în semnalul original, atunci când sunt înglobate, dar nu împiedică semnalul balizat să comunice mesajul original. Deşi balizarea perceptibilă nu este atât de răspândită, din moment ce „marcarea” poate fi supărătoare pentru sistemul vizual uman, ea a fost implementată cu succes pentru imagini în [12], prin înglobarea unui logo vizibil, care permite ca toate detaliile imaginii să fie văzute. Balizele imperceptibile pot fi, în funcţie de aplicaţie, fragile sau robuste. O baliză fragilă [11] este înglobată în semnalul multimedia astfel încât aproape orice transformare nedorită a semnalului balizat va duce la alterarea acesteia, furnizând astfel informaţii despre modificări ale semnalului făcute cu rea voinţă. În contrast cu balizele fragile, balizele robuste sunt înglobate în semnalul gazdă astfel încât eliminarea lor să fie dificil de făcut. Acestea trebuie să fie rezistente împotriva atacurilor intenţionate. Un atac este orice fel de modificare a semnalului multimedia balizat care poate afecta calitatea balizei extrase. În cadrul tehnicilor de balizare robuste, se pot defini două tipuri de sisteme de balizare, publice respectiv, private [13]. Sistemele de balizare publice [7,8] folosesc pentru detecţia respectiv extragerea balizei, numai semnalul multimedia balizat, precum şi o cheie de balizare, şi nu au nevoie de semnalul multimedia original. Aceste sisteme sunt mai puţin robuste în estimarea balizei, dar volumul de calcul este mult mai redus. Sistemele de balizare private [4,5,9,10] folosesc pentru detecţia şi extragerea balizei atât semnalul multimedia balizat, cât şi cel original. Aceste sisteme, deşi sunt mai robuste, nu sunt potrivite în aplicaţii în care se cere viteză şi eficienţă, cum ar fi căutări automate în baze de date a produselor multimedia furate [2]. Tehnicile de balizare robuste se mai pot clasifica în tehnici în domeniul spaţial/temporal [8], respectiv, tehnici în domeniul transformatelor [3-11].

15

Page 18: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

În prima categorie, baliza este înglobată în domeniul spaţial (pentru imagini), respectiv, în domeniul temporal (pentru semnale audio), în timp ce în a doua categorie, se lucrează asupra transformatelor DCT, Fourier sau wavelet ale semnalului gazdă. 2.2 Modele de bază pentru watermarking

Dezvoltarea unei tehnici de balizare ia în considerare mai multe aspecte. Pentru a atinge un echilibru, multe dintre tehnicile existente „împrumută” concepte din alte domenii de cercetare. Fig. 2.1 prezintă câteva din elementele avute în vedere de o tehnică de balizare. Alegerea acestor elemente pentru o metodă de balizare, pentru o aplicaţie dată, este încă neclară, deoarece trebuie făcut un compromis între imperceptibilitate, robusteţe şi complexitatea de calcul pentru anumite aplicaţii.

Fig. 2.1: Domeniile de cercetare care sunt în strânsă legătură cu balizarea semnalelor multimedia.

Balizare numerică

Steganografie

Comunicaţii cu spectru împrăştiat (SS)

Autentificare/ Criptare

Comunicare cu estimarea canalului

Transmisia în prezenţa fading-ului

Percepţia umană

Fuziunea datelor

În cele ce urmează, enumerăm câteva domenii care au contact cu balizarea

numerică. 1. Steganografia se referă la modul de comunicare ascunsă (data hiding).

Problema pincipală este mascarea unui mesaj secret în orice tip de semnal gazdă (nu numai multimedia). Balizarea numerică şi steganografia se aseamănă foarte mult, exceptând faptul că în tehnicile de balizare, se pune accent pe robusteţea sau fragilitatea balizei [2].

16

Page 19: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

2. Comunicaţiile cu spectru împrăştiat (Spread Spectrum - SS) sunt

extrem de asemănătoare cu balizarea numerică. Procedura de înglobare a balizei se aseamănă cu transmiterea unui semnal SS (baliza) printr-un mediu zgomotos (semnalul gazdă). Extragerea balizei este echivalentă cu detecţia semnalului SS dintr-un mediu cu interferenţe [5].

3. Modelele perceptuale umane sunt des folosite pentru codarea

perceptuală a semnalelor multimedia. Se exploatează proprietatea de mascare a percepţiei umane, permiţându-se astfel o introducere mai eficientă a balizei. Astfel, se îmbunătăţeşte robusteţea balizei sau estimarea modificărilor făcute semnalului [2].

4. Autentificarea şi criptarea se folosesc în strânsă legătură cu tehnicile

de balizare, într-un sistem de protecţie universal. De altfel, sistemele de balizare împrumută deseori modelele folosite în criptare, realizând o înglobare elegantă [1,2,14].

5. Fuziunea datelor este o problemă fundamentală de compresie a

informaţiei, în care mai multe semnale sunt „adunate” pentru a forma unul singur, conţinând informaţia cea mai relevantă de la fiecare din semnalele respective. Această problemă se aseamănă cu problema balizării, în care semnalul original şi semnalul de balizare formează semnalul balizat, care trebuie să reţină proprietăţile perceptuale ale semnalului gazdă, dar şi informaţia balizei [4, 10].

6. Transmisia semnalului în prezenţa fading-ului este o problemă care

se referă la comunicaţii fără fir, ce implică folosirea unor strategii pentru a combate atenuarea semnalului în timp [15]. În acest context, robusteţea balizei poate fi considerată capacitatea ei de a rezista interferenţelor înt-un canal cu fading.

7. Estimarea canalului este necesară în orice sistem de comunicaţii.

Combaterea efectelor distorsiunilor canalelor este cu atât mai eficientă, cu cât sunt mai corecte şi exacte modelele de canale propuse, conform unor estimări prealabile. Caracterizarea atacurilor înainte de extragerea balizei poate îmbunătăţi simţitor performanţa unui sistem de balizare [15]. Pentru sistemele de balizare fragile, caracterizarea atacurilor se foloseşte pentru a evalua credibilitatea semnalului modificat; pentru sisteme de balizare robuste, caracterizarea atacurilor se foloseşte pentru a creşte credibilitatea estimării balizei.

2.3 Evaluarea performanţelor unei metode de balizare

Un algoritm de balizare este evaluat printr-o serie de măsurări. Din cauza

aspectului subiectiv al problemei, nu toate criteriile de evaluare sunt cantitative. Se prezintă în cele ce urmează cele mai folosite criterii de evaluare pentru imagini.

17

Page 20: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

1. Imperceptibilitatea

Baliza nu ar trebui să fie vizibilă respectiv supărătoare [5]. Cu alte cuvinte, un utilizator nu ar trebui să fie capabil să facă distincţia între semnalul balizat şi cel original.

2. Raportul dintre puterea maximă a semnalului şi puterea zgomotului (Peak Signal-To-Noise Ratio PSNR) Pentru a stabili un criteriu mai obiectiv al imperceptibilităţii, folosim şi PSNR pentru a măsura „zgomotul” adăugat imaginii originale, ca rezultat al înglobării balizei. Deşi această măsură nu este totdeauna cea mai potrivită, ea poate fi folositoare pentru a indica echilibrul între invizibilitatea balizei şi eficienţa procesului de „ascundere” a datelor. PSNR se defineşte astfel:

( ) ( )

( ) ( )( )( ) ⎥⎥⎥⎥

⎢⎢⎢⎢

−=

∑∀

nm w

nm

nmfnmfN

nmfwfPSNR

,2

2,

10

,,1,max

log 10),( (2.1)

unde este semnalul gazdă, este semnalul balizat, este baliza, f wf w ( )nm, reprezintă localizarea unui anumit pixel, iar este numărul de pixeli din sau

. PSNR se măsoară în dB. N f

wf

3. Coeficientul de intercorelaţie Pentru a măsura similaritatea între balizele originală şi extrasă, se calculează coeficientul normalizat de intercorelaţie [2, 4, 6]:

( )( ) ( )

( ) ( )∑∑∑

==

==ww

w

N

i

N

i

N

i

iwiw

iwiwww

12

12

1

~

~~,ρ (2.2)

unde şi ( )iw ( )iw~ reprezintă semnalele de balizare original şi, respectiv extras; este lungimea balizei. O metodă de balizare robustă încearcă să maximizeze acest coeficient de intercorelaţie, atunci când semnalul este distorsionat, iar o metodă de balizare fragilă încearcă să îl minimizeze, în cazul unor modificări majore.

wN

4. Distanţa Hamming normalizată Dacă baliza este alcătuită din elemente binare, pentru a măsura similaritatea dintre cele două balize, se poate calcula distanţa Hamming normalizată dintre balizele originală şi extrasă [2], în loc de coeficientul de intercorelaţie. Aceasta este dată de următoarea relaţie:

18

Page 21: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

( ) ( ) ( )iwiwN

wwwN

iwHD

~1~,1

⊕= ∑=

ρ (2.3)

unde ,w w~ şi sunt definite la fel ca şi în ecuaţia (2.2), iar operatorul este SAU-EXCLUSIV (XOR).

wN ⊕

5. Probabilitatea unui fals pozitiv sau negativ

În aplicaţiile de securitate informaţională, este necesară detecţia balizei sau detecţia oricărui tip de modificare făcută cu scopul de a înlătura baliza. Probabilitatea ca baliza sau modificarea semnalului balizat să nu fie detectate se numeşte probabilitatea unui fals negativ. Asemănător, probabilitatea ca o baliza să fie detectată, când ea nu există se numeşte probabilitatea unui fals pozitiv [1,2].

6. Complexitatea de calcul În funcţie de aplicaţia cerută, complexitatea de calcul poate fi un factor semnificativ în estimarea performanţelor unui algoritm de balizare [2]. De exemplu, extragerea balizei la un DVD-player trebuie realizată în timp real, dar în balizarea imaginilor pentru protejarea proprietăţii intelectuale, acest fapt poate să nu aibă o importanţă foarte mare.

2.4 Balizare în domeniul spaţial/temporal Metodele de balizare în domeniul spaţial înglobează baliza modificând în mod direct valorile pixelilor din imaginea originală. De obicei, aceste metode modifică biţii cei mai puţin semnificativi ai imaginii gazdă şi în general nu sunt robuste împotriva unor operaţii cum ar fi filtrarea trece-jos. Aceste metode nu sunt foarte complexe în calcule şi prin urmare necesită un volum mai mic de calcul. De aceea, este de aşteptat ca ele să fie puse în practică mai uşor atunci când este vorba de balizare în timp real. Cu toate acestea, astfel de tehnici nu pot localiza modificări ale semnalului decât spaţial, nu şi spectral. 2.5 Balizare în domeniul transformatelor

Pentru a înţelege avantajele unei metode de balizare în domeniul transformatelor, în cele ce urmează vom analiza etapele prin care trece un semnal multimedia (imagine sau semnal audio) în timpul copierii. În Fig. 2.2, prin „transmisia” semnalului înţelegem codarea sursei sau a canalului, şi/sau criptarea datelor. Majoritatea prelucrărilor sunt fără pierderi, dar multe din metodele de compresie ale datelor sunt cu pierderi. Acestea din urmă (JPEG, MPEG etc.) pot degrada calitatea datelor, printr-o pierdere iremediabilă a informaţiei. În general, o schemă de balizare ar trebui să fie rezistentă împotriva distorsiunilor introduse de aceste tipuri de prelucrări.

Compresia cu pierderi este o operaţie care elimină de obicei componentele mai puţin semnificative ale unei imagini sau ale unui sunet. Majoritatea procesărilor de acest

19

Page 22: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

tip au loc în domeniul frecvenţei. De fapt, pierderile de date au loc în componentele cu frecvenţe înalte. După recepţie, o imagine suferă o serie de transformări obişnuite care pot fi clasificate în distorsiuni geometrice sau distorsiuni ale semnalului. Distorsiunile geometrice sunt specifice imaginilor şi semnalelor video, şi se referă la operaţii cum ar fi rotirea, translaţia, scalarea şi decuparea.

O scalare afină (micşorare) a imaginii duce la o pierdere a datelor în componentele de frecvenţă înalte a imaginii. Decuparea sau tăierea porţiunilor din imagine duc la pierderi irecuperabile ale datelor, care pot degrada serios orice baliză aplicată în domeniul spaţial. Cu toate acestea, o metodă bazată pe o transfomare în frecvenţă, cum ar fi DCT, împrăştie baliza în întregul domeniu spaţial a imaginii, şi de aceea este mai puţin probabil ca ea să fie afectată de decupare.

Fig. 2.2: Operaţii obişnuite de procesare a semnalului prin care poate trece un semnal multimedia

Semnal balizat

W

WTransmisie

Com

pres

ie

cu p

ierd

eri

Dis

tors

iuni

ge

omet

rice

Proc

esăr

i de

sem

nal

Con

vers

ii D

/A –

A/D

Distorsiuni obişnuite sau modificări făcute cu rea intenţie

Transmisie

Semnal balizat modificat

Distorsiuni obişnuite ale semnalului sunt conversiile D/A, A/D, reeşantionarea, recuantizarea, precum şi îmbunătăţirile aduse semnalului cum ar fi creşterea contrastului, a intensităţii culorilor, pentru imagini, sau egalizarea în frecvenţă, pentru semnale audio. Multe dintre aceste distorsiuni sunt neliniare, prin urmare, este dificil de analizat efectul lor asupra metodelor de balizare în domeniul spaţial sau al transformatei. Cu toate acestea, faptul că imaginea originală este cunoscută permite ca multe transformări să fie reversibile, cel puţin aproximativ. Nu în ultimul rând, imaginea copiată poate să nu rămână în formatul digital original. Este foarte probabil ca imaginea să fie imprimată pe hârtie, sau în cazul semnalelor audio şi video, ele pot fi copiate pe casete audio, respectiv video. Aceste

20

Page 23: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

reproduceri pot introduce degradări adiţionale asupra imaginii, la care metoda de balizare trebuie să fie robustă. Din motivele enumerate mai sus, se poate deduce că o baliză nu ar trebui să fie plasată în regiunile sau componentele spectrale nesemnificative ale imaginii, din moment ce multe prelucrări şi distorsiuni obişnuite ale semnalului pot afecta aceste componente. De exemplu, o baliză plasată în frecvenţele mai înalte ale imaginii poate fi foarte uşor eliminată printr-o filtrare trece-jos. În mod evident, orice componentă spectrală poate fi afectată, cu condiţia ca modificările făcute să fie mici. Totuşi, schimbările mici pot fi foarte sensibile la zgomot.

Problema care se pune este cum să se introducă baliza în regiunile de percepţie maximă ale spectrului, păstrând fidelitatea semnalului original. Există multe lucrări care abordează problema balizării prin analogie cu problema comunicaţiilor cu spectru împrăştiat. În [5], autorii tratează domeniul transformatei DCT a imaginii ca un canal de comunicaţii, şi corespunzător, baliza este văzută ca un semnal care trebuie transmis prin acest canal de comunicaţii. Atacurile şi distorsiunile neintenţionate ale semnalului sunt tratate ca un zgomot la care semnalul trebuie să fie imun. În comunicaţiile cu spectru împrăştiat, se transmite un semnal de bandă îngustă pe o bandă mult mai largă de frecvenţă, astfel încât energia semnalului prezentă în oricare din componentele spectrale să fie foarte mică şi aproape nedectabilă. În mod similar, baliza este împrăştiată în multe componente spectrale, astfel încât energia ei din fiecare componentă să nu fie detectabilă. Cu toate acestea, deoarece în procesul de detecţie a balizei, se cunoaşte localizarea şi conţinutul balizei, este posibil ca la recepţie să se concentreze aceste semnale numeroase cu energie scăzută într-un singur semnal, al cărui raport semnal pe zgomot să fie mare. Pentru a distruge o astfel de baliză, ar trebui adăugat zgomot cu amplitudine mare în toate componentele spectrale. Împrăştiind baliza în tot spectrul imaginii, se asigură o robusteţe mare faţă de atacuri, intenţionate sau nu, deoarece nu se cunoaşte localizarea balizei. În plus, pot fi selectate anumite zone de frecvenţă, a căror atacare ar conduce la degradări severe ale imaginii. O baliză bine plasată în componentele spectrale ale semnalului va fi imposibil de văzut (pentru imagini), respectiv de auzit (pentru sunete). Aceasta afirmaţie este adevărată dacă energia balizei este suficient de mică în oricare componentă spectrală. În plus, energia balizei prezentă în unele componente spectrale poate fi mărită, folosind cunoştintele despre fenomenul de mascare al simţului auditiv, respectiv vizual al omului. Mascarea perceptuală se referă la orice situaţie în care anumite regiuni ale unei imagini, sau anumite porţiuni ale unui sunet sunt „ascunse” prin includerea unei informaţii mai proeminente în altă porţiune a respectivului semnal [2, 5].

Este cunoscut faptul că sistemele vizual şi auditiv uman disting cu o rezoluţie mai mare zonele cu energie mai mare, şi frecvenţe mai joase din imagine sau sunet. Mai mult, se poate observa că majoritatea informaţiei este localizată în regiunile cu frecvenţe mai joase [5].

Tehnicile SS de balizare care folosesc pentru detecţia balizei semnalul original, au în general performanţe mai bune decât cele care nu folosesc semnalul original. În majoritatea sistemelor SS de balizare private, secvenţa de zgomot pseudo-aleator alb este adăugată la semnalul original, şi este detectată prin corelaţia cu semnalul balizat. Aceasta

21

Page 24: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

înseamnă că baliza este înglobată în domeniul spaţial sau al transformatei semnalului printr-o adunare liniară. De exemplu, dacă baliza este adăugată în domeniul spaţial, atunci imaginea balizată este dată de ecuaţia (2.4):

wff w += (2.4)

unde şi sunt semnalele original şi, respectiv, balizat, iar este baliza generată pseudo-aleator. Pentru a testa existenţa unei balize într-un semnal dat , se calculează intercorelaţia dintre şi . Mai precis,

f wf w

0w wf

wf 0w

( ) ( ) ( )000 ,,, wwwfwf w ρρρ += (2.5) unde ( )⋅⋅,ρ reprezintă operatorul de intercorelaţie, aşa cum s-a definit în ecuaţia (2.2). Rezultatul are doi termeni: intercorelaţia dintre semnalul gazdă şi baliza cunoscută, precum şi intercorelaţia dintre baliza extrasă şi cea cunoscută. Dacă ( 0, wf )ρ are o valoare relativ mare, atunci detectorul poate să nu fie de încredere. Atunci când semnalul original este cunoscut, o primă estimare a balizei înglobate se poate face prin scăderea semnalului original din cel balizat. Baliza rezultată este apoi comparată, cu ajutorul coeficientului de intercorelaţie, cu baliza cunoscută, îmbunătăţindu-se astfel detecţia. Dezavantajele cunoscute ale balizării prin analogie cu comunicaţiile cu spectru împrăştiat sunt [15]:

• SS permite detecţia unei balize cunoscute, dar banda largă de frecvenţă cerută nu permite introducerea unei secvenţe lungi de biţi sau a unui logo dintr-un semnal audio sau dintr-o imagine.

• Abordările SS sunt vulnerabile în mod particular la problema „near-far”.

Efectul „near-far” apare atunci când sursa de perturbaţii este mai aproape de receptor, decât sursa de informaţii. În consecinţă, puterea zgomotului este mai mare decât cea a semnalului purtător de informaţie. Aceasta înseamnă pentru balizare că dacă puterea balizei scade datorită distorsiunilor cauzate de fading, rezultatul detecţiei prezintă un grad de încredere redus.

• Cele mai multe abordări SS nu sunt adaptive. Aceasta înseamnă că ele nu ţin

cont nici de nestaţionaritatea spaţială a imaginii originale cauzată de interferenţe, şi nici nu includ tehnici adaptive pentru a estima variaţiile statistice.

• Structura corelatorului folosit pentru detecţia balizei nu este eficientă în

prezenţa fading-ului. Deşi sistemele SS încearcă să exploateze împrăştierea balizei pentru a media fading-ul, acestea nu sunt gândite pentru a maximiza

22

Page 25: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

performanţa. În mediile în care predomină fading-ul, se foloseşte diversitatea spaţio-temporală pentru a elimina efectele acestuia.

Vom considera că SS nu este cel mai adecvat pentru modelarea transmisiei balizei

printr-un canal de comunicaţie. Transmiterea balizei va fi asemănătoare cu transmisia semnalului printr-un canal asociat, aşa cum se arată în Fig. 2.3. Presupunem că distorsiunile obişnuite ale semnalului cum ar fi decuparea, filtrarea, şi codarea perceptuală nu sunt modelate adecvat ca un zgomot de interferenţă de bandă îngustă, ci presupunem că acest fel de modificări ale semnalului au efectul fading-ului asupra balizei. Prin urmare, baliza poate fi făcută mai robustă folosind tehnici de diversitate şi caracterizări ale atacurilor, dar care nu fac obiectul prezentei lucrări. Din cauza importanţei robusteţii împotriva distorsiunilor spaţiale şi frecvenţiale, baliza se înglobează în domeniul wavelet, care localizează astfel de degradări. Nu numai că acest domeniu permite o balizare robustă mai eficientă, dar este şi mai potrivită pentru a caracteriza modificările făcute cu rea intenţie, în cazul balizării fragile. Această lucrare prezintă două metode de balizare, ambele robuste, pentru protejarea dreptului de autor.

Semnal de protejat

Balizare W

Extragerea balizei W

Distorsiuni întâmplătoare/ intenţionate

W W

w(i) Baliza

Fig. 2.3: Balizarea ca o problemă de comunicaţii. Înglobarea balizei şi procesul de extragere pot fi interpretate ca şi transmisie într-un mediu zgomotos cu fading.

( )iw~ ReceptorCanal de comunicaţie

Codarea canalului Baliza degradată

23

Page 26: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

}

Capitolul III

Metoda de balizare propusă

3.1 Introducere În această lucrare, se doreşte dezvoltarea unui algoritm de balizare numerică a semnalelor multimedia, în care baliza să nu fie numai detectabilă, ci şi să poată fi extrasă. De aceea, pentru simplitate, vom folosi o baliză binară.

Ne concentrăm asupra balizării imaginilor statice, având în vedere faptul că se poate face o generalizare a metodei şi pentru alte tipuri de semnale multimedia.

În cele ce urmează, vom aborda o metodă de balizare care lucrează în domeniul transformării wavelet. Cercetările făcute asupra ochiului uman indică faptul că retina împarte o imagine în mai multe componente care se transmit de la ochi înspre cortex pe benzi diferite de frecvenţă. Aceste canale pot fi excitate doar de componente ale unor semnale cu caracteristici asemănătoare. Procesarea semnalelor din diferitele benzi de frecvenţă este independentă. Studiile au arătat că fiecare dintre aceste canale au o bandă de lăţime aproximativ o octavă. În mod asemănător, într-o descompunere multirezoluţie, imaginea este separată în benzi de frecvenţă cu benzi aproximativ egale pe o scară logaritmică. De aceea, este de aşteptat ca folosirea transformării wavelet discrete să permită procesarea independentă a componentelor rezultate, fără o interacţiune perceptibilă/vizibilă între ele. În plus, metoda prezentată în această lucrare plasează baliza atât în spaţiu, cât şi în frecvenţă; acest lucru permite în principiu detecţia schimbărilor imaginii localizate spaţial şi spectral. Pentru nu schimba imaginea în mod vizibil, nu înglobăm baliza în componentele de frecvenţă joasă (subimaginea LL de aproximare a transformatei). Procesul de înglobare are loc selectiv, în funcţie de o cheie de balizare, în subimaginile de detaliu ale transformatei imaginii. Schimbarea coeficienţilor selectaţi credem că nu va afecta imaginea. 3.2 Arhitectură A. Înglobarea balizei

Presupunem pentru simplitate că baliza binară are lungimea şi este compusă din elemente { . Ne referim la imaginea originală , în care înglobăm baliza, ca fiind imaginea gazdă. Înglobăm baliza în coeficienţii wavelet de detaliu ai imaginii gazdă cu ajutorul unei chei de balizare. Această cheie este generată în funcţie de imaginea

wN1,1− f

24

Page 27: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

)}

originală şi este folosită pentru a selecta poziţiile exacte în domeniul wavelet în care se înglobează baliza. Pentru fiecare coeficient din domeniul wavelet, cheia are un caracter corespunzător de valoare 1 sau 0 pentru a indica dacă coeficientul este sau nu balizat. Numărul de „1” din cheie trebuie să fie mai mare sau egal cu mărimea balizei. Valorile balizei sunt înglobate repetat în coeficienţi diferiţi selectaţi de cheie, dacă lungimea balizei este mai mică decât numărul valorilor de „1” din cheie. Tehnica constă în trei etape descrise mai jos: Etapa 1 Se calculează descompunerea cu transformata wavelet discretă la nivelul L, a imaginii gazdă pentru a produce o secvenţă de 3L imagini de detaliu corespunzătoare detaliilor pe orizontală, verticală, respectiv pe diagonală pentru fiecare nivel L de rezoluţie şi o aproximaţie grosieră a imaginii la nivelul de rezoluţie cel mai mic. Notăm al x-lea detaliu din componenta imaginii la nivelul de rezoluţie l a imaginii gazdă cu , unde

(coeficienţii de detaliu pe orizontală, verticală, respectiv diagonală) şi Aproximarea grosieră este reprezentată de

( nmf lx ,,

{ dvhx ,,∈.,...,1 Ll = ).,(, nmf La

Fig. 3.1: Reprezentare ierarhică a coeficienţilor wavelet pe trei nivele de rezoluţie, unde imaginea de aproximare LL şi imaginile de detaliu LH, HL şi HH conţin informaţia necesară pentru refacerea imaginii de aproximare pentru următorul nivel de aproximare.

HH3

3,af sau LL3

LH3

HL3

2,vf sauLH2

2,df sauHH2

2,hf sauHL2

1,vf sau LH1

1,df sauHH1

1,hf sau HL1

În funcţie de imaginile de detaliu, se generează cheia de balizare k, după cum urmează:

25

Page 28: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

( ) ( )⎩⎨⎧ >

= altfel ,0

, dacă ,1, ,,

,lxllx

lx

Mqnmfnmk

(3.1)

unde reprezintă cheia asociată fiecărei imagini de detaliu, reprezintă o variabilă pozitivă, diferită pentru fiecare nivel l, iar reprezintă maximul coeficienţilor din imaginea de detaliu . Cheia se va calcula pentru

lxk , lq

lxM ,

lxf , Ll ,...,1= şi pentru . { }dvhx ,,∈

Dacă considerăm lungimea cheii , ca fiind numărul de „1” din cheie, atunci

generarea cheii se va face astfel încât

kN

1=w

k

NN

. De aceea, pentru fiecare nivel, dacă

lungimea cheii este , atunci generarea cheii respective se face astfel încât să se îndeplinească condiţia din ecuaţia (3.2):

lxk , lxN ,

, *, x l

w

Nk k

N= ∈N (3.2)

unde lungimea cheii k se poate defini astfel:

∑==

=

dvhxLl

lxk NN,,

..1, (3.3)

Etapa 2 Considerăm fiecare nivel de rezoluţie l şi localizarea coeficienţilor (m, n). Dacă valoarea asociată cheii k este unu se procedează după cum urmează, altfel nu se înglobează baliza:

( ) ( ) ( )nmwnmfnmf lxwlx ,,, ,, ⊕= (3.4)

unde , este coeficientul wavelet de detaliu al imaginii balizate, iar este coeficientul wavelet de detaliu al imaginii originale, pentru imaginea de detaliu k, şi respectiv pentru nivelul de rezoluţie l. Operatorul

{ }dvhx ,,∈ wlxf , lxf ,

⊕ reprezintă operaţia de înglobare a bitului balizei cu coeficientul wavelet de detaliu corespunzător. Etapa 3 Componentele imaginii unificate pentru fiecare nivel L corespunzător al transformării wavelet inverse se calculează pentru a forma imaginea balizată. Procesul de înglobare a balizei este prezentat în Fig. 3.2.

26

Page 29: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

)

B. Detecţia şi extragerea balizei

Pentru a detecta şi extrage baliza, imaginea originală trebuie să fie cunoscută. Prin urmare, sistemul de balizare prezentat este privat. Imaginea recepţionată este o versiune posibil distorsionată a imaginii balizate. Scopul procesului de extragere a balizei este obţinerea unei estimări a balizei originale de încredere. Procesul de detecţie cere cunoştinte şi despre baliză . ( )nmw ,

Reprezentăm imaginea căreia vrem să-i aplicăm procesul de extracţie prin . Imaginea originală este ( nmr , ( )nmf , . Pentru detecţia şi extragerea balizei, se fac

următorii paşi: Etapa 1:

Primul pas implică aplicarea unei descompuneri wavelet cu L nivele asupra imaginii , precum şi asupra imaginii originale ( nmr , ) ( )nmf , . Fie a x-a imagine de detaliu din nivelul de rezoluţie l a imaginii

( nmr lx ,, )( )nmr , .

Etapa 2

Cheia k se generează folosind imaginea originală, aşa cum s-a văzut într-o primă fază, cea de înglobare a balizei. Această cheie furnizează locaţiile unde a fost înglobat un bit al balizei binare. Extragem baliza din aceşti coeficienţi după cum urmează:

( ) ( ) ( )nmfnmrnmw lxlx ,,,~,, Θ= (3.5)

unde ( nmw , )~ reprezintă bitul recuperat, iar operatorul Θ reprezintă operaţia inversă făcută în procesul de înglobare. Etapa 3

Dacă baliza a fost înglobată în locaţii diferite de mai multe ori, atunci valoarea cea mai des întâlnită a bitului extras este ataşată balizei estimate. Dacă au fost extraşi un număr egal de „1”, respectiv de „-1”, atunci se face o alegere aleatoare pentru valoarea ei.

O baliză dată este detectată dacă intercorelaţia dintre baliza extrasă şi baliza dată este mai mare decât un prag cunoscut dinainte. Mai precis, condiţia de detecţie a balizei este dată de:

( ) ( )( ) ( )

,~)(~

~,22

Tnwnw

nwnwww ≥

⋅=

∑∑∑ρ

(3.6)

27

Page 30: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

unde w este baliza dată, w~ este baliza extrasă, iar T este pragul cunoscut dinainte. ( ww )~,ρ este cunoscut ca şi coeficientul de intercorelaţie dintre baliza dată şi baliza

extrasă. Dacă nu se menţionează alte condiţii, toate sumele din ecuaţia (3.6) şi din următoarea secţiune au indexul n şi domeniul de la 1 la Nw.

Dacă coeficientul de intercorelaţie este mai mare sau egal decât T, baliza dată este detectată în imaginea recepţionată. Dacă imaginea de la recepţie este aceeaşi cu imaginea balizată, atunci coeficientul de intercorelaţie ar trebuie să fie 1. Dacă imaginea recepţionată este o versiune modificată a imaginii balizate, fără ca schimbările să fie vizibile, atunci coeficientul de intercorelaţie ar trebui să aibă o valoare mare. Procesul de detecţie şi extragere este prezentat în Fig. 3.3.

Imagine gazdă

Nivelul L de descompunere wavelet

k este 1?

Generarea cheii de balizare k, funcţie de imaginea originală

01000110110... baliza

Fuziunea balizei cu imaginea gazdă în domeniul wavelet

Imagine balizată

Fig. 3.2: Metoda de balizare propusă. Se prezintă în mod general paşii care trebuie efectuaţi pentru a obţine imaginea balizată.

Operaţia inversă descompunerii wavelet

28

Page 31: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

Fig. 3.3: Detecţia şi extragerea balizei pentru metoda propusă.

Imagine originală

k este 1?

Imagine recepţionată

Nivelul L de descompunere wavelet

Extragerea balizei

01000110110... baliza originală

Măsura elarea intercor ţiei între cele două balize

Nivelul L de descompunere wavelet

Generarea cheii de balizare k, funcţie de imaginea originală

3.3 Cele două variante ale metodei propuse

Cele două variante ale metodei propuse diferă prin modul de înglobare al bitului balizei, aşa cum s-a definit în ecuaţia (3.4), precum şi în numărul de nivele de rezoluţie în care imaginea originală a fost descompusă cu ajutorul transformatei wavelet discrete. Pentru prima variantă, baliza va fi înglobată numai în primul nivel de rezoluţie al imaginii, iar în a doua variantă baliza va fi înglobată în trei nivele de rezoluţie. De asemenea, pentru a doua variantă, modul de detecţie, respectiv de extragere al balizei poate să aibă un nivel de încredere mai mare, deoarece baliza poate fi extrasă numai din ultimul nivel de rezoluţie al imaginii (din componentele spectrale mai joase ale imaginii,

29

Page 32: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

care pot să nu fie atât de afectate de distorsiuni obişnuite ale semnalului, cum ar fi compresia JPEG). A. Prima variantă

Imaginea originală se descompune într-o imagine de aproximaţie şi trei imagini de detaliu, cu alte cuvinte L este 1. Prin urmare, generarea cheii se face doar pentru primul nivel, folosindu-se un singur parametru . Operaţia definită de operatorul ⊕ este în acest caz:

1q

( ) ( ) ),(,, 1,1, nmwnmfnmf x

wx α+= (3.7)

unde , iar { dvhx ,,∈ } α este o variabilă pozitivă, definită de utilizator. Este uşor de dedus că operaţia definită de Θ este în acest caz:

( ) ( ) ( )α

nmfnmrnmw xx ,,

,~ 1,1, −= (3.8)

Dacă , se face o alegere aleatoare pentru pentru bitul balizei binare. Procesul de balizare, respectiv de detecţie sunt prezentate în Fig. 3.4 şi Fig. 3.5.

( ) ( nmfnmr xx ,, 1,1, = )

B. A doua variantă

Imaginea originală se descompune pe trei nivele de rezoluţie, adică într-o imagine de aproximaţie şi câte trei imagini de detaliu pentru fiecare nivel de rezoluţie. În acest caz, L este 3. Generarea cheii se face pentru trei nivele de rezoluţie, cu ajutorul parametrilor . Aceştia sunt pozitivi şi pot fi definiţi de utilizator. Operaţia definită de⊕ este:

3,af

321 ,, qqq

( ) ( ) ( )[ ]nmwnmfnmf lx

wlx ,1,, ,, α+= (3.9)

unde , , iar { }dvhx ,,∈ Ll ,...,1= α este o variabilă definită de utilizator, astfel încât

( 1,0∈ )α . Este uşor de dedus că operaţia definită de Θ este în acest caz:

( ) ( ) ( )( )nmf

nmfnmrnmw

lx

lxlx

,,,

,~,

,,

−=

α (3.10)

Dacă şi/sau dacă ( ) ( nmfnmr lxlx ,, ,, = ) ( ) 0,, =nmf lx , se face o alegere aleatoare pentru

. ( )nmw ,Procesul de balizare, respectiv de detecţie sunt prezentate în Fig. 3.6 şi Fig. 3.7.

30

Page 33: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

Fig. 3.4: Etapele de înglobare a balizei pentru prima variantă a metodei propuse [16].

Original Image OI

Key generation

DWT Watermarking Key kh,1(m,n)

Watermark 0110…1

kv,1(m,n) kd,1(m,n)

Watermarked Image WI

IDWT

31

Page 34: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

Fig. 3.5: Etapele de detecţie şi extragere a balizei pentru prima variantă propusă [16].

Original Image OI Received Image RI

DWT DWT

Key Generation

kh,1(m,n)

Recovered watermark Original watermark

kv,1(m,n) kd,1(m,n)

Watermarking Key Correlation Measurement

32

Page 35: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

Fig. 3.6: Etapele de înglobare a balizei pentru a doua variantă a metodei propuse.

Original Image OI

Key generation

DWT Watermarking Key

Watermark 0110…1

Watermarked Image WI

IDWT

33

Page 36: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

Original Image OI Received Image RI

Fig. 3.7: Etapele de detecţie şi extragere a balizei pentru a doua variantă propusă.

Key Generation

Watermarking Key

Recovered watermark Original watermark

Correlation Measurement

DWT DWT

34

Page 37: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

3.4 Rezultatele obţinute în urma simulărilor

Pentru toate simulările, am folosit bine cunoscuta imagine „Lena”, şi o baliză binară având lungimea . Am utilizat funcţia wavelet mother de tip Daubechies cu patru momente nule. Pentru prima variantă a metodei, baliza binară a fost generată din codul ASCII al unui text introdus de utilizator, de 32 caractere; pentru a doua metodă, baliza a fost generată aleator.

256=wN

Pentru a testa robusteţea metodei propuse, atacăm imaginile balizate prin distorsiuni obişnuite ale semnalului, cum ar fi compresia JPEG, filtrare mediană, respectiv, adăugare de zgomot alb Gaussian de medie nulă (AWGN). Comparăm performanţele celor două variante ale metodei propuse, cu performanţa unei metode cunoscute în literatura de specialitate, prezentată în [7]. A. Prima variantă a metodei propuse Pentru simulări, am folosit următoarele valori pentru parametri: 06.01 =q , iar 10=α . Am înglobat baliza în două moduri:

- numai în coeficienţii wavelet de detaliu pe diagonală ai primului nivel de rezoluţie, respectiv,

- în toate imaginile de detaliu ai primului nivel de rezoluţie. Imaginea originală, precum şi cele două imagini balizate sunt prezentate în Fig. 3.8.

(a) (b) (c)

Fig.3.8: (a) Imaginea originală “Lena”, (b) Versiunea balizată “Lena”, folosind prima abordare, (c) Versiunea balizată “Lena”, folosind a doua abordare. Cele două imagini balizate au dB 76.43=PSNR , respectiv dB 14.39=PSNR . Se poate observa că a doua imagine este perceptual mai afectată decât prima, cu toate acestea, baliza extrasă din a doua imagine este mai robustă împotriva atacurilor decât baliza extrasă din prima imagine.

Am studiat efectul distorsiunilor obişnuite ale semnalului (compresie JPEG, filtrare mediană, zgomot aditiv alb Gaussian) asupra coeficientului de intercorelaţie între baliza cunoscută şi cea extrasă din imaginea atacată. Comparăm performanţele acestei prime variante a metodei propuse cu o metodă propusă de Kundur şi Hatzinakos în [7].

35

Page 38: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

Cheia de balizare folosită pentru a îngloba baliza este ( )nmkd ,1, . Parametrul definit de utilizator este , aşa cum au indicat autorii în [7]. În acest caz, imaginea balizată are

. 4=Q

dB 33.57=PSNR În Fig. 3.9, se prezintă coeficientul de intercorelaţie ( )ww ~,ρ în funcţie de dimensiunea filtrului MM × , pentru filtrarea mediană, în funcţie de rata de compresie, pentru compresia JPEG, respectiv în funcţie de raportul semnal/zgomot ( ). Graficele marcate cu simbolul „o” sunt rezultatele pentru prima abordare (a fost marcată numai imaginea de detalii pe diagonală). Graficele marcate cu simbolul „x” sunt rezultatele pentru a doua abordare (au fost marcate toate imaginile de detalii). Celelate grafice sunt rezultatele pentru metoda propusă în [7].

SNR

Coeficientul de intercorelaţie pentru metoda propusă în această secţiune este, în mod evident, mai mare decât pentru metoda propusă în [7], în cazul compresiei JPEG şi zgomot alb Gaussian aditiv. Cu toate acestea, metoda propusă nu arată robusteţe împotriva filtrării mediane, comparativ cu metoda din [7].

Fig. 3.9 (a) Răspuns

Cor

rela

tion

Coe

ffic

ient

o

Compression Rati

Detector Response to JPEG Compression

ul detectorului la compresia JPEG.

36

Page 39: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

Fig. 3.9 (b) Răspunsul de

Fig. 3.9 (c) Răspunsul detectorului la zgomsimbolul „o” sunt rezultatele pentru primapentru a doua abordare. Restul graficelor

Cor

rela

tion

Coe

ffic

ient

C

orre

latio

n C

oeff

icie

nt

Filter Size, M

Detector Response to Median Filtering

tectorului la filtrarea mediană.

Detector Response to Additive Gaussian Noise

SNR (dB) ot alb Gaussian aditiv. Graficele marcate cu

abordare, cele marcate cu „x” sunt rezultatele sunt rezultatele pentru metoda din [7].

37

Page 40: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

B. A doua variantă a metodei propuse Pentru simulări, am folosit următoarele valori pentru parametri: , ,

, iar 06.01 =q 04.02 =q

02.03 =q 1.0=α . Baliza a fost generată în mod aleator. Modul de extragere a balizei a fost realizat în două moduri:

- din toate nivelele de rezoluţie, prin mediere, respectiv, - din ultimul nivel de rezoluţie al transformatei, care poate fi afectat mai puţin

de distorsiuni obişnuite ale semnalului. Imaginea originală, imaginea balizată cu metoda propusă, precum şi imaginea balizată cu metoda propusă în [7] sunt prezentate în Fig. 3.10. Pentru a îngloba baliza folosind metoda din [7], cheile de balizare folosite pentru fiecare nivel de rezoluţie sunt , , respectiv .

1,dk 2,dk

3,dk

(a) (b) (c)

Fig. 3.10: (a) Imaginea originală “Lena”, (b) Versiunea balizată “Lena”, folosind a doua variantă a metodei propuse, (c) Versiunea balizată “Lena”, folosind metoda din [7]. Cele două imagini balizate au PSNR foarte apropiat: 46 dB, respectiv 45 dB. Nici una nu este afectată în mod vizibil de procesul de balizare.

În Fig. 3.11, se prezintă coeficientul de intercorelaţie ( )ww ~,ρ în funcţie de dimensiunea filtrului MM × , pentru filtrarea mediană, în funcţie de rata de compresie, pentru compresia JPEG, respectiv în funcţie de raportul semnal/zgomot ( ). Graficele marcate cu simbolul „+” sunt rezultatele pentru metoda propusă, cele cu linii întrerupte fiind graficele pentru a extragerea balizei din ultimul nivel de rezoluţie. Graficele nemarcate sunt rezultatele pentru metoda propusă în [7], iar cele cu linii întrerupte reprezintă graficele pentru care baliza a fost extrasă din ultimul nivel de rezoluţie.

SNR

Se observă că performanţele metodei propuse sunt superioare metodei din [7]. De asemenea, coeficientul de intercorelaţie este mai mare dacă extragerea balizei se face numai din ultimul nivel de rezoluţie. Acest lucru se datoreşte faptului că distorsiunile obişnuite ale semnalului sunt mai semnificative pentru componentele spectrale mai înalte ale imaginii.

38

Page 41: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

Fig. 3.11: Răspunsul detectorului la distorsiuni obişnuite. Graficele marcate cu “+” sunt pentru metoda propusă, cele nemarcate sunt pentru metoda din [7]. Graficele cu linie întreruptă sunt obţinute pentru extragerea balizei din ultimul nivel de rezoluţie.

39

Page 42: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

3.5 Concluzii

În această lucrare, am propus o metodă de balizare cu două variante foarte apropiate ca şi concept. Metoda se bazează pe descompunerea multirezoluţie a imaginii cu transformata wavelet discretă. Se fac schimbări asupra unor coeficienţi wavelet, despre care se crede că nu vor avea un impact vizual asupra unui observator uman. Coeficienţii au fost selectaţi folosind o detecţie cu logică de prag. Pragul depinde de coeficienţii wavelet ai fiecărei imagini de detaliu.

Performanţele metodei propuse au fost comparate cu cele ale metodei propuse în [7]. În prima variantă, metoda a demonstrat o performanţă mai bună în cazul compresiei JPEG şi a zgomotului aditiv, alb Gaussian şi de medie nulă faţă de metoda din [7]. În a doua variantă, metoda demonstrează o performanţă superioară pentru toate cele trei tipuri de atacuri faţă de metoda din [7]. O parte din rezultatele prezente în lucrarea de faţă, şi anume pentru prima variantă a metodei propuse, au format obiectul unui articol, aflat în curs de publicare în „Buletinul Ştiinţific” al UPT, nr. 42(62), fascicola 1/2003. Articolul este prezentat in Anexa 3.

40

Page 43: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

ANEXA 1 I. Programe cu care se atacă imaginea balizată, folosind metoda propusă, prima variantă, respectiv, folosind metoda propusă de Kundur şi Hatzinakos în [7]. Programul care afişează graficele cu coeficientul de intercorelaţie în funcţie de ordinul filtrului median: atacurimedfilt.m filtrare1=zeros(1,5); filtrare2=zeros(1,5); filtrare3=zeros(1,5); filtrare4=zeros(1,5); img=readimage('Lenna'); %--------------metoda propusa, prima varianta-------------------------------------- w=genwat; [imgb1,imgb2,k1,k2]=watermarker(img,w); wrec=waterdecoder(img,imgb1,w,k1); filtrare1(1)=correlation(w,wrec); wrec2=waterdecoder(img,imgb2,w,k2); filtrare2(1)=correlation(w,wrec2); A=uint8(imgb1); for M=3:2:9, B=medfilt2(A,[M M]); B=double(B); wrec=waterdecoder(img,B,w,k1); filtrare1((M+1)./2)=correlation(w,wrec); end A=uint8(imgb2); for M=3:2:9, B=medfilt2(A,[M M]); B=double(B); wrec2=waterdecoder(img,B,w,k2); filtrare2((M+1)./2)=correlation(w,wrec2); end %-------------Deepa Kundur------------------------------------------------------------- [imgw1,imgw2,k,lkey]=denc(img,w); wrec=ddec(imgw1,w,k,lkey);

41

Page 44: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

filtrare3(1)=correlation(w,wrec); wrec2=ddec(imgw2,w,k,lkey); filtrare4(1)=correlation(w,wrec2); A=uint8(imgw1); for M=3:2:9, B=medfilt2(A,[M M]); B=double(B); wrec=ddec(B,w,k,lkey); filtrare3((M+1)./2)=correlation(w,wrec); end A=uint8(imgw2); for M=3:2:9, B=medfilt2(A,[M M]); B=double(B); wrec2=ddec(B,w,k,lkey); filtrare4((M+1)./2)=correlation(w,wrec2); end %----------------------------------------------------------------------------------- end figure(1);ind2=1:2:9; plot(ind2,filtrare1,ind2,filtrare2,ind2,filtrare3,ind2,filtrare4); axis([1 9 0 1]); xlabel('Filter Size, M'); ylabel('Correlation Coefficient'); title('Detector Response to Median Filtering'); Programul care afişează graficele cu coeficientul de intercorelaţie, în funcţie de rata de compresie (pentru atac prin compresie): compresie.m img=readimage('Lenna'); % cr=[2 3 4 5 6 7 8 9 10] calit=[98 93 88 83 76 67 58 48 40]; compr1=zeros(10); compr2=zeros(10); compr3=zeros(10); compr4=zeros(10); w=genwat; [imgb1,imgb2, k1,k2,lkey1,lkey2]=watermarker(img,w); I=uint8(imgb1); %imwrite(I, 'out.tif','tif'); %I=imread('out.tif','tif'); II=double(I);

42

Page 45: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

wrec=waterdecoder(img,II,w,k); compr1(1)=correlation(w,wrec); %------a doua imagine balizata--------- I=uint8(imgb2); II=double(I); wrec2=waterdecoder(img,II,w,k); compr2(1)=correlation(w,wrec2); for i=1:9, calitate=calit(i); I=uint8(imgb1); imwrite(I,'out.jpg','jpg','Quality',calitate); J=imread('out.jpg','jpg'); J=double(J); wrec=waterdecoder(img,J,w,k); I=uint8(imgb2); imwrite(I,'out.jpg','jpg','Quality',calitate); J=imread('out.jpg','jpg'); J=double(J); wrec2=waterdecoder(img,J,w,k); compr1(i+1)=correlation(w,wrec); compr2(i+1)=correlation(w,wrec2); end %-------------------END metoda propusa--------------------- %----------------------Deepa Kundur------------------------- [imgw1,imgw2,k,lkey]=denc(img,w); I=uint8(imgw1);%imread('deepa.tif','tif'); J=double(I); wrec=ddec(J,w,k,lkey); compr3(1)=correlation(w,wrec); I=uint8(imgw2);%imread('deepa.tif','tif'); J=double(I); wrec2=ddec(J,w,k,lkey); compr4(1)=correlation(w,wrec2); for i=1:9, calitate=calit(i); I=uint8(imgw1); imwrite(I,'out.jpg','jpg','Quality',calitate); J=imread('out.jpg','jpg'); J=double(J); wrec=ddec(J,w,k,lkey);

43

Page 46: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

I=uint8(imgw2); imwrite(I,'out.jpg','jpg','Quality',calitate); J=imread('out.jpg','jpg'); J=double(J); Wrec2=ddec(J,w,k,lkey); compr3(i+1)=correlation(w,wrec); compr4(i+1)=correlation(w,wrec2); end end figure(2);ind=1:1:10; axis([1 10 0 1]); plot(ind,compr1,ind,compr2,ind,compr3,ind,compr4); Programul care afişează graficul cu coeficientul de intercorelaţie funcţie de raportul semnal/zgomot (SNR): noise.m %function zg=noise(img,w) img=readimage('Lenna'); %snr(db)=[50 40 30 20 10 0] var=[0.0001 0.001 0.01 0.1 1 10]; zg1=zeros(1,6); zg3=zeros(1,6); zg2=zeros(1,6); zg4=zeros(1,6); s1=zeros(1,6); s3=zeros(1,6); s2=zeros(1,6); s4=zeros(1,6); w=genwat; [imgb1,imgb2,k]=watermarker(img,w); I1=uint8(imgb1); I2=uint8(imgb2); for ind=1:6, v=var(ind); J1=imnoise(I1,'gaussian',0,v); JJ1=double(uint8(J1)); s1(ind)=snr(imgb1,JJ1); J2=imnoise(I2,'gaussian',0,v); JJ2=double(uint8(J2)); s2(ind)=snr(imgb2,JJ2); wrec=waterdecoder(img,JJ1,w,k); wrec2=waterdecoder(img,JJ2,w,k);

44

Page 47: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

zg1(7-ind)=correlation(w,wrec); zg2(7-ind)=correlation(w,wrec2); end [imgw1,imgw2,k,lkey]=denc(img,w); I1=uint8(imgw1); I2=uint8(imgw2); for ind=1:6, v=var(ind); J1=imnoise(I1,'gaussian',0,v); JJ1=double(uint8(J1)); s3(ind)=snr(imgw1,JJ1); wrec=ddec(JJ1,w ,lkey) ;

J2=imnoise(I2,'gaussian',0,v); JJ2=double(uint8(J2)); s4(ind)=snr(imgw2,JJ2); wrec2=ddec(JJ2,w ,lkey) ; zg3(7-ind)=correlation(w,wrec); zg4(7-ind)=correlation(w,wrec2); end end figure(3);ind2=0:10:50; plot(ind2,zg1,ind2,zg2,ind2,zg3,ind2,zg4); axis([0 50 0 1]); xlabel('SNR (dB)'); ylabel('Correlation Coefficient'); title('Detector Response to Additive Gaussian Noise');

II. Metoda de balizare propusă, prima variantă. Funcţia care înglobează baliza w în imaginea “img”. Returnează două imagini balizate, corespunzătoare celor două abordări. Pentru apelare, se generează mai întâi baliza, folosind funcţia “genwat.m” şi se citeşte imaginea cu instrucţiunea readimage: w=genwat; img=readimage('Lenna'); function [imgb1,imgb2,k1,k2]=watermarker(img,w) %img=readimage('Lenna'); %stabilirea formatului imaginii la 256 de linii si 256 de coloane;

45

Page 48: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

img=img(1:256,1:256); Q=MakeOnFilter('Daubechies',8); wimg=FWT2_PO(img,5,Q); %3 nivele de rezolutie %detectia detaliilor %------------------primul nivel-------------- [a1,b1,c1,d1]=descomp(wimg); %------------------------------------- maxim1=max(max(d1)); maxim2=max(max(b1)); maxim3=max(max(c1)); %----------------------------cheie pentru d1----------------- prag1=0.06*maxim1; [kd1, lkeyd1]=genkey(d1, prag1); %----------------------------cheie pentru b1------------------------ prag2=0.06*maxim2; [kb1, lkeyb1]=genkey(b1, prag2); %---------------------------cheie pentru c1------------------------- prag3=0.06*maxim3; [kc1, lkeyc1]=genkey(c1, prag3); %-------------------------end chei primul nivel--------------------- %------------------inserare nivel 1-------------------- dd1=inserare(d1,kd1,lkeyd1,w); bb1=inserare(b1,kb1,lkeyb1,w); cc1=inserare(c1,kc1,lkeyc1,w); %----------------end inserare--------------------- %----------------formare chei-------------------- k1=[zeros(128,128), zeros(128,128); zeros(128,128), kd1]; k2=[zeros(128,128), kb1; kc1, kd1]; %----------------refacere imagini----------------------------------------------------------- %--------baliza se inserează în subimaginea de detalii pe diagonală------------------ %--------prima abordare--------------------------------------------------------------------- nimg1=[a1,b1; c1, dd1]; icw_img1=iwt2_po(nimg1,5,Q); imgb1=double(uint8(icw_img1)); %--------baliza se inserează în toate subimaginile de detalii pentru primul nivel---- %--------a doua abordare--------------------------------------------------------------------- nimg2=[a1, bb1; cc1, dd1]; icw_img2=iwt2_po(nimg2,5,Q); imgb2=double(uint8(icw_img2)); fprintf('PSNR1=%f; PSNR2=%f\n',peaksnr(img,imgb1), peaksnr(img,imgb2));

46

Page 49: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

Funcţia de generare a balizei cu lungimea de 256 de biţi. function wat=genwat %Conversia in cod ASCII fprintf('\nIntroduceti un mesaj, max 32 caractere\n'); x=input(' '); lung=length(x); if lung<32 for i=(lung+1):32, x=[x,'_']; end end y=double(x); %conversia numar cod binar; bin=de2bi(y,8); m=1; for i=1:32, for j=1:8, if bin(i,j)==0 w(m)=-1; m=m+1; else w(m)=1; m=m+1; end end end Funcţia de descompunere a imaginii de aproximare în trei imagini de detalii şi o imagine de aproximare pentru următorul nivel de rezoluţie: descomp.m function [a,b,c,d]=descomp(img) %----descompune imaginea intr-o imagine de aproximare si---- %----3 imagini de detalii---------------------------------------------- [dim, dim]=size(img); a=img(1:dim./2,1:dim./2); b=img(1:dim./2,dim./2+1:dim); c=img(dim./2+1:dim,1:dim./2); d=img(dim./2+1:dim,dim./2+1:dim);

47

Page 50: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

Funcţia de generare a cheii pentru fiecare subimagine de detalii: genkey.m function [k, lkey]=genkey(det, prag) %-----generare cheie pentru fiecare imagine de detaliu det------ [dim, dim]=size(det); lkey=0; for i=1:dim, for j=1:dim, if det(i,j)>prag k(i,j)=1;% aici se va insera baliza lkey=lkey+1; else k(i,j)=0; end end end lknew=lkey; if mod(lkey,256)>0 lknew=fix(lkey./256).*256; end fm=lknew./256; if mod(fm,2)==0 & lknew>256 lknew=lknew-256; end lkey=0; for i=1:dim, for j=1:dim, if k(i,j)==1 lkey=lkey+1; end if lkey>lknew k(i,j)=0; end end end lkey=lknew;

48

Page 51: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

Funcţia de înglobare a balizei într-o subimagine de detalii: inserare.m. function ddet=inserare(det,k,lkey,w) %-----inserare baliza in imaginea de detalii det------- [dim,dim]=size(det); ddet=det; %initializare i=1; %indicele balizei fm=lkey./256; kind=1; for m=1:dim, for n=1:dim, if k(m,n)==1 %inserez baliza ddet(m,n)=det(m,n)+w(i).*10; kind=kind+1; if kind>fm kind=1; i=i+1; end if i>256 i=1; end end end end Funcţia de calcul a raportului semnal maxim pe zgomot PSNR: peaksnr.m. function peak_snr=psnr(imgdata,wm_imgdata) % PSNR of original image and modified image % imgdata: data of original image % wm_imgdata: data of watermarked image % peak_snr: result of PSNR imgdata=double(imgdata); wm_imgdata=double(wm_imgdata); [m,n]=size(imgdata); di=(imgdata-wm_imgdata).^2; d=sum(sum(di))/(m*n); peak_snr=10*log10((255^2)/d);

49

Page 52: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

Funcţia care extrage baliza din imaginea balizată, posibil distorsionată: waterdecoder.m. function wrec=waterdecoder(img,imgb,w,k) Q=MakeOnFilter('Daubechies',8); wimg=fwt2_po(img,5,Q); %imagine originala %------------------primul nivel-------------- [a1,b1,c1,d1]=descomp(wimg); %------------------------------------- wrimg=fwt2_po(imgb,5,Q); %imagine test %------------------primul nivel-------------- [ar1,br1,cr1,dr1]=descomp(wrimg); %-------------obtinerea cheilor------------- [k1,kb1,kc1,kd1]=descomp(k); %---lungimea pentru fiecare cheie------ lkeyd1=lengthkey(kd1); lkeyb1=lengthkey(kb1); lkeyc1=lengthkey(kc1); wrec=zeros(1,256); %initializare mesaj refacut poz=zeros(32,8); %numar de biti de 1 recuperati neg=zeros(32,8); %numar de biti de -1 %--------primul nivel----------------------------- [p,n]=extrage(d1,dr1,w,kd1,lkeyd1); poz=poz+p; neg=neg+n; if lkeyb1>0

%---------extragere din br1------------------------ [p,n]=extrage(b1,br1,w,kb1,lkeyb1); poz=poz+p; neg=neg+n;

end if lkeyc1>0

%---------extragere din cr1------------------------ [p,n]=extrage(c1,cr1,w,kc1,lkeyc1); poz=poz+p; neg=neg+n;

end

50

Page 53: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

%----------decizie------------------------------- wrec=decizie(poz,neg); %conversia din forma binara in forma zecimala; %mesrefzec=bi2de(mesr); %conversia din forma zecimala in forma literara; %u=char(mesrefzec); %fprintf('\nMesaj primit: %s\n',u); fprintf('cor(w,wrec)=%f\n',correlation(w,wrec)); Funcţia de aflare a lungimii cheii pentru fiecare subimagine de detalii: lengthkey.m. function lkey=lengthkey(k) [dim,dim]=size(k); lkey=0; for m=1:dim, for n=1:dim, if k(m,n)==1 lkey=lkey+1; end end end Funcţia de extragere a balizei din fiecare subimagine de detalii: extrage.m. function [poz,neg]=extrage(det,detr,w,k,lkey) [dim,dim]=size(det); poz=zeros(32,8); neg=zeros(32,8); i=1; j=1; kind=1; fm=lkey./256; %de cate ori a fost inserata baliza in img de detalii for m=1:dim, for n=1:dim, if k(m,n)==1 cant=(detr(m,n)-det(m,n))./10; if cant>0 poz(i,j)=poz(i,j)+1; else if cant<0 neg(i,j)=neg(i,j)+1; else a=randn; %decizie aleatoare

51

Page 54: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

if a>0

poz(i,j)=poz(i,j)+1; else neg(i,j)=neg(i,j)+1; end end end kind=kind+1; if kind>fm kind=1; j=j+1; end if j>8 i=i+1; j=1; end if i>32 i=1; end end end end clear m; clear n; Funcţia de estimare a balizei: decizie.m. function wrec=decizie(poz,neg) i=1; for m=1:32, for n=1:8, if poz(m,n)>neg(m,n) mesrb(m,n)=1; else if poz(m,n)<neg(m,n) mesrb(m,n)=-1; else a=randn; if a>0 mesrb(m,n)=1; else mesrb(m,n)=-1; end

52

Page 55: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

end end if mesrb(m,n)>0 mesr(m,n)=1; wrec(i)=1; i=i+1; else mesr(m,n)=0; wrec(i)=-1; i=i+1; end end end Funcţia de calculare a corelaţiei dintre baliza originală şi cea extrasă. Aceasta poate fi înlocuită şi cu funcţia disponibilă din Matlab “corr2”. Valorile negative sunt setate la zero, pentru simplitate: correlation.m. function icoef=correlation(watere,waterr) % icoef=corelatie(baliza_emisa,baliza_receptionata) icor=sum(sum(watere.*waterr)); if icor<0 icor=0; end Pi=sum(sum(watere.*watere)); Po=sum(sum(waterr.*waterr)); icoef=(((icor)./sqrt(Pi))./sqrt(Po));

III. Metoda de balizare propusă în [7]. Funcţia care înglobează baliza w în imaginea “img”: denc.m. Pentru apelare, se generează mai întâi baliza, folosind funcţia “genwat.m” şi se citeşte imaginea cu instrucţiunea readimage: w=genwat; img=readimage('Lenna'); function [imgw1,imgw2,k,lkey]=denc(img,w) %img=readimage('Lenna'); %image has 256 lines and 256 columns; img=img(1:256,1:256); Q=MakeOnFilter('Daubechies',8);

53

Page 56: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

wimg=FWT2_PO(img,5,Q); %3 resolution levels %-----------first level-------------- [a1,b1,c1,d1]=descomp(wimg); %------------------------------------- maxim1=max(max(d1)); thres1=0.06*maxim1; [k, lkey]=genkey(d1,thres1); %-------------------first level------------------- [bb1,cc1,dd1]=insertion(b1,c1,d1,k1,lkey1,w); %-------------------------------------------------- %-------first approach--------------------------------------------------------- %-------embedding watermark in the subimage of diagonal details---- nimg1=[a1, b1; c1, dd1]; icw_img1=iwt2_po(nimg1,5,Q); imgw1=double(uint8(icw_img1)); %watermarked image %-------2nd approach--------------------------------------------------------- %-------embedding watermark in the all subimages of the first level-- nimg2=[a1, bb1; cc1, dd1]; icw_img2=iwt2_po(nimg1,5,Q); imgw2=double(uint8(icw_img2)); %watermarked image fprintf('PSNR1=%f , PSNR2=%f\n',peaksnr(img,imgw1), peaksnr(img,imgw2)); Funcţia de înglobare a balizei într-o subimagine de detalii: insertion.m. function [bb,cc,dd]=insertion(b,c,d,k,lkey,w) %-----inserare baliza in imaginea de detalii det------- [dim,dim]=size(b); bb=b; cc=c; dd=d; %initializare i=1; %watermark index fm=lkey./256; %key length =length watermark (256) * number of insertion kind=1; %number of current repetition for m=1:dim, for n=1:dim, if k(m,n)==1 %insertion of watermark bit tab=[b(m,n),c(m,n),d(m,n)]; minim=min(tab); maxim=max(tab);

54

Page 57: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

delta=(maxim-minim)./7; %2Q-1=7 for Q=4 watermark=w(i); if d(m,n)==median(tab) coef=d(m,n); dd(m,n)=change(coef,minim,maxim,delta,watermark); else if b(m,n)==median(tab) coef=b(m,n); bb(m,n)=change(coef,minim,maxim,delta,watermark); else if c(m,n)==median(tab) coef=c(m,n); cc(m,n)=change(coef,minim,maxim,delta,watermark); end end end kind=kind+1; if kind>fm kind=1; i=i+1; end if i>256 i=1; end end end end Funcţia care înglobează bitul balizei într-un coeficient wavelet prin cuantizare: change.m. function coef1=change(coef,minim,maxim,delta,watermark) p=0; while (minim+p.*delta) <= coef & p<8 p=p+1; end p=p-1; l=0; while (maxim-l.*delta)>= coef & l<8 l=l+1; end l=l-1; if watermark==1

55

Page 58: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

if mod(p,2)==0 if coef-(minim+(p-1).*delta)<(minim+(p+1).*delta)-coef & p>0 p=p-1; else if coef-(minim+(p-1).*delta)>(minim+(p+1).*delta)-coef & p<7 p=p+1; else if p~=0 & p~=7 a=randn; if a>0 p=p+1; else p=p-1; end else if p==0 p=p+1; else if p==7 p=7; end end end end end end l=7-p; else %the watermark bit= -1 if mod(l,2)==0 if maxim-(l-1).*delta-coef < coef-(maxim-(l+1).*delta) & l>0 l=l-1; else if maxim-(l-1).*delta-coef > coef-(maxim-(l+1).*delta) & l<7 l=l+1; else if l~=0 & l~=7 a=randn; %random quantization if a>0 l=l+1; else l=l-1; end else

56

Page 59: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

if l==0 %equivalent to embedding 1!! but we embed -1!! l=l+1; else if l==7 %embed -1 l=l-1; end end end end end end p=7-l; end if watermark<0 coef1=maxim-l.*delta; else coef1=minim+p.*delta; end if delta==0 coef1=coef; end Funcţia care extrage baliza dintr-o imagine balizată, posibil distorsionată: ddec.m. function [wrec,wrec2]=ddec(imgw,w, lkey) Q=MakeOnFilter('Daubechies',8); wrimg=fwt2_po(imgw,5,Q); % test image %---detail images, first level-------- [ar1,br1,cr1,dr1]=descomp(wrimg); %------------------------------------- wrec=zeros(1,256); % recovered watermark from all levels poz=zeros(32,8); %number of recovered bits of 1 neg=zeros(32,8); %number of recovered bits of -1 wrec2=zeros(1,256);%recovered watermark from level 3 poz2=zeros(32,8); neg2=zeros(32,8); i=1; %watermark index (1:256) %----------------first level------------------- [p,n]=extraction(br1,cr1,dr1,w,k1,lkey1); poz=poz+p;

57

Page 60: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

neg=neg+n; %------------------decision------------------------ wrec=decizie(poz,neg); fprintf('cor(w,wrec)=%f\n',correlation(w,wrec)); fprintf('cor(w,wrec2)=%f\n',correlation(w,wrec2)); Funcţia de extragere a balizei dintr-o imagine de detalii: extraction.m. function [poz,neg]=extraction(br,cr,dr,w,k,lkey) [dim,dim]=size(br); poz=zeros(32,8); neg=zeros(32,8); i=1; j=1; fm=lkey./256; kind=1; for m=1:dim, for n=1:dim, if k(m,n)==1 tab=[br(m,n),cr(m,n),dr(m,n)]; minim=min(tab); maxim=max(tab); delta=(maxim-minim)./7; watermark=0; if dr(m,n)==median(tab) coef=dr(m,n); else if br(m,n)==median(tab) coef=br(m,n); else if cr(m,n)==median(tab) coef=cr(m,n); end end end watermark=guess(coef,minim,maxim,delta); if watermark>0 poz(i,j)=poz(i,j)+1; %recovered bit is 1 else neg(i,j)=neg(i,j)+1; %recovered bit is -1 end

58

Page 61: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

kind=kind+1; if kind>fm kind=1; j=j+1; end if j>8 i=i+1; j=1; end if i>32 i=1; end end end end clear m; clear n; Funcţia care extrage bitul balizei dintr-un coeficient wavelet: guess.m. function watermark=guess(coef,minim,maxim,delta) p=0; dif=(minim+p.*delta); while dif <= coef & p<8 & dif<=maxim %fprintf('p= %d, dif=%f, coef= %f\n',p,dif,coef); p=p+1; %fprintf('p=%d, %f<=%f\n',p-1,dif, coef); dif=(minim+p.*delta); end p=p-1; %the closest quantized value, less or equal than the given coefficient l=0; dif2=(maxim-l.*delta); while dif2 >= coef & l<8 & dif2>=minim l=l+1; %fprintf('l=%d,%f>=%f\n',l-1,dif2, coef); dif2=(maxim-l.*delta); end l=l-1; %the closest quantized value, greater or equal than the given coefficient %fprintf('p=%d,l=%d',p,l);

59

Page 62: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

%estimate the embedded watermark bit if (minim+p.*delta)==coef | coef-(minim+p.*delta)<(maxim-l.*delta)-coef %fprintf('\np=%d works ',p); if mod(p,2)==1 watermark=1; else if mod(p,2)==0 watermark=-1; end end else if (maxim-l.*delta)==coef | coef-(minim+p.*delta)>(maxim-l.*delta)-coef %fprintf('\nl=%d works ',l); if mod(l,2)==0 watermark=1; else if mod(l,2)==1 watermark=-1; end end else a=randn; if a>0 watermark=1; else watermark=-1; end end end if delta==0 %random guess here!! a=randn; if a>0 watermark=1; else watermark=-1; end end

60

Page 63: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

ANEXA 2

I. Programe cu care se atacă imaginea balizată, folosind metoda propusă, varianta a doua, respectiv, folosind metoda propusă de Kundur şi Hatzinakos în [7]. Programul care afişează graficele cu coeficientul de intercorelaţie în funcţie de ordinul filtrului median: atacurimedfilt.m filtrare1=zeros(1,5); filtrare2=zeros(1,5); filtrare3=zeros(1,5); filtrare4=zeros(1,5); img=readimage('Lenna'); %--------------metoda propusa, a doua varianta-------------------------------------- for no_wat=1:50, w=genwat; [imgb,k]=watermarker3(img,w); [wrec wrec2]=waterdecoder3(img,imgb,w,k); filtrare1(1)=filtrare1(1)+correlation(w,wrec); filtrare2(1)=filtrare2(1)+correlation(w,wrec2); A=uint8(imgb); for M=3:2:9, B=medfilt2(A,[M M]); B=double(B); [wrec wrec2]=waterdecoder3(img,B,w,k); filtrare1((M+1)./2)=filtrare1((M+1)./2)+correlation(w,wrec); filtrare2((M+1)./2)=filtrare2((M+1)./2)+correlation(w,wrec2); end %-------------Deepa Kundur------------------------------------------------------------- [imgw,k1,k2,k3,lkey1,lkey2,lkey3]=denc(img,w); [wrec, wrec2]=ddec(imgw,w,k1,k2,k3,lkey1,lkey2,lkey3); filtrare3(1)=filtrare3(1)+correlation(w,wrec); filtrare4(1)=filtrare4(1)+correlation(w,wrec2); A=uint8(imgw); for M=3:2:9, B=medfilt2(A,[M M]); B=double(B); [wrec wrec2]=ddec(B,w,k1,k2,k3,lkey1,lkey2,lkey3);

61

Page 64: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

filtrare3((M+1)./2)=filtrare3((M+1)./2)+correlation(w,wrec); filtrare4((M+1)./2)=filtrare4((M+1)./2)+correlation(w,wrec2); end %----------------------------------------------------------------------------------- end filtrare1=filtrare1./50; filtrare2=filtrare2./50; filtrare3=filtrare3./50; filtrare4=filtrare4./50; figure(1);ind2=1:2:9; plot(ind2,filtrare1,ind2,filtrare2,ind2,filtrare3,ind2,filtrare4); axis([1 9 0 1]); xlabel('Filter Size, M'); ylabel('Correlation Coefficient'); title('Detector Response to Median Filtering'); Programul care afişează graficele cu coeficientul de intercorelaţie, în funcţie de rata de compresie (pentru atac prin compresie): compresie.m img=readimage('Lenna'); % cr=[2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25] (rata de compresie) calit=[98 93 88 83 76 67 58 48 40 34 29 25 22 20 17 16 14 13 12 11 10 9 8 8]; %------------metoda propusa pe 3 nivele------------ compr1=zeros(25); compr2=zeros(25); compr3=zeros(25); compr4=zeros(25); for no_wat=1:50, w=genwat; [imgb, k]=watermarker3(img,w); I=uint8(imgb); %imwrite(I, 'out3niv.tif','tif'); %I=imread('out3niv.tif','tif'); II=double(I); [wrec,wrec2]=waterdecoder3(img,II,w,k); compr1(1)=compr1(1)+correlation(w,wrec); compr2(1)=compr2(1)+correlation(w,wrec2); for i=1:24, calitate=calit(i); imwrite(I,'out.jpg','jpg','Quality',calitate);

62

Page 65: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

J=imread('out.jpg','jpg'); J=double(J); [wrec,wrec2]=waterdecoder3(img,J,w,k); compr1(i+1)=compr1(i+1)+correlation(w,wrec); compr2(i+1)=compr2(i+1)+correlation(w,wrec2); end %-------------------END metoda propusa--------------------- %----------------------Deepa Kundur------------------------- [imgw,k1,k2,k3,lkey1,lkey2,lkey3]=denc(img,w); I=uint8(imgw);%imread('deepa.tif','tif'); J=double(I); [wrec,wrec2]=ddec(J,w,k1,k2,k3,lkey1,lkey2,lkey3); compr3(1)=compr3(1)+correlation(w,wrec); compr4(1)=compr4(1)+correlation(w,wrec2); for i=1:24, calitate=calit(i); imwrite(I,'out.jpg','jpg','Quality',calitate); J=imread('out.jpg','jpg'); J=double(J); [wrec,wrec2]=ddec(J,w,k1,k2,k3,lkey1,lkey2,lkey3); compr3(i+1)=compr3(i+1)+correlation(w,wrec); compr4(i+1)=compr4(i+1)+correlation(w,wrec2); end end compr1=compr1./50; compr2=compr2./50; compr3=compr3./50; compr4=compr4./50; figure(2);ind=1:1:25; axis([1 25 0 1]); plot(ind,compr1,ind,compr2,ind,compr3,ind,compr4); Programul care afişează graficul cu coeficientul de intercorelaţie funcţie de raportul semnal/zgomot (SNR): noise.m img=readimage('Lenna'); %snr(db)=[50 40 30 20 10 0] var=[0.0001 0.001 0.01 0.1 1 10]; zg1=zeros(1,6); zg3=zeros(1,6); zg2=zeros(1,6); zg4=zeros(1,6); s1=zeros(1,6);

63

Page 66: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

s2=zeros(1,6); for no_wat=1:50, w=genwat; [imgb,k]=watermarker3(img,w); I=uint8(imgb); for ind=1:6, v=var(ind); J=imnoise(I,'gaussian',0,v); JJ=double(uint8(J)); s1(ind)=snr(imgb,JJ); [wrec,wrec2]=waterdecoder3(img,JJ,w,k); zg1(7-ind)=zg1(7-ind)+correlation(w,wrec); zg2(7-ind)=zg2(7-ind)+correlation(w,wrec2); end [imgw,k1,k2,k3,lkey1,lkey2,lkey3]=denc(img,w); I=uint8(imgw); for ind=1:6, v=var(ind); J=imnoise(I,'gaussian',0,v); JJ=double(uint8(J)); s2(ind)=snr(imgw,JJ); [wrec,wrec2]=ddec(JJ,w,k1,k2,k3,lkey1, lkey2,lkey3) ; zg3(7-ind)=zg3(7-ind)+correlation(w,wrec); zg4(7-ind)=zg4(7-ind)+correlation(w,wrec2); end end zg1=zg1./50; zg3=zg3./50; zg2=zg2./50; zg4=zg4./50; figure(3);ind2=0:10:50; plot(ind2,zg1,ind2,zg2,ind2,zg3,ind2,zg4); axis([0 50 0 1]); xlabel('SNR (dB)'); ylabel('Correlation Coefficient'); title('Detector Response to Additive Gaussian Noise');

II. Metoda de balizare propusă, varianta a doua. Funcţia care înglobează baliza w în imaginea “img”. Pentru apelare, se generează mai întâi baliza, folosind funcţia “genwat.m” şi se citeşte imaginea cu instrucţiunea readimage: w=genwat;

64

Page 67: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

img=readimage('Lenna'); function [imgb,k]=watermarker3(img,w) %img=readimage('Lenna'); %stabilirea formatului imaginii la 256 de linii si 256 de coloane; img=img(1:256,1:256); Q=MakeOnFilter('Daubechies',8); wimg=FWT2_PO(img,5,Q); %3 nivele de rezolutie %detectia detaliilor %------------------primul nivel-------------- [a1,b1,c1,d1]=descomp(wimg); %--------------nivelul 2--------------- [a2,b2,c2,d2]=descomp(a1); %-------------nivelul 3---------------- [a3,b3,c3,d3]=descomp(a2); %------------------------------------- maxim1=max(max(d1)); maxim2=max(max(b1)); maxim3=max(max(c1)); %----------------------------cheie pentru d1----------------- prag1=0.06*maxim1; [kd1, lkeyd1]=genkey(d1, prag1); %----------------------------cheie pentru b1------------------------ prag2=0.06*maxim2; [kb1, lkeyb1]=genkey(b1, prag2); %---------------------------cheie pentru c1------------------------- prag3=0.06*maxim3; [kc1, lkeyc1]=genkey(c1, prag3); %-------------------------end chei primul nivel--------------------- maxim1=max(max(d2)); maxim2=max(max(b2)); maxim3=max(max(c2)); %----------------cheie pentru d2----------------- prag1=0.04*maxim1; [kd2, lkeyd2]=genkey(d2, prag1); %----------------------------cheie pentru b2------------------------ prag2=0.04*maxim2; [kb2, lkeyb2]=genkey(b2, prag2);

65

Page 68: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

%---------------------------cheie pentru c2----------------------------- prag3=0.04*maxim3; [kc2, lkeyc2]=genkey(c2, prag3); %-------------------------end chei al doilea nivel--------------------- maxim1=max(max(d3)); maxim2=max(max(b3)); maxim3=max(max(c3)); %----------------cheie pentru d3------------------------------------ prag1=0.02*maxim1; [kd3, lkeyd3]=genkey(d3, prag1); %----------------------------cheie pentru b3------------------------ prag2=0.02*maxim2; [kb3, lkeyb3]=genkey(b3, prag2); %---------------------------cheie pentru c3----------------------------- prag3=0.02*maxim3; [kc3, lkeyc3]=genkey(c3, prag3); %-------------------------end chei al treilea nivel--------------------- %------------------inserare nivel 1-------------------- dd1=inserare(d1,kd1,lkeyd1,w); bb1=inserare(b1,kb1,lkeyb1,w); cc1=inserare(c1,kc1,lkeyc1,w); %-------------inserare nivel 2------------------- dd2=inserare(d2,kd2,lkeyd2,w); bb2=inserare(b2,kb2,lkeyb2,w); cc2=inserare(c2,kc2,lkeyc2,w); %-----------------inserare nivel 3------------------ dd3=inserare(d3,kd3,lkeyd3,w); bb3=inserare(b3,kb3,lkeyb3,w); cc3=inserare(c3,kc3,lkeyc3,w); %----------------end inserare--------------------- %----------------formare cheie-------------------- k2=[zeros(32,32), kb3; kc3, kd3]; k1=[k2, kb2; kc2, kd2]; k=[k1, kb1; kc1, kd1]; %----------------refacere imagine------------------ a2=[a3, bb3; cc3, dd3]; a1=[a2, bb2; cc2, dd2];

66

Page 69: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

nimg=[a1, bb1; cc1, dd1]; icw_img=iwt2_po(nimg,5,Q); imgb=double(uint8(icw_img)); fprintf('PSNR=%f\n',peaksnr(img,imgb)); Funcţia de generare a balizei cu lungimea de 256 de biţi. function wat=genwat wat=randn(1,256); for i=1:256, if wat(i)>0 wat(i)=1; else wat(i)=-1; end end Funcţia de înglobare a balizei într-o subimagine de detalii: inserare.m. function ddet=inserare(det,k,lkey,w) %-----inserare baliza in imaginea de detalii det------- [dim,dim]=size(det); ddet=det; %initializare i=1; %indicele balizei fm=lkey./256; kind=1; for m=1:dim, for n=1:dim, if k(m,n)==1 %inserez baliza ddet(m,n)=det(m,n)+det(m,n).*w(i).*0.1; kind=kind+1; if kind>fm kind=1; i=i+1; end if i>256 i=1;

67

Page 70: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

end end end end Funcţia care extrage baliza din imaginea balizată, posibil distorsionată: waterdecoder3.m. function [wrec,wrec2]=waterdecoder3(img,imgb,w,k) Q=MakeOnFilter('Daubechies',8); wimg=fwt2_po(img,5,Q); %imagine originala %------------------primul nivel-------------- [a1,b1,c1,d1]=descomp(wimg); %--------------nivelul 2--------------- [a2,b2,c2,d2]=descomp(a1); %-------------nivelul 3---------------- [a3,b3,c3,d3]=descomp(a2); %------------------------------------- wrimg=fwt2_po(imgb,5,Q); %imagine test %------------------primul nivel-------------- [ar1,br1,cr1,dr1]=descomp(wrimg); %--------------nivelul 2--------------- [ar2,br2,cr2,dr2]=descomp(ar1); %-------------nivelul 3---------------- [ar3,br3,cr3,dr3]=descomp(ar2); %-------------obtinerea cheilor------------- [k1,kb1,kc1,kd1]=descomp(k); [k2,kb2,kc2,kd2]=descomp(k1); [k3,kb3,kc3,kd3]=descomp(k2); %---lungimea pentru fiecare cheie------ lkeyd1=lengthkey(kd1); lkeyb1=lengthkey(kb1); lkeyc1=lengthkey(kc1); lkeyd2=lengthkey(kd2); lkeyb2=lengthkey(kb2); lkeyc2=lengthkey(kc2);

68

Page 71: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

lkeyd3=lengthkey(kd3); lkeyb3=lengthkey(kb3); lkeyc3=lengthkey(kc3); wrec=zeros(1,256); %initializare mesaj refacut din toate nivelele poz=zeros(32,8); %numar de biti de 1 recuperati neg=zeros(32,8); %numar de biti de -1 wrec2=zeros(1,256);%mesaj refacut din nivelul 3 poz2=zeros(32,8); %numar de biti neg2=zeros(32,8); %--------primul nivel----------------------------- [p,n]=extrage(d1,dr1,w,kd1,lkeyd1); poz=poz+p; neg=neg+n; %---------extragere din br1------------------------ [p,n]=extrage(b1,br1,w,kb1,lkeyb1); poz=poz+p; neg=neg+n; %---------extragere din cr1------------------------ [p,n]=extrage(c1,cr1,w,kc1,lkeyc1); poz=poz+p; neg=neg+n; %--------nivelul 2----------------------------- %---------extragere din dr2---------------------- [p,n]=extrage(d2,dr2,w,kd2,lkeyd2); poz=poz+p; neg=neg+n; %---------extragere din br2----------------------- [p,n]=extrage(b2,br2,w,kb2,lkeyb2); poz=poz+p; neg=neg+n; %---------extragere din cr2------------------------ [p,n]=extrage(c2,cr2,w,kc2,lkeyc2); poz=poz+p; neg=neg+n; %--------nivelul trei----------------------------- %----------extragere din dr3---------------------- [p,n]=extrage(d3,dr3,w,kd3,lkeyd3); poz=poz+p; poz2=poz2+p; neg=neg+n; neg2=neg2+n; %----------extragere din br3----------------------- [p,n]=extrage(b3,br3,w,kb3,lkeyb3); poz=poz+p; poz2=poz2+p;

69

Page 72: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

neg=neg+n; neg2=neg2+n; %----------extragere din cr3----------------------- [p,n]=extrage(c3,cr3,w,kc3,lkeyc3); poz=poz+p; poz2=poz2+p; neg=neg+n; neg2=neg2+n; %----------decizie------------------------------- wrec=decizie(poz,neg); wrec2=decizie(poz2,neg2); fprintf('cor(w,wrec)=%f\n',correlation(w,wrec)); fprintf('cor(w,wrec2)=%f\n',correlation(w,wrec2)); Funcţia de extragere a balizei din fiecare subimagine de detalii: extrage.m. function [poz,neg]=extrage(det,detr,w,k,lkey) [dim,dim]=size(det); poz=zeros(32,8); neg=zeros(32,8); i=1; j=1; kind=1; fm=lkey./256; %de cate ori a fost inserata baliza in img de detalii for m=1:dim, for n=1:dim, if k(m,n)==1 cant=(detr(m,n)-det(m,n)).*10; if cant==0 | det(m,n)==0 a=randn; %decizie aleatoare if a>0 poz(i,j)=poz(i,j)+1; else neg(i,j)=neg(i,j)+1; end else if cant./det(m,n)>0 poz(i,j)=poz(i,j)+1; %bitul recuperat din d este 1 else if cant./det(m,n)<0 neg(i,j)=neg(i,j)+1; %bitul recuperat din d este -1 end end end kind=kind+1;

70

Page 73: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

if kind>fm kind=1; j=j+1; end if j>8 i=i+1; j=1; end if i>32 i=1; end end end end clear m; clear n;

III. Metoda de balizare propusă în [7]. Funcţia care înglobează baliza w în imaginea “img”: denc.m. Pentru apelare, se generează mai întâi baliza, folosind funcţia “genwat.m” şi se citeşte imaginea cu instrucţiunea readimage: w=genwat; img=readimage('Lenna'); function [imgw,k1,k2,k3,lkey1,lkey2,lkey3]=denc(img,w) %img=readimage('Lenna'); %image has 256 lines and 256 columns; img=img(1:256,1:256); Q=MakeOnFilter('Daubechies',8); wimg=FWT2_PO(img,5,Q); %3 resolution levels %-----------first level-------------- [a1,b1,c1,d1]=descomp(wimg); %--------------2nd level--------------- [a2,b2,c2,d2]=descomp(a1); %-------------3rd level---------------- [a3,b3,c3,d3]=descomp(a2); %-------------------------------------

71

Page 74: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

maxim1=max(max(d1)); thres1=0.06*maxim1; [k1, lkey1]=genkey(d1,thres1); %-------------2nd level--------------- maxim2=max(max(d2)); thres2=0.04*maxim2; [k2, lkey2]=genkey(d2, thres2); %-------------3rd level--------------- maxim3=max(max(d3)); thres3=0.02*maxim3; [k3, lkey3]=genkey(d3, thres3); %-------------------first level------------------- [bb1,cc1,dd1]=insertion(b1,c1,d1,k1,lkey1,w); %-----------------2nd level------------------------ [bb2,cc2,dd2]=insertion(b2,c2,d2,k2,lkey2,w); %------------------3rd level------------------------- [bb3,cc3,dd3]=insertion(b3,c3,d3,k3,lkey3,w); %-------------------------------------------------- a2=[a3, bb3; cc3, dd3]; a1=[a2, bb2; cc2, dd2]; nimg=[a1, bb1; cc1, dd1]; icw_img=iwt2_po(nimg,5,Q); imgw=double(uint8(icw_img)); %watermarked image fprintf('PSNR=%f \n',peaksnr(img,imgw)); Funcţia care extrage baliza dintr-o imagine balizată, posibil distorsionată: ddec.m. function [wrec,wrec2]=ddec(imgw,w,k1,k2,k3,lkey1, lkey2,lkey3) Q=MakeOnFilter('Daubechies',8); wrimg=fwt2_po(imgw,5,Q); % test image %---detail images, first level--------

72

Page 75: Balizarea imaginilor statice folosind transformarea wavelet discretă

Facultatea de Electronică şi Telecomunicaţii

[ar1,br1,cr1,dr1]=descomp(wrimg); %-------------2nd level--------------- [ar2,br2,cr2,dr2]=descomp(ar1); %-------------3rd level---------------- [ar3,br3,cr3,dr3]=descomp(ar2); %------------------------------------- wrec=zeros(1,256); % recovered watermark from all levels poz=zeros(32,8); %number of recovered bits of 1 neg=zeros(32,8); %number of recovered bits of -1 wrec2=zeros(1,256);%recovered watermark from level 3 poz2=zeros(32,8); neg2=zeros(32,8); i=1; %watermark index (1:256) %----------------first level------------------- [p,n]=extraction(br1,cr1,dr1,w,k1,lkey1); poz=poz+p; neg=neg+n; %-----------------------2nd level---------------- [p,n]=extraction(br2,cr2,dr2,w,k2,lkey2); poz=poz+p; neg=neg+n; %--------------------3rd level--------------------- [p,n]=extraction(br3,cr3,dr3,w,k3,lkey3); poz=poz+p; poz2=poz2+p; neg=neg+n; neg2=neg2+n; %------------------decision------------------------ wrec=decizie(poz,neg); wrec2=decizie(poz2,neg2); fprintf('cor(w,wrec)=%f\n',correlation(w,wrec)); fprintf('cor(w,wrec2)=%f\n',correlation(w,wrec2)); Funcţiile „descomp”, „genkey”, „psnr”, „lengthkey”, „decizie”, „correlation”, „insertion”, „change”, „extraction”, „guess” sunt aceleaşi ca cele definite în Anexa 1.

73

Page 76: Balizarea imaginilor statice folosind transformarea wavelet discretă

1,2“Politehnica” University of Timisoara, Communications Dept. For correspondence, please mail to [email protected]

Buletinul Ştiinţific al Universităţii "Politehnica" din Timişoara

Seria ELECTRONICĂ şi TELECOMUNICAŢII TRANSACTIONS on ELECTRONICS and COMMUNICATIONS

Tom 48(62), Fascicola 1, 2003

Digital Watermarking of Still Images using the Discrete Wavelet Transform

Corina Nafornita1, Alexandru Isar2 Abstract – We present a technique for the digital watermarking using a discrete wavelet transform. The proposed scheme is robust to a variety of signal distortions. When embedding the watermark, we make use of the image properties. To achieve imperceptibility, the lowest band of the image is left unmodified. To select the perceptually significant coefficients for each subband, we generate a watermarking key using an adaptive threshold. We compare our approach with another transform domain method. Simulation results show the robustness and validity of the watermarking process proposed herein. Keywords: copyright protection, digital watermarking, discrete wavelet transform.

I. INTRODUCTION Transmission, manipulation and storage of multimedia data are becoming an everyday practice. The rapid evolution of digital technology has led to the need of copyright protection tools [1]. One approach in this matter is cryptography. However, cryptography can protect content in transit, but once decrypted, the content has no further protection [2]. The alternative or complement to this approach is digital watermarking. Digital watermarking is the process of embedding information, called a watermark, in media signals, without making perceptible changes [3]. The watermark should be imperceptible, undeletable, statistically undetectable, robust to lossy compression and various signal distortions, and unambiguous [4]. Common types of signals to watermark are images, audio and video. In this paper, we concentrate on the application of digital watermarking of still images. Current techniques described in literature for the watermarking of images are spatial domain methods [8] and frequency domain methods [4, 5, 7, 9]. The spatial domain-watermarking scheme is generally fast and simple, but it doesn’t guarantee robustness against common signal distortions, like JPEG compression or noise. In this paper, we propose a frequency domain method, based on a multiresolution wavelet decomposition, which shows greater robustness against such common attacks.

This paper is organized as follows. In Section II, we introduce the proposed method for the digital watermarking. In Section III, we present the simulations results, and in Section IV, we provide some concluding remarks.

II. THE PROPOSED WATERMARKING TECHNIQUE

In this section, we explain the chosen method for embedding the watermark. Enhancing the perceptual invisibility hinges on considering the characteristics of the original image, e.g. modifications of high frequencies or of the high luminance regions are less perceptible. Similar to the human eye, the discrete wavelet transform decomposes an image in subbands having a bandwidth approximately equal on a logarithmic scale. Therefore, it is probable that small changes in some of the coefficients localized in the subbands that represent the detail images will make the mark imperceptible to human eyes. To achieve imperceptibility, the lowest band of the image is left unmodified. To select the perceptually significant coefficients for each subband, we generate a watermarking key using an adaptive threshold. We present two versions of the same watermarking method. A. Architecture We assume that the binary watermark is of length wN ,

and consists of elements from the set { }1,1− . Let OI be the original image. We embed the watermark into the detail wavelet coefficients using a watermarking key, only in the first level of the decomposed image. The following steps are to be performed:

1. Compute the first level wavelet decomposition of the original image. We obtain one approximation image and three detail images, corresponding to the horizontal, vertical and diagonal details of the image. We denote the

Page 77: Balizarea imaginilor statice folosind transformarea wavelet discretă

xth detail image of the original by ( )nmd x , ,

where { }dvhx ,,∈ (h, v, d stands for “horizontal”, “vertical” and “diagonal”, respectively). The approximation image is

),( nma . 2. For each detail image, we consider the

coefficient location ( )nm, and we compute a

watermarking key ( )nmkx , , where

{ }dvhx ,,∈ :

( ) ( ) >

= otherwise ,0

, if ,1, xx

x

qMnmdnmk ,

(1)

where q is a user-defined variable and xM is the maximum of the coefficients from the detail image ( )nmd x , .

For the given detail image ( )nmd x , , if the associated value of the key is zero, we do not embed a mark. To embed a watermark bit ( )nmw , , we increase or decrease the detail image coefficient with a given quantity:

( ) ( ) ( )nmwnmdnmd xx ,,, α+=′ , (2)

where { }dvhx ,,∈ and α is a user-defined positive variable.

3. The watermarked image WI is computed from the approximation image ),( nma and from

the detail images ),( nmd x′ , where

{ }dvhx ,,∈ . The method is presented in Fig.1. The parameters q and α are user-defined. It is easy to notice that a larger value for α and and a smaller value for q will increase the robustness of the method, but will make the marking process more visible. B. Watermark Detection and Extraction In order to extract the watermark, we use an informed detector, since the original image is known. The received image is a possibly distorted version of the watermarked image. The objective of the extraction process is to obtain a reliable estimate of the original watermark. For the detection process, we make use of the original image, and of the watermark ( )nmw , . In order to detect if the received image RI is watermarked, we perform the following operations:

1. Compute the first level discrete wavelet decomposition of the received image RI and of the original image OI. We obtain two decomposed images ),( nmr and ),( nmo . We denote the xth detail image of the received image by ( )nmrd x , , where { }dvhx ,,∈ (h, v, d stands for “horizontal”, “vertical” and “diagonal”, respectively). The approximation image is ),( nmra .

2. Compute the watermarking key ( )nmkx , ,

where { }dvhx ,,∈ , as described in the watermarking process of the original image. We make use of the key to locate the coefficients where the mark was embedded. We extract the watermark as follows:

( )( ) ( )[ ]( ) ( )[ ]

−<−−>−

= otherwise ),1,1(

0/,, if ,10/,, if ,1

,rand

nmdnmrdnmdnmrd

nmrw xx

xx

αα

(3)

where ( )nmrw , is the recovered watermark bit. We make a random guess for the recovered watermark bit, if ( ) ( )nmrdnmd xx ,, = .

3. If the watermark had been embedded in

different locations several times, then the most common bit value extracted is assigned for the recovered bit. Otherwise, a random guess is made for its value.

After extracting the watermark, we compare the original and the extracted watermarks using the correlation coefficient:

( )( ) ( )

( ) ( )∑∑

==

=

⋅=

ww

w

N

n

N

n

N

n

nrwnw

nrwnwrwwc

1

2

1

2

1, ,

(4)

where w is the given watermark, and rw is the recovered watermark. If the correlation coefficient is equal or higher than a pre-specified threshold, the given watermark is positively detected in the received image. When the received image is the watermarked image RI=WI, the correlation coefficient ( ) .1, =rwwc When the received image is a modified version of the watermarked image, and the changes are not perceptually visible, ( )rwwc , will be large value. The extraction of the watermark is presented in Fig. 2.

Page 78: Balizarea imaginilor statice folosind transformarea wavelet discretă

Fig. 1: Embedding steps of the proposed method.

DWT

Original Image OI

Key generation

Watermark 0110…1

kv(m,n) kd(m,n)

kh(m,n) Watermarking Key

IDWT

Watermarked Image WI

Page 79: Balizarea imaginilor statice folosind transformarea wavelet discretă

Fig. 2: Extracting steps of the proposed method

Original Image OI

DWT

Key Generation

kh(m,n)

kd(m,n) kv(m,n)

Watermarking Key

DWT

Recovered watermark Original watermark

Correlation Measurement

Received Image RI

Page 80: Balizarea imaginilor statice folosind transformarea wavelet discretă

III. SIMULATION RESULTS For all experiments, we used the well-known Lena image, and a 256 length binary watermark. The Daubechies wavelet with 4 vanishing moments, is used to produce the coefficients. We set the two parameters

10=α and 06.0=q . We present two approaches for the same method. In the first approach, we embed the watermark in the diagonal detail image of the first level ( )nmdd , . The watermarked image has a peak signal-to-noise ratio

dB 76.43=PSNR . In the second approach, we embed the watermark in all the detail images of the original image. The watermarked image has a dB 14.39=PSNR . The second image is perceptually more affected than the first, however, the extracted watermark from the second image is more robust in face of attacks than the extracted watermark from the first image. The watermarked images as well as the original image are shown in Fig. 3.

We investigate the effects of common signal distortions (JPEG compression, median filtering and additive Gaussian noise) on the correlation coefficient between the given and the extracted watermark. We compare the performance of the proposed method with a technique based on the multiresolution wavelet decomposition, proposed by Kundur and Hatzinakos [7]. For comparison, we embed the same watermark into the Lena image using the method described in [7]. We use a watermarking key generated in our first approach

( )nmkd , . The user-defined parameter was set to

4=Q . In this particular case, the watermarked image has a dB 33.57=PSNR . All watermarked images were distorted in turn by median filtering, JPEG compression, and additive Gaussian noise. The results of the correlation coefficient ( )rwwc , as a function of the filter size MM × for

median filtering, as a function of the compression ratio for JPEG compression, and as a function of signal-to-noise ratio ( SNR ) are shown in Fig. 4. The plots with ‘o’ symbols are the results from our first approach; the plots with ‘x’ symbols are the results from our second approach, and the remaining plots show the performance of the technique described in [7]. It is obvious that the correlation coefficient for the proposed method is higher than for the method from [7],

in the case of JPEG compression and additive Gaussian noise.

IV. CONCLUSIONS

We proposed a wavelet-based watermarking method. We only change the coefficients that we believe will not have a visual impact on a human observer. The coefficients were selected using subband-adaptive thresholding. The proposed technique shows a higher performance against JPEG compression and additive Gaussian noise than the method proposed in [7]. However, the method proposed by Kundur and Hatzinakos shows a higher performance against median filtering.

ACKNOLEDGEMENTS We wish to thank to Mr. Stewart Fraser (University of Aberdeen, UK), and especially to Prof. Deepa Kundur (Texas A&M University, USA), for their help, which allowed us to finish this work.

(a) (b) (c)

Fig.3: (a) Original image “Lena”, (b) Watermarked version of “Lena” using the first approach, (c) Watermarked version of “Lena” using the second approach.

Page 81: Balizarea imaginilor statice folosind transformarea wavelet discretă

Fig.4: Results for JPEG compression, median filtering and additive noise. The plots with ‘o’ and ‘x’ symbols are the correlation results for the proposed method (first and second approach, respectively). The remaining plots are for the method in [7].

REFERENCES

[1] G.Voyatzis, I. Pitas, “Problems and Challenges in Multimedia Networking and Content Protection”, TICSP Series No. 3, editor Iaakko Astola, March 1999.

[2] I. Cox, M. Miller, J. Bloom, “Digital Watermarking”, Morgan

Kaufmann Publishers, 2002. [3] A. Sequeira, D. Kundur, “Communications and Information

Theory in Watermarking: A Survey”, Multimedia Systems and Applications IV, A. G. Tescher, B. Vasudev, and V. M. Bove, eds., Proc. SPIE (vol. 4518), pp. 216-227, Denver, Colorado, August 2001.

[4] C. Hsu, J. Wu, “Image Watermarking by Wavelet

Decomposition”, Academy of Information and Management Sciences Journal, Vol. 3, No.1, pp. 70-86, 2000.

[5] I. Cox, J. Killian, T. Leighton, T. Shamoon, “Secure Spread

Spectrum Watermarking for Multimedia”, IEEE Transaction On Image Processing, 6, 12, pp.1673-1687, 1997.

[6] S. Craver, N. Memon, B. Yeo, M. Yeung, “Resolving Rightful

Ownerships with Invisible Watermarking Techniques: Limitations, Attacks, and Implications”, IEEE Journal On Selected Areas In Communications, Vol. 16, No. 4, May 1998.

[7] D. Kundur, D. Hatzinakos, “Digital Watermarking using

Multiresolution Wavelet Decomposition”, Proc. IEEE Int. Conf. On Acoustics, Speech and Signal Processing, Seattle, Washington, Vol. 5, pp. 2969-2972, May 1998.

[8] N. Nikolaidis, I. Pitas, “Robust Image Watermarking in the

Spatial Domain”, Signal Processing, Vol. 66, No. 3, pp. 385-403, 1998.

[9] J.R. Kim and Y.S. Moon, “A Robust Wavelet-Based Digital

Watermarking Using Level-Adaptive Thresholding,” Proc. of IEEE ICIP, Vol. 2, Kobe, Japan, Oct. 1999, pp. 226-230.

Cor

rela

tion

Coe

ffic

ient

Detector Response to JPEG Compression

Detector Response to Median Filtering

Cor

rela

tion

Coe

ffic

ient

Filter Size, M

SNR (dB)

Cor

rela

tion

Coe

ffic

ient

Detector Response to Additive Gaussian Noise

Compression Ratio