Sunteți pe pagina 1din 79

ANALIZA SI PRELUCRAREA IMAGINILOR

CUPRINS
Lista figurilor .....................................................................................................................................................................4

Lista tabelelor....................................................................................................................................................................5

Acronime...........................................................................................................................................................................6

Introducere........................................................................................................................................................................7

Capitolul 1. Reprezentarea ..........................................................................................................................................8


1.1 Ce reprezintă imaginile? ..................................................................................................................................................8
1.1.1 Aspecte ale imaginilor..............................................................................................................................................8
1.1.2 Culoarea imaginilor. .................................................................................................................................................9
1.2 Rezoluția și cuantizarea.................................................................................................................................................10
1.3 Formatele de imagine....................................................................................................................................................10
1.3.1 Tipurile de imagini..................................................................................................................................................11
1.3.2 Compresia imaginilor .............................................................................................................................................12
1.4 Spațiul de culori .............................................................................................................................................................13
1.4.1 RGB.........................................................................................................................................................................13
1.4.1.1 Conversia din imagini RGB în imagini gri ........................................................................................................15
1.4.2 Spațiul de culoare perceptiv ..................................................................................................................................15
1.5 Imaginile în Matlab .......................................................................................................................................................17
1.5.1 Citirea, scrierea și interogarea imaginilor. .............................................................................................................17
1.5.2 Afișarea de bază a imaginilor .................................................................................................................................18
1.5.3 Accesarea pixelilor în imagini.................................................................................................................................20
1.5.4 Conversia tipurilor de imagini ................................................................................................................................21

Capitolul 2. Formarea imaginilor ...............................................................................................................................23


2.1 Cum este formată o imagine ? ......................................................................................................................................23

Capitolul 3. Pixelii......................................................................................................................................................23
3.1 Ce reprezintă un pixel ? .................................................................................................................................................23
3.2 Operații asupra pixelilor ................................................................................................................................................25
3.2.1 Operații aritmetice asupra imaginilor ....................................................................................................................26
3.2.1.1 Adunări și diferențe asupra imaginii...............................................................................................................26
3.2.1.2 Multiplicarea și împărțirea imaginilor ............................................................................................................28
3.2.2 Operații logice asupra imaginilor ...........................................................................................................................29
3.2.3 Segmentarea (binarizarea).....................................................................................................................................31
3.3 Operațiile bazate pe puncte asupra imaginilor .............................................................................................................33
3.3.1 Transformările logaritmice.....................................................................................................................................33
3.3.2 Transformări exponențiale.....................................................................................................................................35
3.3.3 Transformare de tip putere....................................................................................................................................37
3.3.3.1 Aplicație: corecție gama .................................................................................................................................38
3.4 Distribuția pixelilor: histograma ....................................................................................................................................39
3.4.1Аccentuаreа contrаstului........................................................................................................................................41
3.4.2 Întinderea de contrast ...........................................................................................................................................41
3.4.3 Egalarea histogramei..............................................................................................................................................44
3.4.3.1 Teoria de egalare a histogramei .....................................................................................................................44
3.4.3.2 Teoria egalizării histogramelor: cazul discret .................................................................................................46
3.4.3.3 Egalarea histogramei în practică ..............................................................................................................46
3.4.4 Potrivirea histogramelor ........................................................................................................................................48
3.4.4.1 Teoria potrivirii histogramelor........................................................................................................................49
3.4.4.2 Teoria potrivirii histogramelor: cazul discret ..................................................................................................50
3.4.4.3 Potrivirea histogramei în practică...................................................................................................................50
3.4.5 Egalizarea histogramei adaptive ............................................................................................................................52
3.4.6 Operații asupra histogramelor în imaginile color ..................................................................................................55

Capitolul 4. Îmbunătățirea imaginii ...........................................................................................................................56


4.1 De ce este nevoie de a efectua îmbunătățirea? ............................................................................................................56
4.1.1 Îmbunătățirea cu ajutorul filtrării imaginilor .........................................................................................................57
4.2 Blocuri de pixeli vecini ...................................................................................................................................................57
4.3 Filtrul Kernel și mecanismele filtrării liniare ..................................................................................................................59
4.3.1 Filtrarea spațială neliniară......................................................................................................................................62
4.4 Filtrarea prin eliminarea zgomotului.............................................................................................................................62
4.4.1 Filtrul mediu ...........................................................................................................................................................63
4.4.2 Filtrarea mediană ...................................................................................................................................................64
4.4.3 Filtrarea de ordin ...................................................................................................................................................65
4.4.4 Filtrarea Gaussiana.................................................................................................................................................67
4.5 Filtrarea pentru detecția marginilor..............................................................................................................................68
4.5.1 Filtre derivative pentru discontinuități ..................................................................................................................68
4.5.2 Detectarea marginilor de ordinul I.........................................................................................................................70
4.5.3 Detectarea marginilor de ordinul II........................................................................................................................71

Capitolul 5. Proprietăți și caracteristici ......................................................................................................................73


5.1 Analiza Componentelor Principale.................................................................................................................................73
5.2 Analiza Componentelor Principale: exemplu ilustrativ..................................................................................................73
5.3 Teoria analizei principale a componentelor. .................................................................................................................76
5.4 Axele principale și componentele principale .................................................................................................................77
5.5 Rezumatul proprietăților analizei componentelor principale PCA.................................................................................78

3
Lista figurilor
Figură 1.1 Coordonatele spațiale carteziene a unei imagini digitale M x N............................................................ 8
Figură 1.2 Exemplu de afișare a imaginii în scara gri(stânga) și culori false(dreapta) ........................................... 9
Figură 1.3 Exemple de compresie a imaginilor utilizând lossles și diferite nivele de lossy compresion .............. 12
Figură 1.4 Imagine RGB separată în canalele corespunzătoare de culori roșu(R), verde(G) și albastru(B) ......... 13
Figură 1.5 Ilustrarea spațiului de culoare RGB ca un cub 3D ............................................................................... 14
Figură 1.6 Exemplu de conversie a imaginii color (stânga) la imagine în scara gri (dreapta) .............................. 15
Figură 1.7 Spațiul de culoare HSV reprezentat în con 3D .................................................................................... 16
Figură 1.8 Imagine transformată și afișată în spațiul de culoare HSV .................................................................. 17
Figură 1.9 Afișarea unei imagini în Matlab........................................................................................................... 18
Figură 1.10 Afișarea mai multor imagini în Matlab .............................................................................................. 20
Figură 1.11 Conversia în scara gri......................................................................................................................... 21
Figură 1.12 Afișarea individuală a canalelor de culoare RGB într-o imagine ...................................................... 22
Figură 3.1 Exemple de imagini cu diferite tipuri de informație a pixelilor ........................................................... 25
Figură 3.2 Îmbunătățirea contrastului în imagine și amestecarea imaginilor utilizând adăugarea aritmetică ....... 26
Figură 3.3 Adunarea în imagine ............................................................................................................................ 27
Figură 3.4 Diferența imaginilor ............................................................................................................................. 28
Figură 3.5 Aplicarea XOR asupra imaginilor........................................................................................................ 31
Figură 3.6 Segmentarea pentru identificarea obiectelor ........................................................................................ 32
Figură 3.7 Segmentarea sau prăguirea unei imagini complexe ............................................................................. 32
Figură 3.8 Transformarea logaritmică: variația parametrului σ modifică panta funcției logaritmice ................... 34
Figură 3.9 Aplicarea transformării logaritmice cu mărirea constantei c ............................................................... 35
Figură 3.10 Transformarea exponențială: variația parametrului α modifică panta funcției exponențiale ............ 36
Figură 3.11 Aplicarea transformării exponențiale cu mărirea constantei c ........................................................... 37
Figură 3.12 Aplicarea transformării de tip putere ................................................................................................. 38
Figură 3.13 Aplicarea corecției gama.................................................................................................................... 39
Figură 3.14 Imagine simplă și histograma sa corespunzătoare ............................................................................. 40
Figură 3.15 Întinderea contrastului aplicat în imagine .......................................................................................... 43
Figură 3.16 Histograma după întinderea de contrast ............................................................................................. 44
Figură 3.17 Egalizarea histogramei aplicată unei imagini simple ......................................................................... 48
Figură 3.18 Potrivirea histogramei aplicat unei imagini ....................................................................................... 51
Figură 3.19 Egalizarea histogramei adaptive. Vecinătate de 4 regiuni ................................................................. 53
Figură 3.20 Egalizarea adaptivă a histogramei aplicată in Matlab ........................................................................ 54
Figură 3.21 Egalizarea histogramei adaptive pentru imaginea color..................................................................... 56
Figură 4.1 Conectivitatea blocurilor de pixeli(vecinătăți) (stânga) și un exemplu de vecinătate 3 x 3 centrat la o
anumită locație specificată..................................................................................................................................... 58
Figură 4.2 Filtrarea pentru anumite blocuri de pixeli din imagine ........................................................................ 59
Figură 4.3 Mecanismul de filtrare a imaginii cu o vecinătate NxN = 3x3 ............................................................ 61
Figură 4.4 Filtrarea liniară kernel .......................................................................................................................... 62
Figură 4.5 Aplicarea zgomotului pe imaginea originală ....................................................................................... 63
Figură 4.6 Aplicarea filtrului mediu (3 x 3) asupra la: a) imaginea originală, b) zgomot ’sare și piper’ și c)
zgomot Gaussian ................................................................................................................................................... 64
Figură 4.7 Aplicarea filtrului median (3 x 3) aplicat imaginii originale(a), (b) zgomot de ‘sare și piper’, (c)
zgomot Gaussian ................................................................................................................................................... 65
Figură 4.8 Filtrarea de ordin aplicată imaginii originale și celor cu sunet ............................................................ 66
Figură 4.9 Filtru Gaussian aplicat pe kernel 3x3, 11x11, 21x21 ........................................................................... 67
Figură 4.10 Filtrarea Gaussiană (5 x 5 cu valoarea σ = 2) a imaginii originale (a), cu zgomot de ”sare și piper”
(b) și cu zgomot Gaussian (c) ................................................................................................................................ 68
Figură 4.12 Detectarea marginilor într-o imagine ................................................................................................. 71
Figură 4.13 Construcția kernelului discret Laplace............................................................................................... 71
Figură 4.14 Aplicarea filtrului Laplace ................................................................................................................. 72
Figură 5.1 Distribuția valorilor în greutate și înălțime într-un spațiu caracteristic 2-D. Valoarea medie a fiecărei
variabile a fost scăzută din date ............................................................................................................................. 75
Figură 5.2 Axa principală minimizează suma diferențelor pătrate între date și proiecțiile lor ortogonale pe acea
axă. În mod echivalent, aceasta maximizează variația datelor de-a lungul axei principale................................... 75
Figură 5.3 Datele privind înălțimea-greutate în sistemele de coordonate ale axelor originale și principale ......... 76
Figură 5.4 Calculul principalelor axe ale unui obiect 2-D..................................................................................... 79

Lista tabelelor
Tabel 4.1 Operatorii derivativi .............................................................................................................................. 70
Tabel 5.1 Vector de caracteristici (greutate și înalțime)........................................................................................ 74
Tabel 5.2 Datele statistice pentru datele prezentate în tabelul 5.1......................................................................... 74

5
Acronime

o JPEG – Joint Photographic Experts Group


o GIF – Graphics Interchange Format
o BMP – Bit Map Picture
o PNG – Portable Network Graphics
o TIF/TIFF – Tagged Image (File) Format
o RGB – Red Green Blue Space
o HSV – Hue Saturation And Value
o CCD – Charge-Coupled Device
o PSF – Progressive Segmented Frame
o IR – Infrared
o CT – Computed Tomography
o MRI – Magnetic Resonance Imaging
o PDF – Probability Density Function
o CDF – Cumulative Distribution Function
Introducere

Viața noastră este un set de imagini și momente pe care le trăim și le simțim în viața de zi cu zi.
Suntem în secolul XXI, un secol al vitezei și al performanței, un secol în care timpul se scurge nemilos
pe langă noi, iar noi ramânem doar cu amintirile.
Fie că s-a întâmplat cel mai frumos eveniment din viață, fie că mergem într-o vacanță, fie că
vedem peisajul care s-a aflat întotdeauna în capul nostru și acum îl avem în față, dorim să memorăm cât
mai detaliat toate aceste lucruri,iar cea mai uzuală metodă este de a face o simplă fotografie. Chiar și
același selfie cu un prieten pe care nu l-am mai vazut de atâția ani ne dorim să fie unul cât mai de
calitate și cât mai reușit.
În prezent există o mulțime de aparate de fotografiat, începând de la cea mai obișnuită cameră
de la telefon și până la cele mai performante camere ce întrec orice limite și percep cadre care nu vor fi
niciodată accesibile ochiului uman. Aceste dispozitive au devenit o necesitate, chiar obligatorie pentru
unii, iar asta nu face nimic altceva decât să bucure producătorii lor, mărindu-se piața, și implementând
mai multe nevoi pentru comunitate.
Fiindcă chiar și cel mai perfect om greșește odată și odată, uneori imaginile pe care ni le dorim
nu se primesc atât de perfecte după cum ne așteptăm. Există mai mulți factori care influențează asupra
capturării unei imagini perfecte. Uneori calitatea camerei este cea care stă la baza imaginilor nereușite,
dar uneori chiar și cea mai mare calitate nu ne poate oferi cel mai bun rezultat.
Pot fi întâlniți o mulțime de factori care afectează calitatea imaginii: fie că imaginea este
obținută din grabă, fie că imprevizibil a apărut un obiect nedorit în cadru, fie că există apariția unui
zgomot care poate fi de mai multe feluri și multe, multe altele. Fiind într-o epocă a performanței, se
caută cele mai bune soluții pentru cele mai diferite cazuri. De aceea procesarea imaginilor a devenit un
principiu de bază și este în permanentă dezvoltare.

7
Capitolul 1. Reprezentarea

În acest capitol abordăm reprezentarea imaginilor (datelor bidimensionale), care acoperă notația
de bază și informațiile despre imagini, împreună cu o discuție despre tipurile de imagini standard și
formatele de imagine. Încheiem cu o secțiune practică, introducând facilitățile Matlab pentru citirea,
scrierea, interogarea, conversia și afișarea imaginilor de diferite tipuri si formate de imagine.

1.1 Ce reprezintă imaginile?


O imagine digitală poate fi considerată ca o reprezentare discretă a datelor care posedă atât
informații spațiale (aspect) cât și de intensitate (culoare). De asemenea o imagine poate fi considerată
ca un semnal multidimensional.

1.1.1 Aspecte ale imaginilor


Imaginea digitală bidimensională reprezintă răspunsul unor senzori la poziții fixe în
coordonatele carteziene 2-D și sunt derivate de la semnalul spațial printr-un proces de
eșantionare frecvent denumit discretizare, iar indicii m și n destinați respectiv rândurilor și coloanelor
imaginii. Discretizarea apare în mod natural cu anumite tipuri de senzori de imagine (cum ar fi camere
CCD) și practic determină o mediere locală a semnalului continuu peste unele regiuni mici în domeniul
de recepție. Elementele individuale sau pixelii imaginii sunt astfel menționate prin indecii lor 2-D
Ca urmare a convenției Matlab, reprezintă răspunsul pixelului situat la rândul și
coloana pornind de la o origine din stânga sus a imaginii.

Figură 1.1 Coordonatele spațiale carteziene a unei imagini digitale M x N

În alte sisteme de formare a imaginii, originea imaginii utilizate poate varia. Deseori teoretic
este să tratăm o imagine ca un semnal spațial continuu . În special, acest lucru uneori ne permite
să înțelegem mult mai bine proprietățile imaginii și de a le manipula și procesa mult mai efectiv.
Analiza matematică a imaginilor discrete conduce în general la o formulare algebrică liniară care este
mai bună în unele cazuri.
Valorile pixelilor individuali în majoritatea imaginilor corespund de fapt unor răspunsuri fizice
în spațiul 2-D. Cu toate acestea, de asemenea suntem liberi să considerăm imaginile în spații abstracte,
unde coordonatele reprezintă altceva decât spațiul fizic, și de asemenea putem extinde notația către 3
sau mai multe dimensiuni. De exemplu, aplicațiile de imagistică medicală sunt imagini 4-D în care 3
coordonate sunt spațiale și cealaltă coordonată corespunde timpului.

1.1.2 Culoarea imaginilor.


O imagine conține unul sau mai multe canale de culoare care definesc intensitatea sau culoarea
la o anumită locație a pixelului În cel mai simplu caz, fiecare locație a pixelului conține o
singură valoare numerică care reprezintă nivelul semnalului de la acel punct din imagine. Conversia din
acest set de numere la o imagine afișată este realizată printr-o hartă de culoare. O hartă de culoare
atribuie o nuanță specifică de culoare la fiecare nivel numeric din imagine pentru a da o reprezentare
vizuală a datelor. Cea mai utilizată mapă de culoare este “grayscale”, care atribuie toate nuanțele de gri
de la negru (zero) la alb (maxim) în funcție de nivelul semnalului. Grayscale este deosebit de bine
adaptată pentru imagini de intensitate, și anume imagini care exprimă numai intensitatea semnalului ca
o singură valoare la fiecare punct din regiune.
În anumite cazuri, pentru a afișa imagini de intensitate, se poate utiliza o hartă în culori false.
Unul din principalele motive de a utiliza afișarea în culori false se bazează pe faptul că sistemul vizual
uman este senzitiv la doar aproximativ 40 de nuanțe de gri, în intervalul de la negru la alb, în timp ce
sensibilitatea la culoare este mult mai fină. Culorile false pot servi de asemenea pentru a accentua sau
delimita anumite funcții sau structuri, ceea ce le face mai ușor de identificat pentru observatorul uman.
Această abordare este deseori folosită în imagini astronomice și medicale.

Figură 1.2 Exemplu de afișare a imaginii în scara gri(stânga) și culori false(dreapta)

În această figură este reprezentată o imagine de intensitate astronomică, afișată folosind atât
nuanțe de gri, cât și o harta de culori false. În acest exemplu, harta de culori a fost folosită pentru a
evidenția detaliat structura și detaliile mai fine ale imaginii pentru ochiul uman, folosind un interval de
culoare liniară variind de la albastru închis până la roșu închis.
Definiția hărților de culoare, adică atribuirea de culori la valori numerice, pot fi făcute în orice
mod pentru ai fi mai ușor utilizatorului. Deși asocierea dintre valoarea numerică a intensității și
9
culoarea sau nuanța de gri, este în mod tipic liniară, există situații în care o asociere neliniară este mult
mai binevenită. În plus față de imaginile gri pentru care avem o singură valoare numerică la fiecare
locație a pixelului, de asemenea avem imagini cu culori reale unde întregul spectru de culori poate fi
reprezentat ca un vector triplet, în mod tipic (R,G,B), component la fiecare pixel. Aici culoarea este
reprezentată ca o combinație liniară de culori de bază sau valori și imaginea poate fi considerată ca
fiind formată din 3 planuri, care sunt planuri 2-D.
Alte reprezentări ale culorilor sunt de asemenea posibile și utilizate destul de larg, cum ar fi
(H,S,V) (hue,saturation and variance[nuanță, saturație și intensitate]). În această reprezentare,
intensitatea V a culorii este decuplată de informațiile cromatice, care sunt conținute în cadrul
componentelor de nuanță și saturație.

1.2 Rezoluția și cuantizarea


Dimensiunea pixelilor grilei 2-D împreună cu dimensiunea datelor stocate pentru fiecare pixel
individual al imaginii, determină cuantizarea rezoluției și culorii imaginilor. Dimensiunea unei imagini
este definită de rezoluția ei. Rezoluția sursei imaginii poate fi specificată pe baza a 3 calități:
 Rezoluția spațială: coloanele și rândurile imaginilor definesc numărul de pixeli utilizați pentru a
acoperi spațiul vizual capturat de imagine. Acestea se referă la eșantionarea semnalului de
imagine și este uneori denumit pixel sau rezoluția digitală a imaginii. Este de obicei citată ca
( de exemplu: 640x480, 800x600, 1024x768,etc.)
 Rezoluția temporală: pentru un sistem de capturare continua cum ar fi video, acesta este
numărul de imagini capturate într-o anumită perioadă. Este de obicei citată în cadre pe secundă
(fps), unde fiecare imagine individuală este referită la un cadru video ( de exemplu: canalele TV
funcționează la 25 de cadre pe secundă; 25-30 fps este potrivit pentru majoritatea
supravegherilor video; camerele cu fps mai mare sunt destinate pentru specialiștii în știința sau
inginerie).
 Rezoluția de biți: Aceasta definește numărul valorilor posibile ale intensității sau culorii pe care
le poate avea un pixel și se referă la cuantizarea informațiilor imaginii. De exemplu o imagine
binară are doar 2 culori (alb sau negru), o imagine de nuanțe gri are de obicei 256 de niveluri
diferite de gri de la negru la alb, în timp ce pentru o imagine color depinde de gama de culori în
uz. Rezoluția biților de obicei este citată ca un număr de biți binari necesari pentru stocare la un
nivel de cuantizare dat. De exemplu, pentru imaginea binară este nevoie de 2 biți, imagine gri -
de 8 biți și pentru imagine color sunt necesari 24 de biți.
Este important de știut că rezoluția biților unei imagini nu este necesar să corespundă cu
rezoluția sistemului de formare a imaginii. O trăsătură comună a multor camere este un câștig automat,
în care răspunsurile minime și maxime sunt detectate pe imagine, și acest interval este automat
împărțit într-un număr convenabil de biți. În aceste cazuri, rezoluția imaginii este de obicei mai mică
decât cea realizabilă de către cameră.

1.3 Formatele de imagine


Din punct de vedere matematic, orice matrice de numere 2-D poate fi considerată o imagine. În
viața reală, avem nevoie de a afișa imagini în mod eficient, de a le stoca, de a le transmite prin
intermediul rețelelor și de a recunoaște datele numerice corespunzătoare imaginilor. Acest lucru a
condus la dezvoltarea formatelor standard a imaginilor digitale. În termeni simpli, formatele de imagini
cuprind un fișier antet care conține informațiile despre cum mai exact imaginea este stocată și valorile
reale ale pixelilor. Există un număr mare de formate de imagine recunoscute existente acum, datând
înapoi peste mai mult de 30 de ani de stocare a imaginilor digitale. Unele dintre cele mai utilizate 2-D
formate de imagini sunt:
 GIF (Graphics interchange format);
 JPEG (Joint Photographic Experts Group) CEL MAI UTILIZAT;
 BMP (Bit map picture);
 PNG (Portable network graphics);
 TIF/ TIFF (Tagged image (file) format).
Imaginile GIF sunt un format de bază de stocare a imaginilor limitate la numai 256 de niveluri
de gri sau de culori, cu acestea din urmă sunt definite printr-o hartă de culoare în antetul fișierului.
Prin contrast, formatul obișnuit de JPEG este capabil să stocheze până la 24 de biți RGB pentru
o imagine color, și până la 36 de biți pentru aplicațiile de imagistică medicală sau științifică, și este
utilizat cel mai frecvent pentru imagini la nivel de consum, cum ar fi camerele digitale.
Un alt format întâlnit care este bine cunoscut este formatul bitmap (BMP), originar din
dezvoltarea sistemului de operare Windows Microsoft, și noul PNG format, conceput pentru înlocuirea
mai puternică a lui GIF.
TIFF, tagged image file format, reprezintă un format major și adaptabil, foarte flexibil, capabil
să stocheze o gamă largă de diferite formulare de date ale imaginilor.
În general, imaginile de tip fotografic sunt mai potrivite tipului de stocare JPEG sau TIF, în
timp ce imaginile cu culori limitate sau detalii limitate sunt cele mai potrivite la GIF sau PNG, pentru
ca să fie adaptabile fără pierderi la majoritatea cerințelor stocării.

1.3.1 Tipurile de imagini


Alegerea formatului de imagine utilizat poate fi în mare parte determinată nu numai de
conținutul imaginii, ci și de tipul de date din imagine necesar pentru stocare. În plus, față de rezoluția
de biți a unei imagini date, mai există și un număr de tipuri distincte ale imaginii:

 Imaginile binare sunt matrici 2-D care atribuie o valoare numerică din setul fiecărui pixel
din imagine. Acestea uneori sunt denumite imagini logice: negru corespunde lui 0 și alb
corespunde la 1. După cum nu sunt permise alte valori, aceste imagini pot fi reprezentate ca un
simplu flux de biți, dar în practică ele sunt reprezentate ca imagini întregi de 8 biți. O imagine
de fax este un exemplu de astfel de imagine binară.
 Imaginile în nuanțe gri sau de intensitate sunt matrici 2-D care atribuie o valoare numerică
fiecărui pixel care reprezintă intensitatea în acel punct.
 Imaginile color sau RGB sunt matrici 3-D care atribuie trei valori numerice fiecărui pixel,
fiecare valoare corespunde componentelor ROȘU, VERDE și ALBASTRU (RGB). Conceptual,
putem considera trei planuri 2-D distincte de dimensiunea , unde C este numărul
coloanelor și R numărul rândurilor.
 Imaginile cu virgule mobile diferă de alte tipuri de imagine discutate mai înainte prin faptul că
nu stochează valori întregi de culoare, în schimb stochează un număr cu virgulă mobilă, care
într-un interval de timp dat, definit de precizia virgulei mobile, reprezintă intensitatea. Ele pot
reprezenta o valoare măsurătoare, alta decât intensitatea simplă sau culoarea dintr-o imagine
științifică sau medicală. Imaginile cu virgule mobilă sunt de obicei stocate într-o imagine de
format TIFF sau mult mai specializat, formatul domeniu-specific (ex: DICOM). Deși utilizarea

11
imaginilor cu virgule mobile este în creștere, prin utilizarea domeniului dinamic înalt și
fotografierea stereo, formatele de fișiere care susțin stocarea lor nu rămân în prezent limitate.

1.3.2 Compresia imaginilor


Un alt lucru important care trebuie luat în considerație în alegerea unui format de stocare a
imaginii, este comprimarea. În timp ce comprimarea unei imagini poate însemna că ocupă mai puțin
spațiu de stocare pe disc și poate fi transferat în mai puțin timp prin rețea, mai multe tehnici de
compresie cunoscute pot fi folosite pentru ceea ce numim noi compresie pierdută (lossy compression).
Compresia pierdută operează prin ștergerea informației redundante din imagine. Este posibilă
eliminarea unei informații dintr-o imagine fără a afecta foarte mult reprezentarea ei. Aceste eliminări
ale informației pot fi și uneori nedetectabile de ochiul uman. Unele formate de imagine prezentate mai
sus, stochează datele într-o formă comprimată. Memorarea imaginilor în formate comprimate necesită
diverse proceduri algoritmice pentru a reduce datele neprelucrate ale imaginii, la o imagine care pare
identică, dar care necesită mai puțin spațiu de stocare.
Este important să se facă distincția între compresia care permite imaginii originale să fie
reconstruită perfect din datele reduse, fără a pierde vre-o informație importantă a imaginii. Așa
numitele tehnici lossy compression reduc volumul stocării dar în cazul cărora se poate ajunge la o
reducere semnificativă a calității imaginii. Lossy compression este de asemenea des utilizată în stocarea
video datorită volumului mare a surselor de date. Această pierdere de informații, însăși o formă de
zgomot introdusă în imagine ca artefacte de compresie, poate limita eficiența îmbunătățirii și analizei
ulterioare a imaginii.
În ceea ce privește prelucrarea imaginilor practice în Matlab, trebuie remarcat faptul că o
imagine scrisă într-un format de comprimare a pierderilor (de exemplu JPEG), nu va fi stocată ca
imaginea exactă reprezentată în Matlab de la care am început. Valorile pixelilor vor fi modificate în
procesul de ieșire a imaginii ca urmare a compresiei pierdute.

Figură 1.3 Exemple de compresie a imaginilor utilizând lossles și diferite nivele de lossy compresion
1.4 Spațiul de culori
Reprezentarea pe care o folosim pentru a stoca culorile, specificând numărul și natura canalelor
de culoare, este în general cunoscută ca spațiu de culoare. Considerată ca o entitate matematică, o
imagine este un set de numere organizate în spațiu, cu fiecare locație a pixelilor adresata ca
Imaginile de natură gri sau cele binare sunt matrici 2D care atribuie o valoare numerică fiecărui pixel
care reprezintă intensitatea în acel punct. Ele utilizează un spațiu de culoare cu un singur canal care este
limitat fie la un spațiu de culoare de 2 biți, fie la scara gri (grayscale). Prin contrast, imaginile RGB sau
cele de culori reale sunt matrici 3D care atribuie 3 valori numerice la fiecare pixel, fiecare valoare
corespunde respectiv culorilor roșu, verde și albastru.

1.4.1 RGB
Imaginile RGB (imagini de culori reale) sunt matrici 3D pe care noi putem să le considerăm ca
3 planuri distincte 2D, corespunzând fiecărui din cele 3 canale de culori: roșu(R), verde(G) și
albastru(B). RGB este cel mai utilizat spațiu de culori utilizat pentru reprezentarea imaginilor digitale,
pentru că acestea corespund celor 3 culori primare care sunt mixate pentru reprezentarea pe monitor.
Putem ușor separa și vedea componentele roșii, verzi și albastre a imaginilor de culoare reală, fapt care
este demonstrat și în imaginea de mai jos:

Figură 1.4 Imagine RGB separată în canalele corespunzătoare de culori roșu(R), verde(G) și albastru(B)

Este important să menționăm că culorile tipice prezente în imaginea reală sunt aproape
totdeauna un amestec de componente de culoare din toate cele 3 canale. O concepție greșită este că, de
exemplu, elementele percepute ca albastru vor apărea doar în canalul albastru și așa mai departe. În
timp ce elementele percepute ca albastru vor apărea sigur mai strălucitoare în canalul albastru, ele de
asemenea vor apărea ca componente mai puțin nuanțate de roșu și verde.

13
Dacă considerăm că culorile pot fi afișate cu reprezentarea RGB, atunci considerăm că spațiul
de culoare RGB este un spațiu de culoare esențial 3D cu axele R,G si B. Fiecare axă are același interval
0 → 1 ( scalat de la 0 la 255 pentru bitul comun 1 de canal, în reprezentarea imaginii pe 24 de biți).
Culoarea neagră ocupă originea cubului, adică poziția (0,0,0) care corespunde cu absența tuturor trei
culori, iar culoarea albă ocupă colțul opus, adică poziția (1,1,1), indicând valoarea maximă a celor 3
culori. Toate celelalte culori se află în cadrul acestui cub. Spațiul de culoare RGB este bazat pe partea
spectrului electromagnetic vizibil oamenilor.

Figură 1.5 Ilustrarea spațiului de culoare RGB ca un cub 3D

Ochiul uman are trei tipuri diferite de receptori de culoare, pe care are o absorbție limitată
pentru fiecare dintre lungimile de unde roșii, verzi și albastre. Din această cauză transformarea de la
culoare la scara gri, utilizează o combinație de canale RGB.
În procesarea digitală de semnale utilizăm modelul simplificat al spațiului RGB care este
optimizat și standardizat către reprezentarea grafică, însă cu toate acestea este perceptiv neliniar. Prin
aceasta avem în vedere faptul că mișcarea într-o direcție dată în cubul de culoare RGB, nu produce
neapărat o culoare care este perceptivă în concordanță cu schimbarea în fiecare dintre canale.
De exemplu, începând de la alb și scăzând componenta albastră, se produce galben. Similar,
pornind de la roșu și adăugând componente albastre, se produce roz. Din această cauză, spațiul RGB
este dificil pentru oameni de a lucra cu el și motivul din care cauză nu este relatat la o cale naturală de a
percepe culorile. Ca alternativă putem utiliza perceptarea culorilor ca reprezentare HSV (nuanță,
saturație și intensitate).
1.4.1.1 Conversia din imagini RGB în imagini gri
Putem converti dintr-un spațiu RGB într-o imagine în nuanțe gri folosind o simplă transformare.
Conversia în scara gri este o etapă inițială în majoritatea algoritmilor de analiză a imaginilor, deoarece
simplifică esențial cantitatea informației în imagine.
Cu toate că o imagine de tip gri are mai puține informații decât o imagine color, majoritatea
celor mai importante caracteristici, cum ar fi marginile, regiunile, intersecțiile și așa mai departe, sunt
menținute. Elementele de detecție și procesare a algoritmilor operează mai apoi asupra versiunii
convertite la scara gri a imaginii. După o asemenea conversie încă este posibil de a distinge culorile
verde și roșu, cum ar fi în următorul exemplu:

Figură 1.6 Exemplu de conversie a imaginii color (stânga) la imagine în scara gri (dreapta)

unde mărul roșu și mărul verde se pot distinge și după conversie.

O imagine de culori RGB, , este convertită la scara gri, , utilizând următoarea


transformare:

(1.1)
unde (n,m) sunt indecși ai unui pixel individual în imaginea gri și (n,m,c) este canalul individual al
locației pixelului (n,m) în imaginea color pentru canalul c: în roșu r, albastru b și verde g.
După cum putem observa și în ecuația de mai sus, o imagine gri reprezintă o sumă ponderată a
canalelor de culoare roșie, verde și albastru. Coeficienții (α,β si γ) sunt setați proporțional cu răspunsul
perceptual al ochiului uman pentru fiecare din culorile roșu, verde și albastru. Ochiul uman este natural
mult mai senzitiv la roșu și verde deschis și prin urmare aceste culori primesc ponderi mai mari pentru
a asigura ca echilibrul intensității în imaginea gri obținută, să fie similar cu cel al imaginii color RGB.
Conversia de la RGB la imaginile în nuanțe gri este o transformare ireversibilă: informațiile
pierdute în conversie nu mai pot fi recuperate.

1.4.2 Spațiul de culoare perceptiv


Spațiul de culoare perceptiv este o cale alternativă de reprezentare a imaginilor color, într-o
manieră care este mult mai binevenită percepției și înțelegerii umane a culorilor, decât în reprezentarea
RGB. Există mai multe reprezentări a imaginilor color, însă noi ne vom concentra mai mult pe spațiul
de nuanță, saturație și valoare (HSV), popular în aplicațiile de analiză a imaginii.

15
Din perspectiva analizei imaginilor, această reprezentare permite separarea culorilor după
gradul de luminozitate. O imagine RGB poate fi transformată în HSV după următoarea imagine:

Figură 1.7 Spațiul de culoare HSV reprezentat în con 3D

unde fiecare din acești parametri pot fi interpretați astfel:


 H (nuanță) este lungimea de undă dominantă a culorii
 S (saturație) este “puritatea” culorii (ce cantitate de lumină albă este amestecată cu ea)
 V (intensitate) este luminozitatea culorii
Reprezentarea HSV a unei imagini 2D este de asemenea o matrice 3D care cuprinde 3 canale (h,s,v)
și fiecare locație a pixelilor din imagine I(n,m) conține (h,s,v), care poate fi transformată înapoi într-o
RGB.
În cadrul implementării HSV în Matlab, fiecare din canalele h,s,v au valori între 0 și 1. De exemplu
nuanța albastră poate avea valorile , saturația și intensitatea obținând un
albastru deschis vibrant. Prin examinarea individuală a canalelor de culori ale imaginii în HSV, putem
observa că obiectele din imagine sunt mai consistent conținute în câmpul de nuanță rezultat decât în
canalele reprezentării RGB, în ciuda prezenței diferitelor condiții de iluminare.
Figură 1.8 Imagine transformată și afișată în spațiul de culoare HSV
Ca rezultat, spațiul HSV este de obicei utilizat pentru segmentarea imaginilor pe baza de
culoare utilizând o tehnică cunoscută sub denumirea de colorare.

1.5 Imaginile în Matlab


Odată ce am prezentat până acum bazele reprezentării imaginilor, putem trece și la aspecte
practice pentru a investiga stadiile inițiale ale manipulării imaginilor utilizând Matlab.

1.5.1 Citirea, scrierea și interogarea imaginilor.


Citirea și scrierea imaginilor este realizată foarte simplu cu comenzile imread și imwrite.
Aceste funcții pot fi aplicate la majoritatea formatelor de imagine și creează sau exportă o matrice de
imagini 2D sau 3D corespunzătoare mediului Matlab. Funcția imfinfo poate fi utilizată pentru a
interoga o imagine și pentru a stabili toate proprietățile sale mai importante, incluzând tipul, formatul,
dimensiunea, etc.
Exemplul 1.1
Codul in Matlab Ce se întâmplă?
Imfinfo(‘cameraman.tif’) Se interoghează imaginea cu numele
cameraman care este disponibilă cu Matlab, și
se afișează informații de tipul: formatul
imaginii, dimensiunea, etc…
A1 = imread(‘cameraman.tif’); Citește în formatul TIF imaginea cu numele
cameraman.
imwrite(A1,’cameraman.jpg’,’jpg’); Scrie matricea rezultată A1 pe disc ca o
imagine JPEG
imfinfo(‘cameraman.jpg’) Interoghează imaginea rezultată pe disc
(schimbările se văd la dimensiunea stocată,
tipul imaginii, etc).

17
1.5.2 Afișarea de bază a imaginilor
Limbajul Matlab folosește 2 funcții de bază pentru afișarea imaginilor: imshow și imagesc. În
timp ce imshow necesită ca matricea 2D specificată pentru afișare să fie conformă cu un tip de imagine
anumit, imagesc acceptă matrici de intrare pentru orice tip de stocare Matlab și orice domeniu numeric.
Această funcție scalează intervalul de intrare a datelor și le afișează, utilizând harta de culoare actuală
sau implicită. Putem de asemenea controla afișarea utilizând funcția colormap.
Exemplul 1.2

Codul in Matlab Ce se întâmplă?


A = imread(‚cameraman.tif’); Citește intensitatea imaginii
imshow(A); Prima afișare de imagine utilizează imshow
imagesc(A); Următoarea afișare utilizează imagesc
axis image; Corectează aspectul imaginii afișate
axis off; Se oprește axarea imaginii
colormap(gray); Se afișează imaginea în culori de gri

Figură 1.9 Afișarea unei imagini în Matlab

Pentru a observa diferența între cele 2 funcții de afișare vom încerca să afișăm date de imagine
fără restricții.
Exemplul 1.3
Codul in Matlab Ce se întâmplă?
B=rand(256).*1000; Generează o matrice de imagine aleatoare în
intervalul 0 1000
imshow(B); Rezultate slabe ale contrastului utilizând
imshow deoarece datele depășesc intervalul
așteptat
Imagesc automat măsoară mapa de culoare la
imagesc(B); intervalul de date
axis image; axis off; colormap(gray);
colorbar;
imshow(B,[0 1000]); Dacă specificăm explicit intervalul de date
atunci imshow de asemenea afișează corect
contrastul imaginii

Dacă dorim să afișăm mai multe imagini împreună, cea mai eficientă metodă este să utilizăm
funcția subplot. Această funcție creează un mozaic de axe în care pot fi mai multe imagini sau grafice
afișate.
Exemplul 1.4
Codul in Matlab Ce se întâmplă?
A=imread(‚cell.tif’); Se citește în 8 biți imaginea de intensitate a
celulei
B=imread(‚spine.tif’); Se citește în 8 biți imaginea de intensitate a
coloanei vertebrale
C=imread(‚onion.png’); Se citește în 8 biți imaginea color

subplot(3,1,1);imagesc(A);axis image; Creează o mozaică 3x1 de grafice și afișează


axis off;colormap(gray); prima imagine

subplot(3,1,2);imagesc(B);axis image; Afișează a doua imagine și se setează mapa


axis off;colormap(jet); de culori false

subplot(3,1,3); imshow(C); Afișează a treia imagine color

19
Figură 1.10 Afișarea mai multor imagini în Matlab

1.5.3 Accesarea pixelilor în imagini


Programul Matlab de asemenea conține un vizualizator interactiv integrat care poate fi lansat
utilizând funcția imtool. Scopul său este un pic diferit de celelalte două: este un vizualizator grafic, care
este destinat în primul rând pentru inspectarea imaginilor și a subregiunilor în cadrul imaginii.
Exemplul 1.5
Codul in Matlab Ce se întâmplă?
A = imread(”cell.tif”); Se citește în 8 biți imaginea de intensitate a
celulei
C=imread(‚onion.png’); Se examinează imaginea de culori gri în
imtool(C); vizualizatorul interactiv
Se citește în 8 biți imaginea color
A(25,50) Se examinează imaginea RGB în
A(25,50)=255; vizualizatorul interactiv
imtool(A); Se printează valoarea pixelului la locația
(25,50)
C(25,50,:) Se setează valoarea pixelului la (25,50) la alb
Se afișează schimbările rezultate în imagine
C(25,50,1)
C(25,50,:)=(255,255,255); Se printează valoarea pixelului RGB la locația
imshow(C); (25,50)
Se printează doar valoarea roșie la (25,50)
Se setează valoarea pixelului la ALB
Se afișează schimbările obținute în imagine

1.5.4 Conversia tipurilor de imagini


Programul Matlab de asemenea conține funcții încorporate pentru convesia diferitor tipuri de
imagini. În continuare vom examina conversia la scara gri (Exemplul 1.6) și afișarea individuală a
canalelor de culoare RGB într-o imagine (Exemplul 1.7).
Exemplul 1.6
Codul in Matlab Ce se întâmplă?
C=imread(‘onion.png’); Se citește în 8 biți imaginea color RGB
Cgray=rgb2gray(C); Se convertește într-o imagine de culori gri
subplot(2,1,1);imshow(C); axis image; Se afișează ambele imagini (originală și
subplot(2,1,2);imshow(Cgray); modificată)

Figură 1.11 Conversia în scara gri

Exemplul 1.7
Codul in Matlab Ce se întâmplă?
C=imread(‘onion.png’); Se citește în 8 biți imaginea color RGB
Cred=C(:,:,1); Se extrage canalul de culoare roșie (primul
canal)
Cgreen=C(:,:,2); Se extrage canalul de culoare verde (al doilea
canal)
Cblue=C(:,:,3); Se extrage canalul de culoare albastru (al
treilea canal)

subplot(2,2,1); imshow(C); axis image; Se afișează totul într-un grafic 2x2

subplot(2,2,2); imshow(Cred); title(‘red’); Se afișează și se etichetează


subplot(2,2,3); imshow(Cgreen);title(‘green’);
subplot(2,2,4); imshow(Cblue); title(‘blue’);

21
Figură 1.12 Afișarea individuală a canalelor de culoare RGB într-o imagine
Capitolul 2. Formarea imaginilor

2.1 Cum este formată o imagine ?


Procesul de formare a imaginii poate fi rezumat ca un număr mic de elemente cheie. În general,
o imagine digitală s poate fi formalizată ca un model matematic ce cuprinde o reprezentare funcțională
a scenei (funcția obiectului o ) și cea a procesului de capturare ( funcția de împărțire a punctelor(PSF)
p). În plus, o imagine conține încă și un zgomot n(din engleză noise). Astfel o imagine are următoarea
formulă:

(2.1)
Elementele cheie prezentate mai sus sunt:
 PSF descrie modul în care informațiile despre funcția obiectului sunt răspândite ca rezultat al
înregistrării datelor. Este o caracteristică a instrumentului de imagine (adică camera ) și este o
funcție deterministică (care operează în prezența zgomotului).
 Funcția obiectului. Aceasta descrie obiectul (sau scena ) care este afișat și modul în care lumina
este reflectată de la acea structură către instrumentul de formare a imaginii.
 Zgomotul. Aceasta este o funcție nedeterministă care, în cel mai bun caz, poate fi descrisă doar
în termeni de distribuție a zgomotului statistic ( de exemplu Gaussian ). Zgomotul este doar o
funcție stochastică care este o consecință a tuturor perturbațiilor externe nedorite care apar în
timpul înregistrării datelor de imagine.

Capitolul 3. Pixelii

În acest capitol vom aborda baza tuturor imaginilor digitale: pixelii. Vom discuta atât despre
operații cu pixelii individuali (transformări de puncte), cât și pe distribuții de pixeli (transformări
globale).

3.1 Ce reprezintă un pixel ?


Cuvântul pixel reprezintă o abreviere de la ”element de pictură”(în engleză: picture element).
Locația de la originea imaginii ce este indexată ca sau coloană-rând , reprezintă cel mai mic
și cel mai consistent element în imaginea digitală. Ea conține o valoare numerică care este unitatea de
bază a informației din cadrul imaginii la un anumit nivel de rezoluție și cuntificare spațială. În mod
23
obișnuit, pixelii conțin un răspuns de culoare sau de intensitate a imaginii ca un eșantion mic de lumină
colorată din scenă. Cu toate acestea, nu toate imaginile conțin strict informații vizuale.
O imagine reprezintă pur și simplu un semnal 2D, digitizat ca o grilă de pixeli, valorile căruia se
pot referi la alte proprietăți decât culoarea sau intensitatea. Informația conținută în pixel poate varia
considerabil în dependență de tipul imaginii pe care o procesăm:
 Imagini color/gri Imaginile întâlnite în mod obișnuit conțin informații referitoare la
intensitatea culorii sau de gri la un anumit punct dat din imagine sau scenă.

 Infraroșu (IR) Spectrul vizual este doar o parte mică din spectrul electromagnetic. IR
ne oferă capabilitatea de a realiza scene de imagini pe baza reflectanței luminii IR sau a radiației
IR pe care o emite. Radiația IR este emisă proporțional cu căldura generată/reflectată de un
obiect și, prin urmare, imagistica IR este, de asemenea, denumita în mod obișnuit imagistică
termică. Deoarece lumina IR este invizibilă pentru ochiul uman, sistemele de iluminare și
imagistică oferă o metodă utilă pentru supravegherea ascunsă ( sistemele de vizibilitate
nocturnă).

 Imagistica medicală. Majoritatea imaginilor medicale conțin valori care sunt proporționale cu
caracteristicile de absorbție ale țesutului în raport cu un semnal proiectat prin corp. Cele mai
cunoscute tipuri sunt tomografia computerizată (CT) și imagistica de rezonanță magnetică (MRI
– magnetic resonance imaging). Imaginile CT, cum ar fi razele X convenționale, reprezintă
valori care sunt direct proporționale cu densitatea țesutului prin care trece semnalul. Prin
contrast, imaginile de rezonanță magnetică prezintă mai multe detalii, dar nu au o relație direct
cu o singură proprietate cuantificabilă a țesutului. În CT și MRI formatul de imagine 2D este
frecvent extins la un volum 3D, care reprezintă în esență doar o mulțime de imagini 2D.

 Imagistica radar/sonar O imagine radar sau sonar reprezintă o secțiune transversal a unei ținte
proporțională cu distanța de la sensor și reflectivitatea semnalului asociat. Radarul este de
obicei folosit în navigația aeronavelor, deși a fost folosit de asemenea și pentru proiecte de
vehicule rutiere. Radarele bazate pe sateliți pentru monitorizarea vremii sunt acum cele mai
cunoscute, la fel ca utilizarea sonarului pe cele mai moderne nave de transport maritim. Radarul
care pătrunde în sol este folosit din ce în ce mai mult pentru investigațiile arheologice și
știițifice.

 Imagistica 3D Utilizând tehnici specifice 3D de detectare, cum ar fi fotografierea stereo


sau scanarea cu laser 3D, putem capta date din obiectele care sunt în jurul nostru și le putem
reprezenta în sistemele informatice ca imagini 3D. Imaginile 3D corespund adesea hărților
aprofundate unde fiecare locație a pixelului conține distanța punctului imaginar de la senzor. În
acest caz avem informații mai explicite 3D, decât în simpla proiecție 3D din imagistica
convențională 2D. În dependeță de tehnologia de capturare, putem avea numai informații de
adâncime sau atât de adâncime cât și de culoare pentru fiecare locație a pixelului. Harta de
adâncime a imaginii poate fi reproiectată pentru a oferi o vedere parțială a obiectului capturat.

 Imagistica științifică Multe ramuri ale științei utilizează formatul discret bazat pe 2D pentru a
captura date și a analiza rezultatele. Valorile pixelilor pot să corespundă la densitățile probelor
chimice sau biologice, impedanță acustică, intensitate sonică, etc. Cu toate ca pot exista
diferențe în conținutul informațiilor, datele sunt reprezentate în aceeași formă, adică o imagine
2D. Tehnicile de procesare digitală pot fi astfel aplicate în diferite ramuri ale analizei științifice.
În figura 3.1 avem câteva exemple de imagini cu diferite tipuri de informații a pixelilor. Acestea
sunt doar câteva exemple atât a varietății de imagini digitale care sunt în uz, cât și a gamei largi de
domenii de aplicare pentru procesarea digitală a semnalelor.

Figură 3.1 Exemple de imagini cu diferite tipuri de informație a pixelilor

3.2 Operații asupra pixelilor


Cel mai utilizat tip de operație în procesarea imaginilor este transformarea punctelor care
asociază valorile punctelor individuale în imaginea de intrare să corespundă punctelor din imaginea de
ieșire. Din punct de vedere matematic, aceasta reprezintă asocierea funcțională unu-la-unu de la intrare
la ieșire. Cele mai simple exemple de transformări ale imaginilor sunt operațiile logice sau aritmetice
asupra imaginilor. Ele pot fi efectuate ca o operație asupra a două imagini și , sau între o imagine
și o constantă C:

(3.1)

În ambele cazuri, valorile la locațiile pixelilor în imaginea de ieșire sunt asociate în felul
următor:

Iieșire (i,j)= IA(i,j) + IB(i,j)


Iieșire (i,j)= IA(i,j) + C (3.2)

25
Pentru a efectua operația pe imaginea întreagă cu dimensiunea C x R, pur și simplu vom repeta peste
toți indicii de imagine pentru

3.2.1 Operații aritmetice asupra imaginilor


Operațiile aritmetice de bază pot fi efectuate rapid și ușor asupra pixelilor imaginii pentru o
varietate de efecte și aplicații.

3.2.1.1 Adunări și diferențe asupra imaginii


Adăugarea unei valori asupra fiecărui pixel poate fi folosit pentru a obține următoarele efecte:
 Reglarea contrastului. Adăugând o valoare constantă pozitivă C asupra fiecărui pixel, crește
valoarea acestuia și prin urmare și luminozitatea acestuia.
 Amestecarea. Combinând 2 imagini împreună, se produce o compoziție de imagini care se
poate folosi pentru a obține efecte de amestecare folosind adăugarea ponderată.

Figură 3.2 Îmbunătățirea contrastului în imagine și amestecarea imaginilor utilizând adăugarea aritmetică

Un exemplu de adăugare în imagine folosind Matlab avem în următorul program:


Exemplul 3.1
Codul in Matlab Ce se întâmplă?
A = imread(‘cameraman.tif’); Citește imaginea

subplot(1,2,1), imshow(A); Afișează imaginea


B = imadd(A, 100); Adaugă 100 la fiecare valoare a pixelului în
imaginea A

subplot(1,2,2), imshow(B); Afișează imaginea rezultată B

Figură 3.3 Adunarea în imagine

Scăderea unei valori constante din fiecare pixel poate fi de asemenea utilizat ca o formă de bază
a reglării contrastului. Prin extragerea unei imagini din alta, putem vedea diferența dintre ele. Dacă
scădem 2 imagini dintr-o secvență video, atunci obținem o imagine de diferență (ne asumăm că este o
camera statică) care ne arată mișcarea sau schimbările care s-au produs între cadre.

Un asemenea exemplu de scădere a imaginii avem în următorul exemplu Matlab:

Exemplul 3.2

Codul Matlab Ce se întâmplă?


A = imread(‘cola1.png’); Citește prima imagine
B = imread(‘cola2.png’); Citește a doua imagine

subplot(1,3,1), imshow(A); Afișează prima imagine


subplot(1,3,2), imshow(B); Afișează a doua imagine

output = imsubtract(A,B); Se diferențiază imaginile


27
subplot(1,3,3), imshow(output); Se afișează rezultatul

Figură 3.4 Diferența imaginilor

O alternativă rezolvare a acestor probleme se poate face cu ajutorul diferenței absolute între
imagini, dată de formula =| |. Acest lucru evită problema potențială a depășirii întregului
atunci când diferența devine negativă.

Exemplul 3.3

Codul Matlab Ce se întâmplă?


output = imabsdiff(A,B); Se diferențiază imaginile
subplot(1,3,3), imshow(output); Se afișează rezultatul

3.2.1.2 Multiplicarea și împărțirea imaginilor


Multiplicarea și împărțirea pot fi folosite ca un mijloc simplu de reglare a contrastului (de
exemplu reducerea contrastului la 25% = împărțirea cu 4; creșterea contrastului cu 50% = multiplicarea
cu 1.5 ). Această procedură uneori se referă la scalarea culorii imaginii . În mod similar, împărțirea
poate fi folosită pentru diferențierea imaginilor, împărțind o imagine cu alta, dă un rezultat de 1 .0 în
care valorile pixelilor de imagine sunt identice, și o valoare care nu este egală cu 1.0 în cazul în care nu
apar diferențe. În orice caz, împărțirea imaginilor utilizând diferența este mai eficientă din punct de
vedere computațional.
Un exemplu în Matlab poate fi următorul:

Exemplul 3.4

Codul Matlab Ce se întâmplă ?


output = immultiply(A,1.5); Multiplică imaginea cu 1.5
subplot(1,3,3), imshow(output); Afișează rezultatul
output = imdivide(A,4); Divizează imaginea cu 4
subplot(1,3,3), imshow(output); Afișează rezultatul

Pentru toate operațiile aritmetice între imagini trebuie să ne asigurăm că valorile pixelilor care
rezultă ramân în intervalul întregului disponibil tipului de date și dimensiunii valabile. De exemplu, o
imagine pe 8 biți poate reprezenta 256 de valori în fiecare locație pixel. O valoare inițială a pixelilor de
25, multiplicată cu o constantă de 12, va depăși intervalul de valori 0-255 și astfel va apărea un exces a
cărui valoare se va ”împacheta” la o valoare scăzută.
Acest proces este cunoscut sub denumirea de saturație în spațiul imaginii: valoarea depășește
capacitatea de reprezentare a imaginii. O soluție pentru aceasta este de a detecta depășirea și de a o
evita prin setarea tuturor acestor valori la valoarea maximă pentru reprezentarea imaginii. Metoda de
manipulare a depășirii este implementată cu funcțiile Matlab imadd, imsubtract, immultiply și imdivide.
În mod similar trebuie să fim conștienți de valorile negative ale pixelilor care pot apărea la
diferențiere și de a le trata în consecință, de obicei acestea sunt setate la 0. Pentru cazul în care avem
imagini RGB cu 3 canale de culoare, operațiile aritmetice sunt tratate separat pentru fiecare canal de
culoare.

3.2.2 Operații logice asupra imaginilor


Putem de asemenea efectua operații logice standard între imagini, cum ar fi NOT,OR, XOR și
AND. În general, operațiile logice sunt efectuate între fiecare bit corespunzător al reprezentării
pixelilor din imagine.
 NOT (negația) Acesta inversează reprezentarea imaginii. În cel mai simplu caz al imaginilor
binare, valoarea pixelilor se inversează, adică cei albi devin negri și viceversa. Pentru imaginile
de culori gri și cele colore, procedura este de a înlocui fiecare valoare a pixelilor
după formula ce urmează:

(3.3)

unde MAX este valoarea maximă posibilă în reprezentarea imaginii date. Prin urmare, pentru o
imagine gri pe 8 biți, MAX = 255.

În Matlab aceasta se face în următorul mod:


Exemplul 3.5

29
Codul Matlab Ce se întâmplă?
A = imread(‘cameraman.tif’); Se citește imaginea de intrare
subplot(1,2,1), imshow(A); Afișează imaginea
B = imcomplement(A); Se inversează imaginea
subplot(1,2,2), imshow(B); Se afișează imaginea rezultată B

 OR/XOR (SAU/SAU EXCLUSIV) SAU logic (SAU EXCLUSIV) este folositor procesarea
imaginilor binare (0 sau 1) pentru a detecta obiectele care au fost modificate între cadre.
Obiectele binare sunt produse în mod tipic prin segmentarea unei imagini gri.
 AND (ȘI LOGIC) Și logic este de obicei utilizat pentru detectarea diferențelor în imagini,
evidențierea regiunilor țintă cu o mască binară.

Pentru a efectua operații logice asupra imaginilor în Matlab, ele mai întâi sunt convertite în binar
utilizând funcția Matlab im2bw. Operatorii care se folosesc în Matlab pentru operația ȘI este ‘&’, în
timp ce pentru operația SAU este ‘|’.
Operațiile combinate de felul NAND(și negat), NOR(sau negat) și NXOR(sau exclusiv negat) pot fi
de asemenea aplicate în aceeași manieră.
Un exemplu de aplicare a operatorilor logici asupra imaginii avem în următorul cod Matlab:

Exemplu 3.6

Codul Matlab Ce se întâmplă?


A = imread(‘toycars1.png’); Citește prima imagine de intrare
B = imread(‘toycars2.png’); Citește a doua imagine de intrare
Abw = im2bw(A); Convertește în binar
Bbw = im2bw(B); Convertește în binar

subplot(1,3,1), imshow(Abw); Afișează prima imagine


subplot(1,3,2), imshow(Bbw); Afișează a doua imagine
output = xor(Abw,Bbw); Se aplică operația XOR asupra imaginilor
subplot(1,3,3), imshow(output); Se afișează rezultatul
Figură 3.5 Aplicarea XOR asupra imaginilor

3.2.3 Segmentarea (binarizarea)


Un alt tip de transformare de bază a punctelor imaginii o reprezintă segmentarea (mai poate fi
numită și prăguire. Segmentarea produce o imagine binară dintr-o imagine coloră sau în nuanțe de gri
prin setarea pixelilor la valorile 1 sau 0, în dependență de valoarea lor superioară sau inferioară.
Aceasta este de obicei utilizată pentru a separa sau segmenta o regiune sau un obiect în cadrul
unei imagini bazate pe valoarea pixelilor acesteia.
Segmentarea operează asupra imaginii I în modul următor:
pentru fiecare pixel I(i,j) în cadrul imaginii I
if I(i,j) > segmentare
I(i,j) = 1
else
I(i,j) = 0
end
end

Un astfel de exemplu avem în imaginea următoare,unde este folosită segmentarea pentru


identificarea obiectelor.

31
Figură 3.6 Segmentarea pentru identificarea obiectelor

În Matlab acest lucru poate fi realizat folosind funcția im2bw și segmentarea în intervalul 0 și 1,
ca în exemplul următor:

Exemplul 3.7

Codul Matlab Ce se întâmplă?


I = imread(‘trees.tif’) Se citește imaginea de intrare
T = im2bw(I, 0.1); Se aplică segmentarea
subplot(1,3,1), imshow(I); Se afișează imaginea originală
subplot(1,3,2), imshow(T); Se afișează imaginea segmentată

Funcția im2bw convertește automat imaginile colore în imagini gri și mărește valoarea
segmentării în funcție de intervalul de cuantizare al imaginii procesate.

Figură 3.7 Segmentarea sau prăguirea unei imagini complexe

Pentru imaginile gri, unde pixelii conțin o singură valoare de intensitate, segmentarea trebuie făcută
doar odată. Pentru imaginile colore,segmentarea trebuie făcută separat pe fiecare canal de culoare. În
majoritatea aplicațiilor, imaginile colore sunt convertite mai întâi la scara gri, după care se aplică și
segmentarea. Variațiile obișnuite care apar la segmentare sunt:
 utilizarea a două segmentări pentru a separa valoarea pixelilor în intervalul dat;
 utilizarea a mai multor segmentări care au ca rezultat o imagine marcată cu porțiuni etichetate
între 0 și 1;
 păstrarea informațiilor originale despre pixeli pentru valori selectate, în timp ce altele sunt
setate pe negru.

Segmentarea este operatorul primar pentru separarea imaginilor primare de cele de fundal.

3.3 Operațiile bazate pe puncte asupra imaginilor


Intervalul dinamic al unei imagini este definit ca o diferență între cea mai mică și cea mai mare
valoare a pixelilor în cadrul imaginii. Putem defini câteva transformări funcționale sau asocieri care
modifică utilizarea eficientă a intervalului dinamic. Aceste transformări sunt aplicate direct pentru a
îmbunătăți contrastul imaginii. Îmbunătățirea este realizată prin modificarea relației dintre intervalul
dinamic al imaginii și valorile de pe scara gri.
În general, avem un interval de 8 biți pe scara gri (de la 0 la 255) pentru intrări, însă aceste
tehnici pot fi generalizate și la alt interval de intrări și canale individuale ale imaginilor color.

3.3.1 Transformările logaritmice


Intervalul dinamic al unei imagini poate fi comprimat prin schimbarea fiecarei valori a pixelilor
într-o imagine, cu logaritmul său: , unde I(i,j) este valoarea pixelilor la
locația (i,j) în imaginea I, și funcția reprezintă logaritmul natural. În practică, deoarece
logaritmul nu este definit pentru 0, este folosită următoarea formă generală a logarimticii:

(3.4)

Trebuie de menționat faptul că factorul scalar σ controlează intervalul de intrare la funcția


logaritmică, în timp ce constanta c scalează ieșirea asupra cuantizării imaginii în intervalul 0-255.
Adiția lui 1 este inclusă pentru a preveni problemele unde logaritmul este nedefinit pentru
. Nivelul compresiei intervalului dinamic este efectiv controlat de parametrul σ. După
cum este arătat în figura 3.8, deoarece funcția logaritmică este apropiată de origine, compresia obținută
este mai mică pentru o imagine care conține o gamă largă de valori ale pixelilor.
Scalarea constantei c poate fi calculată în baza maximului alocat valorii de ieșire și valorii
maxime max( prezente la intrare:

c= (3.5)
33
Figură 3.8 Transformarea logaritmică: variația parametrului σ modifică panta funcției logaritmice

Efectul transformării logaritmice este de a crește intervalul dinamic al regiunilor întunecate într-
o imagine și de a descrește intervalul dinamic în regiunile luminoase. Astfel, transformarea logaritmică
schimbă valorile inferioare ale intensității sau regiunile întunecate într-un număr mai mare de valori și
comprimă valorile superioare ale intensității sau părțile mai luminoase într-un interval mai mic de
valori în nuanțe de gri.
În cazul în care se face fotografia pe un fundal luminos, prin aplicarea transformării logaritmice,
luminăm imaginea din prim-plan al imaginii prin răspândirea pixelilor într-o gamă mai largă și prin
dezvăluirea mai multor detalii, în timp ce pixelii de fundal îi comprimăm. Acest lucru în Matlab se face
după exemplul următor, unde putem observa că intensificarea multiplicării constantei c mărește
luminozitatea generală a imaginii.
Exemplul 3.8

Codul Matlab Ce se întâmplă?


I = imread(‘cameraman.tif’); Citește imaginea
subplot(2,2,1), imshow(I); Afișeză imaginea
Id = im2double(I);
Output1 = 2*log(1 + Id);
Output2 = 3*log(1 + Id);
Output3 = 5*log(1 + Id);

subplot(2,2,2), imshow(Output1);
subplot(2,2,3), imshow(Output2); Afișează imaginea rezultată
subplot(2,2,4), imshow(Output3);
Figură 3.9 Aplicarea transformării logaritmice cu mărirea constantei c

3.3.2 Transformări exponențiale


Transformarea exponențială reprezintă opusul transformării logaritmice. Aici funcția de
asociere este definită de baza e ridicată la puterea pixelului de intrare:

(3.6)

Această transformare îmbunătățește detaliile mai luminoase, în timp ce detaliile mai întunecate
au efectul opus al transformării logaritmice. Varianta mai detaliată a transformării exponențiale este
următoarea:
(3.7)

35
Aici, este baza și c este factorul scalar necesar pentru a asigura că ieșirea se află într-un
domeniu adecvat. În cazul în care rezultă că . Nivelul de
comprimare și extindere al intervalului dinamic este controlat de porțiunea din curba funcției
exponențiale utilizată pentru cartografierea de ieșire, aceasta este determinată de parametrul . După
cum putem observa în imaginea urmatoare, compresia este mai mare pentru o imagine care conține un
interval mai mic de valori al pixelilor decât un interval mai larg.

Figură 3.10 Transformarea exponențială: variația parametrului α modifică panta funcției exponențiale

În următorul exemplu 3.9, putem observa că contrastul fundalului în imaginea originală poate fi
îmbunătățit aplicând transformarea exponențială, dar în detrimentul contrastului în zonele întunecate
ale imaginii. Fundalul este zona cu valoare ridicată a imaginii, în timp ce regiunile mai întunecate au
valori scăzute ale pixelilor. Acest efect se mărește odată cu creșterea numărului de bază.
Exemplul 3.9

Codul Matlab Ce se întâmplă?


I = imread(‘cameraman.tif’); Se citește imaginea de intrare
subplot(2,2,1), imshow(I); Se afișează imaginea
Id = im2double(I);
Output1=4*(((1+0.3).^(Id)) 1);
Output2=4*(((1+0.4).^(Id)) 1);
Output3=4*(((1+0.6).^(Id)) 1);

subplot(2,2,2), imshow(Output1); Se afișează imaginea rezultată


subplot(2,2,3), imshow(Output2);
subplot(2,2,4), imshow(Output3);

Figură 3.11 Aplicarea transformării exponențiale cu mărirea constantei c

3.3.3 Transformare de tip putere


O alternativă a ambelor transformări logaritmice și exponențială este transformarea cu ridicare
la putere unde fiecare valoare a pixelilor de intrare este ridicat la o putere fixă:

(3.8)

37
În general o valoare a lui γ > 1 sporește contrastul porțiunilor mai luminoase din imagine în
conformitate cu porțiunile mai întunecate, și invers pentru γ < 1. Constanta c efectuează scalarea
intervalului ca mai înainte.
Exemplul 3.10
Codul Matlab Ce se întâmplă?
I = imread(‘cameraman.tif’); Se citește imaginea de intrare
subplot(2,2,1), imshow(I); Se afișează imaginea
Id = im2double(I);
Output1 = 2*(Id.^0.5);
Output2 = 2*(Id.^1.5);
Output3 = 2*(Id.^3.0);
subplot(2,2,2), imshow(Output1);
subplot(2,2,3), imshow(Output2); Se afișează imaginea rezultată
subplot(2,2,4), imshow(Output3);

Figură 3.12 Aplicarea transformării de tip putere

3.3.3.1 Aplicație: corecție gama


Corecția gama în mod formal este aplicarea unei funcţii de putere pe luminozitate, iar în mod
intuitiv este metoda de a creşte sau a scădea luminozitatea aparentă (relativă) a unei imagini. [1]
Atunci când afișăm o intensitate dorită pe un monitor, variem voltajul analog în proporție cu
luminozitatea dorită. Problema este că toate monitoarele au o relație neliniară între voltajul de intrare și
intensitatea de ieșire, astfel intensitatea de ieșire a monitorului,în funcție de model, producător, anul
producerii,etc., în general variază puterea de intrare a voltajului cu aproximativ γ = 2.5. Aceasta
înseamnă că atunci când solicităm o intensitate de ieșire egală cu i, de fapt obținem o intensitate i2.5.
Pentru a evita această problemă, putem preprocesa intensitățile imaginii utilizând inversa transformării
de putere înainte de ieșire pentru a ne asigura că afișăm corect. Astfel, dacă efectul afișării gama poate
fi caracterizat ca , unde γ este valoarea reală pentru ieșirea la monitor, atunci
corectăm intrarea cu inversarea transformării puterii , care produce următoarea formulă:

= (3.9)

Sistemele de operare moderne au construit utilitarele de corecție gama astfel ca să îi permită


utilizatorului să specifice valoarea γ, care va aplica în mod automat transformarea la graficele de
ieșire.Pentru monitoare specifice, calibrarea gama poate fi utilizată pentru a determina o valoare exactă
a lui γ.
În Matlab, corecția gama este efectuată cu ajutorul funcției immadjust.
Exemplul 3.11
Codul Matlab Ce se întâmplă?
A = imread(‘cameraman.tif’); Se citește imaginea
subplot(1,2,1), imshow(A); Se afișează imaginea
B = imadjust(A,[0 1],[0 1], 1./3); Se asociază valorile gri de intrare a imaginii A în
intervalul 0 1 la intervalul de ieșire de 0 1 cu

subplot(1,2,2), imshow(B);
factorul gama de
Se afișează rezultatul

Figură 3.13 Aplicarea corecției gama

3.4 Distribuția pixelilor: histograma


Histograma unei imagini reprezintă frecvența relativă de apariție a nivelelor de gri din imagine.
Pentru o imagine I, de dimensiunea MxN pixeli, histograma se definește astfel:

39
unde funcția δ este definită în modul următor:

[2]
Inspecția vizuală a unei histograme a imaginii poate dezvălui contrastul de bază prezent și orice
potențială diferență în distribuția de culori a componentelor din prim-plan și fundal.
Pentru o imagine gri, histograma poate fi construită prin numărarea de câte ori apare valoarea
pe scara gri în cadrul imaginii. Fiecare valoare binară din cadrul histogramei este incrementat de fiecare
dată când se întâlnește o valoare. Astfel o histogramă este creată după urmatorul pseudocod:
se initializeaza toate valorile de intrare a histogramei la 0
pentru fiecare pixel I(i,j) din imaginea I
histograma(I(i,j)) = histograma(I(i,j)) + 1
sfarsit

În Matlab putem calcula și afișa histograma unei imagini după modelul următor:
Exemplul 3.12
Codul Matlab Ce se întâmplă?
I = imread(‘coins.png’); Se citește imaginea
subplot(1,2,1), imshow(I); Se afișează imaginea
subplot(1,2,2), imhist(I); Se afișează histograma

Figură 3.14 Imagine simplă și histograma sa corespunzătoare

De asemenea putem să interogăm și să adresăm în mod individual anumite valori


Exemplul 3.13
Codul Matlab Ce se întâmplă?
I = imread(‘coins.png’); Se citește imaginea
[counts,bins] = imhist(I); Se citesc valorile bin
counts(60) Se solicită valoarea la bin 60

În Matlab putem utiliza histograma imaginii ca bază pentru calcularea automata a valorii
pragului. Funcția graytresh exploatează metoda OTSU, care alege acea valoare a pragului care
minimizează variația statistică a pixelilor pragați albi și negri.
Exemplul 3.14
Codul Matlab Ce se întâmplă?
I = imread(‘coins.png’); Se citește imaginea
level = graytresh(I);
It = im2bw(I,level); Se praghează imaginea
imshow(It); Se afișează rezultatul

3.4.1Аccentuаreа contrаstului
Аceаstă oрerаție se folosește în sрeciаl рentru îmbunătățireа imаginilor cu contrаst scăzut.
Аcestа рoаte арăreа dаtorită unei slаbe iluminări, а unei iluminări neuniforme sаu din cаuzа unor
neliniаrități аle cаrаcteristicilor unui senzor de cарtură а imаginii. O funcție tiрică de аccentuаre а
contrаstului аre următoаreа formă mаtemаtică:

unde L reрrezintă numărul de nivele рe cаre se fаce cuаntizаreа tonurilor de gri. Cаzul cel mаi frecvent
este L = 256, рentru o cuаntizаre рe 8 biți, x luând vаlori în intervаlul 0,255. Vаlorile
reрrezintă раntele celor trei segmente de dreарtă.

Duрă cum se observă în аceаstа imаgine раntele sunt рozitive și subunitаre, iаr раntа
este рozitivă și suрrаunitаră. Un segment cu раntă subunitаră reаlizeаză o ”арroрiere” а nivelelor de
gri, рe când un segment cu раntă suрrаunitаră vа reаlizа o ”deрărtаre” а nivelelor de gri, și deci o
аccentuаre а contrаstului.[3]

3.4.2 Întinderea de contrast

41
Аcestа este un cаz pаrticulаr аl operаției de аccentuаre. Se folosește, în generаl pentru
reducereа zgomotului dintr-o imаgine, аtunci când se știe că аcestа iа vаlori cu precădere în intervаlul
[а,b]. Formа mаtemаtică este următoаreа:

Nivele de gri аflаte în intervаlul [а,b] vor fi distаnțаte, cа urmаre а pаntei suprаunitаre, iаr
nivelele de gri ce se găsesc în аfаrа аcestui intervаl, vor fi înlocuite cu аlb, fie cu negru, după cаz.

Histogramele imaginilor sunt de asemenea utilizate și pentru întinderea de contrast (cunoscut și


ca normalizare), care funcționează prin întinderea intervalului de intensități ale pixelilor al imaginii de
intrare pentru a ocupa un interval dinamic mai mare în imaginea de ieșire. [4]
Pentru a realiza întinderea, mai întâi trebuie să știm limitele inferioare și superioare ale valorilor
pixelilor peste care imaginea urmează să fie normalizată, denumite respectiv a și b. Acestea, în general,
sunt limitele superioare și inferioare ale intervalului de cuantificare a pixelilor în uz. În cea mai simplă
formă, prima parte a operației de întindere a contrastului scanează imaginea de intrare pentru a
determina valorile maxime și minime ale pixelilor prezenți, notat cu c și d respectiv.
Astfel bazându-ne pe aceste patru valori (a,b,c și d), intervalul pixelilor imaginii sunt întinși
după următoarea formulă:
(3.10)

pentru fiecare locație a pixelilor denumit (i,j) în imaginile de intrare și ieșire.


În realitate, această metodă de alegere a lui c și d nu este practică deoarece chiar și un singur
pixel extern ( adică unul care nu este reprezentativ pentru intervalul general de pixeli prezent în
imagine – de exemplu zgomotul de sare și piper ) va afecta drastic rezultatul general de îmbunătățire.
Putem îmbunătăți această metodă, garantând că c și d sunt cu adevărat reprezentativi pentru conținutul
imaginiiși robuste pentru asemenea valori statistice.

Două asemenea metode pot fi:


 Metoda 1 Se construiește histograma imaginii de intrare și se selectează c și d ca punctele
percentile 5 și 95 ale distribuției cumulative ( adică 5% din pixelii de imagine vor fi mai mici
decât c și 5% mai mari decât d ).
 Metoda 2 Se construiește histograma imaginii de intrare și se găsește cea mai frecvent
întâlnită valoare a intensității în imagine. Se selectează ca întrerupere o fracțiune din N ( de
exemplu 5% ) și se deplasează de la valoarea de vârf în ambele direcții până când se ating
ultimele valori mai mari decât limita. Aceste valori vor reprezenta c și d.
Metoda a 2-a este mai puțin robustă.
În următorul exemplu efectuăm întinderea contrastului utilizând metoda 1. Ca rezultat vom
vedea îmbunătățirea semnificativă a contrastului.
Exemplul 3.15
Codul Matlab Ce se întâmplă?
I = imread(‘girl.jpg’); Se citește imaginea de intrare
Ics = imadjust(I,strechlim(I, [0.05 0.95]),[]); Întinderea contrastului utilizând varianta 1
subplot(1,2,1), imshow(I); Se afișează imaginea
subplot(1,2,2), imshow(Ics); Se afișează rezultatul

Figură 3.15 Întinderea contrastului aplicat în imagine

Dacă afișăm histogramele imaginii înaintea intinderii de contrast și după, vom vedea clar
intervalul dinamic restricționat al imaginii originale și modul în care histograma întinsă de contrast
corespunde unei versiuni orizontale scalate ale originalului.

Exemplul 3.16
Codul Matlab Ce se întâmplă?
subplot(1,2,1), imshow(I); Se afișează histograma de intrare
subplot(1,2,2), imshow(Ics); Se afișează histograma rezultată
43
Figură 3.16 Histograma după întinderea de contrast

3.4.3 Egalarea histogramei


A doua operație pentru îmbunătățirea de contrast, bazată pe manipularea histogramei unei
imagini, este egalarea histogramei. Aceasta este una din cele mai utilizate tehnici de îmbunătățire a
imaginilor.

3.4.3.1 Teoria de egalare a histogramei


Inițial, vom presupune ca vom avea imagini în scara gri, notate cu . Dacă variabila x
este continuă și normalizată să se situeze în intervalul [0,1], atunci aceasta ne permite să considerăm
histograma normalizată a imaginii ca o funcție de densitate a probabilității (PDF) px(x), care definește
probabilitatea unor valori ale scarei gri care apar în vecinătatea lui x. În mod similar putem nota și
imaginea gri de ieșire după egalarea histogramei ca cu funcția PDF corespunzătoare py(y).
Esența problemei de egalare a histogramei este aceea că căutăm o funcție de transformare
care să se potrivească între valorile imaginii de intrare și cea de ieșire și care va transforma
intrarea PDF px(x) pentru a produce rezultatul dorit PDF py(y). Un rezultat standard din teoria
probabilității elementare afirmă că:
(3.11)
ceea ce înseamnă că PDF-ul de ieșire dorit depinde doar de PDF-ul de intrare cunoscut și de funcția de
transformare . Următoarea funcție de transformare calculează aria de sub curba densității de
probabilitate de intrare între 0 și limita superioară x:

(3.12)

Această este recunoscută ca funcția cumulativă de distribuție (CDF) a unei variabile x aleatoare.
Diferențiind această formulă, aplicând regula lui Leibniz 1 și înlocuind în formula anterioară obținem:

(3.13)

Deoarece este o densitate de probabilitate și se garantează a fi pozitivă (0 ≤ ≤

1), ob inem următoarea formulă finală:

(3.14)

Densitatea probabilității de ieșire este astfel constantă, indicând faptul că toate valorile y de
ieșire sunt la fel de probabile, și astfel, histograma intensității de ieșire este egalată.
De menționat este faptul că rezultatul transformării de mai sus depinde de satisfacerea a două
condiții:
a) Funcția trebuie să fie evaluată singular;
b) Funcția trebuie să crească monotonic 0

1
Regula lui Leibniz – derivata unui anumit integral în raport cu limita superioară este egal cu integrandul evaluat la limita
superioară
45
Condiția a) mai întâi asigură transformarea inversă există și că ordinal de valoare ascendentă de
la negru la alb este păstrat. În cazul în care funcția nu ar crește monotonic, transformarea inversă nu ar
fi evaluată singular și ca rezultat avem o situație în care unele intensități de ieșire se referă la una sau
mai multe intesități de intrare. A doua condiție b) pur și simplu asigură ca domeniul de ieșire să
înregistreze intrarea.

3.4.3.2 Teoria egalizării histogramelor: cazul discret


Valorile intensității în imaginile digitale reale pot ocupa doar un număr finit și discret de
niveluri. Presupunem că avem S posibile valori discrete ale intensității notate cu , unde
, și probabilitatea de intrare a densității pentru nivelul este . În acest
caz discret, asocierea general dorită poate fi definită pentru ca o suma de următoarea
formă:

(3.15)
Aceasta în general este histograma cumulativă pentru imaginea de intrare x, unde la intrarea k pentru
reprezintă suma tuturor intrărilor binare până la k inclusiv. Presupunând că k are doar valori
întregi discrete, formula de mai sus se rezumă la:

(3.16)
unde reprezintă intrările la nivelul k și N numărul total de pixeli în imagine.
Definițiile de mai sus fac procedura de calcul corespunzătoare egalizării histogramei o
procedură simplă de implementat în practică. De menționat este faptul că transformarea discretă nu
poate genera o histogramă de ieșire perfect egalată (adică în care toate valorile intensității sunt strict
egale).
În practică, se formează o bună aproximare a idealului, adaptat la histograma cumulativă a
imaginii de intrare, care răspândește valorile intensității mai uniform pe intervalul de cuantizare definit
al imaginii.

3.4.3.3 Egalarea histogramei în practică


Principalele două facilități ale egalării histogramei sunt acelea că este o procedură complet
automată și a doua facilitate - este simplă din punct de vedere computațional. Funcția de transformarea
a intensității depinde doar de histograma valabilă primită a imaginii de intrare.
Modelarea histogramei oferă un mijloc de modificare a intervalului dinamic al unei imagini
astfel încât distribuția histogramei să fie conformă cu o formă dorită. În egalarea histogramei, folosim o
asociere monotonică, neliniară astfel încât pixelii imaginii de intrare să fie asociați la o imagine de
ieșire cu o distribușie uniformă a histogramei.
După cum am afirmat și mai inainte, această asociere poate fi definită ca o histogramă
cumulativă astfel încât fiecare intrare să fie suma frecvenței de apariție pentru fiecare nivel de gri
la intrarea i,inclusiv, a histogramei curente. Funcția este o funcție cu o valoare monotonică în
creștere. Gradientul său va fi proporțional cu egalarea actuală a imaginii (de exemplu un gradient
constant de 1 va fi o imagine perfect egalizată, la fel ca și creșterea sa la fiecare pas va fi constantă).
În cazul ideal, imaginea egalată rezultată va conține un număr egal de pixeli, fiecare având
același nivel de gri. Pentru L niveluri posibile de gri în cadrul unei imagini cu N pixeli, la intrarea j a

histogramei cumulative avem valoarea egală cu în cazul ideal. Astfel, putem găsi
o asociere între valorile pixelilor de intrare i și pixelii de ieșire j după formula:

(3.17)
de obținem formula:

(3.18)
care reprezintă asocierea de la valoarea pixelului i în imaginea de intrare, până la valoarea j în
imaginea de ieșire prin histograma cumulativă a imaginii.
Valoarea maximă a lui j din cele mai sus este L, dar intervalul de valori pe scara gri este strict
pentru o imagine dată. În practică, aceasta este rectificat prin adaugarea lui -1 la
ecuație, cerând astfel ca valoarea lui j = -1 sa nu fie returnată:

(3.19)
care, în termeni familiari pentru locațiile pixelilor 2D, avem si se transforma în:

(3.20)
unde este histograma cumulativa pentru imaginea de intrare , N este numarul de pixeli din
imagine (C x R) și L este numarul posibil de nivele de gri în imagine. Aceasta produce efectiv un tabel
de asociere a valorilor pixelilor din imaginea de intrare la imaginea de ieșire.
Ca o procedură automată, această asociere, care constituie egalarea histogramei, poate fi citită
ca în urmatorul exemplu:

Exemplul 3.17

Codul Matlab Ce se întâmplă?


I = imread(‘pout.tif’); Citește imaginea

47
Ieq = histeq(I);
subplot(2,2,1), imshow(I); Afișează imaginea
subplot(2,2,2), imshow(Ieq); Afișează rezultatul
subplot(2,2,3), imhist(I); Afișează histograma imaginii
subplot(2,2,4), imhist(Ieq); Afisează histograma rezultată

Figură 3.17 Egalizarea histogramei aplicată unei imagini simple

În acest rezultat putem observa efectul de egalare asupra intervalului dinamic al imaginii și
egalarea corespunsă a distribuției histogramei asupra intregului interval de cuantizare al imaginii.

3.4.4 Potrivirea histogramelor


În ciuda caracteristicelor sale atractive, egalarea histogramei nu este cu siguranță o soluție
pentru toate situațiile. Există multe situații în care egalizarea produce efecte destul de nedorite. O
tehnica strâns legată, cunoscută sub denumirea de potrivire a histogramei ( mai este cunoscută și ca
specificația histogramei), este uneori mai potrivită și poate fi folosită atât ca mijloc de îmbunatățire a
contrastului vizual, cât și pentru regularizarea unei imagini înainte de procesarea sau analiza ulterioară.
Ideea care stă la baza potrivirii histogramelor este foarte simplă. Având în vedere imaginea
inițială (de intrare) și histograma sa corespunzătoare , căutam să efectuăm o
transformare asupra valorilor intensității de intrare astfel încât imaginea transformată (de iesire)
să aibă o histogramă dorită . Adesea, histograma țintă este luată dintr-un model sau o
imagine de tip similar.
3.4.4.1 Teoria potrivirii histogramelor
Vom încerca să analizăm problema cum să obținem histograma țintă și pur și simplu vom
presupune că este cunoscută. Deci sarcina noastră de potrivire poate fi formulată după cum urmează.

Nivelurile intensităților de intrare vor fi notate prin variabila x (0 ≤ ≤ 1) și funcția PDF a imaginii
de intrare notată cu Similar nivelurile de ieșire ale intensității vor fi notate cu variabila z (0

≤ ≤ 1) și funcția PDF corespunzătoare notată cu . Sarcina noastră de potrivire a histogramei


poate fi apoi formulată ca derivarea asocierii între valorile intensității de intrare x și cele de ieșire
z astfel incât valorile asociate intensității de ieșire să aibă PDF-ul dorit .
Distribuția cumulativă (CDF) a imaginii de intrare poate fi reprezentată ca definiție în
felul urmator:

(3.21)
În mod similar, CDF a imaginii este dată de integrala ieșirii PDF:

(3.22)
Un punct cheie în rationamentul nostru este recunoașterea faptului că ambele transformări sunt
irevirsibile. Mai precis, un PDF arbitrar este legat de CDF prin relația:

(3.23)

Astfel, cunoașterea unui CDF determină în mod unic PDF-ul; și dacă CDF este cunoscut, atunci și
PDF-ul este cunoscut și calculabil prin acest diferențial explicit. Rezultă că dacă putem defini o
asociere între intensitățile de intrare (x) și intensitățile de ieșire (z) astfel încât CDF-urile de
intrare și de ieșire să fie identice, garantăm astfel că PDF-urile corespunzătoare de asemenea vor fi
aceleași. În consecință cerem ca CDF-urile definite anterior, si sa fie egale pentru
asocierea :

(3.24)
de unde rezultă că asocierea dorită este

(3.25)
49
Definiția pentru această asociere este fundamentală pentru capacitatea de a asocia intrarea
la și, prin urmare, PDF-ul de intrare la PDF-ul de ieșire .

3.4.4.2 Teoria potrivirii histogramelor: cazul discret


În general, asocierea inversă nu este o funcție analitică și trebuie să recurgem la tehnici
numerice pentru aproximarea asocierii necesare. Pentru a realiza o aproximare discretă a potrivirii a
doua histograme ale imaginii, vom purcede mai întâi la calcularea lui CDF discretă a imaginii de
intrare:

(3.26)

unde sunt valorile la nivelul de intensitate j al imaginii de intrare, N numarul total de pixeli în acea
imagine si , unde L este numarul posibilelor niveluri de gri în imagine.
Sub aceeași manieră se calculează și CDF-ul discret al imaginii de ieșire:

(3.27)
unde sunt valorile la nivelul de intensitate j al imaginii de ieșire, N numarul total de pixeli în acea
imagine și , unde L este numărul posibilelor niveluri de gri în imagine. În cele din
urma, vom alcătui versiunea discretă a transformării anterioare și trebuie să găsim
asocierea atunci când intrarea pentru ea este CDF-ul imaginii de intrare, .
La fel ca și în exemplul anterior la egalizarea histogramei, această asociere definește în mod
eficient o tabelă de căutare între valorile pixelilor de intrare și de ieșire care pot fi ușor și eficient de
calculat.

3.4.4.3 Potrivirea histogramei în practică


Potrivirea histogramei extinde principiile egalizării histogramelor prin generalizarea formei a
histogramei țintă. Este o tehnica de îmbunătățire automată în care transformarea necesară este derivată
dintr-o histogramă țintă specificată de distribuție.
În practică, histograma țintă de distribuție t va fi extrasă dintr-o imagine de referință existentă,
sau va corespunde unei funcții matematice specificată cu proprietățile necesare. În continuare vom
specifica un PDF liniar ca ținta de distribuție t și vom încerca să observăm potrivirea histogramei.

Exemplul 3.20
Codul Matlab Ce se întâmplă?
I = imread(`pout.tif’);
Se definește rampa pentru PDF ca histograma de
Pz = 0:255;
ieșire dorită
Se furnizează histograma dorită pentru a efectua
Im = histeq(I,Pz); potrivirea
Afișează imaginea
subplot(2,3,1), imshow(I); Afișează rezultatul
subplot(2,3,2), imshow(Im); Afișează distribuția t
subplot(2,3,3), plot(Pz); Afișează histograma imaginii
subplot(2,3,4), imhist(I); Afișează histograma rezultatului
subplot(2,3,5), imhist(Im);

Figură 3.18 Potrivirea histogramei aplicat unei imagini

Este evident din această figură 3.18 că histogramă dorită a imaginii de ieșire nu produce o ieșire
cu caracteristici deosebit de perfecte. În general, alegerea unei histograme ținte adecvate presupune
cunoașterea structurilor din imaginea de intrare și necesită îmbunătățiri. O situație în care alegerea
histogramei de ieșire poate fi fixată esențial, este atunci când imaginea examinată este un exemplu de
clasa dată, dar a fost afectată de factori straini.

51
Un exemplu în acest sens este o secvență de fețe în poziția frontală. Aceasta histogramă a unei
fețe date poate fi afectată de iluminarea intensității și de efectele de umbrire. O față capturată în condiții
ideale ar putea furniza histograma dorită pentru a corecta aceste efecte de ilumare și de umbrire înainte
de utilizarea ulterioară a imaginii de intrare, transformate pentru recunoașterea facială.

3.4.5 Egalizarea histogramei adaptive


Uneori histograma globală a unei imagini poate avea o distribuție largă, în timp ce histograma
regiunilor locale este foarte înclinată către un capăt al spectrului de gri. În asemenea cazuri, de multe
ori este de dorit să se îmbunatățească contrastul acestor regiuni locale, dar egalizarea histogramei
globale este ineficientă. Acest lucru poate fi rezolvat prin egalizarea histogramei adaptive.
Termenul de adaptiv implică faptul că diferite regiuni ale imaginii sunt procesate diferit în
dependență de proprietățile locale.
Există mai multe variante ale egalizării histogramei adaptive, dar poate cea mai simplă și cea
mai utilizată este abordarea asa-numită fereastră glisantă. În această metodă, imaginea de bază este
împărțită în regiuni locale vecine N x M (de exemplu 16 x 16 pixeli). Fiecare regiune este înconjurată
de o regiune mai mare, care este folosită pentru a calcula tabelul de căutare pentru egalizarea
histogramei adecvate pentru regiunea interioară.
Acest lucru în general este eficient în creșterea contrastului local, dar pot apărea ‚artefacte bloc’
ca rezultat al procesării fiecărei astfel de regiuni izolate, iar artefactele la limitele dintre ferestrele
interioare pot avea tendința de a produce impresia unei imagini care constă dintr-un număr de blocuri
nepotrivite. Artefactele pot în general fi reduse prin mărirea dimensiunii regiunii exterioare față de
regiunea interioară.
O metodă alternativă pentru egalizareă histogramei adaptive poate fi aplicată cu succes după
următoarele etape:
 O rețea regulată de puncte este suprapusă peste imagine. Spațierea între punctele rețelei în
această abordarea este o variabilă, dar în general este de câteva zeci de pixeli.
 Pentru fiecare punct al grilei, se determină o regiune dreptunghiulară cu dublul distanței dintre
grilă. Astfel o regiune dată are o suprapunere de 50% cu vecinii săi imediați din nord,sud,est și
vest.
 Valoarea transformată a unui pixel dat din imagine este calculată ca o combinație ponderată a
valorilor de ieșire din cele patru tabele de căutare din apropiere, utilizând următoarea formulă
bilineară:

(
unde a și b reprezintă distanța până la marginea regiunii de la pixelul dat. Această formulă
acordă o importanță adecvată regiunilor vecine căror aparțin punctul de calcul. De exemplu un
punct localizat exact pe un punct al grilei derivă numai la valoarea sa egală din vecinatatea sa
înconjurătoare, în timp ce un punct care este echidistant față de cele 4 puncte cele mai apropiate
ale rețelei, este o combinație echilibrată a tuturor celor 4 regiuni regiuni învecinate.
Figură 3.19 Egalizarea histogramei adaptive. Vecinătate de 4 regiuni

O extindere finală la această metodă este adaptarea contrastului limită la egalizarea histogramei.
În termeni generali, calculând histogramele regiunilor locale și egalizând valorile intensității între
aceste regiuni, există tendința de a mări prea mult contrastul și de a amplifica zgomotul imaginii. Unele
regiuni dintr-o imagine sunt în mod inerent netede, cu un contrast real redus și o egalizare orbită a
histogramei de intensitate dintr-o regiune dată poate avea rezultate nedorite.

Ideea principală pentru utilizarea limitării contrastului este de a plasa o limită l, 0 ≤ ≤ 1,


asupra creșterii contrastului aplicat pentru o regiune anumită.
Această metodă extinsă de limitare a contrastului în cadrul egalizării histogramei adaptive este
efectuată în Exemplul 3.21 Matlab ce urmează. Rezultatul acestui exemplu este prezentat mai jos unde
vedem efectele diferite a specificării limitei contrastului l și distribuția țintă t asupra imaginii egalizate
rezultată.
Egalizarea histogramei adaptive uneori poate avea efecte semnificative de îmbunatățire a
contrastului în imagine. Totuși, datorită naturii fundamentale care diferă de la o imagine la alta,
capacității de a varia numărul de plăci în care este descompusă o imagine și formei specifice a
distribuției probabilităților țintă, există puține teorii generale care să ne ghideze.
Obținerea unei imagini cu caracteristicile dorite de contrast este astfel, într-o masură
considerabilă, o artă în care acești parametri sunt variații experimentale.
Exemplul 3.21

Codul Matlab Ce se întâmplă?


I = imread (‘girl.tif’); Se citește imaginea de intrare

I1 = adapthisteq (I,’clipLimit’, 0.02, ‘Distribution’,


‘rayleigh’);
I2 = adapthisteq (I,’clipLimit’, 0.02, ‘Distribution’, Se aplică limitele de contraste și distribuția

53
‘exponential’);
I3 = adapthisteq (I,’clipLimit’, 0.08, ‘Distribution’,
‘uniform’);

subplot(2,2,1), imshow(I); Se afișează originalul


subplot(2,2,2), imshow(I1); Se afișează I1
subplot(2,2,3), imshow(I2); Se afișează I2
subplot(2,2,4), imshow(I3); Se afișează I3

i. Aici utilizăm funcția adapthisteq() pentru a efectua operația cu limită l specificată de utilizator.
În plus, implementarea Matlab a egalizării histogramei adaptive de asemenea permite
utilizatorului să specifice distribuția țintă t pentru a o utiliza cu fiecare regiune din imagine.
Egalizarea standard este realizată cu specificarea distribuției prestabilit în mod uniform.

ii. În mod prestabilit, implementarea Matlab utilizează o divizare 8 x 8 regiuni a imaginii pentru
procesare. Acestea, ca și ceilalți parametri din acest exemplu pot fi specificați prin denumirea și
valoarea lor ca intrări ale funcției. Pentru mai multe detalii se poate accesa documentația Matlab
a funcției adapthisteq().

Figură 3.20 Egalizarea adaptivă a histogramei aplicată in Matlab


3.4.6 Operații asupra histogramelor în imaginile color
Până în acest moment, am considerat doar aplicarea operațiilor de manipulare a contrastului pe
imagini pe un singur canal, de culoare gri.
Încercarea de a îmbunătăți contrastul imaginilor color este o problemă puțin mai complexă decât
pentru cele în scara gri. La prima vedere, este tentant să se considere aplicarea egalizării histogramei
sau potrivirea independentă cu fiecare din cele trei canale (R,G,B) ale imaginii color. Cu toate acestea,
valorile RGB ale unui pixel determină atât intensitatea, cât și cromaticitatea (adică impresia subiectivă
a imaginii).
Transformarea valorilor RGB ale pixelilor pentru a îmbunatăți contrastul va modifica, în general,
conținutul cromatic al imaginii (de exemplu nuanța de culoare). Ca soluție mai întâi vom transforma
culoarea imaginii reale, într-un alternativ și perceptual model de culoare, cum ar fi HSV, unde
componenta de luminozitate (intensitatea V) este decuplată de componentele cromatice (H și S) care
sunt responsabile de impresia subiectivă a culorii. Pentru a efectua astfel de operații pe histograme
asupra imaginilor color, vom face urmatoarele etape:
a) Vom transforma imaginea componentului RGB în reprezentare HSV (hue, saturation, variance);
b) Vom aplica operațiile histogramei componentei intensitate
c) Vom converti rezultatul înapoi în spațiul color RGB după cum s-a cerut inital.

Spațiul de culoare HSV nu este singurul în acest sens, ci mai sunt o mulțime cu care se poate opera,
însă eu am ales să operez cu el fiind cel mai cunoscut dintre acestea.
Utilizând etapele de mai sus enumerate avem următorul exemplu 3.22 Matlab:

Exemplu 3.22

Codul Matlab Ce se întâmplă?

I = imread ('lebede.tif'); Se citește imaginea de intrare


Ihsv = rgb2hsv (I); Conversia de la original la HSV
V = histeq (Ihsv(:,:,3)); Egalizarea histogramei V, al treilea canal
Ihsv (:,:,3) = V; Copiem canalul V egalizat în imagine HSV
Iout = hsv2rgb (Ihsv); Convertim înapoi la forma RGB
subplot(1,2,1), imshow(I); Afișăm imaginea originală
subplot(1,2,2), imshow(Iout); Afișăm imaginea modificată

În figura 3.21 ce urmează avem rezultatul exemplului dat unde vedem aplicarea egalizării
histogramei asupra unei imagini color RGB, utilizând reprezentarea HSV.
Se observă că impresia subiectivă de culoare (cromaticitatea) a fost menținută, însă efectul de
egalizare a componentului de intesitate în cadrul histogramei, este evident în rezultat.

55
Figură 3.21 Egalizarea histogramei adaptive pentru imaginea color

Capitolul 4. Îmbunătățirea imaginii

Tehnicile prezentate la sfârșitul capitolului anterior luau în considerare manipularea gamei


dinamice a unei imagini digitale date pentru îmbunătățirea vizualizării conținutului acesteia. În acest
capitol vom considera metode mai generale de îmbunătățire a imaginii. Vom introduce conceptul de
filtrare a imaginii, bazat pe subregiunile localizate ale imaginii ( pixelii apropiati), vom contura o serie
de filtre destinate eliminării zgomotului de imagine și vom explica cum cu ajutorul filtrării, se pot
aplica efectele de detectare și ascuțire a marginilor, destinate îmbunătățirii imaginii.

4.1 De ce este nevoie de a efectua îmbunătățirea?


Scopul de bază a îmbunătățirii constă în procesarea imaginii astfel încât să putem vedea și
accesa informația vizuală pe care aceasta o conține cu o claritate mai mare. Îmbunătățirea imaginii,
totuși, este mai degrabă subiectivă, întrucât aceasta depinde foarte mult de specificul informației pe
care utilizatorul speră să o extragă din imagine.
Principala condiție a îmbunătățirii imaginii este ca informația care va fi extrasă, accentuată sau
restabilită trebuie să existe în imagine. Faptul că ”nu se poate obține ceva din nimic” este esențial, iar
informația dorită nu trebuie să fie în întregime afectată de zgomotul de imagine. De fapt, cea mai
exactă și generală afirmație pe care o putem face cu privire la scopul îmbunătățirii imaginii este că
imaginea procesată ar putea fi mai potrivită scopurilor și sarcinilor necesare decât originalul. Aceasta
face estimarea îmbunătățirii imaginii, prin urmare, este greu de cuantificat eficiența acesteia separat de
domeniul ei specific de aplicare.

4.1.1 Îmbunătățirea cu ajutorul filtrării imaginilor


Principalul scop a îmbunătățirii imaginii constă în procesarea acesteia în așa fel, încât
interpretarea ei să fie mai convenabilă și plăcută din punct de vedere vizual. Eliminarea zgomotului de
imagine, ascuțirea marginilor acesteia sau efectul de focalizare (umbrire), deseori privelegiat în
fotografiile romantice, toate acestea constituie exemple de tehnici populare de îmbunătățire. Acestea,
precum și altele operații de îmbunătățire pot fi obținute prin intermediul procesului filtrării domeniului
spațial. Termenul de domeniu spațial este utilizat pentru a diferenția metoda dată de metodele ce țin de
domeniul de frecvență. Prin urmare, filtrarea domeniului spațial pur și simplu denotă că procesul de
filtrare are loc direct pe pixelii imaginii. Totuși, suntem obligați să ne referim la filtrare fără pericol de
confuzie. Filtrele acționează asupra imaginii pentru a schimba valorile pixelilor în anumite sensuri,
fiind în general clasificate în două categorii: lineare și neliniare. Filtrele liniare sunt mai frecvente, însă
vom vorbi și vom da exemple de ambele tipuri.
Indiferent de filtrul utilizat, toate abordările domeniului spațial acționează în același fel. Fiecare
pixel din imagine( pixelul fiind luat în cosiderare la un moment dat, numit pixel țintă) este adresat
succesiv. Valoarea pixelului țintă este atunci înlocuită de o nouă valoare, care depinde numai de
valoarea pixelor dintr-o apropiere specificată din jurul pixelui țintă.

4.2 Blocuri de pixeli vecini


Un criteriu important atribuit imaginii este cel reprezentat de conceptul de conectivitate. Multe
dintre operațiile de procesare a imaginii utilizează conceptul de vecinătatea locală a imaginii, pentru a
defini o zonă locală de influență, relevanță sau importanță. În centrul atenției a subiectului de definire a
vecinătății locale se află noțiunea de conectivitate a pixelor care decide care dintre pixeli să fie
conectați unii cu alții. Când vorbim despre conectivitatea a 4 pixeli, doar pixelii care sunt la NORD-ul,
SUD-ul, EST-ul si VEST-ul pixelului dat sunt conectați. Daca totuși și pixelii de pe diagonala trebuie
luați în considerare, atunci avem conectivitatea în 8 pixeli (N, NW, W, NE, SE, E, SW, S sunt toți
conectați).
În figura următoare 4.1 (în dreapta) utilizăm acest concept pentru a determina dacă regiunea A
și regiunea B sunt conectate și utilizează o conectivitate locală ( N x N= 3 x 3) pentru a determina dacă
sunt separate, sau componente ale aceleiași imagini.
Operațiile asupra imaginilor, efectuate la nivel local, precum filtrarea sau detectarea marginilor,
toate iau în considerare locația unui pixel (i, j), ghidându-se după vecinătatea acestuia (i ± k, j ± k).
Dimensiunea și, prin urmare, dimensiunea zonei de vecinătate, pot fi controlate variind
parametrul dimensiunii zonei de vecinătate N din care pornirea k este calculată ( de obicei N/2 ) . În
general, zonele de vecinătate pot fi N x M, unde N ≠ M pentru o influență inegala a pixelor în direcția
verticală și orizontală.

57
Figură 4.1 Conectivitatea blocurilor de pixeli(vecinătăți) (stânga) și un exemplu de vecinătate 3 x 3 centrat la o anumită
locație specificată

Majoritatea tehnicilor de procesare a imaginilor utilizează în prezent conectivitatea a 8 biți


vecini ca mod prestabilit, care cu ajutorul procesoarelor moderne, poate fi efectuată în timp real pentru
un număr rezonabil de zone vecine în majoritatea operațiunilor.
Operațiunea de filtrare a întregii imagini este efectuată printr-o serie de operațiuni asupra
zonelor vecine locale, utilizând principiul de „fereastra glisanta”, cu alte cuvinte toți pixelii din imagine
sunt procesați pe baza unei operațiuni efectuate asupra vecinătății locale N x N (zonă de influență).

În Matlab o astfel de operație poate fi efectuată ca în exemplul următor:

Exemplul 4.1

Codul Matlab Ce se întâmplă?


A = imread('cameraman.tif'); Se citește imaginea de intrare
subplot(1,2,1), imshow(A); Se afișează imaginea
func = @(x) max(x(:)); Se setează filtrul pentru aplicare
B = nlfilter(A,[3 3],func); Se aplică asupra vecinătății 3x3
subplot(1,2,2), imshow(B); Se afișează rezultatul imaginii B

Rezultatul acestui program este următorea figură 4.2:


Figură 4.2 Filtrarea pentru anumite blocuri de pixeli din imagine

4.3 Filtrul Kernel și mecanismele filtrării liniare


În filtrele liniare, valoarea nouă filtrată a pixelui în cauză este determinată ca o combinație
lineară a valorilor pixelilor din zona de vecinătate a sa . Prin urmare, orice alt tip de filtrare este una
nonlineară. Combinația liniară specifică a pixelilor învecinați este determinată de filtrul Kernel .
Filtrarea se obține aplicând un kernel (filtru) asupra unei imagini prin transformarea valorii
pentru fiecare pixel într-o valoare bazată pe kernel și pe pixelii din vecinatate în imaginea originală .

Această procedură de filtrare poate fi astfel vizualizată prin aplicarea kernelului peste toate
locațiile de interes în imaginea originală (i, j), înmulțind pixelii sub kernel cu greutățile
corespunzatoare w, calculând noile valori prin adunarea totalului și copiindu-le în aceleași locații într-o
noua imagine f (filtrată).

Mecanica filtrării spațiale liniare exprimă de fapt un proces, de formă discret, numit matematic
– convoluție. Din acest motiv, mai multe filtre kernel sunt uneori descrise ca convoluții kernel, fiind
înțeles implicit că ele sunt aplicate imaginii în modul similar descris mai sus .
În mod formal, putem exprima acțiunea de convoluție între un kernel și o imagine, în două
moduri echivalente. Primul se referă la indicii rândului și coloanei a imaginii și a kernelului:

59
(4.1)
Aici, indicii i=0, j=0 corespund pixelului din centru a kernelului .

A doua abordare echivalentă, este utilizarea indicilor liniari:

(4.2)

În acest caz, reprezintă pixelii învecinați al pixelului i din imagine, unde k este un indice liniar
care rulează regiunea vecinătății în funcție de un rând sau o coloană, sunt valorile corespunzatoare
kernel și reprezintă valoarea filtrată care rezultă din valoarea originală de intrare . Prima notație
este mult mai explicită, în timp ce a doua este mult mai compactă .
Figura următoare 4.3 ilustrează procedura de bază, unde pixelul de centru al kernelului și
pixelul țintă din imagine sunt indicați prin umbrirea de gri închis. Kernelul este plasat în imagine astfel
încât pixelii centrali și ținta să coincidă. Valoarea filtrată a pixelului țintă este apoi dată de o
combinație liniară a pixelilor din vecinătate, greutățile specifice fiind determinate de valorile kernel

Etapele filtrării liniare (convoluției) pot fi rezumate după cum urmează:


1) Se definește filtrul kernel;
2) Se aplică filtrul kernel peste imagine astfel încât pixelul central să coincidă cu fiecare pixel
(țintă) din imagine;
3) Se înmulțesc pixelii situați sub kernel cu valorile corespunzătoare(greutăți) din kernelul de
deasupra lor și suma totală;
4) Copiem valoarea rezultată ale aceleiași locații în noua imagine (filtrată).

Astfel în cazul nostru valoarea pixelului original care era 35, a fost filtrat la o valoare de ieșire
egala cu 14.
Figură 4.3 Mecanismul de filtrare a imaginii cu o vecinătate NxN = 3x3

Dacă se dorește, putem aplica un astfel de filtru liniar într-o regiune selectată și nu în întreaga
imagine, atunci vorbim despre filtrarea pe regiuni. De asemenea putem face o abordare puțin mai
sofisticată în care filtrul însuși se poate schimba în funcție de distribuția valorilor pixelilor din
vecinătate, proces denumit filtrare adaptivă.
Filtrarea la marginile imaginilor de asemenea este o provocare destul de mare. Daca ne
întrebam ce trebuie să facem atunci când un pixel țintă se afla în apropierea limitelor imaginii astfel
încât convoluția kernel să se suprapună cu marginile imaginii, în general, exista 3 abordări principale
pentru a face față acestei situații:
1) Cel mai simplu este să lăsăm nemodificați acei pixeli care sunt localizați în regiunea din
marginea imaginii;
2) Să efectuăm filtrarea doar asupra acelor pixeli care se afla în interiorul limitei (și se reglează
corespunzător funcționarea filtrului);
3) Să completăm pixelii lipsă din cadrul operațiunii de filtrare prin reflectarea valorilor peste
limită.
De obicei este un pic mai greu de depășit această situație cu poziționarea nedorită a rezulatelor,
însa în general se utilizează cea de a doua sau a treia metodă. În anumite cazuri, este acceptabil să
taiem imaginea, ceea ce înseamna să extragem doar o imagine cu dimensiune redusă în care orice pixel
de muchie care nu a fost filtrat adecvat este îndepărtat în întregime.
În Matlab, convoluția liniară poate fi efectuată ca și în exemplul următor:
Exemplul 4.2
Codul Matlab Ce se întâmplă?
A = imread('pui.png'); Se citește imaginea de intrare
subplot(1,2,1), imshow(A); Se afișează imaginea
k = fspecial('motion’, 50, 54); Creează o convoluție kernel cu blur de mișcare
B = imfilter(A, k, `symmetric`); Aplică utilizând oglindirea simetrică la margini
subplot(1,2,2), imshow(B); Se afișează rezultatul imaginii B

61
Figură 4.4 Filtrarea liniară kernel

4.3.1 Filtrarea spațială neliniară


Filtrele spațiale neliniare pot fi ușor concepute fiindcă functionează cu exact același mecanism
de baza descris mai sus la filtrarea liniară. Masca kernelului se aplică peste imagine în același mod ca și
în cazul liniar, doar că singura diferență fiind că valoarea filtrată va fi rezultatul unor operații neliniare
asupra pixelilor din vecinătate. De exemplu, folosind aceeași notație ca mai înainte, am putea defini un
filtru pătrat:

(4.3)
În acest caz, acțiunea filtrului va fi definită de cele trei greutăți care specifică contribuția termenilor de
ordinul doi, unu și zero. Filtrele neliniare de acest tip nu sunt obișnuite în procesarea imaginilor. Mult
mai importante sunt filtrele de comandă care operează prin clasarea pixelilor în vecinatatea specificată
și înlocuirea pixelului țintă cu valoarea corespunzătoarea a unui rang ales. În acest caz, nu putem aplica
un kernel și o ecuație cu forma convoluției noastre liniare nu este aplicabilă.

4.4 Filtrarea prin eliminarea zgomotului


Una din principalele utilizări a ambelor filtrări liniare și neliniare la îmbunătățirea imaginilor,
este pentru eliminarea zgomotului din imagine. În continuare vom investiga aplicarea diferitor tipuri de
filtre pentru eliminarea zgomotului, ca adiționarea a „sare si piper” și a zgomotului Gaussian.
Pentru aceasta o să generez cu ajutorul Matlab, câteva exemple de imagini cu zgomot adaugat,
astfel încât să putem compara eficiența diferitelor abordări ale eliminării zgomotului. Aceste imagini
vor forma baza pentru compararea filtrelor de eliminare a zgomotului în urmatoarele secțiuni ale
acestui subcapitol.

Exemplul 4.3
Codul Matlab Ce se întâmplă?
A = imread('cafea.tif'); Se citește imaginea de intrare
subplot(1,3,1), imshow(A); Se afișează imaginea
Asp = imnoise(A,'salt & pepper', 0.03); Se aplică zgomotul de sare și piper
subplot(1,3,2), imshow(Asp); Afișează imaginea cu sare si piper
Ig = imnoise(A, 'gaussian', 0.02); Se aplică zgomot Gaussian
subplot(1,3,3), imshow(Ig); Afișează imaginea cu zgomot Gaussian

Figură 4.5 Aplicarea zgomotului pe imaginea originală

4.4.1 Filtrul mediu


Filtrul mediu este probabil cel mai simplu filtru liniar și funcționează prin impunerea unei
ponderi egale tuturor pixelilor din vecinătate. O pondere este utilizată pentru o
vecinătate și are un efect de netezire a imaginii, înlocuind fiecare pixel din imaginea de ieșire
cu valoarea medie din vecinătatea lui . Această schemă de ponderare garantează că ponderile
din suma kernelului sunt mai mari decât altă dimensiune din vecinătate. Filtrele medii pot fi folosite ca
metodă de suprimare a zgomotului într-o imagine. O alta utilizare obișnuită este pentru a netezi o
imagine pentru că o operație ulterioară de procesare sa fie mai eficientă.
În Matlab aplicarea filtrului mediu se face în felul urmator:
Exemplul 4.4
Codul Matlab Ce se întâmplă?
k = ones(3,3)/9; Se definește filtrul mediu
A_m = imfilter(A, k); Aplică la imaginea originală
Asp_m = imfilter(Asp, k); Aplică imaginii cu zgomot de sare și piper
Ag_m = imfilter(Ag, k); Aplică imaginii cu zgomot Gaussian
subplot(1,3,1), imshow(A_m); Afișează imaginea rezultată
subplot(1,3,2), imshow(Asp_m); Afișează imaginea rezultată
subplot(1,3,3), imshow(Ag_m); Afișează imaginea rezultată

63
Figură 4.6 Aplicarea filtrului mediu (3 x 3) asupra la: a) imaginea originală, b) zgomot ’sare și piper’ și c) zgomot
Gaussian

Putem observa că filtrarea medie este mult mai rezonabilă și cu efect mai vizibil la eliminarea
zgomotului Gaussian (Figura c), dar în detrimentul unei pierderi de înalăa frecvență, adică marginile.
Deși o parte semnificativă a zgomotului Gaussian a fost eliminată, încă este vizibil . Dimensiunile mai
mari ale kernelului vor suprima în continuare zgomotul Gaussian, dar vor duce la o degradare ulterioară
a calității imaginii. De asemenea din rezultatul obținut, este evident că filtrarea medie nu este eficientă
pentru eliminarea zgomotului „sare și piper” (Figura b). În acest caz, abaterea mare a valorilor
zgomotului de la valorile tipice din vecinătate înseamnă că perturba semnificativ valoarea medie și că
zgomotul este încă foarte evident în rezultatul filtrat. În cazul zgomotului de „sare și piper”, valorile
pixelilor de zgomot acționează ca valori exagerate în distribuție. Din acest motiv, zgomotul de „sare și
piper” este cel mai bine tratat folosind o masură robustă pentru valori statistice .
În concluzie, principalele dezavantaje ale filtrării medii sunt: a) nu este robustă în cazul
abaterilor mari de zgomot ale imaginii și b) atunci când filtrul mediu se extinde pâna la marginea
imaginii, aceasta va cauza apariția efectului de blur (neclaritate). Din acest motiv, filtrul mediu poate fi
de asemenea folosit ca un filtru trece-jos. O variație obișnuită a filtrelor, care poate fi partial eficientă
în păstrarea detaliilor marginilor, este de a introduce o valoare de prag și de a înlocui valoarea pixelului
curent cu media vecinului său, dacă marimea modificării valorii pixelului se situeaza sub acest prag .

4.4.2 Filtrarea mediană

Un alt tip de filtru frecvent utilizat, este filtrul median . Filtrarea mediană depășește principalele
limite ale filtrului mediu, deși în detrimentut consturilor computationale mai mari . Pe masură ce
fiecare pixel este adresat, acesta este înlocuit de mediana statistică a vecinătății acesuia N x M. Filtrul
median este superior filtrului mediu în sensul ca este mai bine să se păstreze detaliile de înaltă
frecvență clare eliminând în același timp zgomotul.
Mediana m al unui set de numere este acel numar pentru care o jumatate a numerelor sunt mai
mici decât m și cealaltă jumatate mai mare, adică este punctul de mijloc al distribuției sortate de valori.
Deoarece valoarea mediană este o valoare a pixelilor extrași din vecinătatea pixelului în sine, este mai
robusă la valori excepționale și nu creează o nouă valoare nerealistă a pixelilor . Această ajută la
prevenirea neclarității marginilor și la pierderea unor detalii din imagine .
Prin definiție, operatorul median necesită ordonarea valorilor din vecinătatea pixelului la fiecare
locație. Această crește cerința de calcul a operatorului median .
Filtrarea mediană poate fi efectuată în Matlab ca în exemplul următor:

Exemplul 4.5

Codul in Matlab Ce se întâmplă ?


A_m = medfilt2(A, [3 3]); Se aplică imaginii originale
Asp_m = medfilt2(Asp, [3 3]); Se aplică imaginii cu „sare și piper”
Ag_m = imfilter(Ag, [3 3]); Se aplică imaginii Gaussiene
subplot(1,3,1), imshow(A_m); Se afișează rezultatul
subplot(1,3,2), imshow(Asp_m); Se afișează rezultatul
subplot(1,3,3), imshow(Ag_m); Se afișează rezultatul

În acest rezultat, observăm că eliminarea zgomotului Gaussian în exces duce la degradarea


calității imaginii (Figura 4.7c). În schimb, filtrul median este foarte bun pentru eliminarea zgomotului
de ”sare și piper” (Figura 4.7b), unde se observă și îndepartarea acestui zgomot de tip impuls cu
degradare minimă sau pierderea detaliilor în imagine.

Figură 4.7 Aplicarea filtrului median (3 x 3) aplicat imaginii originale(a), (b) zgomot de ‘sare și piper’, (c) zgomot
Gaussian

4.4.3 Filtrarea de ordin


Filtrul median este doar un caz special al unui filtru generalizat. Filtrul de ordin general este un
filtru neliniar care cuprinde următoarele etape comune:
1) Se definește vecinătatea pixelului țintă .

65
2) Se clasifică în ordine crescatoare ( prima este valoarea cea mai mică, cea mai mare valoare
).
3) Se alege ordinea filtrului ( de la 1 la N ).
4) Se setează valoarea filtrată astfel încât să fie egală cu valoarea pixelului ales.

Filtrele de ordin care selectează valorile maxime și minime din vecinătatea definită sunt numite
filtre maxime și minime. În Matlab, putem utiliza filtrul de ordonare dupa cum avem în Exemplul 4.6.
Rezultatele acestui exemplu sunt afișate în Figura 6, unde putem observa rezultatul filtrării maxime
asupra a doua tipuri de zgomot introduse în imagine. De menționat este faptul că zgomotul Gaussian a
fost practic total eliminat (Figura c), dar în detrimentul calității detaliilor imaginii (în special al
luminării fundalului imaginii). Zgomotul de tip „sare și piper” determină amplificarea valorilor ridicate
prin utilizarea unui filtru maxim.
Exemplu 4.6
Codul Matlab Ce se întâmplă?
A_m = ordfilt2(A,25,ones(5,5)); Se aplică imaginii originale
Asp_m = ordfilt2(Asp,25,ones(5,5)); Se aplică imaginii cu „sare și piper”
Ag_m = ordfilt2(Ag,25,ones(5,5)); Se aplică imaginii Gaussiene
subplot(1,3,1), imshow(A_m); Se afișează rezultatul
subplot(1,3,2), imshow(Asp_m); Se afișează rezultatul
subplot(1,3,3), imshow(Ag_m); Se afișează rezultatul

Figură 4.8 Filtrarea de ordin aplicată imaginii originale și celor cu sunet

O variație a filtrării de ordin simple este netezirea conservativă, în care un pixel dat este
comparat cu valorile maxime și minime în vecinătatea N x N și este înlocuit numai dacă se află în afara
acestui interval. Dacă valoarea pixelului curent este mai mare decât vecinătatea sa, atunci ea este
înlocuită cu valoarea maximă. În mod similar se procedează dacă este mai mică decât valoarea minimă,
atunci este înlocuit cu valoarea minimă.
4.4.4 Filtrarea Gaussiana
Filtrul Gaussian este unul foarte important atât din motive teoretice cât și practice. Aici, filtrăm
imaginea utilizând un kernel discret derivat dintr-o formă simetrică a funcției Gaussiene continuă 2D,
definită după cum urmează:

(4.4)
Abaterile discrete la această funcție continuă sunt specificate utilizând doi parametri simpli:
1) Dimensiunea dorită a kernelului;
2) Valoarea lui σ, abaterea standard a funcției Gaussiene.

Câteva exemple ale filtrului Gaussian discret, cu variația kernelului și deviațiile standard ale
mărimilor, sunt prezentate în Figura 7.

Figură 4.9 Filtru Gaussian aplicat pe kernel 3x3, 11x11, 21x21

Aplicarea filtrului Gaussian are efectul de netezire a imaginii, dar este utilizat într-o manieră
diferită de filtrul mediu. În primul rând gradul de netezire este controlat de alegerea parametrului
deviației standard, nu de valoarea absolută a mărimii kernelului (în cazul filtrului mediu). În al doilea
rând, funcția Gaussiana are o proprietate destul de specială, și anume că transformarea Fourier este de
asemenea o functie Gaussiana, ceea ce o face foarte convenabilă pentru analiza domeniului de
frecvență a filtrelor.
Funcția Gaussiană cu o valoare mare a lui σ este un exemplu al unui așa zis filtru trece-jos, în
care conținutul de înaltă frecvență spațială (marginilor) a unei imagini este suprimat.
Putem aplica filtrul Gaussian în Matlab ca în exemplul 4.7. Rezultatele Exemplului 4.7 sunt
prezentate în figura 4.10.
În toate cazurile, efectul de netezire a filtrului degradează detaliul de înaltă frecvență (margine)
așa cum se aștepta (figura a), dar îndeparteaza într-o oarecare masură, zgomotul prezent în figura b și c.

67
Exemplul 4.7

Codul Matlab Ce se întâmplă?


k = fspecial('gaussian', [5 5], 2); Se definește filtrul Gaussian
A_g = imfilter(A,k); Se aplică imaginii originale
Asp_g = imfilter(Asp,k); Se aplică imaginii cu „sare și piper”
Ag_g = imfilter(Ag,k); Se aplică imaginii Gaussiene
subplot(1,3,1), imshow(A_g); Se afișează rezultatul
subplot(1,3,2), imshow(Asp_g); Se afișează rezultatul
subplot(1,3,3), imshow(Ag_g); Se afișează rezultatul

Figură 4.10 Filtrarea Gaussiană (5 x 5 cu valoarea σ = 2) a imaginii originale (a), cu zgomot de ”sare și piper” (b) și cu
zgomot Gaussian (c)

4.5 Filtrarea pentru detecția marginilor.


Pe lângă eliminarea zgomotului, alte două utilizări importante a filtrării imaginilor sunt pentru
(a) extragerea detaliilor din imagine și (b) îmbunătățiri ale detaliilor. În continuare vom examina
utilizarea filtrării imaginilor în ambele din aceste două arii prin detectarea marginilor în imagini. O
margine poate fi considerată ca o discontinuitate sau un punct de vârf în interiorul imaginii. Ca urmare,
luarea în considerare a filtrelor derivate este esențială pentru detectarea marginilor în procesarea
imaginilor.

4.5.1 Filtre derivative pentru discontinuități


Filtrul mediu însumează pixelii dintr-o vecinătate specificată și are efectul de a netezi imaginea.
Prin contrast, filtrele derivative pot fi utilizate pentru detectarea discontinuităților dintr-o imagine și
joacă un rol principal în ascuțirea unei imagini (de exemplu îmbunătățirea detaliilor fine, cum ar fi și în
aplicația care urmează să o fac, recunoașterea amprentei).
După cum sugerează și numele acestora, filtrele derivative sunt concepute să răspundă (adică
returnează valori semnificative) în punctele de discontinuitate din imagine și să nu dea răspuns ăn
regiunile perfect netede ale imaginii, adică ele detectează marginile.
Unul dintre cele mai importante aspecte ale sistemului vizual uman este modul în care se pare
că se utilizează contururile sau marginile obiectelor pentru recunoaștere și percepția distanței și
orientării. Aceasta caracteristică a dus la o teorie a sistemului vizual bazată pe ideea că cortexul vizual
conține un complex de detectoare a trăsăturilor care sunt reglate de marginile și segmentele de diferite
lățimi și orientări. Prin urmare, caracteristicile marginilor pot juca un rol important în analiza imaginii.
Detectarea marginilor este în principiu o metodă de segmentare a unei imagini pe regiuni bazate
pe discontinuitate, adică permite utilizatorului să observe aceste caracteristici ale unei imagini în care
există o schimbare mai mult sau mai puțin bruscă a nivelului de gri, indicând sfârșitul unei regiuni în
imagine, și începutul celeilalte regiuni. Îmbunătățirea (sau amplificarea) prezenței acestor
discontinuități în imagine ne permite să îmbunătățim calitatea imaginii percepute în anumite condiții.
De asemenea ca și alte metode de analiză a imaginii, detectarea marginilor este sensibilă la zgomot.
Detectarea de margini este împărțită în două mari categorii:
1. Comanda de detecție a marginilor de ordinul I;
2. Comanda de detecție a marginilor de ordinul II.
După cum ne sugerează și însuși denumirea lor, detecția marginilor de ordinul I este bazat pe
utilizarea unor instrumente derivative de ordinul I, în timp ce detecția marginilor de ordinul II se
bazează pe utilizarea unor instrumente derivative de ordin secundar.
Tabelul 4.1 ne dă definițiile formale ale acestor derivative în ambele cazuri: continuu și discret.
Măsura Cazul continuu Cazul discret
derivativă

69
Tabel 4.1 Operatorii derivativi

4.5.2 Detectarea marginilor de ordinul I


Există mai multe variante de kerneluri de filtrare care aproximează primul derivat al
gradientului de imagine. Trei dintre acestea sunt folosite cel mai frecvent (numele lor fiind luate de la
autori/designeri originali în literatura de început a procesării imaginilor) sunt prezentate în figura de
mai jos, unde se găsesc nucleele de filtre Roberts, Prewitt și Sobel. Toate trei sunt implementate ca o
combinație din doi kerneli: unul pentru derivativa x și una pentru derivativa y (Figura 4.11).

În Matlab aceasta se execută conform exemplului de mai jos:

Exemplul 4.8
Codul Matlab Ce se întâmplă?
Q = imread('upit.jpg'); Se citește imaginea
I = rgb2gray(Q); Se transforma în scara gri
Ier = edge(I,'roberts'); Se aplică filtrul Roberts
Iep = edge(I,'prewitt'); Se aplică filtrul Prewitt
Ies = edge(I,'sobel'); Se aplică filtrul Sobel
subplot(2,2,1), imshow(I); Afișează imaginea
subplot(2,2,2), imshow(Ier); Afișează imaginea
subplot(2,2,3), imshow(Iep); Afișează imaginea
subplot(2,2,4), imshow(Ies); Afișează imaginea
Figură 4.11 Detectarea marginilor într-o imagine

4.5.3 Detectarea marginilor de ordinul II


În general, filtrele de margini de prim ordin nu sunt utilizate frecvent ca mijloc de îmbunătățire
a imaginii. Mai degrabă utilizarea lor principală este în procesul de detectare a muchiilor ca un pas în
procedurile de segmentare a imaginii. Mai mult, deși aplicarea unui operator derivat este un pas
important, există de fapt mai mult decât o detectare robustă a marginilor decât o simplă aplicare a unui
kernel derivat. Cea mai utilizată în îmbunătățirea imaginilor este detecția marginilor Laplace.
Formula Laplace se conduce după următoarea formă:

(4.5)
Forma discretă este dată în tabelul 4.1:

(4.6)

Aceasta poate fi ușor implementat într-un filtru kernel 3 x 3, cum e arătat în figura 4.13:

Figură 4.12 Construcția kernelului discret Laplace

În următorul exemplu 4.9 avem un model de filtrare Laplace a unei imagini


71
Exemplul 4.9
Codul Matlab Ce se întâmplă?
I = rgb2gray(imread('upit.jpg')); Se citește imaginea de intrare
k = fspecial('laplacian'); Se creează filtru Laplace
IEI = imfilter(double(I),k,'symmetric'); Marginile Laplace

subplot(1,2,1), imagesc(I), axis image; Se afișează imaginea


subplot(1,2,2), imagesc(IEI), axis image; Se afișează imaginea
colormap('gray');

Rezultatul acestui exemplu este afișat în figura 4.14.

Figură 4.13 Aplicarea filtrului Laplace


Capitolul 5. Proprietăți și caracteristici

În acest capitol vom explora câteva tehnici de reprezentare și extragere a caracteristicilor


imaginii. În mod obișnuit, scopul este de a prelucra imaginea astfel încât ea sau proprietățile acesteia să
poată fi reprezentate și extrase în mod adecvat și o formă compactă care să poată fi ulterior recunoscută
și clasificată. Reprezentările sunt de obicei de două tipuri de bază: interne (care se referă la pixelii care
cuprind o regiune) sau externi (care se referă la limita unei regiuni).
Vom discuta despre o analiză detaliată a componentelor principale (PCA), o analiză statistică
care a fost aplicată pe scară largă problemelor de procesare a imaginilor.

5.1 Analiza Componentelor Principale


Probabil vă este deja familiară expresia „de ce să folosim o sută de cuvinte când zece ar fi
destul?”. Această idee de a exprima o informație în forma sa cea mai succintă și compact posibilă și stă
la baza unei tehnici statistice importante și puternice ce se referă la Analiza Componentelor Principale
(PCA). Unele din principalele utilizări din cadrul sferei imaginilor digitale, se regăsesc în clasificarea
filmului fotografic, teledetecția și compresia datelor, recunoașterea facială automată împreună cu
sintetizarea facială și recunoașterea amprentelor, aplicație care va fi dezvoltată în continuare. La fel,
mai este utilizată și în mod obișnuit ca un instrument de procesare a imaginilor la un nivel scăzut pentru
diferite sarcini, de exemplu determinarea orientării ale formelor de bază. Din punct de vedere
matematic, PCA, este strâns legată de analiza vectorilor și valorilor, și după cum vom vedea în
continuare, poate fi înțeleasă convenabil din punct de vedere al geometriei vectorilor în spații înalt
dimensionale.
Toate aplicațiile unde este întrebuințată PCA au un lucru foarte important comun: sunt puse
secvențe de imagini (sau vorbind mai la general – date) ce sunt corelate. Mereu când avem mai multe
exemple de date/vectori cu un grad prezent înalt de corelație între ele, putem aplica PCA ca o metodă
de aproximare a vectorilor de funcții apropiate și în același timp folosind parametri mai puțin
considerabili pentru a le descrie decât datele lor originale. Aceasta se numește reducerea de dimensiuni
și poate contribui semnificativ la interpretarea și analiza atât a datelor de probă, cât și a noilor exemple
de vectori trase din aceeași distribuție. Efectuarea PCA ar permite adesea elaborarea unor proceduri de
clasificare și discriminare simple și eficiente. În anumite situații, PCA este, de asemenea, utilă ca
mijloc convenabil de a sintetiza noi exemple de date care se supun aceleiași distribuții statistice ca și un
eșantion de formare original.

5.2 Analiza Componentelor Principale: exemplu ilustrativ


Pentru a pătrunde în esența PCA putem presupune că avem un număr mare de exemple de date
ale copiilor M și dorim să evaluăm starea lor fizică. Pentru fiecare copil în parte am înregistrat N
informații ca de exemplu vârsta, greutatea, înălțimea, lungimea brațului, talia gâtului, lungimea
degetelor etc. Este ușor sesizabil faptul că variabilele prezente aici nu sunt de loc independente unele
față de celelalte, de oarece un copil mai mare este firesc să fie mai înalt, de unde un copil mai înalt va și
cântări mai mult, un copil ce cântărește mai mult va avea și o talie mai mare și așa mai departe. Cu alte
cuvinte, putem afirma că valoarea variabilei atribuite în setul dat să fie, într-o oarecare măsură,
prevăzută cu ajutorul altor variabile.

73
Exemplul arată principalul și esențialul scop al folosirii PCA: trebuie să fie o corelație între
relația de vectori expusă. În consecință, cu cât mai strânsă e corelația cu atât mai efectivă va fi PCA.

Greutatea 65 75 53 54 61 88 70 78 52 95 70 72
(kg)
Înălțimea 170 176 154 167 171 184 182 190 166 168 176 175
(cm)
Tabel 5.1 Vector de caracteristici (greutate și înalțime)

Pentru a prezenta un exemplu concret, dar în același timp și simplu presupunem că avem M=2,
măsurile pentru înălțime h și greutate w al grupului de test, iar N=12 persoane cum e în tabelul 5.1.
Figura 5.2 prezintă datele medii scăzute în spațiul caracteristic 2-D și este evident că datele arată o
variație considerabilă atât față de variabile și ceea ce este corelat de către ele. Matricea de covariație a
eșantionului pentru aceste două variabile se calculează astfel:

(5.1)

Unde este exemplu ce confirmă asta (tabel 5.2)


Matricea covariației Matricea corelației
Greutate Înălțime Media Greutate Înălțime
Greutate 90.57 73.43 69.42 Greutate 1 0.57
Înălțime 73.43 182.99 173.25 Înălțime 0.57 1
Tabel 5.2 Datele statistice pentru datele prezentate în tabelul 5.1

Obiectivul principal al PCA este de a efectua o rotație a sistemului de coordonate și, astfel, de a
exprima datele în termenii unui nou set de variabile sau axe echivalente care nu sunt corelate. Cum se
găsesc acestea? Prima axă principală este aleasă pentru a satisface următorul criteriu:
Axa care trece prin punctele de date care maximizează suma lungimilor pătrată ale proiecției
perpendiculare a punctelor de date pe acea axă este axa principală.
Figură 5.1 Distribuția valorilor în greutate și înălțime într-un spațiu caracteristic 2-D. Valoarea medie a fiecărei variabile a
fost scăzută din date

Astfel, axa principală este orientată astfel încât să mărească variația de echilibru a datelor (o
transformare de maximizare a varianței). Observăm că un criteriu alternativ, dar în întregime echivalent
pentru o axă principală, are menirea pentru a minimiza suma erorilor pătrate (diferențele) între punctele
de date reale și, efectiv, proiecțiile lor pe perpendiculare pe linia dreaptă menționată. Conceptul dat este
ilustrat în Figura 5.2

Figură 5.2 Axa principală minimizează suma diferențelor pătrate între date și proiecțiile lor ortogonale pe acea axă. În mod
echivalent, aceasta maximizează variația datelor de-a lungul axei principale

Să presupunem că se cunoaște deja prima axă principală, iar pentru a calcula cea de-a doua axă
principală, procedăm în felul următor:
75
 Se calculează proiecțiile punctelor de date pe prima axă principală
 Se extrag valorile proiectate din datele originale, unde setul de puncte de date modificate este
denumit set de date reziduale.
 A doua axă principală este calculată pentru a satisface un criteriu identic cu primul, adică
variația datelor reziduale este maximizată de-a lungul acestei axe.

Figură 5.3 Datele privind înălțimea-greutate în sistemele de coordonate ale axelor originale și principale

Pentru un spațiu 2-D, trebuie să ne oprim aici (nu mai sunt mai multe dimensiuni). Figura 5.3 ne
arată datele noastre referitoare la greutatea înălțimii raportate atât la axele originale, cât și la axele
principale. Cu toate acestea, pentru un spațiu caracteristic N-dimensional (adică când există variabile
N), această procedură este pur și simplu repetată de N ori pentru a deriva N axele principale, fiecare
dintre acestea maximizând succesiv varianța datelor reziduale de-a lungul axei principale de date.

5.3 Teoria analizei principale a componentelor.


Presupunem că avem N observații asupra variabilelor M (N M). Să notăm observațiile în
funcție de variația i pe (i = 1; 2;...; N). Scopul este de a defini un set de variabile noi, necorelate

care sunt o combinație liniară adecvată a lui . De aici avem:

(5.2)

Cu coeficienții care urmează să fie determinați. Setul de ecuații liniare exprimate prin Ecuația
(5.2) poate fi scris compact în formă de matrice ca

(5.3)
unde și R sunt o matrice de coeficienți necunoscuți. Trebuie să
reținem că variabilile au scăzut mijloacele lor de eșantionare și sunt variabile zero-medii, astfel încât
. Prin definiție, matricea de covariație pe variabilele noi reprezentate de este
atunci

(5.4)
unde parantezele unghiulare denotă o medie a ansamblului peste observațiile de pe vectorul de date.
Aceasta este echivalentă cu necesitatea ca matricea covarianței unde variația nouă va fi pe
diagonală. Respectiv, noi trebuie să creăm matricea covariație pentru datele noastre originale
și să găsim matricea R astfel

(5.5)
Din fericire, găsirea unei astfel de matrice este ușoară. Ecuația (5.4) descrie problema clasică a
vectorilor, care poate fi rezolvată prin proceduri numerice standard. Coloanele lui R sunt setul de
vectori ortogonali care realizează diagonalizarea și elementele diagonale , care corespund
elementelor de valoare. Etapele soluției sunt după cum urmează:

 Formarea matricei de covarianță .


 Se asigură ca matricea de intrare va returna vectorii proprii și valorile proprii în matricele R și
respectiv .
 Noile variabile (axe) sunt mai ușor de calculat folosind Ecuația (5.3).
Din acest punct de vedere, PCA a efectuat o rotație a sistemului original de coordonate pentru a
defini noi variabile (sau, noi axe) care sunt combinații liniare ale variabilelor inițiale. Am calculat axele
principale.

5.4 Axele principale și componentele principale

Există o diferență subtilă între cele două derivări alternative pe care le-am oferit. În primul caz,
am considerat variabilele noastre pentru a defini spațiul caracteristic și am derivat un set de axe
principale. Dimensiunea spațiului nostru caracteristic a fost determinată de numărul de variabile și
matricea de diagonalizare a vectorilor proprii R și este folosită în ecuație pentru a produce un nou set
de axe în acel spațiu 2-D. A doua formulare conduce în esență la aceeași procedură (adică la
diagonalizarea matricei de covariație), dar admite, totuși, un punct de vedere alternativ.
În acest caz, vedem observațiile asupra fiecăreia dintre variabilele către vectorii caracteristici de
dimensiune mai mare. Rolul matricei de diagonalizare a vectorilor aici, este, prin urmare
multiplicarea și transformarea acestor vectori dimensionali mai mari pentru a produce un nou set
ortogonal (principal).
Astfel, dimensiunea spațiului de aici este determinată de numărul de observații realizate pe
fiecare dintre variabile. Ne propunem să conservăm componentele principale ale vectorilor care

77
constituie coloanele matricei calculată. Adoptând această convenție, componentele principale sunt,
de fapt, echivalente cu proiecțiile datelor originale pe axele lor principale corespunzătoare.

5.5 Rezumatul proprietăților analizei componentelor principale PCA

Rezumăm punctele cheie privind axele și componentele principale și avem următoarele:


 Axele principale sunt reciproc ortogonale. Lucru valabil dacă luăm în considerare modul în care
acestea sunt calculate. După ce a fost calculată prima axă principală, fiecare componentă
succesivă este calculată pe datele reziduale (adică după scăderea proiecției pe axa calculată
anterior). Prin urmare, rezultă că următoarea componentă nu poate avea nici o componentă în
direcția axei anterioare și trebuie, prin urmare, să fie ortogonală pentru aceasta.
 Datele expuse în noul sistem de axe nu sunt corelate. Noile variabile nu co-variază și efectiv
matricea lor de covarianță are intrări zero.
 Axele principale maximizează succesiv variația datelor în raport cu ele însuși.
 Valorile esențiale în matricea diagonală definesc direct valoarea totală a variației în datele
asociate fiecărei componente principale.

Exemplul 5.1 prezintă utilizarea bazei PCA în calcularea axelor principale ale unei forme 2-D (în
cazul de față avem o siluetă al unui avion). Identificarea axelor principale, așa cum se arată în figura
5.4 a unei forme 2-D sau 3-D, poate uneori să ajute la aplicarea operațiilor de procesare astfel încât
acestea să fie efectiv invariabile în rotația imaginii.

Exemplul 5.1
Codul Matlab Ce se întâmplă?
A=imread('avion.jpg'); Se citește imaginea de intrare
bw=~im2bw(A,0.5); Se binarizează și inversează
subplot(1,2,1), imshow(bw,[]); Se afișează imaginea
[y,x]=find(bw>0.5); Se obțin coordonatele pixelilor mai mari ca 0
centroid=mean([x y]); Se aplică centroid
hold on; plot(centroid(1),centroid(2),'rd');
C=cov([x y]); Se calculează covariația coordonatelor
[U,S]=eig(C) Se caută principalele axe și valorile de vârf

m=U(2,1)./U(1,1);
const=centroid(2)-m.*centroid(1);
xl=50:450; yl=m.*xl+const
subplot(1,2,2), imshow(bw,[]); h=line(xl,yl);
set(h,'Color',[1 0 0],'LineWidth',2.0) Se afișează imaginile și axele
m2=U(2,2)./U(1,2);
const=centroid(2)-m2.*centroid(1);
x2=50:450; y2=m2.*x2+const;
h=line(x2,y2);
set(h,'Color',[1 0 0],'LineWidth',2.0)

Figură 5.4 Calculul principalelor axe ale unui obiect 2-D

79