Raport asupra activitatii de Cercetare [600828]
Universitatea Politehnica Bucuresti
Facultatea de Automatica si Calculatoare
Raport asupra activitatii de Cercetare
Tema: Algoritmii Watermarking
Stroe Elena – Magdalena
Master : PCSAM
Semestrul II, anul I
Introducere
Este o tehnologie relativ noua, aceasta insereaza informatie ascunsa
in imagini, muzica , date audio sau video. A nu se confunda cu tehnica de
criptar cu t ehnica watermarking care consta in ascunderea informatiei, i n
timp ce criptarea doar protejaza aceasta informat ie.
Cerintele unui sistem de watermarking :
● Transparenta perceptul a – trebuie sa ascunda watermark -ul
astfel incat sa nu afecteze calitatea datelor gazd a. O procedur a este cu
adev arat imperceptabil a daca nu se poat e deosebi datele originale de cele
cu watermark -ul inserat. Ar fi suficent ca modific arile de date supuse
procesului s a treac a neobservate, at at timp c at datele nu sunt comparate
cu cele originale.
● Robuste te – Un watermark fragil ce isi propune s a dovedeasc a
autenticitatea datelor gazd a, nu trebuie s a fie robust la tehnicile de
procesare sau alter ari inten tionate ale datelor gazd a, deoarece e suarea
tentativei de a detecta watermark -ul dovede ste ca datele gazd a au fost
modificate si nu mai sunt autentice. Dar dac a watermark -ul este folosit
pentru alt tip de aplica tie, este preferabil s a ramana permanent in datele
gazd a, chiar dac a calitatea lor se degradeaz a inten tionat sau neinten tionat.
● Securitate – este asem anatoare cu securitatea tehnica de
criptare. O tehnic a watermaking este sigur a daca cunoa sterea exact a a
algoritmului de ascundere si de extragere nu ajut a o parte neautorizat a sa
detecteze prezen ta watermak -ului.
● Watermarking public si privat – vorbim despre tehnicile de
watermaking private c and algoritmii de extragere a watermak -ului pot folosi
datele originale, f ara watermak, pentru a g asi watermak -ul. C and algoritmi
de extragere nu au acces la date f ara watermak, extragerea waterma k-ului
este mai dificil a , putem vorbi despre watermaking public.
Algoritmi
Tehnicile de Watermarking pot fi impartite in patru categorii, in
functie de tipul de document care urmeaza sa fie procesat:
Text Watermarking
Image Watermarking
Audio Watermarking
Video Watermarking.
In alt mod , Watermarking -ul poate fi impartit in trei tipuri diferite:
Watermarking Vizibil
Watermarking Invizibil -Robust
Watermarking Invizibil -Fragil
Algoritmul lui Cox pentru watermarking pe imagine – Algoritmul
lui Cox pentru watermarking pe imagine
Generarea watermark -ului:
Mark -ul este considerat o secventa de numere real pseudo -aleatoare,
ce poate fi descrisa matematic astfel:
X= x 1, x2,…x n ; unde n este lungimena watermark -ul
Alegerea lungimii se face in functie de intinderea pe care dorim sa o
aiba spectrul watermark -ului. Cu cat lungimea este mai mare, cu atat
restrictiile la incastrarea in imagine vor fi mai mici .
Includerea mark -ului in imagine:
Pentru incastrarea mark -ului in imagine, o serie de coeficienti trebuie
extrasi folosind rezultatul transformarii cosinus discrete aplicate imaginii.
Consideram imaginea ca fiind notata cu P si coeficientii
c= c 1, c2,….c n, unde n este lung imena watermark -ul
Coeficientii C se aleg ca fiind cei mai importanti coeficienti ai
transformarii cosinus discrete. Coeficientii sunt modificati folosind formula:
ci`=ci+a∙xi (1)
Parametrul a variaza intre 0 si 1, in functie de cat de puternic este
integrat watermark -ul. Un singur factor poate fi insuficient in cele mai multe
cazuri astfel ca formula este modificata:
ci`=c i+a i ∙ xi (2)
Pot fi introduse reguli pentru alegerea coeficientilor a i astfel incat
watermark -ul sa nu fie perceptibil.
Extragerea si comparatia watermark -ului.
Pornind de la ecuatia (1), folosind logaritmul coeficientilor originali
obtinem:
ci = ci` ∙ exp (a ∙ x i ) (3)
Functia inversa este usor de dedus din aceasta ecuatie:
Xi`=(c i`- ci)(a ∙ x i) (4)
In aceasta ecuatie c i`sunt coeficientii extrasi aplicand transformarea
cosinus discreta asupra imaginii watermark inclus.
Algoritmul Cox are nevoie d e imaginea originala pentru extragerea
mark -ului, dupa cum se poate vedea din aparitia coeficientilor c i din formula
(4).
Dupa extragerea watermark -ului, comparatia cu originalul se face
folosind:
d = [(X`) (X)]/[|X`| |X|] (5)
unde d poate lua valori intre -1 si 1.
Cu cat valoarea obtinuta este mai apropiata de 1, cu atat watermark –
ul obtinut este mai apropiat de cel original. Un d acceptabil are valori mai
mari de 0.4.
Fig2. Imagine Originala Fig3. Imagi ne folosing Algoritmul Cox
Algoritmul lui Xie pentru watermarking pe imagini – este mai
puternic decat cel introdus de Cox. Foloseste transformarea wevelor
discreta.
Generarea watermark -ului.
La fel ca si pentru alboritmul Cox, secventa mark -ului este descrisa
ca:
X= x 1, x2,…x n ;
Dar in acest caz insa, x i poate lua valori de 0 sau 1.
Includerea watermark -ului in imagine.
Mai intai imaginea este descoperita pentru a obtine o aproximare de
frecventa joasa, obtinand nivelul cel mai de sus al piramidei transformatei
wavelet a imaginii. Acesta este nivelul unde va fi inclus watermark -ul.
Folosind o frecventa de dimensiune 3×1, cu 3 coeficienti, includem mark -ul
in imagine.
Consideram b1, b2, b3 coeficientii ferestrei. Valorile selectate de
fereastra sunt ordonate crescator b(1), b(2) si (3).
Intervalul intre b(1) si b(3) este impartit in intervale folosinf formula :
s = a ∙ 𝑏(1)+𝑏(3)
2 (6)
Medianul celor trei coeficienti este apoi cuantizat pentru a deveni un
multiplu de s, ce reprezinta un bit al datelor watermark -ului, x i. Astfel,
regiunea este divizata in 2
𝑎 unde valoarea implicita a lui a este de 0.05.
Fiecare regiune va avea 2 grani te, marcate de lk si lk+1. Toate
granitele pare vor fi marcate cu 1, iar cele impare cu 0. Coeficientul este
apoi manipulat pentru a fi pozitionat pe granita reprezentand bitul x i al
watermark -ului. Apoi, coeficientul este modifica in componenta de sub –
banda.
Extragerea watermark -ului
Watermark -ul poate fi extras fara a cunoaste imaginea originala. Este
determinat medianul ferestrei glisante si cuantizat pentru a obtine un punct
de reconstructie. Valoarea bitului este obtinuta din valoarea asociata
punctului de constructie x i`. Apoi, watermark -ul obtinut X` este comparat cu
originalul X.
Fig6. Imagine Originala Fig7. Imagine folosing Algoritmul Xie
Diferenta dintre Imaginea Originala si Imaginea la care s -a folosit
Algoritmul Xie, respectiv Cox.
Fig8. Algoritmul Xie Fig9. Algoritmul Cox
Aplicatie in C#
Aplicatia este realizata in Microsoft Visual Studio, cu ajutorul
limbajului C#. Are ca scopad adaugarea unui Watermark pe orice format de
fisier imagine.
Constructorul – este folosit pentru a stabilia configuratie implicita,
inclusiv definirea culorii, o pacitatea, pozitia acestuia, textul, fontul folosit
pentru a afisa watermark -ul.
#region Constructor
/// <summary>
/// constructor with default configuration settings
/// </summary>
public frmWatermark()
{
InitializeComponent();
// setup default settings
myWatermarkColor = Color.SteelBlue;
cboOpacity.SelectedIndex = 2;
optTop.Checked = true;
txtWaterMark.Text = "Your Name " +
char.ConvertFromUtf32(169).ToString() + " " +
DateTime .Now.Year.ToString() + ", All Rights
Reserved" ;
myFont = txtWaterMark.Font;
}
#endregion
Regiunea de intrare/ iesire de fisiere contine doua evenimente :
Open File, unde se deschise imaginea
Butonul Salveaza ,
Open File permite uti lizatorului sa navigheze pentru a selecta un fisier
imagine. Fiserul de imagine selectat este plasat intr -un „picturebox” derulat.
Butonul Salveaza – cand se face clik pe acest buton fisierul cu
watermark este salvat. Fisierul Original Poate fi redenumit sau suprascris.
Urmatoarea sectiune este Conversie Format Imagine. In aceasta
regiune, metodele prevazute sunt folosite pentru a c onverti imaginea
deschisa intr -un format alternativ.
#region Image Format Conversion
private static ImageCodecInfo GetEncoderInfo( String mimeType)
{
int j;
ImageCodecInfo [] encoders;
encoders = ImageCodecInfo .GetImageEncoders();
for (j = 0; j < encoders.Length; ++j)
{
if (encoders[j].MimeType == mimeType)
return encoders[j];
}
return null;
}
/// Convertesti fisierul curent la un bitmap
private void bitmapToolStripMenuItem_Click( object sender, EventArgs
e)
{
//Creaza un nume nou cu extensia . bitmap
string newName =
System.IO. Path.GetFileNameWithoutExtension( CurrentFile);
newName = newName + ".bmp";
try
{
// Salvare
img.Save(newName, ImageFormat .Bmp);
CurrentFile = newName;
picContainer.Image = Image.FromFile( CurrentFile);
this.Text = "Watermark Utility: " + CurrentFile.ToString();
}
catch
{
MessageBox .Show("Failed to save image to bitmap." , "Error",
MessageBoxButtons .OK, MessageBoxIcon .Error);
return;
}
MessageBox .Show("Image file saved to " + newName.ToString(),
"Image Saved" , MessageBoxButtons .OK, MessageBoxIcon .Information);
}
Am pus mai sus un exmplu de cod pentru a converti formatul unei
imaginii la formatul .bmp
Regiunea de Watermarking cuprinde comanda de actualizare, de
determinare a opacitatii, calcularea dimensiunii testului Watermark.
#region Watermarking
/// Afisarea Watermark -ului
/// Salvarea
private void btnPreview_Click( object sender, EventArgs e)
{
// Actualizati aplicatia
picContainer.Image = Image.FromFile(CurrentFile);
int opac = 0;
string sOpacity = cboOpacity.Text;
// Determinarea Opacitatii
switch (sOpacity)
{
case "100%":
opac = 255; // 1 * 255
break;
case "75%":
opac = 191; // .75 * 255
break;
case "50%":
opac = 127; // .5 * 255
break;
case "25%":
opac = 64; // .25 * 255
break;
case "10%":
opac = 0; // . * 255
break;
default:
opac = 127; // default at 50%; .5 * 255
break;
}
// Context Grafic
Graphics g = Graphics .FromImage(picContainer.Image);
// Crearea unui spatiu solid pentru a scrie textul pe imagine
Brush myBrush = new SolidBrush (Color.FromArgb(opac,
myWatermarkColor));
// Calculeaza dimensiunea textului
SizeF sz = g.MeasureString(txtWaterMark.Text, myFont);
//Creaza o copie de variabile pentru a urmari pozitia
int X;
int Y;
// Setati pozitia desen
if (optTop.Checked == true)
{
X = (int)(picContainer.Image.Width – sz.Width) / 2;
Y = (int)(picContainer.Top + sz.Height) / 2;
}
else
{
X = (int)(picContainer.Image.Width – sz.Width) / 2;
Y = (int)(picContainer.Image.Height – sz.Height);
}
g.DrawString(txtWaterMark.Text, myFont, myBrush, new Point(X,
Y));
}
/// Setati fontul si culoarea fontului watermark
private void btnFont_Click( object sender, EventArgs e)
{
fontDialog1.ShowColor = true;
fontDialog1.Font = txtWaterMark.Font;
fontDialog1.Color = txtWaterMark.ForeColor;
if (fontDialog1.ShowDialog() != DialogResult .Cancel)
{
myFont = fontDialog1.Font;
myWatermarkColor = fontDialog1.Color;
txtWaterMark.Font = fontDialog1.Font;
txtWaterMark.ForeColor = fontDialog1.Color;
}
}
#endregion
Interfata grafica a aplicatiei.
Bibliografie
(1) http://www.comm.pub.ro/preda/scm/cursuri/SCM_Cap4.pdf
(2) http://referate.bubble.ro/watermark/algoritmi_watermarking/
(3) http://en.wikipedia.org/wiki/Digital_watermarking
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Raport asupra activitatii de Cercetare [600828] (ID: 600828)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
