Sunteți pe pagina 1din 56

Rodul muncii in

Multumedia

Multumiri speciale grupei C-123 Cyber

1
Contents
CURSUL 1 – Imagini digitale. Tipuri si formate ............................................................................................ 6
1.1 Formarea culorii .................................................................................................................................. 6
1.1.1 Lumina.......................................................................................................................................... 6
1.1.2 Formarea imaginii in ochiul uman ............................................................................................... 6
1.1.3 Achizitia si afisarea imaginii ......................................................................................................... 6
Perceptia culorii in sistemul LHS ........................................................................................................... 6
1.2 Modelul de Culoare....................................................................................................................... 6
CMY model substractiv (ce ....................................................................................................................... 6
1.3 Reprezentarea Imaginilor.................................................................................................................... 7
1.3.1 Reprezentarea digitală a imaginilor ............................................................................................. 7
1.3.2 Imagini de intensitate şi monocromatice .................................................................................... 7
1.3.3 Imagini color în reprezentare RGB ............................................................................................... 7
1.3.4 Imagini de intensitate .................................................................................................................. 8
1.3.5 Tehnici de marcare LSB-I (ascunderea unei imagini in alta imagine-imaginea marca) ............... 8
1.4 Tehnici de Binarizare ..................................................................................................................... 8
Binarizarea imaginilor digitale .................................................................................................................. 8
CURSUL 2 lipsa .............................................................................................................................................. 8
CURSUL 3 ...................................................................................................................................................... 8
3.1 Imagini indexate.................................................................................................................................. 8
3.2 Reducera numarului de culori............................................................................................................. 9
3.2.1 Cuantizarea uniforma .................................................................................................................. 9
3.2.2 Look-up Table............................................................................................................................... 9
3.2.3 Median Cut................................................................................................................................... 9
3.2.4 Masuri de eroare.......................................................................................................................... 9
3.2.5 Algoritm k-means ....................................................................................................................... 10
CURSUL 4 - Compresii fara pierderi ......................................................................................................... 10
4.1 Tipuri de compresie .......................................................................................................................... 11
4.2 Entropia unui sistem ......................................................................................................................... 11
4.3 RLE – Run Length Encoding ............................................................................................................... 11
4.4 Codarea ariilor constante.................................................................................................................. 12
4.5 Codul WBS : White Block Skipping .................................................................................................... 12
4.6 Codul Gray......................................................................................................................................... 12

2
4.7 Coduri VLC(Codificare de lungime variabila) .................................................................................... 12
4.8 Coduri Instantanee............................................................................................................................ 12
4.9 Lungimea media a unui cuvant ......................................................................................................... 12
4.10 Codarea Shannon-Fano:.................................................................................................................. 12
4.11 Codarea Huffman: ........................................................................................................................... 12
4.12 Decodificarea Huffman ................................................................................................................... 13
4.13 Codul Huffman Extins...................................................................................................................... 13
4.14 Compresia LZW(Coduri Bazate pe Dicţionare)................................................................................ 13
4.15 Codarea Diferenţială ....................................................................................................................... 13
4.16 Modulatie Delta .............................................................................................................................. 13
4.17 Compresie JPEG fără pierderi ......................................................................................................... 13
4.18 Compresii cu arbori cuaternari ....................................................................................................... 14
4.19 Compresie cu sau fără pierderi ....................................................................................................... 14
4.20 Codarea imaginii ............................................................................................................................. 14
4.21 Îmbunătăţirea timpului de codare .................................................................................................. 14
4.22 Codarea Aritmetică ......................................................................................................................... 14
4.22.1 Variante moderne de codare aritmetică: ................................................................................ 14
CURSUL 5 - ZGOMOTE si FILTRE ................................................................................................................. 15
5.1 Tipuri de procesări ale imaginilor ..................................................................................................... 15
5.2 Filtre Spaţiale Liniare......................................................................................................................... 16
5.3 Proprietăţi ale convoluţiei ................................................................................................................ 17
5.4 FILTRE DE NETEZIRE(TRECE JOS) ....................................................................................................... 17
5.5 FILTRE DE CONTRASTARE (TRECE SUS) ............................................................................................. 18
5.6 Conceptul de filtrare adaptivă .......................................................................................................... 18
5.7 Filtrare Adaptivă Direcţională ........................................................................................................... 18
5.8 Filtrarea Adaptivă cu Prag ................................................................................................................. 18
5.9 Filtre de Ordine ................................................................................................................................. 19
5.10 Filtrul de Ordine de Rang k ............................................................................................................. 19
5.11 Filtre de Ordine de Domeniu .......................................................................................................... 19
5.12 Filtre de Ordine de Reliefare ........................................................................................................... 20
CURSUL 6 - Tipuri de procesare a imaginilor .......................................................................................... 20
6.1 Caracterizarea zgomotelor................................................................................................................ 20
6.1.1 Zgomotul de tip “Sare si piper” ...................................................................................................... 21

3
6.2 Filtre spatiale liniare.......................................................................................................................... 22
6.3 Filre de netezire (trece jos) ............................................................................................................... 22
6.4 Filtre trece-sus .................................................................................................................................. 22
6.5 Filtrare liniara adaptive ..................................................................................................................... 23
6.6 Filtre de ordine.................................................................................................................................. 23
CURS 7......................................................................................................................................................... 25
7.1 Algoritmii de regresie logistica si SV ................................................................................................. 25
7.2 SVM ................................................................................................................................................... 26
CURS 8 – Transformata KLT. Recunoastere faciala. .................................................................................. 26
CURSUL 9 – Segmentarea imaginilor ......................................................................................................... 32
9.1 Aplicatii ale segmentarii: ....................................................................................................................... 32
9.2 Tehnici simple de segmentare: ............................................................................................................. 32
9.3 Algoritmul de extindere a regiunii ........................................................................................................ 33
9.3.1 Exemple de criterii de omogenitate :............................................................................................. 33
9.4 Proprietăți Matematice..................................................................................................................... 34
9.5 Caz simplu de segmentare prin binarizare........................................................................................ 35
9.6 Caz complex de segmentare prin binarizare..................................................................................... 35
9.7 Reprezentarea culorii in HSV(Hue, Saturation, Value)...................................................................... 35
9.8 Proprietati K-Means .......................................................................................................................... 36
9.9 Gaussian Mixture Models ........................................................................................................... 36
9.10 EM (Expectation-Maximization) ..................................................................................................... 36
9.11 Tehnica Split and Merge ................................................................................................................. 37
9.12 Algoritmul Mean Shift ..................................................................................................................... 37
LABORATOARE ........................................................................................................................................... 38
Laboratorul3 - Studierea algoritmilior de reducere a numarului de culori .............................................. 38
3.1 Cuantificarea uniforma (cea mai simpla strategie) ........................................................................... 38
3.2 ColorMap .......................................................................................................................................... 40
3.3 Reducerea numarului de culori folosind ColorMap-uri .................................................................... 41
Laboratorul 4 .............................................................................................................................................. 42
4.1 K-Means ............................................................................................................................................ 42
4.2 Reducerea numarului de culori folosind algoritmul k-means........................................................... 44
4.3 Clasificarea cifrelor scrise de mana folosind K-Means...................................................................... 44
Laboratorul 5 - DBSCAN ............................................................................................................................. 45

4
5.1 Clusterizare blob-urilor ..................................................................................................................... 46
Laboratorul 6 – Compresii Lossless ............................................................................................................ 47
6.1 Codarea Huffman .............................................................................................................................. 47
6.2 Compresia Aritmetica ....................................................................................................................... 48
Laboratorul 7 – DCT si JPEG ....................................................................................................................... 49
Laboratorul 8 .............................................................................................................................................. 50
Laboratorul 9 – Introducere in retele neuronale ...................................................................................... 52
9.1 O retea neuronala simpla ................................................................................................................. 53
9.2 Retele neuronale de convolutie ........................................................................................................ 55

5
CURSUL 1 – Imagini digitale. Tipuri si formate
1.1 Formarea culorii
1.1.1 Lumina
In spectrul de semnale electromagnetice exista o zona mai ingusta care se numeste
spectrul vizibil. Se intinde cam de la 400 nm pana la 700 nm. Exista diverse surse de lumina cu
lungimi diferite de unda. Culoarea luminii este data de lungimea de unda. Lumina de tip laser
are mai multe lungimi de unda.

1.1.2 Formarea imaginii in ochiul uman


Sursa de lumina cu spectrul E(λ) (λ – lungimea de unda) se reflecta pe o suprafata S(λ)
care in functie de proprietatile ei legate de culoare are pentru fiecare lungime de unda are un
anumiti coeficienti de absorbtie si de refractie . O parte din spectrul provenit de la sursa de
lumina, C(λ) , se reflecta catre ochiul uman, apoi este descompus in cadrul ochiului uman in
cele trei componente R G B.
Ochiul este cel mai sensibil la verde, apoi la rosu si cel mai putin la albastru.

1.1.3 Achizitia si afisarea imaginii


Camerele digitale au un sistem de achiziţie similar : trei senzori de lumină (R,G,B)
pentru fiecare pixel. Daca vrem sa afisam imaginea pe un ecran , acest triplet RGB este
convertit în semnal analog (tensiune), care alimentează celule de fosfor rezultand pixel
(culoare).

Perceptia culorii in sistemul LHS


L = luminozitate (gradul de intensitate a culorii )
H = nuanta (culoarea perceputa)
S = saturatie (cat de profunda este culoarea)

1.2 Modelul de Culoare


CM RGB : model aditiv (ce obtii cand amesteci unde de luina)
CMY model substractiv (ce obtii cand amesteci vopsea)
Verde in CMY : Cyan (B+G) & Yellow (R+G)
Y

6
1.3 Reprezentarea Imaginilor
1.3.1 Reprezentarea digitală a imaginilor
O imagine este construita ca o functie continua de 2 variabile reale 0<f(x,y)<L. Pentru
trecerea ei in format digital trebuie realizate:

• Esantionarea (rezolutia spatiala) = cum esantionam pe axele Ox si Oy a.i sa


surprindem un fixel. Impartirea imaginii pe 2 axe da rezolutia imaginii (scanner)
• Cuantificarea (rezolutia cromatica) = din spatial infinit de culor definim un nr de
nivele in fuctie de care sa clasificam culoarea sau intensitatea luminoasa. Fiecare
pixel se va incadra pe un nivel.
Putem allege nr de biti pe care reprezentam un pixel, cu cat folosim mai multi biti
imagine ava fi mai clara. Astazi in general imaginile se reprezinta pe 8 biti, 256 de nivele.

1.3.2 Imagini de intensitate şi monocromatice


2 metode basic de reprezentare a imaginilor:

• Nuante de grii : 1pixel=8biti

• Imagini monocromatice: conţin de obicei text şi logo-uri.

Operatia de binarizare folosită în:


• recunoaşterea textului.
• segmentarea imaginii.

1.3.3 Imagini color în reprezentare RGB


O imagine color se descompune in 3 canale. Fiecare canal reprezinta o matrice. Fiecare
pixel se reprezinta pe 8 biti pentru fiecare canal => 24 biti.
Imaginile RGBA (se mai adauga factorul de transparenţă alpha α), sunt pe 32 biţi
• 24 biţi de culoare
• 8 biţi pentru factorul de transparenţă alpha α
Imaginea finală = imaginea color × (1 - α) + imaginea de fond × α
E o combinatie intre imaginea propriu-zisa si culoarea de fond
Din aceasta imagine putem extrage o imagine de intensitate folosind formula:
Intensitatea =30%*Rosu+ 59%*Verde+ 11%*Albastru

7
1.3.4 Imagini de intensitate

Putem descompune fiecare pixel pe 8 plane de biti 10001101 - bitul cel mai
reprezentativ (MSB) şi bitul cel mai puţin reprezentativ (LSB).
pixel = nivel de intensitate în [0-255].
Planele de biti sunt doar alb-negru si au contribuţii diferite la formarea imaginii. Cele mai
importante sunt primele plane de biti, ultimele sunt in general zgomote. Acest aspect ne
poate ajuta la compresia cu pierderi prin codarea diferită a planelor, metode de
watermarking (încapsularea unei informaţii secrete care realizeaza o suma de control folosind
ultimele plane) sau autentificarea imaginilor bazate pe tehnica LSB .

1.3.5 Tehnici de marcare LSB-I (ascunderea unei imagini in alta imagine-imaginea marca)
Cei mai putini biti ai imaginii gazda sunt inlocuiti cu cei mai semnificativi biti ai imaginii
marca. Trebuie facut un compromise intre robustete (claritatea imaginii gazda) si fidelitate
(imaginea marcata sa fie cat mai apropiata decat originala)

1.4 Tehnici de Binarizare


Binarizarea imaginilor digitale
Ca sa trecem de la o imagine gray-scale la o imagine alb-negru putem sa folosim mai
multe metode. Ele se bazeaza pe alegerea unui prag intre 0 si 255.
Varianta simpla = ce e intre 0 si acel prag transformam in 0, ce e peste prag transformam in 1.
Adaptiva = acel prag ia valoarea mediana a tuturor pixelilor prezenti
Otsu = maximizarea varianţei inter-clase (cele mai bune rezultate)

CURSUL 2 lipsa

CURSUL 3
3.1 Imagini indexate
Un triplet rbg de culoare este format din 3 octeti care au valori de la 0 la 255. O imagine de n x
m are nevoie de n x m x 3 octeti pentru a fi reprezentata.

Daca am avea un table cu 3 coloane pentru r,g,b si 256 de linii pentru fiecare culoare care ar
putea fi perceputa de ochiul uman, o imagine in loc sa fie compusa din n x m x 3 ar fi compusa din n x m

8
unde fiecare valoare reprezinta un index pentru o culoare din tabel. Astfel o sa pentru memorarea
imaginii este nevoi de n x m + 768 octeti in loc de n x m x 3 octeti.

Formatul BMP are in header o tabela de culori care este folosita pentru indexarea imaginilor.

3.2 Reducera numarului de culori


3.2.1 Cuantizarea uniforma
Spectrul de culori rgb se abstractizeaza intr-un cub, fiecare axa este reprezentanta de r sau g sau
b. Se ia o imagine si toate culorile din imagine sunt mapate in cub, adica pentru un pixel cu valorile (16,
35, 20) exista un punct in cub care reprezinta culoarea la coordonatele x=16, y = 35, z = 20, pe urma se
formeaza minicuburi care cuprind culori apropiate din imagine si acestea sunt inlocuite cu o alta valoare
aleasa din minicubul format, de exemplu centrul acestuia sau cu o medie a culorilor din minicub.

3.2.2 Look-up Table


Avem o paleta de culori deja definite, un tabel de culori. Pentru a reduce numarul de culori
dintr-o imagine luam un pixel de culoare si il inlocuim cu cea mai apropiata valoare din paleta de culori
definite.

3.2.3 Median Cut


1. Se reprezinta fiecare culoare dintr-o imagine in spatial de culori (cubul de culori rgb ca la
cuantizare). Cautam de-a lungul carui canal am cele mai multe culori, cautam pe care axa sunt
cele mai multe puncte.
2. Sortez pixelii in functie de canalul/axa aleasa la punctul 1
3. Calculez mediana si impart cubul in functie de valoarea obtinuta(se taie cubul cu un plan) si
obtin doua paralelipipede
4. Ma duc la pasul 1 pt cele doua paralelipipede.

Dupa mai multe iteratii o sa fie cubul rgn impartit in mai multe paralelipipede, ca sa reduc numarul
de culori se inlocuiesc culorile dintr-un paralelipiped cu o culoare reprezentativa pentru acel
paralelipiped. Dupa n pasi o sa am 2 la n culori.

3.2.4 Masuri de eroare


Dupa aplicarea unui algoritm de reduce a culorile se doreste afla diferentei intre imaginea
originala si cea finala

MSE(Mean square Error): eroare medie patratica intre pixelii dintre imaginea originala si ce
afinala

PSNR(Peak Signal to noise Ratio): refecta raportul dintre valoarea maxima din imaginea originala
si MSE. Pentru un PSNR< 30 este degradare severa, pentru PSNR > 38 imaginile sunt foarte
asemanatoare.

9
3.2.5 Algoritm k-means
Atribuie cate un label pentru fiecare cluster si calculeaza un centroid (un representant) pentru
fiecare cluster

1. Isi alege un centroid random pentru fiecare cluster

2. calculeaza distanta dintre fiecare punct si fiecare centroid si punctelor le sunt atribuite label-uri
pentru in functie de cel mai apropiat centroid

3. recalculeaza pozitia centroidului in functie de mediana punctelor din label-ul centroidului, sar la 2

Se repeta pana cand nici un punct nu-si mai schimba label-ul sau dupa un numar stabilit de iteratii,
algoritmul converge

K-means este aplicat pentru reducerea numarului de culori, daca se doreste reducerea la 16 culori se
aplica k-means cu 16 clustere peste culorile din imagine mapate 3D.

CURSUL 4 - Compresii fara pierderi


Compresia fara pierderi este o clasa de algoritmi de compresie a datelor care permite
reconstruirea perfecta a datelor originale din datele comprimate. Compresia cu pierderi permite
reconstruirea doar a unei aproximari a datelor orginale.
Compresia fara pierderi e utilizata in multe aplicatii: in formatul de fisiere ZIP, de asemenea e
folosita ca o componenta in cadrul compresiilor cu pierderi precum:preprocesare stereo,
codificatoare mp3 etc.
Aceasta mare clasa de compresii fara pierderi este utilizata atunci cand este important ca
datele originale si decomprimate sa fie identice sau abaterile de la datele originale sa fie
favorabile.
ex:programe executabile, documente text si codurile sursa
Formatele audio fara pierderi sunt utilizate cel mai adesea in scopuri de arhivare, in
schimb fisierele audio cu pierderi mai mici sunt utilizate pe layere portabile.

Compresiile cu pierderi au redundanta si toleranta umana pe cand cele fara pierderi exploateaza
redundanta.

Majoritatea programelor de compresie fara pierderi fac 2 lucruri:


1.Genereaza un model statistic pentru datele de intrare
2.Foloseste acest model pentru a mapa datele de intrare in secventa de biti in asa fel incat datele
probabile vor produce o iesire mai scurta decat datele improbabile.

10
Din punct de vedere al performantelor exista o serie de indicatori:
-rata de compresie->raportul dintre cantitatea datelor la intrare si la iesire
-factorul de compresie-> raportul dintre cantitatea de informatie necesara reprezentarii imaginii
initiale si cantitatea de informatie necesara reprezentarii imaginii codate
-calitatea imaginii
-viteza de compresie si decompresie

4.1 Tipuri de compresie

Metode de compresie la nivel de pixel:


-codarea repetiţiilor unui pattern : RLE.
-codare de tip VLC : Shannon-Fano, Huffman
-metode bazate pe dicţionare (Lempel-Ziv-Walsh)
Metode de compresie predictive : folosesc imagini
-diferenţă (∆) : elimină redundanţa între pixelii vecini.
Alte metode : arbori cuaternari - folosesc o structură arborescentă pentru a coda regiuni
(cvasi)omogene.
4.2 Entropia unui sistem
-Entropia unui sistem este o masura a incertitudinii cu privire la o variabila aleatoare.
-Entropia reprezinta numarul optim de biti/simbol pentru o sursa ideala fara memorie.
-Entropia reprezinta cantitatea de informatie medie dintr-o imagine, concret cati biti sunt
necesari pentru a codifica o imagine.

1
𝐻(𝑠) = ∑ 𝑝𝑖 log 2 ( )
𝑝𝑖

4.3 RLE – Run Length Encoding


-Se foloseste pentru comprimarea imaginilor transmise prin fax.
-Pentru un şir binar se codează numărul simbolurilor succesive de acelaşi fel. O imagine
monocromatică relativ omogenă poate fi codificată eficient cu RLE.(ex: slide 7->curs 4)

11
4.4 Codarea ariilor constante
Pentru imagini binare : cuvinte de cod pentru identificarea ariilor largi constante (albe sau
negre). Imaginea este divizată în blocuri de MxN pixeli : complet albe, complet negre, mixte
(alb+negru).
Cea mai frecventă arie constantă ⇨ codul 0.
Cealaltă arie constantă ⇨ codul 10.
Ariile mixte sunt codate : 11 + şirul de MxN biţi.

4.5 Codul WBS : White Block Skipping


-Impartirea fluxului binar in blocuri de B biti. Un bloc alb/negru(cel mai frecvent) este codat cu
0, celelalte blocuri fiind codate cu 1+valoarea binara a codului.(ex:slide 9->curs4)
La imagini pur binare, codarea WBS este mult mai eficienta decat Metoda ariilor constante.

4.6 Codul Gray


Problema:Modificari mici ale nivelului de gri pot conduce la diferente importante in planele de
biti.
Rezolvare:Doua cuvinte de cod succesive difera doar printr-un bit.

4.7 Coduri VLC(Codificare de lungime variabila)


Un cod cu lungime variabila este un cod care mapeaza simbolurile sursa cu un numar variabil de
biti.

4.8 Coduri Instantanee


Conditie de non-ambiguitate:niciun cuvant de cod sa nu fie prefixul vreunui alt cuvant(potrivire-
>simbol)

4.9 Lungimea media a unui cuvant


Obiectivul VLC este acela de a coda simbolurile sursei s cu coduri binare de lungime variabila,
astfel incat lungimea medie a unui cuvant sa fie medie. Principiul VLC: asigurarea unui numar
de biti mai mic pentru reprezentarea simbolurilor mai frecvente.

4.10 Codarea Shannon-Fano:

1.Sortarea in ordinea descrescatoare a frecventelor de aparitie.


2.Impartirea recursiva a simbolurilor in doua multimi, ambele cu aproximativ aceeasi frecventa
de aparitie.

4.11 Codarea Huffman:

1. Sortarea in ordinea descrescatoare a frecventelor de aparitie.


2. Formam un arbore binar avand ca frunze valorile celor mai mici probabilitati din sirul de
probabilitati. Radacina acestui arbore va contine suma probabilitatilor celor doua frunze ale
sale.Etichetam o muchie cu 0, cealalta cu 1.

12
3. Din sirul p se elimina cele 2 probailitati cele mai mici si in sirul p se introduce valoarea
continua de radacina a arborelui binar format.
4.Daca in sirul p exista mai mult de un element se reiau toti pasii de la inceput.
5.Codarea binara a fiecarui element se obtine prin parcurgerea arborelui ce s-a format de la
radacina spre fiecare frunza.

4.12 Decodificarea Huffman


Decodorul : refacerea codurilor binare ale simbolurilor.
Se poate folosi un tabel predefinit ...
Mai multe tabele corespunzătoare unor distribuţii diferite : se transmite doar indexul tabelului.

4.13 Codul Huffman Extins


Motivatie: toate cuvintele din codarea Huffman au un nr intreg de biti; costisitor atunci cand pi
este mare (aprox. 1) si log2pi e aproape 0=>entropie nula.
Idee: gruparea anumitor simboluri impreuna si formarea unui nou cuvant pentru intregul grup.

4.14 Compresia LZW(Coduri Bazate pe Dicţionare)


Coduri Bazate pe Dicţionare:constau dintr-o serie de reguli de identificare a unor grupuri de
simboluri si gruparea lor intr-un dictionar care se asociaza sursei de informatie.
LZW cauta siruri cat mai lungi pentru a le codifica; Decoderul construieste acelasi dictionar.
Ideea de baza a algoritmul LZW este de a imparti secventa de intrare in blocuri sau siruri de
lungime diferite. Multimea blocurilor distincte defineste un dictionar. Indexul cuvintelor din
dictionar e salvat in fisierul comprimat.

4.15 Codarea Diferenţială


Este o metoda de codare a sursei si se utilizeaza cand diferenta dintre 2 valori consecutive este
redusa.

4.16 Modulatie Delta


Se foloseste un singur bit pentru a reprezenta un semnal analogic.

4.17 Compresie JPEG fără pierderi


Predictorul combină valorile pixelilor vecini pentru a anticipa (prezice) valoarea pixelului curent.
Encoderul compară predicţia cu valoarea reală a pixelului şi codează diferenţa folosind o schemă
VLC.
Moduri de operare a standardului JPEG:
-modul de baza:fiecare componenta a imaginii e codata printr-o singura scanare stanga-
dreapta, sus-jos
-codare expandata:o codare progresiva a spectrelor imaginii de intrare

13
-codare fara pierderi:imaginea e codata astfel incat sa garanteze reproducerea exacta la
decodare

4.18 Compresii cu arbori cuaternari


Arbore cuaternar – un nod neterminal are 4 copii.
Idee : divizarea regulată a suportului spaţial al imaginii dacă acesta are valori diferite (noduri din
arbore). Parcurgere de la stânga către dreapta şi de sus în jos.

4.19 Compresie cu sau fără pierderi


Nodurile se dezvoltă dacă blocurile nu sunt suficient de uniforme ⇨ condiţie de uniformitate la
nivelul regiunii. O zona e considerata uniforma daca diferenta maxima de nivele de gri a
pixelilor ce o formeaza nu depaseste un anumit prag impus,

4.20 Codarea imaginii


Se face prin memorarea poziţiei frunzelor şi a valorilor lor.
Poziţie : calea binară dinspre rădăcină
Inconvenient : testarea fiecărui pixel se face de un număr de ori egal cu adâncimea nodului în
arbore.

4.21 Îmbunătăţirea timpului de codare


Pentru a inlatura acest inconvenient este suficient ca pixelii imaginii sa nu mai fie parcursi in
ordine traditionala de baleiere(pe linii de la stanga la dreapta sau de sus in jos), ci in alta ordine
care sa-i aranjeze pe grupuri ce corespund patratelor de diviziune a imaginii.

4.22 Codarea Aritmetică


Pentru surse staţionare (probabilităţi statice), aceeaşi eficienţă cu Huffman, dar în condiţiile
reale, de nestaţionaritate, performanţele sunt superioare.
Pentru mesaje foarte lungi ⇒ converge către entropie!
4.22.1 Variante moderne de codare aritmetică:
➢ Fast Binary Arithmetic Coding (FBAC) pentru standardele de imagini JBIG, JBIG2 şi
JPEG-2000

➢ Context-Adaptive Binary Arithmetic Coding (CABAC) pentru standardul video H.264.

Ideea de baza: Reprezentarea unui mesaj prin intermediul unui interval [a, b) cu a şi b numere
reale între 0 şi 1.
➢ Initial, intervalul este [0, 1).

➢ La apariţia unui simbol, intervalul se reduce proporţional cu probabilitatea simbolului


curent

14
⇨ mai multi biţi pentru a putea fi reprezentat …

CURSUL 5 - ZGOMOTE si FILTRE


5.1 Tipuri de procesări ale imaginilor
Termenul general de îmbunătățire a imaginii externe se referă la o clasă largă de
operații care au ca scop mărirea abilității componentelor imaginii. Această tehnică depinde în
primul rând de percepția vizuală a unui observator uman, deci reprezintă o apreciere subiectivă
a imaginii. Îmbunătățirea calității unei imagini se face fără a presupune un moment de
degradare sau fără a lua în considerare informațiile legate de originale.
În mod paradoxal o imagine originală degradată poate fi îmbunătățită în general prin
accentuarea unor caracteristici ale imaginii cum ar fi muchii sau contururi sau chiar contrastul
imaginii. Procesul de îmbunătățire nu mărește cantitatea de informație conținută de o imagine.
Din punct de vedere al procesării imaginilor există o serie de operații pe care le putem respecta:
• Operațiile locale, se mai numesc și de vecinătate din punct de vedere al
prelucrării de tip punctual adică corespondența unu la unu între valorile nou și valori despre
care există limitări. Noua valoare a nivelului de gri într-un pixel depinde de pixelii din
vecinătatea pixelului considerat. Practic toți pixelii au aceeași valoare toți pixelii care au aceeași
valoare sunt identici pentru a distinge între pixelii de aceeași valoare. Trebuie luate în
considerare informații suplimentare asupra vecinătății acestor pixeli. Acest tip de operații de
vecinătate presupun a noua valoare a ochiului pixel din imaginea prelucrată să rezulte din
combinarea unui număr oarecare de valori ale pixelilor din mașina inițial situați în vecinătatea
fix unui curent prelucrat deci practic se ia în considerare atât pixelii cât și o vecinătate a
acesteia.
• Operații integrale, în care noua valoare a unui pixel este dependentă de valorile
tuturor pixelilor imaginii. Un exemplu ar fi egalizarea histogramei, care reprezinta o operatie
accentuarea contrastului pentru a putea obține o histogramă uniformă.
Zgomotul este un semnal aleator care afectează informația vizuală, totodată acesta este
un element perturbator nedorit. Acesta are ca surse: achiziții, transmisii, compresii.
Tipuri de zgomot, în funcție de suprapunerea peste informația utilă :
• aditiv : g(x)=f(x,y)+n(x,y)
g=imaginea afectată de zgomot
f=imaginea inițială
n=zgomotul aplicat

15
• multiplicativ: g(x)=f(x,y)*n(x,y)
g=imaginea afectată de zgomot
f=imaginea inițială
n=zgomotul aplicat
Zgomotul multiplicativ poate fi redus la unul aditiv daca se logaritmează prima relație.
Raportul semnal zgomot(SNR) reprezintă raportul dintre energia imaginii originale și
energia zgomotului suprapus.
Raportul PSNR este o dependență subiectivă a imaginii în funție de nivelul de zgomot.
Zgomotul cu distribuție uniformă este modelat ca o variabilă uniform distribuită între A
și -A.
g(x)=f(x,y)+n(x,y)=f(x,y)+ A * N
N reprezintă o variabilă aleatoare între -1 și 1.
Zgomotul cu distribuție normală ( gaussiană) este o variabilă cu distribuție normală N.
g(x)= f(x,y)+ A * N
N reprezintă o variabilă normală N(0,1).
Zgomotul multiplicativ este provenit prin fenomenul de suprapunere al imaginii cu
zgomotul.
g(x)=f(x,y)+ A * N* f(x,y)= f(x,y)*(1+ AN)
Zgomotul de tip ,, Sare și Piper” afecteaz[ pixelii în 2 moduri:
• sare: înlocuirea valorii cu valoarea maximă
• piper: înlocuirea valorii cu valoarea minimă
Efectul de zgomot este mai pregnant ca la cel gaussian datorită discrepanței între valoarea
curentă a pixelului și valoarea de înlocuire.

5.2 Filtre Spaţiale Liniare


Se înscrie în clasa operațiilor de îmbunătățire. Principalul scop al acestei operații fiind
eliminarea zgomotului care este suprapus unei imagini ce trebuie să știți că reprezintă o operație
de vecinătate.
Operaţia de filtrare spaţială este o funcţie liniară ai cărei parametri sunt pixelii din
vecinătatea pixelului curent (adesea reprezentată sub forma de pătrat/cerc).
Algoritm Filtre Liniare:

16
Se suprapune masca de intrare peste fiecare pixel ai imaginii originale astfel încât oricare
masca să coincidă cu pixel ul considerat, apoi se calculează toate produsele între coeficienții
mastii și valorile pixelilor peste care se suprapun acești coeficienți. Suma acestora reprezinta nou
valoare a pixelului considerat.(TEHNICA FERESTREI GLISANTE).

5.3 Proprietăţi ale convoluţiei


-Operator liniar
-Comutativitate
-Asociativitate(convolutie intre imaginea citita si un filtru,iar pe rezultat aplicam un al doilea
filtru sau facem o convolutie intre cele 2 filtre)
-Distributivitate(filtru aplicat pe doua imagini sau pe fiecare imagine in parte)
-Invarianta la shiftare
-Complexitaea computationala(nu conteaza dimeaniunea, timpul de filtrare variaza)
Separabilitatea unor nuclee in filtre
-> (operatia dintre convolutie dintre filtrele continute)
->rezultatele sunt de la unidimensional la bidimensional
->separarea pe linii si apoi pe coloeane pe baza unor fereste
->reduce complexitatea calculelor

5.4 FILTRE DE NETEZIRE(TRECE JOS)


-eliminarea frontului de banda larga
-sunt folosite pentru a reduce zgomotul din imagini
->Filtrul de mediere(toti coeficitentii de filtrare sunt egali, iar masca de filtrare sa fie f mica)
Parametrii unui filtru gaussian (variația 𝜎 și mărimea 𝑛)
Pentru o variație 𝜎 fixată, dacă 𝑛 este prea mic diminuarea zgomotului este redusă (prea puține
instanțe ale variabilei aleatoare care să se anuleze)
Pentru o variație 𝜎 fixată, dincolo de o anumită valoare a lui 𝑛, coeficienții filtrului devin nuli la
extremități.
În general, se alege alege 𝑛=2∗[3𝜎]+1
Cu cât 𝜎 este mai mare, cu atât suprafaţa gaussiană este mai plată ⇨ filtrul se apropie de cel de
mediere.

17
Dacă variaţia 𝜎 este mică, filtrul gaussian se apropie de filtrul identitate ⇨ reducere foarte mică
a zgomotului.

5.5 FILTRE DE CONTRASTARE (TRECE SUS)


->Urmăresc eliminarea componentelor de joasă frecvență din imagine
->răspund la accentuarea zonelor de tranziții
->atenuează sau blochează trecerea frecvențelor joase
-Imaginea contrastată = combinaţie liniară între imaginea originală şi detaliile acesteia (factorul
α).
Suma coeficienţilor unui filtru de contrastare :

(𝛼 + 1) ∗ 1 − 𝛼 ∑ 𝐿𝑖 = 𝛼 + 1 − 𝛼 = 1

Pe porţiunile constante, filtrul păstreaza intensitatea.


Coeficientul din centru este pozitiv şi mare iar restul coeficienţilor sunt negativi, descrescând în
valoare absolută către marginile ferestrei de filtrare

5.6 Conceptul de filtrare adaptivă


Idee : capacitatea filtrului de a-si ajusta comportarea(modul de calcul) în functie de anumite
criterii, urmărind optimizarea unor măsuri (ex. PSNR).
Criterii : variaţia în cadrul regiunii, diferenţa faţă de valoarea pixelului înainte de filtrare, etc.
Filtrarea adaptativă are un mod de calcul liniar dar dpdv. global nu mai este liniară! Adaptarea:
modificarea formei ferestrei de filtrare, modificarea coeficienţilor ferestrei.

5.7 Filtrare Adaptivă Direcţională


Forma filtrului este o linie orientată dupa o anumită direcţie (0, 45, 90, 135).
Pentru fiecare dintre direcţiile alese se obţine valoare. O diferenţă semnificativă ⇒ punctul
curent este situat pe un contur ⇒ filtrarea arproduce efectul de înceţoşare a imaginii.

5.8 Filtrarea Adaptivă cu Prag


Filtru liniar de netezire oarecare; rezultatul netezirii într-un punct este acceptat doar dacă
diferenţa faţă de valoarea originală este mai mică decât un prag impus.

18
5.9 Filtre de Ordine
Un filtru de accentuare a contrastului ⇒ valorile aberante vor ieşi şi mai mult în evidenţă.
O clasă a filtrelor neliniare bazată pe ideea de ordonare a valorilor pixelilor din cadrul ferestrei.

Idee : plasarea valorilor aberante la capetele şirului de valori ⇒ identificarea şi eliminarea


acestora.

𝑥_1≤𝑥_2≤…≤𝑥_(𝑛−1)≤𝑥_𝑛

Statistica de ordinul 1 : 𝑥_1 (minimul elementelor)

Statistica de ordinul 𝑛 : 𝑥_𝑛 (maximul elementelor)

Statistica de ordinul 𝑘 : 𝑥_𝑘 (elementul de rang k)

5.10 Filtrul de Ordine de Rang k


Se trece fereastra glisantă având 𝑛 elemente peste toţi pixelii din imaginea nefiltrată ⇒ statistica
de ordin 𝑘.

Proprietăţi :

1) Filtrele de ordine furnizează la ieşire valori ale

pixelilor din imaginea nefiltrată (valori vecine)

2) Zonele continue ale imaginii sunt nemodificate.

3) Filtrele de ordine nu afectează contururile

(pixelul/pixelii care diferă mult sunt izolaţi la

începutul sau la sfârşitul ferestrei, după ordonare)

5.11 Filtre de Ordine de Domeniu


Posibilitate de adaptare şi reglare a filtrelor de ordine.

19
Ieşirea filtrului LUM (Lower Upper Middle) de netezire:
𝑥𝑘 , 𝑑𝑎𝑐𝑎 𝑥 ∗ < 𝑥𝑘
𝑦 = {𝑥𝑛−𝑘+1 , 𝑑𝑎𝑐𝑎 𝑥 ∗ > 𝑥𝑛−𝑘+1
𝑥 ∗ , 𝑖𝑛 𝑟𝑒𝑠𝑡
𝑥 ∗ - pixelul din centrul ferestrei; 𝑘 – parametru reglabil
𝑛+1
𝑘 = 1 ⇒ filtru trece tot; 𝑘 = [ ] ⇒ filtru median.
2
➢ Dacă sunt puţine valori extreme ⇒ k mic (identitate)
➢ Dacă sunt multe valori extreme ⇒ k mare (izolare)
➢ Alegerea adaptivă a lui k reduce efectele de netezire!

5.12 Filtre de Ordine de Reliefare


Ieşirea filtrului LUM (Lower Upper Middle) de reliefare:
𝑥𝑘 + 𝑥𝑛−𝑘+1
𝑥𝑘 , 𝑑𝑎𝑐𝑎 𝑥𝑘 < 𝑥 ∗ <
2
𝑦= 𝑥𝑘 + 𝑥𝑛−𝑘+1
𝑥𝑛−𝑘+1 , 𝑑𝑎𝑐𝑎 < 𝑥 ∗ < 𝑥𝑛−𝑘+1
2
{ 𝑥 ∗ , 𝑖𝑛 𝑟𝑒𝑠𝑡
𝑥 ∗ - pixelul din centrul ferestrei; 𝑘 – parametru reglabil
𝑘 = 1 ⇒ filtru scoate valori extreme (reliefare maximă)
𝑛+1
𝑘=[ ] ⇒ filtru trece tot (filtrul identitate).
2

CURSUL 6 - Tipuri de procesare a imaginilor


Procesare=o transformare de tipul J=f(I)
1. Operatii punctuale: o corespondenta de tipul unu-la-unu intre vechea si noua valoare a
nivelului de gri
2. Operatii locale (sau de vecinatate) prin care noua valoare a nivelului de gri într-un
pixel depinde de pixelii din vecinătatea pixelului considerat (filtre 2D)
3. Operatii integrale, în care noua valoare a unui pixel este dependentă de valorile tuturor
pixelilor imaginii.

6.1 Caracterizarea zgomotelor


Zgomotul: semnal aleator care afecteaza informatia vizuala. Surse: achiziiti/transmisii/compresii

20
Moduri de alterare a imaginii cu zgomote:
• -zgomotul aditiv: g(x,y)=f(x,y)+n(x,y)
• -zgomotul multiplicativ: g(x,y)=f(x,y)*n(x,y)
• Zgomotul multiplicativ poate fi redus la unl aditiv daca se logaritmeaza relatia
matematica.
• Zgomotul (𝑥,𝑦) este modelat ca o variabilă aleatoare, având o anumită distribuţie de
probabilitate.
• Zgomotul de distribuţie uniformă : 𝑛(𝑥,𝑦) este o variabilă uniform distribuită între A şi
–A.

𝒈(𝒙, 𝒚) = 𝒇(𝒙, 𝒚) + 𝒏(𝒙, 𝒚) = 𝒇(𝒙, 𝒚) + 𝑨 ∗ 𝑵, unde N este cuprins intre -1 si 1


• Zgomotul de distribuţie normală (gaussiană) : 𝑛(𝑥, 𝑦) este o variabilă cu distribuţie
normală 𝑁(𝜇, 𝜎).

𝒈(𝒙, 𝒚) = 𝒇(𝒙, 𝒚) + 𝑨 ∗ 𝑵, unde N este o variabila cu distribuie normala N(0,1)(zgomot alb)

• Zgomotul gaussian produce mai puţine distorsiuni! (mai multe valori sunt aglomerate în
jurul lui 0)
• Zgomote multiplicative:

𝑛(𝑥, 𝑦) este o variabilă aleatoare de o anumită distribuţie depinzând însă şi de semnalul


𝑓(𝑥, 𝑦). 𝒈(𝒙, 𝒚) = 𝒇(𝒙, 𝒚) + 𝑨 ∗ 𝑵 ∗ 𝒇(𝒙, 𝒚) = 𝒇(𝒙, 𝒚) ∗ (𝟏 + 𝑨𝑵)

6.1.1 Zgomotul de tip “Sare si piper”


Zgomotul de tip “Sare si Piper” 𝑛(𝑥, 𝑦) afectează pixelii în două moduri :
➢ sare : înlocuirea valorii cu valoarea maximă (255)
➢ piper : înlocuirea valorii cu valoarea minimă (0)
Parametru: probabilitatea de a afecta un anumit pixel.
Ex. probabilitatea este 10% ⇒ în medie unul din 10
pixeli sunt afectați, ceilalți 9 ramânând nemodificați.
Efectul vizual este mai pregnant decât la zgomotul uniform/gaussian datorită discrepanței
între valoarea curentă a pixelului și valoarea de înlocuire (0/255).
Corespunde aparitiei a numeroase detalii. Daca o imagine ar fi filtrate linear, rezultatul ar
fi o accentuare a punctelor de zgomot si o corupere a valorilor punctelor din jurul lor.

21
6.2 Filtre spatiale liniare
• Operaţia de filtrare spaţială este o funcţie liniară ai cărei parametri sunt pixelii din
vecinătatea pixelului curent (adesea reprezentată sub forma de pătrat/cerc). Exemple: filtru
de netezire (blur) filtru de contrastare, filtru de mediere (aici e vorba de filtrele de la tema
1 de la STD)

6.3 Filre de netezire (trece jos)


• Sunt folosite pentru a reduce zgomotul din imagini. Valoarea filtrată a unui pixel : medie
ponderată a pixelilor din vecinătate; ponderile = nucleul filtrului .
• Reducerea zgomotului : media aritmetică a unor instanţe ale unei variabile aleatoare de
medie nulă (zgomot uniform sau gaussian) tinde către 0 …
Exemplu : media aritmetică a 100 de numere aleatoare întregi (distribuţie uniformă) între
-2 şi 2 …
• Reducerea zgomotului depinde de mărimea nucleului. Nucleu mare : efect pronunţat de
înceţoşare (blur)
• Aplicarea unui filtru Gaussian: (segmentarea imaginii inseamna impartirea in obiecte)
1) Alegerea unor parametri 𝜎 şi 𝑅 = 3𝜎 (99.73% valori)
2) Eşantionarea funcţiei lui Gauss pe o suprafata (2𝑘 + 1)𝑥(2𝑘 + 1): 𝑘 ∈
[𝑔𝜎 (−𝑅), 𝑔𝜎 (𝑅)]
3) Normalizarea matricii 2D (suma coef. să fie 1).
4) Calcularea vectorului nucleu pentru filtrare 1D.
5) Convoluţie orizontală cu vectorul 1D ⇒ imaginea J.
6) Convolutie verticală cu vectorul 1D pe imaginea J.
• Parametrii unui filtru Gaussian:

Parametrii unui filtru gaussian : variația 𝜎 și mărimea 𝑛 Pentru o variație 𝜎 fixată, dacă 𝑛 este
prea mic diminuarea zgomotului este redusă (prea puține instanțe ale variabilei aleatoare care să
se anuleze)
Pentru o variație 𝜎 fixată, dincolo de o anumită valoare a lui 𝑛, coeficienții filtrului devin nuli
la extremități. În general, se alege alege 𝑛=2∗[3𝜎]+1 Cu cât 𝜎 este mai mare, cu atât suprafaţa
gaussiană este mai plată ⇨ filtrul se apropie de cel de mediere. Problema filtrului de
mediere=efectul de blur …
Dacă variaţia 𝜎 este mică, filtrul gaussian se apropie defiltrul identitate ⇨ reducere foarte mică
a zgomotului. : în funcţie de imagine şi de amplitudinea zgomotului.

6.4 Filtre trece-sus


• L filtru trece-jos (netezire) : ex. de mediere/gaussian

I – filtrul identitate; F – imaginea; H(F) - detaliile


Un filtru trece-sus H : diferenţa dintre I şi L.

22
• Imaginea contrastată = combinaţie liniară între imaginea originală şi detaliile acesteia
(factorul α).

6.5 Filtrare liniara adaptive


Idee : capacitatea filtrului de a-si ajusta comportarea (modul de calcul) în functie de anumite
criterii, urmărind optimizarea unor măsuri (ex. PSNR).
Criterii : variaţia în cadrul regiunii, diferenţa faţă de valoarea pixelului înainte de filtrare, etc.
Filtrarea adaptativă are un mod de calcul linear dar dpdv. global nu mai este liniară! Adaptarea:
modificarea formei ferestrei de filtrare, modificarea coeficienţilor ferestrei.

6.6 Filtre de ordine


Filtrele de netezire liniare (trece-jos) permit eliminarea zgomotelor aditive care prezintă o
distribuţie normală sau uniformă.
➢ O imagine afectată de un zgomot de tip Salt/Pepper/Salt & Pepper filtrată liniar prin
netezire ⇒ valorile aberante (0/255) vor contamina în operaţia de mediere pixelul curent şi
pixelii vecini …

➢ Folosirea unui nucleu mai mare (ex. 9x9) limitează contaminarea dar afecteaza mult
detaliile imaginii.

➢ Un filtru de accentuare a contrastului ⇒ valorile aberante vor ieşi şi mai mult în evidenţă.

➢ O clasă a filtrelor neliniare bazată pe ideea de ordonare a valorilor pixelilor din cadrul
ferestrei.

➢ Idee : plasarea valorilor aberante la capetele şirului de valori ⇒ identificarea şi


eliminarea acestora.

➢ Se trece fereastra glisantă având 𝑛 elemente peste toţi pixelii din imaginea nefiltrată ⇒
statistica de ordin 𝑘.

Proprietăţi :
1) Filtrele de ordine furnizează la ieşire valori ale pixelilor din imaginea nefiltrată (valori
vecine)
2) Zonele continue ale imaginii sunt nemodificate.
3) Filtrele de ordine nu afectează contururile (pixelul/pixelii care diferă mult sunt izolaţi la
începutul sau la sfârşitul ferestrei, după ordonare) .
• Valorile punctelor de zgomot 0/255, după ordonare se vor afla la “capetele” şirului de
valori. Ieşirea filtrului este departe de valorile extreme.

23
• Filtrul poate fi “străpuns”(aici e vorba de zgomotele de tip sare si piper) : câteva valori
extreme reuşesc să rămână; aglomerare în cadrul ferestrei …(adica punctele nu au fost
afectate de filtru, au ajuns la iesirea filtrului)
• La filtrele mediane, probabilitatea de strapungere este dependenta de procentul de puncta
de zgomote din imagine si de dimensiunea ferestrei de filtrare pe care o alegem sa o
utilizam
• Mărirea ferestrei glisante rezolvă problema extremelor persistente, dar are efect de netezire

• Posibilitate de adaptare şi reglare a filtrelor de ordine.
• Ieşirea filtrului LUM (Lower Upper Middle) de netezire:

𝑥𝑘 , 𝑑𝑎𝑐𝑎 𝑥 ∗ < 𝑥𝑘
𝑦 = {𝑥𝑛−𝑘+1 , 𝑑𝑎𝑐𝑎 𝑥 ∗ > 𝑥𝑛−𝑘+1
𝑥 ∗ , 𝑖𝑛 𝑟𝑒𝑠𝑡
𝑥 ∗ - pixelul din centrul ferestrei; 𝑘 – parametru reglabil
𝑛+1
𝑘 = 1 ⇒ filtru trece tot; 𝑘 = [ ] ⇒ filtru median.
2

Dacă sunt puţine valori extreme ⇒ k mic (identitate)


Dacă sunt multe valori extreme ⇒ k mare (izolare)
Alegerea adaptivă a lui k reduce efectele de netezire!
• Ieşirea filtrului LUM (Lower Upper Middle) de reliefare:
𝑥𝑘 + 𝑥𝑛−𝑘+1
𝑥𝑘 , 𝑑𝑎𝑐𝑎 𝑥𝑘 < 𝑥 ∗ <
2
𝑦= 𝑥𝑘 + 𝑥𝑛−𝑘+1
𝑥𝑛−𝑘+1 , 𝑑𝑎𝑐𝑎 < 𝑥 ∗ < 𝑥𝑛−𝑘+1
2
{ 𝑥 ∗ , 𝑖𝑛 𝑟𝑒𝑠𝑡
𝑥 ∗ - pixelul din centrul ferestrei; 𝑘 – parametru reglabil
𝑘 = 1 ⇒ filtru scoate valori extreme (reliefare maximă)
𝑛+1
𝑘=[ ] ⇒ filtru trece tot (filtrul identitate).
2

24
SNR (signal noise ratio)=raportul dintre energia imaginii originale si energia
zgomotului suprapus acesteia, sau cat de mult a afectat zgomotul imaginea
PSNR (peak signal noise ratio)=dependeta subiectiva a calitati imaginii in functie de
nivelul de zgomot; in functie de aceasta imagine ne putem da seama de calitatea imaginii;
daca rezultataul este sub 30 de decibeli, calitatea imaginii este scazuta, 30-40 calitate buna,
peste 40 calitatea foarte buna; este mult mai specifica calitatii imaginii decat SNR-ul

CURS 7

7.1 Algoritmii de regresie logistica si SV


Ex:Avem o serie de studenti unde proprietatea de trecere este de 0 si 1, 0 picat, 1 promovat.
Trebuie sa cautam 2 constante a si b care sa aproximeze cat mai bine datele in generarea
granitei dintre rezultate, in cazul nostru se utilizeaza functia sigmoid. Dupa ce le-am gasit pot
interpreta rezultatul fct sigmoid (1/1+e^(-ax+b)), ca o probabilitate a rezultatului studentului sa
treaca (0,1).
Pentru o mai buna acuratete a functiei vom alege un trash-hold, o delimitare de mijloc a
rezultatelor unde acesta este x-ul unde probabilitatea de trecere este de 50%.

25
Ideea la regresie logistica este aceea de a nu merge direct pe trash hold pentru ca ma incurca
functia, ci mergem pe ideea de a gasi o functie derivabila care sa aproximeze datele.

7.2 SVM
Algoritmul dorestre sa gaseasca o granita de separare, un trash-hold.
Pleaca direct pe trash hold si nu pleaca pe ideea de a gasi o functie sa potriveasca datele si se
cauta trash-holdul respectiv.
Incerc sa gasesc o granita de separare care sa imi determine marginea maxima. Merg in ambele
grupari si identific punctele care sunt pe extrema, un punct este denumit un vector suport, un
punct din dataset care exista la limita exteriara a gruparii respective.

Trasez o granita de separare prin vectorul suport al unei grupari, apoi trasez si prin vectorul
suport al celeilalte grupari, iar granita finala a celor 2 grupari este granita egal departata de
granitele trasate prin cei 2 vectori suporti ai fiecarei grupari considerate.

CURS 8 – Transformata KLT. Recunoastere faciala.

Se lucreaza cu populatii, esantioane si caracteristici stocate in masive de date. Un eşantion de 𝑛


indivizi, o serie de caracteristici (X, Y, …). Exemplu: 𝑛 studenti şi 𝑚 caracteristici: înălţime,
greutate, nota la matematică, nota la fizică, nota la sport, nota la examenul de admitere.
Coeficientul de corelaţie liniar - gradul de corelare între doi vectori X şi Y; probleme în cazul
variabilelor cu unităţi de măsură diferite sau de scări diferite!
Coeficient de corelaţie Pearson - un număr între -1 şi +1 care indică intensitatea relaţiei
(modululul) şi direcţia relaţiei (semnul) dintre variabile.

26
Corelaţie pozitivă: valorile lui Y cresc, valorile X corespunzătoare cresc.
Corelaţie negativă: valorile lui Y cresc, valorile X corespunzătoare scad.
Inexistenta unei corelaţii: X şi Y sunt independente.
Corelaţie scăzută: posibilitatea unei legături între X şi Y, dar corelaţia nu e de natură liniară.

Corelaţia Pixelilor Vecini: pixelii adiacenti – puncte cu (x, y), au o probabilitate mare ca valorile
lor sa fie egale ⇒ alinierea punctelor pe prima bisectoare prin urmatoarea transformare:
(𝑥 ∗, 𝑦 ∗) = ((𝑥 + 𝑦)/2, (𝑦 − 𝑥)/2)

echivalentă cu rotaţia sistemului de coordonate cu 45º. Noile coordonate sunt mai puţin
corelate!
Compresie: valorile y* pot fi cuantificate şi/sau codate prin metode RLE sau VLC (ex. Huffman).

Distributiile initiale ale punctelor X, Y (stanga) si distributiile dupa transformare (dreapta).

27
Direcţiile de Variaţie – exemplu

Transformarea imaginii în modelul de


culoare RGB. Valorile de gri inferioare unui
prag ⇒ nuanţe de roşu.

Corelaţia între Caracteristici: 𝑛 indivizi şi o serie de caracteristici : {𝑋1,𝑋2, …𝑋𝑁} Informaţiile


stocate într-o matrice X de 𝑛𝑥𝑁 valori.
1
Matricea de Covarianţă: 𝐶𝑂𝑉[𝑋] = ∗ 𝑈 𝑇 ∗ 𝑈 indică tendinţa fiecărei perechi de trăsături să
𝑁
varieze împreună, sau să co-varieze.

Cantitatea de Informaţie: Două variabile corelate ⇒ variaţiile sunt asemănătoare. Informaţia


este deci dispersată pe cele N caracteristici. Căutăm o transformare liniară astfel încât informaţia
să fie concentrată în cateva direcţii (caracteristici Y). Am dori ca matricea Y să concentreze
informaţia în doar câteva componente (numite principale).
Componentele principale (vectorii transformarii liniare) ale lui X sunt direcţiile pe care se
manifestă cel mai puternic variaţiile valorilor din matrice. Componentele principale sunt date de
vectorii proprii ai matricii de covarianţă. Liniile din X se vor exprima în baza vectorilor proprii ai
matricii de covarianţă ⇒ Y.

KFT = Transformarea Karhunen-Loeve

Matricea Y păstrează complet informaţia: coloanele (caracteristicile) sale au aceeaşi variaţie


totală dar sunt complet decorelate ⇒ înlăturarea redundanţei din X!
Vectorul propriu corespunzător celei mai mari valori proprii reflectă direcția cu cea mai mare
variație. A doilea vector reflecta cea de-a doua directie si tot asa.
Se pot păstra doar 𝑘 dintre cele 𝑁 direcţii (vectori); cele 𝒌 direcţii sunt componentele principale!

28
Codarea prin Transformare: codarea vectorilor mai eficientă decât codarea scalară.
Dacă Y este rezultatul unei tranformări liniare T iar intrările din Y sunt mai puţin corelate, atunci
Y poate fi codat mult mai eficient decât X.
Compresia nu vine din transformată (ex. DFT, DCT, KLT) ci din cuantificarea componentelor lui Y.
Codare hibridă = transformare + cuantificare + VLC.

Decorelare prin Transformări


Transformarea optimală trebuie să decoreleze complet componentele setului X – compactarea
maximă a energiei/informaţiei în câţiva coeficienţi.
Decorelarea completă este dependentă de proprietăţile statistice ale imaginii (matrice de
covariaţie) ⇒ transformarea dependentă de imagine.
Şi alte transformate (DCT, DFT) asigură decorelarea informaţiei din imaginii însă KLT este
optimală.

Recunoastere Faciala – Eigen Faces

Principii de recunoastere faciala


Fiecare persoana are mai multe ipostaze ⇒ seturi de caracteristici faciale.

Imaginea de intrare ⇒ decuparea regiunii în care se află faţa persoanei ⇒ extragerea


caracteristicilor.
Compararea vectorului de caracteristici extrase cu vectorii din baza de date ⇒ extragerea
persoanei pentru care distanţa este minimă.
In baza de date fețele sunt pastrate ca imagini gri 128x128 in forma de vectori cu 128x128 valori.
Se extrage imaginea medie (mediere pe coloane).
Feţele proprii constituie o bază care reprezintă cel mai bine diferenţele care există între feţele
din baza de date! Nu sunt necesari toţi vectorii proprii pentru reprezentarea unei feţe.

29
Caracteristici Faciale Discriminante
În aplicaţii de compresie, ne dorim un 𝑚 astfel încât reconstrucţia să fie într-un PSNR rezonabil
(ex. 38 dB).
În aplicaţiile de recunoaştere, 𝑚 trebuie doar să permită distincţia feţelor folosind 𝒎
coeficienţi. În general se alege 𝑚 astfel încât să se păstreze 95%.

Distanțe pentru Recunoaştere: Euclidiană, Mahalanobis


Distanţa minimă între imaginea de test şi imaginea BD. Dacă distanța < T, atunci persoana este
recunoscută.

30
Scenarii posibile:

Alte Metode de Recunoaştere Facială:


Eigen Features: combină metricile faciale (distanţa între caracteristici faciale) cu analiza PCA.
Fisher Faces: utilizează tehnica LDA (Linear Discriminant Analysis). Mai puţin senzitivă la variaţii
de luminozitate şi la poziţia feţei).
Active Appearance Model: caracterizare a feţei bazat pe contururile feţei + analiza PCA.

Alte Aplicaţii ale PCA: Analiza Scrisului Olograf, Interpretarea Buzelor, Recunoaşterea Vocii,
Recunoaşterea Semnelor, Recunoaşterea Gesturilor, Analiza Imaginilor Medicale

31
CURSUL 9 – Segmentarea imaginilor

Algoritmii de segmentare se refera la impartirea unei imagini in obiectele care o


compun, practice partitionarea într-o serie de mulțimi de pixeli care să reprezinte obiecte
coerente (curbe, linii, diverse forme inteligibile la nivel înalt/semantic).
Caracterizarea regiunilor se face pe baza de criteriu de omogenitate (intensitate, culoare,
textură) și vecinătate spațială.

9.1 Aplicatii ale segmentarii:


1. Sisteme CBIR(Content Based Image Retrieval): cautarea imaginilor care contin anumite
elemente specificate intr-o baza de date (asemanator Google Images, cand cautam de
exemplu, in general, imagini cu elefanti – nu stim exact cum arata imaginea, stim ca vrea
sa aiba un elefant).
Criterii de similiaritate: culoare, textura, forma etc.

2. Detectarea obiectelor(face recognition/detection): identificarea unde intr-o imagine


apar fete, in prima parte(detection), ca mai apoi sa recunoastem fata(recognition).
3. Recunoasteri biometrice(a irisului si amprentei): partea de segmentare intervine in
detectia componentei biometrice
4. Imagistica medicala(detectia si clasificarea tumorilor): unde observam urmatoarele
caracteristici ale obiectelor, precum lungime, latime, arie, perimetru etc.
5. Urmarirea de obiecte in secvente video: putem, de asemenea, vorbi de supraveghere
video(detectarea unei persoane). O prima solutie pentru aceasta problema ar fi urmarirea
unei grupari de pixeli dintr-o poza/video

9.2 Tehnici simple de segmentare:


1. Bazate pe divizarea histogramei folosing praguri(Otsu, GMM, Bhattacharyya)
2. Metode de extindere a regiunii(plecand de la un pixel, extindem regiunea obiectului)
3. Metode de Split-And-Merge(QuadTree)

32
4. Metode bazate pe clustering(K-Means, Mean-Shift, cu numar cunoscut sau nu de
clustere)
5. Bazate pe forme(level set, active contours)
6. Metode bazate pe grafuri(graph-cut, random walk)
7. Metode de minimizare a energiei (ex. MRF)
8. Metode bazate pe tehnici de inteligență artificială(Rețele Neuronale Clasice sau
Convoluționale)

9.3 Algoritmul de extindere a regiunii


Manuală : se pleacă de la un pixel specificat și se extinde recursiv regiunea (prin
adăugarea de vecini) cât timp este satisfăcut un anumit criteriu de omogenitate.

9.3.1 Exemple de criterii de omogenitate :


• Pixelul să nu difere prea mult față de origine
• Pixelul să nu difere prea mult față de vecinul său
• Pixelul să nu difere prea mult față de media regiunii
Principiul de baza: sa avem toti pixelii din masca de imagine negri, cu exceptia celor care
compun obiectul de interes(pixeli din regiunea de interes), care sunt albi. Regiunea se
extinde uitandu-ne la vecini si daca da, ii adaugam in regiune. Se face recursive pana
vizitam toti vecinii.
Operatorul LBP(Local binary patterns) este folosit pentru a indica textura imaginii.

POZA CU
ALGORITMUL

33
Scopul transformărilor morfologice este extragerea de forme mai simple din
formele inițiale (mai complexe)care rezultă din procesul de segmentare al imaginii.
Ajută la conturarea unor forme incomplete sau la înlăturarea unor zgomote în urma
segmentării.
Exista doua tipuri de transformari morfologice: dilatare si eroziune. Practic
mergem prin imagine cu o fereastra si vedem pentru fiecare pixel din centrul
ferestrei daca vecinii sai sunt activi(au culoare alba) sau nu. Daca vecinii nu sunt
activi, dezactivam si vecinul in cauza(acesta este procesul de EROZIUNE).
DILATAREA = inlocuim valoarea pixelului cu valoarea maxima din fereastra,
contrar cu eroziunea, cand inlocuim cu valoarea minima.
Tipuri de dilatare:
a. Circulara: un pixel este contaminat dacă se află la o distanță 𝑅 față de un
pixel din mască
b. Dilatare pătratică / rectangulară : un pixel este contaminat dacă are un vecin
pe direcție verticală, orizontală sau diagonală la o distanță de maxim 𝑅

Diltarea poate avea loc doar pe orizontală/verticală!!!!

9.4 Proprietăți Matematice


Dilatarea și erodarea sunt transformări care nu păstrează numărul de numărul de obiecte.
Prin erodare se pot elimina componentele mai mici decât elementul structurant sau cele
mult diferite de acesta dpdv. al formei ⇒ în general mai multe forme.
Rezultatul dilatării : reuniunea mai multor componente conexe ⇒ singură componentă conexă;
Găurile conţinute într-o formă pot fi umplute.
Deschiderea morfologică a mulţimii A prin elementul structurant B se defineşte ca
erodarea mulţimii cu elementul structurant respectiv, urmată de dilatarea cu acelaşi element
structurant :
𝑨 ∘ 𝑩 = (𝑨 ⊖ 𝑩) ⊕ 𝑩 ⊆ 𝑨
Efectul deschiderii : înlăturarea obiectelor mici izolate faţă de regiunea principală;
nivelează conturul regiunilor şi separă regiunea faţă de regiuni vecine.
Închiderea morfologică a mulţimii A prin elementul structurant B se defineşte ca
dilatarea mulţimii cu elementul structurant respectiv, urmată de erodarea cu acelaşi element
structurant :
𝑨⨀𝑩 = (𝑨 ⊕ 𝑩) ⊖ 𝑩 ⊇ 𝑨

34
Efectul închiderii : înlăturarea găurilor mici din cadrul regiunii, extinderea uşoară a
regiunii. Reuneşte obiecte care sunt foarte apropiate spaţial.

Varianta automată : se pleacă cu pixelul din stânga sus, se realizează segmentarea primei
regiuni
Se continuă procesul de segmentare cu primul pixel care nu a fost clasificat în niciuna dintre
regiuni …
Dezavantaje majore :

• Praguri diferite pentru segmentarea fiecărei regiuni


• Parcurgerea imaginii de la stânga la dreapta şi de sus în jos influenţează rezultatul
segmentării
Daca avem un prag prea mic, avem efectul de suprasegmentare, daca e prea mare, obtinem
subsegmentare.

9.5 Caz simplu de segmentare prin binarizare


Legatura dintre binarizare si segmentare este ca, in anumite cazuri, binarizarea ne ofera
direct o segmentare(obtinem obiectul de interes). Binarizarea se poate face cu un prag static,
fixat de utilizator, sau dynamic (Mediana, Otsu, K-Means).

9.6 Caz complex de segmentare prin binarizare


Dacă se cunoaşte numărul obiectelor (modurilor) ⇒ aplicarea algoritmului K-Means sau
GMM
GMM (Gaussian Mixture Model) : modelarea histogramei ca sumă ponderată de diferite
gaussiene
Dacă nu se cunoaşte numărul obiectelor (modurilor) ⇒ aplicarea algoritmului Mean-
Shift (ulterior)

9.7 Reprezentarea culorii in HSV(Hue, Saturation, Value)


Ajuta la cresterea eficientii segmentarii cu K-Means.
Hue : unghiul, indică nuanța (roșu, verde, albastru)
Saturation : saturația nuantei (pură sau vagă)
Value : intensitatea nuanței (deschis/închis)

35
9.8 Proprietati K-Means

Eficient pe clustere sferice (grupate) bine separate

K-Means mai puțin eficient pe clustere prelungite

9.9 Gaussian Mixture Models


Ideea de la care se pleaca: avem niste puncte in plan, pe care dorim sa le clusterizam.
Spre deosebire de KMEANS sau DBSCAN, GMM nu clusterizeaza spatial, adica bazat pe distanta
intre puncte. In cazul GMM, fiecare cluster e identificat de o distributie Gaussiana, care e
definita de o medie si de o dispersie.
Avem N puncte, fiecare cu probabilitatea p(xi). Ne intereseaza sa gasim densitatea de
probabilitate. Pentru a face asta, ne intereseaza sa gasim media si varianta unei combinatii de
distributiii Gaussiene ale valorilor.
Probabilitatea reala p(xi) e data de urmatoarele formule:
𝒌

𝒑(𝒙) = ∑ 𝝎𝒊 𝑮(𝒙, 𝝁𝒊 , 𝝈𝒊 )
𝒊=𝟏
𝒌

∑ 𝝎𝒊 = 𝟏
𝒊=𝟏

1 (𝑥−𝜇)2
𝐺(𝑥, 𝜇, 𝜎) = 𝜎√2𝜋 𝑒𝑥𝑝 (− ) - Gaussiana
2𝜎2

9.10 EM (Expectation-Maximization)
Expectation : fiind cunoscute datele modelului (𝜔𝑗 , 𝜇𝑗 , 𝜎𝑗 ), se calculează probabilitatea fiecărui
punct (pas similar cu asignarea punctelor în clustere) cu formula:
𝝎𝒋 𝑮(𝒙, 𝝁𝒋 , 𝝈𝒋 )
𝒑𝒓𝒐𝒃(𝒙 ∈ 𝑮𝒋 ) = 𝒌
∑𝒊=𝟏 𝝎𝒊 𝑮(𝒙, 𝝁𝒊 , 𝝈𝒊 )

36
Algoritm EM
Se aleg aleatoriu datele modelului (𝜔𝑗 , 𝜇𝑗 , 𝜎𝑗 ); 𝑗 = ̅̅̅̅̅
1; 𝑘

Pasul 1 (Expectation ) : se calculează probabilitatea fiecărui punct de a aparţine unei anumite


gaussiene 𝐺𝑗

Pasul 2 (Maximization) : se recalculează datele modelului (𝜔𝑗 ′, 𝜇𝑗 ′, 𝜎𝑗 ′) în funcţie de


probabilităţile ant.
Se reiterează paşii 1 şi 2 până când datele modelului nu se modifică sau până la un număr
maxim de iteraţii.

9.11 Tehnica Split and Merge


Se pleaca de la imaginea initiala.
Se divide recursiv in regiuni daca nu este omogena.
Recursivitatea se opreste cand regiune a devenit omogena sau devine minima 2x2 pixeli.

Daca regiunile sunt vecine spatial si suficient de similare, se face reuniunea acestora.
Se pleaca de la regiuni mici: 2x2 4x4
Se cauta recursiv regiuni care pot fi reunite pana nu mai exista posibilitate de reuniune.

9.12 Algoritmul Mean Shift


Determina toate clusterele posibile dintr-o multime, cautand varfurile din functia de densitate
probabilistica, lucreaza prin determinarea centroizilor clusterelor dintr-o multime.
Mean-Shift vs K-means: La Mean-shift nu trebuie cunoscut apriori numarul de clustere.
Aplicatie: Analiza datelor multi-dimensionale.

37
LABORATOARE
Laboratorul3 - Studierea algoritmilior de reducere a numarului de culori
Motiv: Numarul de culori dintr-o imagine are un impact semnificativ asupra memoriei necesare pentru
reprezentarea imaginii respective.

Scop: Reducerea memoriei necesare stocarii unei poze prin reducerea numarului de culori, pastrand o
fidelitate cat mai mare.

3.1 Cuantificarea uniforma (cea mai simpla strategie)


Plecand de la vizualizarea spatiului culorilor ca un spatiu tridimensional (Red Green Blue drept axele R,
G, B in imagine), putem considera ca fiecare din punct acest spatiu defineste o culoare.

Ideea cunatificarii uniforme consta in impartirea acestui cub in cubulete egale si restrangerea numarului
total de culori de la 2563 la numarul de cubulete. Toate culorile care apartin unui cubulet vor fi inlocuite
cu o culoare reprezentativa (valoare aproximata) a cubuletului respectiv.

Valoarea aproximata se poate face dupa diferite reguli:

- cea mai mica valoare din cub


- valoarea medie
- valoarea maxima
- centrul cubuletului, etc.

Ex:

Avem sirul 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 si vrem sa-l impartim in 3. Stim ca avem 12 elemente,


deci vor fi 4 elemente per grup (12 / 3 = 4).

38
Vom avea 0, 1, 2, 3 | 4, 5, 6, 7 | 8, 9, 10, 11. Daca folosim regula cu cea mai mica valoare
vom avea:

- 0, 1, 2, 3 -> toate aproximate la 0


- 4, 5, 6, 7 -> toate aproximate la 4
- 8, 9, 10, 11 -> toate aproximate la 8

Deci vom avea 3 grupuri, fiecare avand o valoare reprezentativa 0, 4, resepctiv 8.

Formula matematica:
𝑁 𝑇
𝑥 = [𝑇 ]∗ 𝑁
, unde N este numarul de nivele, iar T este numarul total de valori. ATENTIE! [y]
inseamna partea intreaga a lui y!

In cuantificarea uniforma fiecare dintre cele 3 canale (R, G si B) sunt reduse la N nivele prin urmare
numarul total de culori este redus la 𝑁 3 , unde N este egal cu lungimea laturii cubuletului.

Ex:

Pentru N = 2 :

Vom avea 𝑁 3 = 23 = 8 culori (in teorie).

In cazul de fata, avem doar 6 culori, deoarce in imagine nu au existat culori care sa se
aproximeze la celelalte 2 (sa faca parte din celelalte 2 grupuri). Numarul culorilor a fost
demonstrat de proful cu un script in python).

Se face o comparare intre cele 2 imagini (imaginea originala si imaginea cu numar de culori
redus) si se calculeaza cat de mult s-a deteriorat imaginea in urma reducerii numarului de culori. Acest
lucru se numeste „metrica PSNR”.

39
Graficul de mai jos reprezinta relatia dintre valoarea PSNR pe axa Y si numarul de culori (𝑁 3 ) pe
axa X:

„Spike”-urile (varfurile din imagine) depind de continutul imaginii (difera de la imagine la imagine) si
apar deoarce sunt anumite valori ale lui N, care se potrivesc mult mai bine pentru imaginea respectiva.

3.2 ColorMap
O imagine in tonuri de gri se reprezinta ca o matrice de numere intregi cu valori intre 0 si 255. Pentru a
ajunge de la aceasta reprezentare logica la ceea ce se vede efectiv in poze se foloseste un colormap. Se
considera ca valorile din imagine reprezinta indecsi catre triplete RGB din colormap.

Colormap-urile sunt functii care asociaza fiecarui numar real cuprins intre 0 si 1 un grup de 4 numere
reale cuprinse intre 0 si 1. Prime 3 numere reale reprezinta intensitatiile RGB, iar al patrulea reprezinta
factorul de transparenta al imaginii.

Deoarce colormap-urile lucreaza cu numere intre 0 si 1, inainte de ale folosi imaginea se normalizeaza
prin impartirea la 255.

Colormap-urile sunt predefinire de exemplu in matplotlib (librarie din python).

Ex:

40
In imagine putem observa cum initalizam variabila „viridis” prin apelul functiei
cm.get_cmap specificand numele colormap-ului dorit si numarul de culori pe care dorim sa-l
extragem. Matricea intoarsa are dimensiunea de 12 * 4 (12 culori, fiecare culoare reprezentata
de 4 numere reale intre 0 si 1 -> r,g,b, respectiv transparenta).

Se poate observa care este maparea valorii 0.56

Normalizarea de la intervalul 0-255 la intervalul 0-1, prin impartirea numerelor discrete la


valoarea 255, se face deoarce avem nevoie ca functia sa fie diferentiabila, astfel este necesara trecerea
de la intervalul discret la un interval continuu. (Functia diferentiabila trebuie sa fie continua)

Pentru a reveni in intervalul discret 0-255 se inmulteste respectivul numar din intervalul
continuu 0-1 cu valoarea 255 si se aproximeaza.

ATENTIE! Functia „plt.imshow” foloseste default colormap-ul viridis! Pentru a reprezenta


imaginea in tonuri de gri asa cum trebuie, este necesar utilizarea colormap-ului „gray”.

-> viridis (prima imagine -> cea din stanga)

-> Gri (a doua imagine -> cea din dreapta)

3.3 Reducerea numarului de culori folosind ColorMap-uri


Daca imaginea este color, aceasta va fi convertita in tonur ide gri. Se va genera apoi un colormap cu
numarul de culori la care dorim sa reducem imaginea initiala. Fiecare ton de gri va fi mapat catre o
culoare din paleta.

Determinarea celor mai importante culori:

- Se imparte cubul RGB in cubulete de latura / dupa cum a fost aratat la cuantificarea
uniforma
- Se parcurge imaginea si pentru fiecare culoare (triplet rgb) este incrementat un
counter specific cubuletului din care face parte acea culoare

41
- Se sorteaza crescator cubuletele in functie de numarul de culori din imagine gasite in
fiecare dintre acestea
- Se aleg cele mai importante culori ca fiind cele date de centrele primelor N cubulete,
unde N este numarul de culori la care se doreste sa se reduca imaginea

Laboratorul 4
4.1 K-Means
Este un algoritm de clusterizare (grupare).

import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn.datasets import make_blobs

# Centroizi
centers = [[2, 1], [-4, -2], [1, -4], [0, 3]]
# Numarul de clustere (trebuie sa fie mai mic sau egal cu len(centers))
n_clusters = 4

# Creeaza un seed random si il seteaza pe 0


np.random.seed(0)

# Face clustere random folosind centroizii si deviatia standard din 5000 de


puncte
X, y = make_blobs(n_samples=5000, centers=centers, cluster_std=0.5)

# Seteaza Clusterizarea K-Means


# n_init inițializează diferiți centroizi la fiecare rulare și cea mai bună ieșir
e este afișată
# n_clusters este numarul de clustere pe care le vrem
k_means = KMeans(n_clusters=n_clusters, init="k-means++", n_init=12)

# Fit KMeans model with feature matrix, X


# Clusterizarea KMeans cu matricea carcaterisitca, X
k_means.fit(X)

# Preluare label-uri pentru fiecare punct din model


k_means_labels = k_means.labels_

# Obtine coordonatele punctelor din centrele clusterelor


k_means_cluster_centers = k_means.cluster_centers_

# Initalizare plot

42
fig = plt.figure(figsize=(8, 5))

# Produce o serie de culori (color map) pe baza numărului de etichete care există
.
colors = plt.get_cmap('Spectral')(np.linspace(0, 1, len(set(k_means_labels))))

# Creeaza un plot cu background negru


ax = fig.add_subplot(1, 2, 1, facecolor='black')
bx = fig.add_subplot(1, 2, 2, facecolor='black')

ax.scatter(X[:, 0], X[:, 1], marker='.', edgecolors='white')

ax.set_title('Inital-Distribution')
# Sterge semnele de pe axa X
ax.set_xticks(())
# Sterge semnele de pe axa Y
ax.set_yticks(())

# Plotarea punctelor si centroizilor din cluster


for k, col in zip(range(len(centers)), colors):
# Creeaza o lista cu toate punctele din cluster, care sunt label-uite true
members = (k_means_labels == k)

# Definirea centroidului (centrul clusterului)


cluster_center = k_means_cluster_centers[k]

# Plot-uirea punctelor cu coloare col


bx.plot(X[members, 0],
X[members, 1],
'w',
markerfacecolor=col,
marker='.')

# Plot-uirea centroizilor cu coloarea specifica, dar cu margine inchisa


bx.plot(cluster_center[0],
cluster_center[1],
'o',
markerfacecolor=col,
markeredgecolor='k',
markersize=6)

bx.set_title('KMeans-Clustering')
# Sterge semnele de pe axa X
bx.set_xticks(())
# Sterge semnele de pe axa Y

43
bx.set_yticks(())

# Afisare plot
plt.show()

4.2 Reducerea numarului de culori folosind algoritmul k-means


Algoritmul determina k clustere in acest spatiu urmand apoi sa inlocuim fiecare culoare cu centroidul
clusterului de care apartine. Concret, pasii sunt urmatorii:

- Citirea imaginii si crearea unei matrici cu toate culorile care apar in aceasta.
Matricea o sa aiba forma de N * 3, unde N reprezinta numarul de pixeli
- Aplicarea algoritmului k-means pentru setul (matricea) construita anterior
- Inlocuirea fiecarei culori din imagine cu centroidul de care apartine.

Numarul de culori va fi egal cu numarul de clustere (numarul de centroizi).

Este una dintre cele mai eficiente metode de reducere a numarului de culori.

Ex:

Pastrand doar cele mai importante 4 culori (4 clustere), am obtinut urmatorul rezultat:
(imaginea din stanga este originala, imaginea din dreapta este redusa)

4.3 Clasificarea cifrelor scrise de mana folosind K-Means


Clasificarea in general este o problema de invatare supervizata.

K-Means este un algoritm de invatare nesupervizata, prin urmare trebuie sa adaptam problema pentru
acest tip de invatare.

Mod de lucru:

1. Daca am avea 70000 de imagini cu cifre scrise de mana, am folosi 60000 pentru
antrenarea algoritmului si 10000 pentru verificare.

44
2. Luam fiecare imagine si o liniarizam. Daca imaginea ar avea dimensiunea de 28 pe
28 prin liniarizare am avea un punct de 784
3. Luam toate punctele si le clusterizam in 10 clustere (pentru ca avem 10 cifre de la 0
la 9). Obtinem centroizii in urma clusterizarii.
4. Pentru verificare luam imaginea pentru care vrem sa aflam ce cifra se afla in ea.
Aplicam transformarea de la punctul 2. Calculam distantele dintre punctul nostru si
fiecare centroid. Luam distanta minima si consideram ca punctul apartine clusterului
centroidului respectiv.

Atentie! In practica nu functioneaza cu 10 clustere. Este necesar un numar mai mare de clustere.

Laboratorul 5 - DBSCAN
DBSCAN (Density-based spatial clustering of applications with noise) este un algoritm de
clusterizare bazat pe densitatea regiunilor de puncte. Vecinatatea unui punct p se defineste ca
multimea punctelor aflate la o distanta cel mult ϵ de acest punct. Densitatea in jurul unui punct p
se defineste ca numarul de puncte din vecinatatea acestuia. Algoritmul functioneaza astfel:

1. Se primesc ca si argumente de intrare doua numere naturale: ϵ si minPoints(nr min de


puncte pt a creea un cluster)
2. Se alege primul punct nevizitat si se calculeaza vecinatatea acestuia
3. Daca in aceasta vecinatatea exista un numar mai mare se egal cu minPoints de puncte,
atunci vecinatatea va forma un cluster. In caz contrar, punctul este considerat outlier.
4. Se alege un punct din vecinatatea creata sau urmatorul punct nevizitat si se revine la
pasul 2.
5. Se continua pana se viziteaza toate punctele.

In cazul in care se gaseste o multime de puncte mai mica de minPoints, atunci acele puncta vor fi
setate ca Noise

Avantajul DBSCAN fata de K-means: detecteaza anomaliile si nu este necesar sa cunoaste nr de


clustere

45
5.1 Clusterizare blob-urilor

K means vs dbscan

Diferenta intre k-means si DBSCAN asupra datelor circulare

K means vs dbscan

46
Laboratorul 6 – Compresii Lossless

Codarea diferentiala – comparam histogramele imaginilor inainte de codare si dupa


codare.
Avem o imagine in tonuri de gri deci variatia de la un pixel la altul este mica. Pentru o
codare eficienta, retinem valorile primei coloane iar apoi retinem doar diferentele de la o
coloanal la alta. Imaginea devine destul de neteda:

Legatura intre eficienta codarii si entropie: entropia se masoara in biti de informatie/simbol.


Entropia indica un prag minim in ceea ce priveste un algoritm de codare. Codarea e mai
eficienta atunci cand e facuta pentru toata imaginea decat pentru block-uri.

6.1 Codarea Huffman


codificam simbolurile cu probabilitate mare pe mai putini biti. Deci cu cat apare un simbol mai
mult, cu atat el trebuie codificat pe mai putini biti.
Determinarea lungimii medii de cod Huffman:
clear all;
I=imread('lena512.bmp');

47
F=imhist(I);
symbols = [0:255]; % Setul de simboluri distincte ale sursei
p = F./sum(F); % distributia de probabilitate specifica sursei
[dict,avglen] = huffmandict(symbols,p); % crearea dictionarului Huffman

Compresia Huffman:
comp = huffmanenco(I(:),dict); % Encode the data.
Decompresia Huffman:
J = huffmandeco(comp,dict); % Decodarea codului Huffman
J=reshape(J,512,512); J=uint8(J);
imshow(J); % verificarea compresiei fara pierderi

6.2 Compresia Aritmetica


Compresia aritmetică este cea mai performantă metodă de compresie din familia metodelor
statistice. În forma ei de bază, ea introduce ideea codării unui şir de simboluri printr-un interval,
mai exact printr-un cod binar care reprezintă un număr în interiorul acelui interval. Dificultatea
esențială a compresiei aritmetice constă în micșorarea progresivă a intervalului de-a lungul
iterațiilor şi ajungerea la imposibilitatea de a reprezenta suficient de fin/precis limitele acestuia.
Din punct de vedere practic, pentru ca metoda să fie eficientă şi pentru a înlătura limitările
legate de reprezentarea finită a mașinii de calcul, se introduc două idei importante:
a) transmiterea progresivă a șirului binar prin observarea unui prefix comun de biți pe care îl au
cele două capete ale intervalului.
b) expandarea/dublarea lungimii intervalului după ce au fost transmiși biții de prefix comuni
celor două capete ale intervalului.
Codarea aritmetica este mai eficienta decat codarea Huffman

48
Laboratorul 7 – DCT si JPEG
Compresia JPEG este o compresie cu pierderi, deoarece scoatem din imagini frecventele inalte,
pe care le zeroizam. Se castiga pe partea de compresie. Calitatea imaginii e inv prop cu eficienta
compresiei.

Ochiul uman este mai sensibil la frecvente joase decat inalte.

A descompune o imagine in frecvente presupune a scrie acea imagine ca o combinatie liniara de


suprafete cosinusoidale. Se scrie ca o combinatie liniara de alte imagini.

Pe jpeg, a descompune o imagine in frecventa inseamna a o descompune intr o combinatie


liniara de cele 64 de suprafete cosinusoidale.

Compresie jpeg: imagini in tonuri de gri, de dimensiune 8x8, dar functioneaza pe mai multe
imagini.

Ex: Am o imagini de 16x16, pot sa aplic compresie jpeg? Da, fiindca o sparg in blocuri de 8x8.

Suprafata cosinusoidala: cos(k1*x) * cos (k2*y). K1 si k2 o sa controleze frecventa suprafetelor


cosinusoidale.

Un semnal vizual variaza in spatiu (lungime si latime).

Transformata DCT (transformata cosiuns discreta): Aplicarea unei transformate liniare (KLT,
DCT, DFT, etc.) poate fi interpretată şi în sensul descompunerii unei imagini digitale într-o anumită
bază. În cazul DCT, această bază ia forma unor cosinusoide 2D, iar un mod intuitiv de a înţelege
acest lucru îl constituie vizualizarea imaginii ca o suprafaţă 3D discretă z=f(x,y) :

a) Pentru o imagine de dimensiune MxN, formula care caracterizează matricea de


frecvenţe 𝑢 şi 𝑣 din baza DCT este următoarea :

(2𝑖 + 1)𝑢𝜋 (2𝑗 + 1)𝑣𝜋


𝐷𝐶𝑇𝑢,𝑣 (𝑖, 𝑗) = cos ( ) ∗ cos ( )
2𝑀 2𝑁

49
Laboratorul 8

Clasificarea imaginilor in dormitoare curate/murdare:

Dataset:

– test

– training

Functia sigmoid =

Fiecare punct(din desenul cu rosu si albastru) are o coordonata x si o coordonata y si un label(culoarea)


si formeaza un sample, in spatial 3D.

Ideea din spate este sa gasim Θ = [Θ0, Θ1, Θ2] adecvat.

50
Functia sigmoid returneaza probabilitatea ca punctual sa fie rosu/albastru.
Daca functia este construita sa returneze probabilitatile raportat la sansa ca punctual sa fie rosu,
cand calculez pentru un punct rosu, este de dorit ca rezultatul sa fie cat mai aproape de 100%, iar
in cazul punctelor albastre sa fie cat mai aproape de 0%.

Se tine cont de functia de cost, daca de exemplu pentru un punct albastru obtin probabilitate de 70%
sa fie rosu, modific Θ0, Θ1, Θ2.
Ideea e sa pornesc de la un dataset, pentru fiecare punct cunosc label-urile si gasesc vectorul Θ.

Cand apare un punct despre care nu cunosc nimic(unul nou), il bag in functia sigmoid si aflu ceva
despre el(folosesc Θ anterior de la etapa de training).

Prima faza:Verific cat de bine functioneaza caracteristicile: medie si varianță si in baza lor clasificam
folosind regresia logistica si SVM.
Faza 2: Clasificam in baza histogramei, din nou, folosim regresia logistica si SVM.

In primul „experiment”: coordonata x = media si coordonata y = varianta


Un punct = sample
O coordonata = feature

Dormitor curat -> varianta mica, intuitiv.


Contrastul poate sa ofere si el o informatie.
Cand instantiez algoritmul, eu trebuie sa ii dau matricea de coordonata pentru puncte si vectorul de
label-uri.

Pentru standardizarea fatelor, trebuie sa le scalez.


Regresie logistica <-> „fac fit”
Θ0 = intercept
Θ1, Θ2 = coeficienti
Ca sa nu construiesc manual functia sigmoid -> predict.
Probabilitatile transmit cat de sigur este algoritmul cand ia o decizie.

Histograma => 256 features.

51
Laboratorul 9 – Introducere in retele neuronale
Retelele neuronale sunt sisteme adaptive de tip cutie neagra (black-box) care permit
extragerea unui model pornind de la date printr-un proces de invatare.
În esență, arhitectura unei rețele neuronale este caracterizată de numărul de straturi, un număr
de neuroni pe fiecare strat, un algoritm de antrenare și un algoritm de operare. Algoritmul de
operare are rolul de a transforma datele de intrare în date cu o anumită semnificație în funcție de
scopul rețelei, iar algoritmul de antrenare indică rețelei neuronale cum anume poate să
dobândească noi cunoștințe pe baza datelor de intrare. Rețeaua este instruită pornind de la un set
de date care pot fi direct clasificate sau pentru care este necesară calcularea anumitor
caracteristici înainte de a începe procesul de clasificare. Procesul prin care o rețea neuronală
„învață” cum să recunoască un model poate avea două abordări:

• rețeaua învață să producă un anumit model pe baza setului de date de intrare de fiecare
dată când se aplică un model particular de intrare
• rețeaua detectează periodicitatea în care neuronii învață să răspundă la anumite
proprietăți ale modelelor de intrare. Această paradigmă de învățare este esențială pentru
descoperirea trăsăturilor și pentru reprezentarea cunoștințelor.

Din punct de vedere structural, o retea neuronala este compusa dintr-o serie de unitati functionale
(neuroni) interconectate. Indiferent de numarul de neuroni, o retea neuronala are urmatoarele
elemente:

• semnale de intrare y1, y2,...,yn


• ponderi sinaptice w1, w2,...,wn
• prag w0 (modeleaza pragul de activare al neuronului)
• iesirea y.

52
Din punct de vedere al metodei de antrenare/invatare, distingem:

• supervizate (se cunosc exemplele de antrenare de forma: date de intrare, raspuns corect
iar scopul invatarii este acela de a estima parametrii care minimizeaza eroarea - diferente
intre raspunsurile corecte si cele produse de catre retea)
• nesupervizate (se cunosc doar datele de antrenare iar scopul invatarii este acela de a
estima parametrii modelului pe baza proprietatilor statistice ale datelor de intrare).

După etapa de antrenare, o rețea neuronală acționează ca un "expert" în analiza unor seturi de
date. De aceea, utilizarea unei rețele neuronale prezintă o serie de avantaje:

• capacitatea de a învăța să îndeplinească o sarcină pe baza datelor furnizate în etapa de


antrenare;
• posibilitatea de a-și actualiza procesul de antrenare pe baza datelor obținute (în cazul
rețelelor adaptive)

Pentru a proiecta o retea neuronala se parcurg urmatoarele etape:

• alegerea arhitecturii (numarul de nivele, numarul de unitati pe fiecare nivel, modul de


interconectare, functii de activare)
• antrenarea (determinarea valorilor ponderilor pornind de la setul de antrenare folosind un
algoritm de învățare)
• validarea rețelei (analiza comportării rețelei pentru date ce nu fac parte din setul de
antrenare).

9.1 O retea neuronala simpla


Pentru a crea o retea neuronala se foloseste functia Sequential. Aceasta functie permite
adaugarea unui numar oricat de mare de straturi retelei neuronale. Straturile vor fi conectate intr-
o maniera "secventiala". Fiecare strat poate fi particularizat cu propria functia de activare.
Modelul de mai jos este instantiat cu 3 straturi:

53
1. Primul strat preia imaginea de input de dimensiune 28x28. Acest strat are rolul de a
"aplatiza" inputul.
2. Al doilea strat (stratul ascuns) este alcatuit din 128 de neuroni. Functia de activare este
functia relu.
3. Al treilea strat este stratul de iesire. Are 10 neuroni. Outputul acestor neuroni reflecta
probabilitatea ca inputul sa reprezinte o anumita cifra. De exemplu, iesirea primului
neuron reflecta probabilitatea ca inputul sa reprezinte cifra 0.

model = tf.keras.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28, 1)),
tf.keras.layers.Dense(128, activation=tf.nn.relu),
tf.keras.layers.Dense(10, activation=tf.nn.softmax)
])

Dupa definirea retelei (modelului), acesta este "compilat". Operatia nu trebuie sa fie
interpretata in sensul clasic al cuvantului. In aceasta etapa, se specifica algoritmul de optimizare
folosit de retea (adam), functia de calcul a erorii (SparseCategoricalCrossentrop) si metrica de
evaluare (accuracy).
Dupa cum a fost precizat, ultimul strat reprezinta iesirea retelei. Fiecare neuron reflecta
probabilitatea ca outputul sa reprezinte o anumita cifra. Acest output trebuie evaluat pentru a
determina cat de "departat" este de outputul dorit. Pentru a evalua outputul este nevoie de un
algoritm care sa faca acest lucru. Acest algoritm este in cazul de
fata SparseCategoricalCrossentropy. De asemenea avem nevoie si de o metrica cu ajutorul
careia sa evaluam reteaua pentru setul de date de testare. O astfel de metrica este acuratetea
(raportul dintre numarul imaginilor clasificate corect si numarul total de imagini clasificate
(corect sau incorect)).

model.compile(optimizer='adam',
loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
metrics=['accuracy'])
Problema cu algoritmul Gradient descent o reprezinta updateul ponderilor care se
efectueaza dupa fiecare imagine considerata. Acest mod de lucru conduce la un timp de
antrenare foarte lung. Din acest motiv, in practica se foloseste varianta de BATCH. In exemplu
de mai jos, BATCH_SIZE este 32. Aceasta inseamna ca datasetul va fi interpretat in chunk-uri
de 32 in ceea ce priveste update-ul ponderilor.
Intuitiv, dupa fiecare imagine parcursa, se calculeaza eroarea dintre outputul retelei si
outputul corect. In urma acestei erori, sunt actualizate ponderile retelei. Daca aceste ponderi sunt
updatate dupa fiecare imagine, procesul de antrenare va dura foarte mult. Solutia este ca updateul
ponderilor sa fie efectuat dupa 32 de imagini considerate. Mai exact, se mediaza erorile provenite
din 32 de imagini si in urma acestei medii se updateaza ponderile.

54
9.2 Retele neuronale de convolutie
Progresele înregistrate în domeniul ANN au condus la dezvoltarea unor arhitecturi complexe,
denumite rețele neuronale convoluționale -CNN, capabile să recunoască și să clasifice modele cu
un cost computațional scăzut și un număr mic de operații efectuate pentru determinarea
numărului de parametri. În general, CNN au două componente:

• O componentă de extragere a trăsăturilor din imagini. Aceasta se compune din mai


multe straturi:
o Straturi de convolutie – în cadrul acestora se realizează convoluția dintre
imaginea de intrare și un filtru (matrice nxn de dimensiuni mici). Spre deosebire
de straturile din rețelele neuronale clasice, în straturile de convoluție numărul de
conexiuni se reduce la dimensiunea filtrelor utilizate, și nu la cea a imaginii de la
intrare. Straturile de convoluție produc una sau mai multe feature maps, imagini
care conțin anumite trăsături sau caracteristici ale imaginii de la intrare.
o Straturi de agregare (pooling)- în cadrul acestor straturi se realizează o reducere a
dimensiunii feature map-urilor de la intrare.

Obs. Straturile de convoluție și agregare sunt supuse unei funcții de activare cu rolul de a
asigura comportamentul neliniar al rețelei. Ca funcție de activare, de cele mai multe ori se
folosește ReLU (Rectified Linear Unit).

• O componentă complet conectată (fully connected), în cadrul căreia se realizează


clasificarea propriu zisă. Ieșirea acestei componente este un vector de probabilități cu un
număr de componente egal cu numărul de clase. Fiecare componentă a vectorului
reprezintă probabilitatea ca imaginea de la intrare să se încadreze în clasa
corespunzătoare.

Motivatia utilizarii CNN:

• Convoluția produce o imagine rezultat unde fiecare pixel este o combinație liniară a unei
vecinătăți din imaginea sursă.
• În funcție de coeficienții nucleului de convoluție, putem obține filtre care au efect de
netezire, sau pot pune în evidență anumite trăsături.

Aplicarea CNN pe datele din laborator:


Singura diferenta fata de reteaua precedenta consta in straturile de convolutie si pooling care sunt
adaugate retelei. Mai jos am definit modelul modelCNN in care am introdus doua straturi de
convolutie si doua de pooling.

55
modelCNN = tf.keras.Sequential([
tf.keras.layers.Conv2D(32, (3,3), padding='same', activation=tf.nn.relu,
input_shape=(28, 28, 1)),
tf.keras.layers.MaxPooling2D((2, 2), strides=2),
tf.keras.layers.Conv2D(64, (3,3), padding='same', activation=tf.nn.relu),
tf.keras.layers.MaxPooling2D((2, 2), strides=2),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(128, activation=tf.nn.relu),
tf.keras.layers.Dense(10, activation=tf.nn.softmax)
])

56

S-ar putea să vă placă și