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

Similar Posts