Sunteți pe pagina 1din 561

Facultatea de Automatica si Calculatoare

Uiversitatea Tehnica “Gheorghe Asachi” din Iaşi,


Romania

Prelucrarea imaginilor
curs – an III CTI

prof. dr. ing. Vasile Manta


conf. dr. ing. Simona Caraiman
Aspecte organizatorice
 Materiale
 Platforma Moodle: http://edu.tuiasi.ro

 Titulari
 Curs:
 Vasile Manta, vmanta@cs.tuiasi.ro (cabinet AC: C2-9)
 Simona Caraiman, sarustei@cs.tuiasi.ro (cabinet AC: A3-1)
 Aplicatii:
 Paul Herghelegiu,
 Marius Gavrilescu,
 Stefan Achirei,
 Madalina Olariu.

PI – curs 1
Aspecte organizatorice

Evaluare laborator 30%

Evaluare curs 70%


 examen final (test scris cu intrebari mixte)

Nu se admit absente!

PI – curs 1
Prelucrarea imaginilor

Introducere

PI – curs 1
Prelucrarea imaginilor - introducere

INPUT OUTPUT

Sistem de prelucrare
a imaginilor ?
PI – curs 1
Prelucrarea imaginilor - introducere

INPUT OUTPUT

Informatii
Sistem de prelucrare utile
a imaginilor

PI – curs 1
Prelucrarea imaginilor - introducere
Informatii utile: MEDICINA Identificare (numarare, analiza)
cellule – microscopie digitala

Evidentiere structuri anatomice in


scanari CT/MRI

Biopsy Planner
https://www.youtube.com/watch?v=PBEv-D_0Zm8
PI – curs 1
Prelucrarea imaginilor - introducere
Informatii utile: ROBOTI AUTONOMI
Roboti umanoizi

Smart Factories

Autonomous Cars
PI – curs 1
Prelucrarea imaginilor - introducere
Informatii utile: face detection & recognition

Criminalistica/
Securitate
Social media

PI – curs 1
Prelucrarea imaginilor - introducere
Informatii utile: Google Maps – pedestrian navigation

Sunshine Aquarium,
Tokio
PI – curs 1
Prelucrarea imaginilor - introducere
Informatii utile: astronomie, predictia vremii,
agricultura…

PI – curs 1
Prelucrarea imaginilor - introducere
Date de intrare
 Imagini captate cu dispozitive de achizitie adaptate pentru
intregul spectru de frecventa al undelor electromagnetice

 Imagini din spectrul vizibil – cele mai folosite (accesibile)


 Alte surse de imagini: unde acustice, ultrasonice (ecografii),
RMN, CT, IR, camere termale, etc.

PI – curs 1
Prelucrarea imaginilor - introducere

Spectrul electromagnetic

PI – curs 1
Prelucrarea imaginilor - introducere

PI – curs 1
Prelucrarea imaginilor - introducere
Dispozitive/Senzori

Structured light Google Tango

Time-of-flight

Kinect v1
Kinect v2
IR

Stereo vision Intel RealSense LR


LI-OV580
LI-OV580

DuoMLX
Bumblebee

PI – curs 1
Exemple proiecte PI @ AC
Wearable sensory substitution for the visually impaired

3D environment scanning  bi-modal information Partners:


(audio + haptic) Univeristy of Iceland (C)
Technical University of Iasi
University POLITECHNICA Bucharest
Works anywhere: indoor/outdoor, no need for Lodz University of Technology
beacons! Szechenyi Istvan University
Fondazione Istituto Per L’interscambio
Scientifico
Naturalistic encoding of information from the Icelandic National Institute For The Blind
environment Info World, Romania
Fundacja Instytut Rozwoju Regionalnego

VR + Real World training instruments & protocols Budget:


3 960 709 Euro
1000+ hours of training & testing / 45 visually Period:
impaired people 2015-2017
Contact details:
assoc. prof. Simona Caraiman, PhD
+40 721 27 64 71
sarustei@tuiasi.ro
www.tuiasi.ro
SoV @ TUIASI:
SoV Pipeline

3D
Acquisition Encoding Rendering
processing

Fusion of multiple sensors - pervasiveness


Env. Lighting conditions Input
Output: Fused data normal depth map, left RGB, IMU
RGB+depth+IM Indoor
U low light to complete darkness depth map, IMU
normal left + right RGB, IMU
Outdoor
low light to complete darkness depth map, IMU

Calibration
Registration
Synchronization
Leopard Imaging LI-OV580 Occipital Structure Sensor LPMS-CURS2 IMU
Stereo camera

Page: 19
SoV @ TUIASI:
SoV Pipeline

3D
Acquisition Encoding Rendering
processing

obstacles
negative
Generic obstacles
Output: Scene walls
doors
stairs
signs
texts
GPU processing – real time
Exploit specific environment structure
Indoor: objects made of planar surfaces
Outdoor: under-segmentation (to cope with cluttered environments in mobility
scenarios)

Page: 20
SoV @ TUIASI:
Testing the SoV SSD

Testing & training in the ‘wild’ Testing & training in VR

Testing & training in controlled RW

https://www.youtube.com/channel/UC5MSSMmEG1ABPZDxzPIZoWQ

Page: 21
Autonomous vehicles
Depth/disparity map processing

Stereo correspondence
- stereo calibration & rectification
- dense disparity computation on
embedded platforms
obstacle detection
ROI detection based on depth info
ground plane detection

PI – curs 1
Autonomous vehicles
3D semantic reconstruction
- 2D segmentation
- 3D reconstruction
- machine learning for segment
Incremental 3D reconstruction classification
based on dense disparity maps and
motion estimation
PI @ AC
Medical images processing
- microscopy images
- 2D/3D processing & visualization
- GPU programming

search: “tiger”

Content-based image
retrieval
- 2D segmentation
- feature extraction
- clustering
Assistive technologies

PI – curs 1
Assistive technologies

PI – curs 1
Bibliografie
 R.C.Gonzales, R.E.Woods, Digital Image Processing – 3-nd Edition, Prentice Hall, 2007.
 R.C.Gonzales, R.E.Woods, Digital Image Processing Using Matlab
 W.K. Pratt, Digital Image Processing: PIKS Inside, 3-rd Edition, Wiley & Sons 2001.
 G. X.Ritter, J.N. Wilson, Handbook of computer vision algorithms in image algebra - 2nd ed, CRC
Press, 2001.
 Frank Y. Shih, Image Processing And Pattern Recognition - Fundamentals and Techniques, Wiley &
Sons, Hoboken, New Jersey, 2010.
 A. Koschan, M. Abidi, Digital Color Image Processing, Wiley & Sons, 2008.
 H.C. Lee, Introduction to Color Image Science, Cambridge University Press 2005
 D. Forsyth, J. Ponce, Computer Vision. A Modern Approach, Prentice Hall, 2002.
 L. G. Shapiro, G. C. Stockman, Computer Vision, Prentice Hall, 2000
 S. Nedevschi, "Prelucrarea imaginilor si recunoasterea formelor", Ed. Microinformatica, 1997.
 Andreas Koschan, Mongi Abidi, Digital Color Image Processing, Publisher: Wiley-Interscience; 1
edition (April 18, 2008).
 Curs Procesarea imaginilor, Universitatea Tehnică din Cluj
 Cursuri: Cambridge University, Dublin Institute of Technology, etc.

PI – curs 1
PI - Notiuni generale

PI – curs 1
PI - Notiuni generale

PI – curs 1
PI - Notiuni generale

PI – curs 1
PI - Notiuni generale

PI – curs 1
PI - Notiuni generale

PI – curs 1
PI - Notiuni generale

PI – curs 1
PI - Notiuni generale

PI – curs 1
PI - Notiuni generale

PI – curs 1
PI - Notiuni generale

Euclidiana, Manhattan, chessboard

PI – curs 1
PI - Notiuni generale
Distanta euclidiana (dE)

PI – curs 1
PI - Notiuni generale
Distanta Manhattan (d4 / “city block”)

PI – curs 1
PI - Notiuni generale
Distanta chessboard (d8)

PI – curs 1
PI - Notiuni generale

PI – curs 1
Curs 2, PI

CURS PI

Îmbunătăţirea imaginilor în domeniul spaţial


http://www.imageprocessingbasics.com/

Domeniul spaţial se referă la mulţimea de pixeli care compun o imagine. Metodele din
domeniul spaţial sunt transformări care operează direct pe aceşti pixeli. Din punct de vedere al
algoritmilor utilizaţi le putem împarţi în:
• Operaţiuni punctuale (accentuarea contrastului, reducerea zgomotului, negativarea
imaginilor, etc.);
• Operaţiuni spaţiale (filtrări spaţiale sau procesarea cu măşti).

I. Operaţiuni punctuale (vezi şi Lecture 4–image processing, Dublin Inst. of Tech.)

Aceste operaţiuni permit trecerea de la o nuanţă de gri r ∈ [ 0, L − 1] la o altă nuanţă de gri


s ∈ [0, L − 1] , conform unei transformări:

T :[0, L − 1] → [0, L − 1] , adică

s = T (r ) (1)

unde:
r – nivelul de gri pentru f ( x, y ) , care constituie imaginea de intrare;
s – nivelul de gri pentru g ( x, y ) , care constituie imaginea de ieşire.

a) Accentuarea contrastului

Accentuarea de contrast este necesară mai ales în cazul imaginilor cu un contrast mic,
datorat iluminării slabe sau sensibilităţii scăzute a elementului traductor imagine–curent electric.
Fiind date două limite a şi b , (0 < a < b < L − 1) , pentru care se cunosc valorile
sa = T (a ) şi sb = T (b) , transformarea este:

 mr 0≤r ≤a

s = T ( r ) =  n ( r − a ) + sa a≤r ≤b (2)
 p ( r − b) + s b ≤ r ≤ L −1
 b

1
Curs 2, PI

Fig.1. Accentuare de contrast

sa
m = tga =
a
sb − sa
n = tgb = (3)
b−a
L − 1 − sb
p = tgg =
L −1− b

Exemple:

Obs:
- parametrii a şi b se determină din examinarea histogramei imaginii;

2
Curs 2, PI

- parametrii sa şi sb precizează amplificarea contrastului, amplificare ce se obţine în domeniul


[a,b] dacă:
m <1
sa = T ( a ) < a
⇔ n >1
sb = T (b) > b
p <1
În cazul sa > a şi sb < b se obţine reducerea contrastului pe domeniul [a,b].
Obs. Dacă panta e mai mare ca 1 se realizează o amplificare a contrastului, dacă nu avem o
reducere a contrastului.

b) Reducerea zgomotului

Reducerea zgomotului se realizează prin limitarea culorilor imaginii, atunci când se ştie
că acestea se află în domeniul [a,b]. Operaţia este un caz particular al celei precedente cu m=p=0
(sau sa = 0 şi sb = L − 1 ).
Transformarea este:

 0 0≤r≤a

T (r ) = n(r − a ) pentru a ≤ r ≤ b (4)
 L −1 b ≤ r ≤ L −1

Fig 2. Limitarea culorilor imaginii.

3
Curs 2, PI

c) Binarizarea imaginilor

Binarizarea are ca scop obţinerea unei imagini alb-negru dintr-o imagine cu mai multe
nivele de gri. Transformarea este un caz particular al celei precedente când a=b:

 0 0≤r≤a
s = T (r ) =  , pentru (5)
L − 1 a < r ≤ L −1

Fig. 3 Binarizarea imaginii

d) Negativarea (inversarea) imaginii

Negativarea este utilă în cazul în care dispunem de negativul imaginii (în prelucrarea
imaginilor medicale). Operaţia de negativare se realizează prin transformarea următoare:

s = T (r ) = L − 1 − r r ∈ [0, L − 1] (6)

L −1 – nivelul corespunzător pentru alb;


0 – nivelul corespunzător pentru negru.

4
Curs 2, PI

Poate fi utilă atunci când se analizează obiecte negre pe un fond alb cu un program care
analizează corpuri albe pe fond negru.

e) Operaţiuni de tip fereastră

Transformările de acest tip permit extragerea anumitor caracteristici în regiuni


reprezentate prin diferite nuanţe de gri. Decuparea sau accentuarea acestor zone se poate realiza
astfel:

L − 1 r ∈ [ a, b]
Td (r ) =  , pentru (7)
 0 in rest
L − 1 r ∈ [ a, b]
Ta (r ) =  , pentru (8)
 r in rest

Fig. 4 Operaţiuni de tip fereastră

5
Curs 2, PI

f) Extragerea unui bit (Bit-plane slicing)

Presupunem că fiecare pixel (nivelul de gri asociat fiecărui pixel) din imagine este
cuantizat pe n biţi. Funcţia corespunzătoare imaginii digitale (nivelul de gri al fiecărui pixel) se
scrie:

r = bn−1 2 n−1 + bn−2 2 n−2 + ... + b1 2 + b0 (9)

Operaţia de extragere a bitului


= k , k 0,1, 2, , n − 1 , este:

L −1 pentru bk =
1
=
sk T=
k (r )  (10)
0 in rest

Prelucrarea este folositoare pentru determinarea biţilor mai semnificativi dintr-o imagine.
În cazul în care n=8, rezultă 8 plane ale imaginii (8 imagini). Biţii mai semnificativi (ai fiecărui
pixel) determină imagini cu zone largi uniforme, pe când imaginile biţilor mai puţin semnificativi
au un aspect de zgomot. Acest fapt se poate utiliza în compresia imaginilor: se codifică plan cu
plan (imagine cu imagine) biţii cei mai semnificativi, exploatând prezenţa zonelor uniforme (de
exemplu codarea RLC sau cu arbori cuaternari), iar biţii cei mai puţin semnificativi se codifică
separat.

Exemplu: Imaginea unui fractal (fractal image).

6
Curs 2, PI

g) Comprimarea de contrast

Este utilizată în cazul în care dinamica datelor în imagine este foarte largă. Comprimarea
se face printr-o transformare logaritmică.

s = c log(1 + r ), (11)

unde c - constantă.
O astfel de transformare îmbunătăţeşte vizibilitatea pixelilor de amplitudine mică
(întunecaţi) faţă de pixelii cu o amplitudine mai mare (strălucitori).

7
Curs 2, PI

Fig.5 Compresia de contrast

h) Scăderea imaginilor

Operaţia de scădere a două imagini este necesară la compararea acestora, dacă deosebirile
sunt mici în raport cu complexitatea imaginilor.
Exemple de aplicare:
• detectarea componentelor lipsă de pe un circuit imprimat, prin scăderea imaginii plăcii
echipate, din cea a plăcii asamblate corect;
• vizualizarea vaselor de sânge şi a arterelor pornind de la imaginea cu raze X. Se
injectează o soluţie în sânge, opacă pentru razele X, şi se scad imaginile preluate înainte şi
după injectare. Diferenţa va fi dată de vasele de sânge.

i) Corecţia gamma

Monitoarele afişează imaginea mai întunecată decât este în realitate. Ele lucrează după o
lege de forma (pentru fiecare componentă R,G,B):

s = cr γ (11)

c, γ - constante pozitive.
De exemplu, la monitoarele CRT, γ ≈ 2,5, c = 1 . Intervalul nivelelor de gri [ 0, L − 1] este
mapat în [ 0,1] . Se vede că pentru γ > 1 ⇒ s < r . Pentru corecţie, la intrare se aplică r1 γ → r .

8
Curs 2, PI

j) Ajustarea strălucirii

Se adaugă tuturor pixelilor (pe componente) o valoare

s=r+D (13)

Se are grijă să nu se iasă în afara intervalului [0,L-1].

Conversia unei imagini color în imagini cu nivele de gri

Intensitatea fiecărui pixel se calculează ca medie a valorilor R, G, B din imaginea color.

R+G+ B
I=
3
Observaţie: Se folosesc şi alte formule, dependente de sistemele de culoare folosite.

Conversia unei imagini cu nivele de gri (gray-scale) în imagini color (coeficienţii sunt
cei utilizaţi în standardele PAL, SECAM şi NTSC şi evident că are la bază sensibilitatea ochiului
la galben-verzui).

R= I ⋅ 0,3
G= I ⋅ 0,59
B= I ⋅ 0,11

k) Modelarea imaginilor prin histograme (vezi şi Lecture 3–image processing, Dublin


Inst. of Tech.)

Histograma reprezintă ponderea fiecărui nivel de gri dintr-o imagine. Considerăm că


avem o imagine digitală cu L nivele de gri. Atunci histograma este o funcţie discretă:

h(rk ) = nk , k = 0, L − 1 (14)

rk - al k-ulea nivel de gri;


nk - numărul de pixeli din imagine care au nivelul de gri rk .
De obicei, în aplicaţiile practice se lucrează cu o histogramă normalizată:

nk
h(rk ) = ≡ p (rk ) , k = 0, L − 1 (15)
n

unde n – numărul total de pixeli din imagine.


n
Observaţie: În realitate, p (rk ) = k - probabilitatea de apariţie a nivelului rk .
n

9
Curs 2, PI

Din cele expuse rezultă că histograma reprezintă frecvenţa de apariţie a diferitelor nivele
de gri dintr-o imagine.
Prin modelarea histogramei se modifică imaginea a.î. să obţinem o imagine cu o
histogramă dorită. O aplicaţie de acest gen este utilă, de exemplu, pentru vizualizarea unor
imagini cu contrast scăzut (având o histogramă foarte îngustă). Informaţiile cuprinse în
histogramă sunt folosite la compresia imaginii, la segmentare, etc.
Remarcăm că o imagine întunecată are componentele histogramei concentrate în partea
stângă (fig. 6,a), o imagine luminoasă are componentele histogramei concentrate în partea
dreaptă, iar o imagine cu un contrast scăzut are o histogramă îngustă situată spre mijlocul scalei
de gri.

a) Imagine întunecată b) Imagine luminoasă

c) Imagine cu un contrast scăzut


Fig. 6

10
Curs 2, PI

11
Curs 2, PI

Calculul histogramei normate:

void hist(imagine a, int H, int W, int L, float *h)


{
unsigned long int *lh = new unsigned long int [L];
unsigned long int n;
for (int i =0; i<L; i++)
lh[i]=0;
for (i =0; i<H; i++)
for (int j =0; j<W; j++)
lh[(unsigned int)a[i][j]]++;
n=(float)H*W;
for (i =0; i<L; i++)
h[i]=lh[i]/n;
}

12
Curs 2, PI

Egalizarea histogramei

În unele cazuri se doreşte modelarea histogramei astfel încât să se obţină o imagine cu o


anumită histogramă. Un exemplu clasic de specificare a unei histograme îl constituie cazul
histogramei uniforme, cunoscut şi sub numele de histogramă egalizată. Intuitiv, histograma
uniformă înseamnă nivele de gri reprezentate pe întregul domeniu. Pentru observatorul uman, o
imagine cu o histogramă egalizată apare cu un contrast mai bun. Prin egalizare se pun în evidenţă
detalii ascunse în zonele întunecate ale imaginii originale. Egalizarea histogramei este o tehnică
de îmbunătăţire a imaginilor foarte eficientă pentru imagini medicale, imagini radar, astronomice,
etc.

Exemple
http://www.imageprocessingbasics.com (modul custom!)

Examinăm mai întâi algoritmul egalizării de histogramă pentru cazul continuu și apoi
pentru cazul discret.

Cazul continuu
Considerăm nivelul de gri cuprins in intervalul [ 0,1] : 0 – negru, 1 – alb. Ulterior vom considera
nivelul de gri în intervalul [ 0, L − 1] .
Modelul matematic consideră nivelul de gri într-o imagine ca o variabilă aleatore în intervalul
[0,1] . Dacă variabila aleatore r are densitatea de probabilitate pr (r ) , problema care se pune este
următoarea: trebuie găsită o transformare T (r ) astfel încât pentru nouă variabilă

s = T (r )

să avem o densitate de probabilitate specificată (impusă) ps (s) .


Pentru T (r ) se impun următoarele condiții:
- să ia valori în intervalul [ 0,1] , adică s ∈ [ 0,1] ;
- să fie monoton strict crescătoare, condiție care asigură existența inversei T −1 (vezi fig.
3.17 b).

Putem scrie (vezi fig. 6):

ps ( s ) ds = pr (r ) dr (1)

ceea ce reprezintă de fapt conservarea probabilității de repartiție a nivelelor de gri.


Rezultă că

dr
ps ( s ) = pr (r ) (2)
ds

13
Curs 2, PI

Digital Image Processing, R. Gonzales, pag. 122, Fig. 3.17

Fig. 6

14
Curs 2, PI

Deci, densitatea de probabilitate ps (s) a variabilei s este determinată de densitatea de


probabilitate pr (r ) și de funcția aleasă.
O funcție de transformare cu o importanță particulară în procesarea imaginilor este:

r
=s T=
(r ) ∫0 pr (w)dw (3)

Partea din dreapta reprezintă funcția de distribuție cumulativă (CDF).

ds
Din relația (3) rezultă: = pr (r )
dr

Introducând în (2) se obține

ps (s) = 1 cu 0 ≤ s ≤1

Prin urmare transformarea dată de relația (3) conduce la o variabilă distribuită uniform în
intervalul [ 0,1] . Dacă lucrăm cu nivele de gri distribuite în intervalul [ 0, L − 1] rescriem relația
(3) înmulțind-o cu L − 1 , deci

=
s ( L − 1) T (r ) (4)

În acest caz avem o variabilă s distribuită uniform în intervalul [ 0, L − 1] .


În cazul discret T nu este strict crescătoare și implicit nu este inversabilă ( T este o
funcție scară). În consecință se va obține o aproximare a unei variabile aleatoare uniform
distribuite.
În acest caz avem:

nk
pr (rk ) = cu =
k 0, L − 1 , rk ∈ [ 0,1] (5)
n

unde n reprezintă numărul total de pixeli.


Integrala trece în sumă și rezultă:

k k nj
=
sk T=
(rk ) ∑ pr=
(r j ) ∑
n
(6)
=j 0 =j 0
sau

k
sk = ∑ h(r j ) =
k 0, L − 1 , r j ∈ [ 0,1] (7)
j =0

ceea ce reprezintă histograma cumulativă.

15
Curs 2, PI

Pentru nivelele de gri din intervalul [ 0, L − 1] , adică rk ∈ [ 0,1] avem:

k k nj
( L − 1) ∑ h(r j ) =
sk = ( L − 1) ∑ =
k 0, L − 1 , r j ∈ [ 0, L − 1] (8)
=j 0 =j 0 n

L - numărul de nivele de gri


rk - nivel de gri din imaginea inițială
sk - nivel de gri din imaginea prelucrată

Relația (8), respectiv (7), este numită și ecuația de egalizare de histogramă sau liniarizare de
histogramă.

16
Curs 2, PI

17
Curs 2, PI

h(i) - histograma normalizata


i
g(i) = ∑ h(k ) - histograma cumulativa
k =0
g(i) → ( L − 1) g(i) - histograma cumulativa in intervalul [0, L − 1] .

void egalizare_histo(imagine a, imagine b, int H, int W, int L)


{ float *h = new float [L];
float *g = new float [L];
histo(a, H,W,L,h); // apel calcul histograma normalizata
g[0]=h[0];
for (int i=1; i<L; i++) // calculez g(i)
g[i] = g[i-1] + h[i];
for (i=0; i<L; i++)
g[i] = g[i]*(L-1); // g(i) <- g(i)*(L-1)
for (i=0; i<W; i++)
for (int j=0; j<H; j++)
b[i][j] = g[a[i][j]]; // b(i,j) = g(a(i,j))
}

18
Curs 2, PI

Tema pentru laborator:

Două imagini f ( x, y ) şi g ( x, y ) au histogramele h f şi hg . Determinaţi condiţiile pentru care se


pot calcula histogramele pentru:
a) f ( x, y ) + g ( x, y )
b) f ( x, y ) − g ( x, y )
c) f ( x, y ) × g ( x, y )
d) f ( x, y ) ÷ g ( x, y )
e) f ( x, y ) ∗ g ( x, y )
în funcţie de h f şi hg . Explicaţi cum se obţine histograma în fiecare caz.
Realizaţi acest lucru experimental, în cadrul unei aplicaţii.

19
PI, curs 3

Curs 3 (parţial)

II. Operaţiuni spaţiale (bazele filtrării spaţiale)


https://www.southampton.ac.uk/~msn/book/new_demo/
http://www.imageprocessingbasics.com/

1. Consideraţii generale
Spre deosebire de operaţiunile punctuale, operaţiunile spaţiale se realizează asupra
pixelilor dintr-o vecinătate din imaginea iniţială şi valorile corespunzătoare ale unei subimagini
de aceeaşi dimensiune cu vecinătatea aleasă. Subimaginea este numită filtru, mască, nucleu,
fereastră. Valorile filtrului se numesc coeficienţi sau ponderi. Operaţiile de filtrare care se aplică
direct asupra pixelilor se mai numesc filtrări spaţiale, pentru a le deosebi de tehnicile Fourier
care sunt referite ca filtrări în domeniul frecvenţelor.
Filtrările spaţiale se pot clasifica după mai multe criterii:
a) după efectul şi destinaţia lor:
- pentru eliminarea zgomotelor;
- pentru netezirea (estomparea) detaliilor (bluring/smoothing);
- pentru accentuarea detaliilor (sharpening);
- pentru detecţia muchiilor; etc.
b) după structura şi modul de aplicare:
- liniare – se aplică o operaţie liniară asupra imaginii (de obicei operaţia de
convoluţie);
- neliniare – se aplică operaţii neliniare asupra imaginii.

Considerăm o filtrare liniară cu un filtru (o mască) de dimensiune 3 × 3 cu ponderile


(coeficienţii) w( s, t ) şi imaginea dată prin f ( x, y ) . Mecanismul aplicării unei măşti (filtrare
spaţială) este descris în Fig. 1.

1
PI, curs 3

0 X

Masca

Imagine f(x,y)

Y
w(-1,-1) w(0,-1) w(1,-1)

w(-1,0) w(0,0) w(1,0)

w(-1,1) w(0,1) w(1,1)

Coeficientii filtrului
f(x-1,y-1) f(x,y-1) f(x+1,y-1)

f(x-1,y) f(x,y) f(x+1,y)

f(x-1,y+1) f(x,y+1) f(x+1,y+1)

Pixelii din imagine


acoperiti de ma sca

Fig. 1 Mecanismul aplicării unei măşti (filtrare spaţială)

Dacă imaginea filtrată o notăm cu g ( x, y ) , atunci:

g ( x, y ) = w(−1,−1) f ( x − 1, y − 1) + w(0,−1) f ( x, y − 1) + w(1,−1) f ( x + 1, y − 1) +


w(−1,0) f ( x − 1, y ) + w(0,0) f ( x, y ) + w(0,1) f ( x, y + 1) + (1)
w(−1,1) f ( x − 1, y + 1) + w(0,1) f ( x, y + 1) + w(1,1) f ( x + 1, y + 1)

Se observă că masca este centrată în pixelul ( x, y ) , pentru care se calculează ieşirea


g ( x, y ) , acesta fiind motivul pentru care se lucrează cu măşti de dimensiune impară.
În general, filtrarea liniară a unei imagini de dimensiune M × N cu o mască m × n este
dată de:

a b
=
g ( x, y ) ∑ ∑ w(s, t ) f ( x + s, y + t ) (2)
s=
−a t =
−b

m −1 n −1
a= , b= , x = 0, M − 1 , y = 0, N − 1
2 2

2
PI, curs 3

Relaţia (2) este de fapt o relaţie de convoluţie (strict vorbind este corelaţie, vezi sfârşitul
cursului). Valoarea pixelului curent este înlocuită cu produsul de convoluţie dintre vecinătatea
pixelului curent şi masca de convoluţie.
Observaţie: Pentru simplitate relaţia (2) se scrie uneori sub forma:

mn −1
g ( x, y ) = ∑ wi zi (3)
i =0

cu z i - valoarea pixelului corespunzător din imaginea iniţială şi wi - ponderea filtrului.


De exemplu, pentru o mască m × n = 3 × 3 = 9 ponderile sunt numerotate astfel:

w0 w1 w2

w3 w4 w5

w6 w7 w8

Observaţie: Relaţia (2) se aplică în forma dată atunci când o mască de dimensiune n × n are
n −1
centrul la cel puţin de marginile imaginii. În acest fel imaginea rezultată este mai mică
2
decât cea iniţială. Dacă se doreşte să fie de aceeaşi dimensiune putem procesa pixelii de pe
margine: (i) cu o mască parţială sau (ii) putem extinde imaginea originală prin simpla copiere a
liniilor sau a coloanelor.

2. Filtre liniare de netezire


Filtrele liniare de netezire înlocuiesc valoarea pixelului curent cu o medie a vecinilor lui.
Ele sunt numite de netezire (smoothing) deoarece netezesc detaliile (variaţiile bruşte ale
intensităţii dintre pixelii vecini – adică frecvenţele înalte). Din acest motiv sunt numite şi filtre
trece-jos (taie frecvenţele înalte (detaliile) din imagine).
Să presupunem că o imagine este afectată de un zgomot aditiv η ( x, y ) a cărui medie este
nulă. Imaginea de intrare este: f ( x, y ) + η ( x, y ) .
Prin introducere în relaţia (2), obţinem:

a b
=g ( x, y ) ∑ ∑ w(s, t ) f ( x + s, y + t ) + η ab ( x, y) (4)
s=
−a t =
−b

η ab ( x, y ) - este dependentă de dimensiunea ferestrei (măştii). Cu cât dimensiunea este mai mare
cu atât η ab → 0 .
Observaţie. Filtrele liniare de netezire diminuează influenţa zgomotului nu prin eliminare ci prin
împrăştierea lui în imagine.

3
PI, curs 3

Exemple de filtre de mediere:

- filtru medie aritmetică

1 a b
=
g ( x, y ) ∑ ∑ f ( x + s, y + t )
m n s=
(5)
−a t =
−b

Pentru m= n= 3 ⇒ masca:

1 1 1
1
1 1 1
9
1 1 1

Acest tip de filtru poate fi folosit pentru zgomot gaussian şi zgomot uniform.

a)

b) c)

d) e)

Fig. 2 a) imaginea initiala; b) zgomot sare si piper; c) filtru mediere 3x3;


d) filtru mediere 7x7; e) filtru mediere 15x15; d) si e) => efectul de estompare (bluring)

4
PI, curs 3

- filtru cu medie ponderată (exemplu: filtru gaussian)

Filtrul gaussian este cel mai potrivit pentru eliminarea zgomotului gaussian. Ponderea
pixelilor se reduce odată cu creşterea distanţei faţă de pixelul central.

s 2 +t 2
1 a b −
=g ( x, y )
2πσ 2 ∑ ∑ f ( x + s , y + t )e 2σ 2 (6)
s=
−a t =
−b

Fig. 3 Distribuţie gaussiană cu media (0,0) şi σ = 1

Filtrarea este cu atât mai puternică cu cât valoarea deviaţiei standard σ şi dimensiunea
măştii de convoluţie este mai mare. Pentru dimensiunea 3 × 3 , aplicarea acestui filtru se poate
face cu masca:
1 2 1 
1 
2 4 2
16 
1 2 1 

Întrebare: Coeficienţii filtrului depind sau nu de valoarea deviaţiei standard σ ?

Concluzie:
Filtrele de mediere se folosesc în special la estomparea (bluring) obiectelor mici pentru a
putea izola obiectele mari care ne interesează. Intensitatea obiectelor mici se amestecă cu fondul
şi astfel obiectele mari sunt mult mai uşor de detectat. Dimensiunea măştii se alege în funcţie de
dimensiunea obiectelor pe care dorim să fie amestecate cu fondul.

5
PI, curs 3

Fig. 4 Estomparea obiectelor care nu ne interesează

3. Filtre neliniare
În general, zgomotele din imagini apar în domeniu frecvenţelor înalte din spectrul
imaginii. De aceea, pentru înlăturarea lor se folosesc filtre trece-jos. Aceste filtre tind să reducă
detaliile din imagini (linii, colţuri). Filtrele trece-jos degradează punctele de front, degradând
imaginea.
Filtrele neliniare elimină zgomotele, păstrând totodată fronturile şi detaliile din imagine.

Filtre de ordine (filtre rang)


O clasă a filtrelor neliniare este aceea a filtrelor de ordine (filtrelor rang). Acestea se
bazează pe ordonarea intensităţilor pixelilor din fereastra de filtrare.
Fie P ( x, y ) un punct (pixel) al imaginii şi VP= m × n o vecinătate a sa. Notăm cu
f 0 , f1 , , f mn−1 intensitățile pixelilor din vecinătatea VP şi cu RVP ordonarea crescătoare a
intensităţilor (vectorul ordonat al intensităţilor):

RVP = { f 0′, f1′, , f N′ −1} cu fi′ ≤ fi′+1 , N = mn.

Aplicarea unui filtru rang este definită astfel:

( )
g ( P ) = Rang j RVP , (7)

Adică intensitatea pixelului P din imaginea filtrată va fi aceea memorată pe poziția j a


vectorului RVP .

6
PI, curs 3

Pentru j = 0 se obține filtrul min (min filter):

g ( P ) min
= = RVP ( ) {
min f ( Q ) Q ∈ VP } (8)

Obs.: Filtrul min poate elimina impulsurile negative (spoturi albe).

j N − 1 se obține filtrul max (max filter):


Pentru =

g ( P ) max
= = RVP ( ) {
max f ( Q ) Q ∈ VP } (9)

Obs.: Filtrul max poate elimina impulsurile pozitive (spoturi negre).

Cazul cel mai reprezentativ al filtrelor de ordine este filtrul median.

Filtrul median este definit pentru N impar. El corespunde poziţiei din mijloc în vectorul
ordonat al intensităților, RV p , deci:

( )
g ( P ) = Rang N −1 RVP (10)
2

g ( P ) fiind intensitatea mediană din cele N intensități.

Obs.: În cazul în care notăm pozițiile cu 1, 2, , N (indexul în vector ia valorile 1, 2, , N ),
rezultă:

( )
g ( P ) = Rang N +1 RVP (11)
2

Filtrul median înlătură zgomotele fără a degrada imaginea, deci fără a atenua punctele de
front.
Filtrele de netezire tind să distribuie zgomotele în punctele înconjurătoare acelora care
reprezintă zgomot. Principala proprietate a filtrului median este aceea că forţează pixelii cu
nivele de gri distincte să fie mai asemănătoare cu vecinii lor. De fapt, sunt eliminate grupurile de
pixeli care sunt mai luminoase sau mai întunecate decât vecinii lor şi a căror arie este mai mică
mn
decât (jumătatea ariei filtrului).
2

7
PI, curs 3

Fig. 5 b) filtru medie aritmetică; c) filtru median

Obs: În general, filtrul median este cel mai potrivit pentru zgomotul sare şi piper.

a) b)

c)
Fig. 6 a) imaginea originală; b) imaginea cu zgomot sare şi piper; c) imaginea filtrată

8
PI, curs 3

Exemplu:
Considerăm cazul N = 5 = (m 1,= n 5) . Vectorul ordonat al intensităţilor pixelilor din
vecinătatea (fereastra, masca) de filtrare îl considerăm:
RVP {100,110,120,130, 250}
Ieşirea filtrului median va fi 120. Prin comparaţie, ieşirea unui filtru de netezire cu
100 + 110 + 120 + 130 + 250
ponderi egale (filtru medie aritmetică) este = 142.
5
Alegerea vecinătăţii (fereastra de filtrare)
Forma vecinătăţii în care se calculează cele N intensităţi influenţează efectul filtrului. În
general, vecinătatea se alege mică pentru a se evita efortul de calcul presupus de sortarea unui
vector mare de intensităţi. Dimensiunea este dată de dimensiunea grupurilor de pixeli care
trebuie eliminate. Alegerea formei ferestrei se poate baza pe o cunoaştere a caracteristicilor de
zgomot din imagine, de exemplu orientarea orizontală sau verticală.
Formele de ferestre uzuale pentru filtrul median sunt:

n n
n n

Fig. 7 Tipuri de ferestre în cazul filtrului median

Imaginea poate fi filtrată de mai multe ori folosind aceeaşi fereastră.

Proprietăţi ale filtrului median:


1. Reduce variaţia intensităţilor din imagine, producând regiuni de intensitate constantă sau
aproape constantă. Forma regiunilor depinde de geometria ferestrei de filtrare, aspect
neplăcut deoarece sunt introduse în imaginea filtrată regiuni care nu existau.
2. Netezeşte oscilaţiile de intensitate cu o perioadă mai mică decât lăţimea ferestrei.
3. Modifică valoarea medie a intensităţilor din imagine dacă distribuţia spaţială a zgomotului
nu este simetrică în fereastră.
4. Conservă anumite forme de frontiere.
5. Nu generează noi nivele de gri.

La aplicarea filtrelor liniare se efectuează calcule de înmulţire şi adunare. Aplicarea


filtrului median presupune sortarea unui vector de numere întregi. Aceste calcule se pot
eficientiza în mai multe moduri. Astfel, vectorul corespunzător poziției ( x + 1, y ) se poate obține
prin modificarea vectorului corespunzător poziției ( x, y ) .

9
PI, curs 3

Fig. 8 Deplasarea ferestrei cu o poziţie spre dreapta

Se elimină prima coloană din VP ⇒ rămân mn − m pixeli din vechiul vector.

Algoritmul Huang

Fereastra de m × n pixeli este deplasată pe rânduri de la stânga spre dreapta. Ferestrele


centrate în ( i, j ) şi ( i + 1, j ) au în comun mn − m pixeli.
Calculul valorii mediane din fereastra curentă se bazează pe valoarea mediană a ferestrei
anterioare şi pe histograma imaginii din fereastră.
Astfel, valoarea mediană poate fi determinată știind că N 2 (împărțire întreagă) pixeli ai
imaginii din fereastră au intensităţi mai mici decât ea ( N = m n ).

Exemplu: cazul N = 7

0 1 2 3 4 5 6
4, 6, 8, 10, 11, 12, 14
}

N/2

N −1
valoarea mediană: poziţia =3
2

În vectorul sortat al intensităţilor N 2 intensităţi sunt mai mici decât valoarea mediană.
Dacă valoarea mediană corespunde poziției i în histogramă (nivelul i de intensitate)
atunci numărul total de pixeli cu intensitatea mai mică decât a nivelului i este:

i −1
∑ h( j )
j =0

h – vectorul histogramei nenormate ( h ( j ) = numărul de pixeli cu intensitatea j ).

10
PI, curs 3

Algoritmul Huang:

• Pentru fiecare rând al imaginii:


Pentru prima fereastră de pe rând:
• Calculează histograma;
• Construieşte şi sortează vectorul pixelilor din fereastră;
• Determină valoarea mediană;
Pentru celelalte ferestre de pe rând:
• Actualizează histograma:
o Scăzând contribuţiile pixelilor de pe coloana din stânga ferestrei;
o Adăugând contribuţiile pixelilor de pe coloana din dreapta ferestrei;
• Determină valoarea mediană a ferestrei folosind valoarea mediană a
ferestrei anterioare, care se ajustează impunând condiţia:
N
( număr pixeli cu intensitate < med ) = ;
2
• sfârşit algoritm.

Implementarea în C++ a algoritmului poate fi următoarea:

void Huang-median(imagine a, imagine b, int m, int n, int Mmax, int Nmax)


{
// a – imagine de intrare, b – imagine de iesire
// m x n – dimensiunea ferestrei, Mmax x N max – dimens. imaginii de intrare
int k, l, i, j, mn, mn2, m2, n2, *t;
unsigned long hist[256];
t = new unsigned int[m*n]; //vectorul pe care il sortez
mn = m*n; mn2 = m*n/2; m2 = m/2; n2 = n/2;

for (k = m2; k < Mmax - m2; k++) //pentru fiecare rand


{ //initializare histograma
for (i = 0; i < 256; i++)
hist[i] = 0;
//Calculeaza histograma si valoarea mediana pentru prima fereastra
for (i = 0; i < m; i++)
for (j = 0; j < n; j++)
{
int g = t[n*i + j] = a[k - m2 + i][j];
hist[g]++;
}
sortare(t, mn);
int med = t[mn2]; //valoarea mediana
b[k][n2] = med; //valoarea mediana pentru prima fereastra de pe rand
//calculeaza nr. de pixeli cu intensitatea < med (pt. prima fereastra)
ltmed = 0;
for (i = 0; i < med; i++)
ltmed += hist[i];

11
PI, curs 3

//Calculeaza valoarea mediana pentru celelalte ferestre de pe linia k


for (l = n2 + 1; l < Nmax - n2; l++) // l - coloana
{//calculeaza histograma si ltmed
for (i = 0; i < m; i++)
{ //se elimina prima coloana a ferestrei precedente
g = a[k - m2 + i][l - n2 - 1];
hist[g]--;
if (g < med) ltmed--;
//se adauga ultima coloana a noii ferestre
g = a[k - m2 + i][l + n2];
hist[g]++;
if (g < med) ltmed++;
}
//calculeaza valorea mediana a ferestrei
if (ltmed > mn2)
do
{
med--;
ltmed - = hist[med];
} while (ltmed > mn2);
else
while (ltmed + hist[med] <= mn2)
{
ltmed + = hist[med];
med++;
}
b[k][l] = med;
} //for l
} //for k
delete t;
}

Algoritmul este mult mai rapid decât în cazul folosirii sortării în fereastră, chiar dacă se folosește
un algoritm de sortare rapidă.
Observație. Filtrul nu se aplică pe marginea de lățime m 2 , respectiv n 2 a imaginii. Pentru
filtrarea acestor margini se poate folosi o fereastră trunchiată.

12
PI, curs 3

Adaptive Filters

The filters discussed so far are applied to an entire image without any regard for how
image characteristics vary from one point to another.
The behaviour of adaptive filters changes depending on the characteristics of the image inside
the filter region.
We will take a look at the adaptive median filter.

Adaptive Median Filter

The median filter performs relatively well on impulse noise (white or black pixels) as
long as the spatial density of the impulse noise is not large. The adaptive median filter can handle
much more spatially dense impulse noise, and also performs some smoothing for non-impulse
noise. Moreover, the adaptive median filter seeks to preserve detail while smoothing non-impulse
noise, while the median filter does not do.
The key insight in the adaptive median filter is that the filter size changes depending on
the characteristics of the image.
The adaptive median filter aims to replace f(x,y) with median of a neighborhood up to a
specified size as long as the median is different from the max and min values but f(x,y)=min or
f(x,y)=max. Othervise, f(x,y) is not changed.
Remember that filtering looks at each original pixel image in turn and generates a new
filtered pixel.
First examine the following notation:
– zmin = minimum grey level in Sxy
– zmax = maximum grey level in Sxy
– zmed = median of grey levels in Sxy
– zxy = grey level at coordinates (x, y)
– Smax =maximum allowed size of Sxy

Level A: =
A1 zmed − zmin
=A2 zmed − zmax
if A1 > 0 and A2 < 0, go to level B
else increase the window size
if window size ≤ Smax, repeat Level A
else output zmed
Level B: =
B1 z xy − zmin
B=
2 z xy − zmax
if B1 > 0 and B2 < 0 ,
output z xy
else output zmed

13
PI, curs 3

Explanation
Level A: IF zmin < zmed < zmax , then
// zmed is not an impulse (white or black pixel)
(1) go to level B to test if z xy is an impulse …
ELSE
// zmed is an impulse
(1) the size of the window is increased and
(2) level A is repeated until…
(a) zmed is not an impulse and go to level B or
(b) Smax reached: output z xy
Level B: IF zmin < z xy < zmax , then
// z xy is not an impulse
(1) output is z xy (distortion reduced)
ELSE
// either z xy = zmin or z xy = zmax
(2) output is zmed (standard median filter)
// zmed is not an impulse (from level A)

The key to understanding the algorithm is to remember that the adaptive median filter has three
purposes:
– Remove impulse noise (white or black pixel);
– Provide smoothing of other noise;
– Reduce distortion, like excessive thinning or thickening of object
boundaries.

14
PI, curs 3

Image corrupted by salt and pepper Filtering with a 7*7 median filter Adaptive median filtering with S =7
max
noise with probabilities P = P =0.25
a b

15
PI, curs 3

Correlation and Convolution!

The filtering we have been talking about so far is referred to as correlation with the filter itself
referred to as the correlation kernel.

a b
=
g ( x, y ) ∑ ∑ w(s, t ) f ( x + s, y + t )
s=
−a t =
−b

Convolution is a similar operation, with just one subtle difference:

For symmetric filters it makes no difference.


Generally, the convolution is:
a b
=
g ( x, y ) ∑ ∑ w(s, t ) f ( x − s, y − t )
s=
−a t =
−b

16
PI, curs 4

II. Operaţiuni spaţiale (bazele filtrării spaţiale)


http://www.imageprocessingbasics.com/image-convolution-filters/
https://www.southampton.ac.uk/~msn/book/new_demo/

4. Filtre spaţiale de accentuare a contururilor

Operaţia de accentuare a contururilor se utilizează în scopul punerii în evidenţă a liniilor


şi arcelor conţinute intr-o imagine. Deci prin accentuarea contururilor se pun în evidenţă detaliile
dintr-o imagine.
Aspecte legate de contururi:
- Conturul reprezintă o schimbare a nivelelor de gri cu o anumită lungime şi o localizare
precisă;
- Variaţia nivelului de gri de-a lungul conturului este mică, dar variaţia la traversarea
conturului este semnificativă;
- Conturul are o direcţie care este măsurabilă (direcţia tangentei la contur).
Estomparea unei imagini se obţine în domeniul spaţial prin mediere, operaţie ce este
similară integrării. Prin urmare, accentuarea contururilor prin tehnici spaţiale se obţine prin
operatori de derivare spaţială.
Considerăm o funcţie continuă de o variabilă f ( x ) şi analizăm derivatele de ordinul 1 şi
2 într-o zonă în care au loc variaţii bruşte ale funcţiei (fig. 1). (vezi ultima figura din curs – fig.
3.36 Gonzales)
Se observă că prima derivată produce o îngustare a contururilor. A doua derivată are un
răspuns mai puternic, producând de fapt un dublu răspuns la o variaţie în rampă a nivelelor de gri.
A doua derivată localizează mai bine conturul. Dezavantajul este că amplifică zgomotul în raport
cu prima derivată. Se observă că putem accentua un contur dacă din imaginea inițială scădem a
doua derivată, adică realizăm operația f ( x ) − f ′′ ( x ) (operație care nu este reprezentată).
Considerăm o funcţie imagine f ( x, y ) continuă
⇒ f ′( x, y ) - corespunde gradientului funcţiei
f ′′( x, y ) - corespunde laplacianului funcţiei.

1
PI, curs 4

Fig. 1

2
PI, curs 4

Fig. 1’ Derivatele de ordin 1 si 2 în cazul unei muchii in care


intensitatea variază în rampă

Gradientul imaginii

 ∂f ( x, y ) 
∂f ( x, y )
→ ∂f ( x, y )
→  ∂x  → →
∇f ( x , y ) = i+ j= =Gx i + G y j (1)
∂x ∂y  ∂f ( x, y ) 
 ∂y 

Amplitudinea (mărimea gradientului) este:

2
 ∂f   ∂f 
2

∇f =   +   = G x2 + G y2 (2)
 ∂x   ∂y 

Ceea ce interesează este direcţia pentru care apare variaţia maximă a funcţiei. Facem trecerea
la coordonate polare {r , ϕ} :
x = r cos ϕ , y = r sin ϕ .

∂f ∂f ∂x ∂f ∂y ∂f ∂f
= + = cos ϕ + sin ϕ
∂r ∂x ∂r ∂y ∂r ∂x ∂y

Impunem condiţia de maxim după ϕ :

∂  ∂f  ∂f ∂f
 = − sin ϕ + cos ϕ =
0.
∂ϕ  ∂r  ∂x ∂y

3
PI, curs 4

Deci, variaţia maximă este în direcţia:

 ∂f 
 ∂y 
ϕ ( x, y ) = arctg  . (3)
∂f 
 ∂x 
 

În aplicaţii, pentru a nu lucra cu radicali, se aproximează mărimea gradientului prin:

∇f = G x + G y (4)
sau
∇f = {
max Gx , G y . }

Aproximarea discretă a gradientului:

∂f f ( x + ∆x, y ) − f ( x, y )
Gx = ≈
∂x ∆x
(4’)
∂f f ( x, y + ∆y ) − f ( x, y )
Gy = ≈
∂y ∆y

Deoarece ∆x = ∆y = 1 , ⇒

G x = f ( x + 1, y ) − f ( x, y )
(5)
G y = f ( x, y + 1) − f ( x, y )

Aceste aproximări corespund „convoluţiei” funcţiei imagine cu măştile:

 −1 
M1=  −1 1 şi M2 =  
 1 

Observaţii: a) poziţia pixelului curent corespunde primului element al măştii.


b) dacă dorim să avem şi în acest caz măşti de dimensiune impară, măştile de mai sus
pot fi considerate în forma:
 0 
 
=M1 0 −1 1 şi M2=  −1 
 1 
 

4
PI, curs 4

Se va exemplifica derivarea numerica cu fisierul „Derivative of a Function.pdf”


(Obs. De fapt, ţinând cont de definiţia convoluţiei, măştile sunt inversate:

 1 
 
M1 1
= −1 0  şi M2=  −1  )
 0 
 

Alte aproximări pentru amplitudinea gradientului:

O regiune din imaginea de prelucrat (funcţia f ( x, y ) ) de dimensiune 3x3 o notăm:

x z 4 ↔ f ( x, y )
z 0 ↔ f ( x − 1, y − 1)
 z0 z1 z2 
  z1 ↔ f ( x, y − 1)
 z3 z4 z5 
y
  z 2 ↔ f ( x + 1, y − 1)
 z6 z7 z8 

z8 ↔ f ( x + 1, y + 1)

Aproximarea făcută anterior este:

Gx = ( z5 − z 4 ) , G y = ( z7 − z4 ) (6)

Aproximarea Roberts (gradientul cruce):

G x = z8 − z 4 = f ( x + 1, y + 1) − f ( x, y )
(7)
G y = z 7 − z 5 = f ( x, y + 1) − f ( x + 1, y )

G x se implementează prin masca:

5
PI, curs 4

 −1 0
P= 
 0 1

respectiv G y prin masca:

0 −1
R= 
1 0

Observaţie: poziţia pixelului curent corespunde primului element al măştii.


Cele două măşti implementează aproximarea gradientului:

∇f ≈ z 8 − z 4 + z 7 − z 5

(8)
Aproximarea Sobel

  z0 z1 z2  
  
- utilizează măști de dimensiunea 3 × 3   z3 z4 z5  , z 4 ↔ f ( x , y)  :
   
  z6 z7 z8  

Gx = ( z6 + 2 z7 + z8 ) − ( z0 + 2 z1 + z2 ) = f ( x − 1, y + 1) + 2 f ( x, y + 1) + f ( x + 1, y + 1) −
f ( x − 1, y − 1) − 2 f ( x, y − 1) − f ( x + 1, y − 1)
(9)
G y = ( z2 + 2 z5 + z8 ) − ( z0 + 2 z3 + z6 ) = f ( x + 1, y − 1) + 2 f ( x + 1, y ) + f ( x + 1, y + 1) −
f ( x − 1, y − 1) − 2 f ( x − 1, y ) − f ( x − 1, y + 1)

Măştile corespunzătoare sunt:

 −1 −2 −1
 
Gx →  0 0 0 
1 2 1
 
(10)
 −1 0 1 
 
G y →  −2 0 2 
 −1 0 1 
 

Ideea de a folosi ponderea 2 este de a obţine o anumită netezire prin mărirea importanţei
centrului.

6
PI, curs 4

Fig. 2. Aplicarea aproximării Sobel a gradientului: imaginea originală (stânga), accentuarea


muchiilor pe orizontală (mijloc), accentuarea muchiilor pe verticală (dreapta)

Obs: Suma coeficienţilor în măştile care implementează gradientul este 0, indicând faptul
că acolo unde funcţia imagine este constantă rezultatul aplicării produsului de convoluţie cu
masca respectivă este zero, similar unui operator de derivare.

Aproximarea Prewitt

Gx = ( z6 + z7 + z8 ) − ( z0 + z1 + z2 )
(11)
G y = ( z2 + z5 + z8 ) − ( z0 + z3 + z6 )

Măştile corespunzătoare sunt:

 −1 −1 −1
 
Gx →  0 0 0
1 1 1 

(12)
 −1 0 1
 
G y →  −1 0 1
 1
 −1 0

Fig. 3. Aplicarea aproximării Prewitt a gradientului: imaginea originală (stânga), accentuarea


muchiilor pe orizontală (mijloc), accentuarea muchiilor pe verticală (dreapta)

7
PI, curs 4

Gradientul este folosit în special în accentuarea contururilor necesară pentru operaţiile din
procesul de segmentare. Gradientul este folosit şi în verificările industriale la depistarea
defectelor unor piese.

Exemple:

Fig. 4

8
PI, curs 4

Fig. 5

Fig. 6

Obs. Filtrele de dimensiune 3 × 3 discutate anterior (Prewitt şi Sobel) detectează discontinuităţile


pe verticală şi pe orizontală. Ele pot fi modificate astfel încât răspunsul să fie mai pronunţat de-a
lungul direcţiilor diagonale.

9
PI, curs 4

Sobel:
− 2 − 1 0 0 1 2

S xy =  − 1 0 1 S − xy 
=  − 1 0 1 (13)
 0 1 2 − 2 − 1 0

Prewit:
 − 1 − 1 0  0 1 2

Pxy = − 1 0 1 P− xy = − 1 0 1 (14)
 0 1 1 − 1 − 1 0

Fig. 7 a) imagine filtrată cu masca S − xy ; b) imagine filtrată cu masca S xy

Observaţie: Gradientul este perpendicular pe contur!

Fig. 8

10
PI, curs 4

Laplacianul imaginii

Fie f ( x, y ) – funcţia imagine – continuă. Laplacianul se defineşte astfel:

∂2 f ∂2 f
∇(∇f ) = ∇ f = ∆f = 2 + 2
2
(15)
∂x ∂y

În continuare căutăm o formă discretă pentru relaţia (15):

∂2 f ∂  ∂f  ( 4 ') [ f ( x + ∆x, y ) − f ( x, y )] − [ f ( x, y ) − f ( x − ∆x, y )]


=  ≈
∂x 2 ∂x  ∂x  ∆x 2
∂2 f ∂  ∂f  ( 4 ') [ f ( x, y + ∆y ) − f ( x, y )] − [ f ( x, y ) − f ( x, y − ∆y )]
=  ≈
∂y 2 ∂y  ∂y  ∆y 2

Deoarece ∆x = ∆y = 1 ⇒

∂2 f
≈ f ( x + 1, y ) + f ( x − 1, y ) − 2 f ( x, y )
∂x 2
(16)
∂2 f
≈ f ( x, y + 1) + f ( x, y − 1) − 2 f ( x, y )
∂y 2

Implementarea discretă a laplacianului se obţine sumând relaţiile (16) ⇒

∇ 2 f = f ( x + 1, y ) + f ( x − 1, y ) + f ( x, y + 1) + f ( x, y − 1)  − 4 f ( x, y ) (17)

Ecuaţia (17) poate fi implementată folosind următoarea mască:

0 1 0 
L0 = 1 − 4 1 (17’)
0 1 0

Masca L0 asigură un răspuns izotropic la rotaţia cu un increment de 90  .


Direcţiile diagonale pot fi încorporate în direcţia Laplacianului astfel:

∇2 f = [ f ( x + 1, y) + f ( x − 1, y) + f ( x, y + 1) + f ( x, y − 1)] − 4 f ( x, y) +
(18)
[ f ( x − 1, y − 1) + f ( x − 1, y + 1) + f ( x + 1, y − 1) + f ( x + 1, y + 1)] − 4 f ( x, y)
Masca corespunzătoare este:

11
PI, curs 4

1 1 1

L1 = 1 − 8 1 (19)
1 1 1

Acest filtru este izotropic pentru rotaţiile la 45 .


Obs. Se pot folosi şi măştile în care punctul central este pozitiv:

 0 −1 0 
L2 = − 1 4 − 1 (20)
 0 − 1 0 
respectiv

− 1 − 1 − 1
L3 = − 1 8 − 1 (21)
− 1 − 1 − 1

Laplacianul fiind un operator de derivare este folosit în special la accentuarea


contururilor.
În urma aplicării laplacianului, regiunile în care există discontinuităţi pronunţate vor
apărea mai luminoase (contururile), iar cele în care nivelele de gri variază lent se vor întuneca.
Aceasta înseamnă că se produc imagini care au contururi şi alte discontinuităţi de culori deschise,
toate imprimate pe un fond întunecat (negru corespunde la 0 ). Prin urmare se obţine o accentuare
a contururilor într-o imagine prin simpla adunare dintre imaginea iniţială şi laplacianul imaginii
(vezi fig. 9).

Obs. În cazul în care coeficientul central al măştii laplacianului este negativ, se face scădere.
Deci accentuarea contururilor se poate face prin:

 f ( x, y ) − ∇ 2 f ( x, y ) (a)
g ( x, y ) =  (22)
 f ( x, y ) + ∇ f ( x, y )
2
(b)

(a) pentru coeficient central negativ;


(b) pentru coeficient central pozitiv.

Ecuaţia (22) (a sau b) este de fapt implementată printr-o singură mască. De exemplu,
înlocuind expresia laplacianului dată de (17) rezultă:

g ( x, y ) = 5 f ( x, y ) − [ f ( x + 1, y ) + f ( x − 1, y ) + f ( x, y + 1) + f ( x, y − 1)] (23)

Masca corespunzătoare este:

12
PI, curs 4

 0 −1 0 
A0 = − 1 5 − 1 (24)
 0 − 1 0 

În cazul laplacianului dat de relaţia (18) se obţine masca:

− 1 − 1 − 1
A1 = − 1 9 − 1 (25)
− 1 − 1 − 1

Exemplu: Imaginea polului nord al Lunii

Fig. 9

13
PI, curs 4

Fig. 9

14
PI, curs 4

Fig. 10

15
PI, curs 4

Mărirea imaginilor (zooming)


Dintre modalităţile de zooming amintim:
a) dublarea imaginii;
b) interpolarea liniară.

a) Dublarea imaginii

În cazul dublării imaginii, fiecare linie şi fiecare coloană este dublată. Acest lucru este
echivalent cu întreţeserea unei imagini de dimensiuni M × N cu linii şi coloane de zerouri, pentru
a obţine o matrice de dimensiuni 2 M × 2 N şi apoi „convoluţia” ei cu o matrice de forma:

1 1 
H =  (1)
1 1 

Rezultă o imagine:

g (m, n) = f (k , l ) (2)

m n
unde k =   , l =   , m = 0, 2 M − 1, n = 0, 2 N − 1 ,
2 2
cu [ x ] reprezentând partea întreagă a valorii x .

Obs. Când se utilizează convoluţia cu matricea H , „pivotul” este H (1,1) (primul element este
H (0,0) ). (Să dau exemplu imaginea de la punctul b)

b) Interpolarea liniară

Este o multiplicare a imaginii, la care pixelii care se intercalează sunt media aritmetică a
pixelilor vecini din imaginea originală.
Interpolarea liniară se realizează în două etape:
• pe linii;
• pe coloane.
De exemplu, pentru a mări de 2 × 2 o imagine de M × N , interpolarea liniară de-a lungul
liniilor dă:

g int - de dimensiune M × 2 N :
g int (m,2n ) = f (m, n) m =0, M − 1, n =0, N − 1 (3)

g int (m,2n + 1) =
1
[ f (m, n) + f (m, n + 1)] (4)
2

Pe coloane transformarea este:

16
PI, curs 4

g - de dimensiune 2 M × 2 N :
g (2m, n ) = g int (m, n) m = 0, M − 1, n = 0, 2 N − 1 (5)

g (2m + 1, n ) =
1
[gint (m, n) + gint (m + 1, n)] (6)
2

Un rezultat similar se obţine prin convoluţia matricei 2 M × 2 N (obţinută prin întreţeserea


imaginii originale cu o matrice M × N de zerouri), cu matricea:

1 2 1
1 
H = 2 4 2 (7)
4
1 2 1
 

Obs. În cazul produsului de convoluţie poziţia pixelului curent corespunde elementului H (1,1)
(primul element este H (0,0) ).

Algoritmul folosit în acest caz este ilustrat astfel:

1 0 7 0 1 4 7 3,5
7 intretesere cu 0 0 0 interpolare linii 0 0 0 0  interpolare coloane
1 0 0 
3  →     →     →
 1 3 0 1 0 3 2 1 0,5
   
0 0 0 0 0 0 0 0
1 4 7 3,5 
2 3 4 2 

3 2 1 0,5 
 
1,5 1 0,5 0,25

Interpolarea de ordin superior e posibilă prin intercalarea fiecărei linii şi coloane cu p linii
şi p coloane de zerouri şi convoluţia de p ori cu matricea H.

17
Facultatea Automatica si Calculatoare
Uiversitatea Tehnica “Gheorghe Asachi” din Iaşi,
Romania

Prelucrarea imaginilor
curs – an III CTI

prof. dr. ing. Vasile Manta


conf. dr. ing. Simona Caraiman
1. Imbunatatirea imaginilor

 parte a procesului de preprocesare

Scopul principal al îmbunătăţirii imaginilor este accentuarea anumitor


caracteristici pentru analiza sau redarea acestora (pentru prelucrări
ulterioare).

Metodele de îmbunătăţire a imaginilor:


 metode în domeniul spaţial
 transformări aplicate direct pixelilor dintr-o imagine
 metode în domeniul frecvenţelor
 folosesc reprezentarea in frecventa a functiei imagine (ex. transformata
Fourier)

PI – curs 5
Prelucrarea imaginilor

Capitolul 1. Imbunatatirea imaginilor

Operatii in domeniul frecventelor


https://www.southampton.ac.uk/~msn/book/new_demo/

PI – curs 5
Analiza Fourier
In timp ce studia conductivitatea
termica, a descoperit ca functiile
pot fi descompuse in sume de
functii sinus si/sau cosinus cu
frecvente si amplitudini diferite.

Una din cele mai importante teorii


matematice din ingineria
moderna!

PI – curs 5
Analiza Fourier
Ideea de baza: Orice functie periodica poate fi descompusa intr-o
suma de sinusuri si cosinusuri

PI – curs 5
Analiza Fourier
Ideea de baza: Orice functie periodica poate fi descompusa intr-o
suma de sinusuri si cosinusuri

PI – curs 5
Analiza Fourier
Obs. 1. Sinusurile
au frecvente diferite

frecventa 1x

frecventa 2x

frecventa 4x

Obs. 2. Sinusurile sunt adunate in diferite


PI – curs 5
cantitati/proportii (ex. 1/3, 1/5. etc.)
Analiza Fourier
Se observa cum ne apropiem din ce in ce mai mult de functia
originala pe masura ce adaugam mai multe frecvente

www.tfh-berlin.de/~schwenk/hobby/fourier/Welcome.html

PI – curs 5
Transformata Fourier - continua

Discutie despre semificatia TF…

PI – curs 5
Transformata Fourier - continua
Cazul bidimensional:

PI – curs 5
Transformata Fourier - continua
Proprietati ale transformatei Fourier:

PI – curs 5
Transformata Fourier - continua
Proprietati ale transformatei Fourier:

Convolutia devine o multiplicare!


PI – curs 5
Transformata Fourier - continua
Proprietati ale transformatei Fourier:

PI – curs 5
Transformata Fourier - discreta

multiplicatorul 1/M:
 in fata inversei
 1/sqrt(M) la fiecare => transformari unitare!
(vezi sfârșitul cursului)
PI – curs 5
Transformata Fourier - discreta
Calculul transformatei Fourier discrete:

 u=0: suma celor M valori ale functiei f(x)


 u=1: suma celor M valori ale functiei f(x)
 ….
 u=M-1: suma celor M valori ale functiei f(x)

F(0) F(1) F(2) F(3) … F(M-1)

PI – curs 5
Transformata Fourier - discreta

PI – curs 5
Transformata Fourier – discreta 2D
Cazul bidimensional:

Fie o functie discreta, f(x,y) de dimensiune M×N

Transformata inversa:

multiplicatorul 1/MN:
 in fata inversei
 1/sqrt(MN) la fiecare => transformari unitare!
PI – curs 5
Transformata Fourier – discreta 2D
Cazul bidimensional:

PI – curs 5
Transformata Fourier – discreta 2D
Cazul bidimensional: separabilitate!

PI – curs 5
Transformata Fourier – discreta 2D
Proprietati - periodicitate

Transf. Fourier discreta a [M,N] puncte este periodica, cu perioada [M,N]

PI – curs 5
Transformata Fourier – discreta 2D
Proprietati - periodicitate

Consecinte importante vis-à-vis de implementare!

PI – curs 5
Transformata Fourier – discreta 2D
Proprietati – periodicitate in domeniul spatial

Consecinte importante vis-à-vis de implementare!

PI – curs 5
Transformata Fourier – discreta 2D
Proprietati

modulul TF (spectrul amplitudinii)

faza

spectrul de putere

Pentru o functie cu valori reale:

- TF este conjugat simetrica fata de origine

PI – curs 5
Transformata Fourier – discreta 2D
Componenta DC

F(0,0) – coeficientul dc

Daca u=v=0:

PI – curs 5
Transformata Fourier – discreta 2D
Vizualizarea spectrului transformatei Fourier

- Elementele TF sunt numere complexe  vizualizam modulul

- Problema: componenta DC are o valoare mult mai mare decat


celelalte valori
- un punct alb in origine, negru in rest

- valorile sunt expandate prin aplicarea unei transformari


logaritmice (vezi cursul 2)

PI – curs 5
Transformata Fourier – discreta 2D
Vizualizarea spectrului transformatei Fourier

Presupunem o imagine constanta numai cu valori de 1


f(x,y) = 1

- DFT va contine doar componenta DC, 0 in rest

Imagine 8x8
DC = 64

PI – curs 5
Transformata Fourier – discreta 2D
Centrarea spectrului DFT
- F(0,0) – coltul stanga-sus
- Pentru afisare se muta in centru -> se interschimba cadranele DFT

inmultire cu (-1)x+y

PI – curs 5
Transformata Fourier – discreta 2D
Centrarea spectrului DFT inmultire cu (-1)x+y

PI – curs 5
Transformata Fourier – discreta 2D
Centrarea spectrului DFT

PI – curs 5
Transformata Fourier – discreta 2D
Exemple

Componenta DC shiftata in centru, afisare sprectru logaritmat

PI – curs 5
Filtrarea in domeniul frecventelor
Exemple

PI – curs 5
Filtrarea in domeniul frecventelor
Exemple

PI – curs 5
Transformata Fourier – discreta 2D
Exemple

Imagine cu un cerc Spectrul TF

PI – curs 5
Transformata Fourier – discreta 2D
Efectul ‘ringing’

| |

Sinusul cardinal introduce efectul de ‘ringing’


- nu apare daca tranzitia este usoara, nu brusca

PI – curs 5
Transformata Fourier – discreta 2D
Exemple

Marirea imaginii contractarea spectrului, si vice-versa

PI – curs 5
Transformata Fourier – discreta 2D

PI – curs 5
Transformata Fourier – discreta 2D

PI – curs 5
Transformata Fourier – discreta 2D

PI – curs 5
Transformata Fourier – discreta 2D

PI – curs 5
Filtrarea in domeniul frecventelor

PI – curs 5
Filtrarea in domeniul frecventelor

PI – curs 5
Filtrarea in domeniul frecventelor
Filtru trece-jos ideal

PI – curs 5
Filtrarea in domeniul frecventelor
Filtru trece-jos
ideal

‘ringing’ effect

PI – curs 5
Filtrarea in domeniul frecventelor
Filtru trece-sus ideal

PI – curs 5
Filtrarea in domeniul frecventelor
Filtru trece-sus ideal

PI – curs 5
Filtrarea in domeniul frecventelor
Filtru trece-jos Butterworth

 atenuare graduala a frecventelor => elimina efectul de unda


circulara (eng. ‘ringing’) al filtrului ideal

Filtru ideal Filtre Butterworth

PI – curs 5
Filtrarea in domeniul frecventelor
Filtru trece-jos Butterworth

PI – curs 5
Filtrarea in domeniul frecventelor
Filtru trece-jos gaussian

Obs. In loc de σ
avem D0

PI – curs 5
Filtrarea in domeniul frecventelor
Filtru trece-sus (Gaussian, Butterworth)

DFT dupa aplicare filtru Imaginea rezultata dupa


Butterworth IDFT
PI – curs 5
Filtrarea in domeniul frecventelor
Filtru trece-sus (Gaussian, Butterworth)

Rezultat aplicare filtru Rezultat aplicare filtru


Gaussian, D0=10 Gaussian, D0=30
PI – curs 5
Filtrarea in domeniul frecventelor
Zgomot periodic
De obicei apare din cauza
interferențelor electrice sau
electromagnetice.

Tehnicile din domeniul frecvență


sunt cele mai eficiente pentru a
elimina zgomotul periodic.

PI – curs 5
Filtrarea in domeniul frecventelor
Filtre rejectie banda
Eliminarea zgomotului periodic dintr-o imagine implică eliminarea
unui anumit interval de frecvențe din acea imagine. Filtrele rejecție
bandă (oprește bandă) pot fi utilizate în acest scop.
Filtru ideal oprește bandă este:

 W
1 if D (u , v ) < D0 − 2

 W W
H (u , v ) = 0 if D0 − ≤ D (u , v) ≤ D0 +
 2 2
1 if D (u , v) > D0 + W

 2
PI – curs 5
Filtrarea in domeniul frecventelor
Filtre rejectie banda

Filtrul ideal oprește bandă este prezentat mai jos, împreună cu


versiunile Butterworth și Gaussian:

oprește bandă Butterworth oprește Gaussian oprește


Ideal bandă bandă

PI – curs 5
Filtrarea in domeniul frecventelor
Filtre rejectie banda
Imagine afectată de Spectrul imaginii
zgomot sinusoidal corupte

Butterworth oprește Imagine filtrată


bandă
PI – curs 5
Proprietati ale transformărilor
unitare

PI – curs 5
Proprietati ale transformărilor
unitare

PI – curs 5
http://www.robots.ox.ac.uk/~sjrob/Teaching/SP/l7.pdf

Lecture 7 - The Discrete Fourier


Transform

7.1 The DFT


The Discrete Fourier Transform (DFT) is the equivalent of the continuous Fourier
Transform for signals known only at instants separated by sample times  (i.e.
a finite sequence of data).
Let  be the continuous signal which is the source of the data. Let samples

be denoted      .
The Fourier Transform of the original signal,  , would be
(*)
"!$#%'& 
 ,
 
 .
 - +/102,3 
+ )
We could regard each sample   as an impulse having area 45 . Then, since the
integrand exists only at the sample points:
(98;: =+ <>;?
6!$#%7& 
 
 
 
 - +/A02B3 
@
 8;:
& CD- +/EGF D- +/10H?IF  F  D- +/10J?IF  H- +/A0 +=<>;?
: L +=<
ie. "!$#%K&  D- +/10J?
JNMOE
We could in principle evaluate this for any # , but with only data points to start
with, only final outputs will be significant.
You may remember that the continuous Fourier transform could be evaluated
QP
over a finite interval (usually the fundamental period  @ ) rather than from to

82
F P if the waveform was periodic. Similarly, since there are only a finite number
of input data points, the DFT treats the data as if it were periodic (i.e.   to
 S
 H is the same as R to  H .)
Hence the sequence shown below in Fig. 7.1(a) is considered to be one period of
the periodic sequence in plot (b).

(a)
1

0.8

0.6

0.4

0.2

0
0 1 2 3 4 5 6 7 8 9 10 11

(b)
1

0.8

0.6

0.4

0.2

0
0 5 10 15 20 25 30

Figure 7.1: (a) Sequence of &TU samples. (b) implicit periodicity in DFT.

Since the operation treats the data as if it were periodic, we evaluate the
<
VXW equation for the fundamental frequency (one cycle per sequence, : ? Hz,
DFT
: ? rad/sec.) and its harmonics (not forgetting the d.c. component (or average) at
#Y&Z ).
H\ \ \ \ 
i.e. set #Y&Z[  ^   U
 S] ]`_ S]
or, in general

: L +=<
S
&  D- + /$bdg
ec f J  Z& ih H
_ JaMOE _

83
is the Discrete Fourier Transform of the sequence   .
_
We may write this equation in matrix form as:
jkk mnn jkk m nn jkk mnn
kk C nn kk    V   : +=< nn kk C nn
kl  n kk  p V p p q
r Tp : + V nn kl  n
 p pts p u
r Tp
 & lk  pvq p u p w
r Tp : + q n  
.. o .. o
.. o
S .
.V  .
  p : +=< p : + p : + q  p  
 V
where p &Zxy[z{ !\}|  and p &Zp : etc. ~ & .

DFT – example
Let the continuous signal be

ˆ‡ @ Š
K& € ‚ƒ F €  „$†UH\‚  F ‰
ƒ  € „‹†O‚ Œ\ƒ 
dc 1Hz 2Hz

10

−2

−4
0 1 2 3 4 5 6 7 8 9 10

Figure 7.2: Example signal for DFT.

Let us sample  at 4 times per second (ie.  = 4Hz) from Ž&r to Ž& q . The
values of the discrete samples are given by: s
W “‡ @ F”‰
 &t F $‘’5 V   •$’\{ by putting &r–—&
J
s

84
i.e.  ˜&t™ ,  &šŒ ,  ›&t™ ,  ‰ &Z ,  &ZŒR

L q L q 
Therefore &  d- + /c b f J &  A ! f J
_ E JNMOE
jkkl mn kjlk mnn kjlk m n kjlk m n
C n     C n  $ n
 &   !  ! o  & R! Œ
‰ o      
 ‰ 
 o H
  o
 !  !  !RŒ
The magnitude of the DFT coefficients is shown below in Fig. 7.3.

20

15
|F[n]|

10

0
0 1 2 3
f (Hz)

Figure 7.3: DFT of four point sequence.

Inverse Discrete Fourier Transform


The inverse transform of

: L +=<
&  d- +/bdegc f J
_ JaMOE
85
is

: =+ <
 L
 4& D-Uœ / bdec f J
f MOE _
<
i.e. the inverse matrix is : times the complex conjugate of the original (symmet-
ric) matrix.

Note that the coefficients are complex. We can assume that the  4 values
_
are real (this is the simplest case; there are situations (e.g. radar) in which two
inputs, at each  , are treated as a complex pair, since they are the outputs from o
‡
and o demodulators).
ž
In the process of taking the inverse transform the terms and (re-
:V _ _
member that the spectrum is symmetrical about ) combine to produce  fre-
quency components, only one of which VXW is considered to: be valid (the one at the
V ; the higher frequency
_*] ?
lower of the two frequencies, Hz where
:V _ Ÿ
component is at an “aliasing frequency” ( )).
_Š¡
¢
From the inverse transform formula, the contribution to   of and
is:
_ _

  8;:
 f & š£ D- / bdg
e c f J¤F D- / bde c + f >"J¥ (7.2)
_ _

: L +=<
S 8 :
For all   real  &  D- +/bde c + f >¦J
_ JaMOE

8: VXW
But - + /bde c + f ¦> J & € - +  / ‚ ƒ J - œ $/ bdec¨§ J &Z- œ $/ bdg
ec f J
1 for all 
S ª©
i.e. &   (i.e. the complex conjugate)
_ _

86
Substituting into the Equation for  f  above gives,
 J F ©  .- +/ bdegc f JH¥ VXW
 f 4& £ d- / db egc f ¤ since - / J &T
_ _

 ¥ „‘‹† \ š­¦® ¥ †¨¯6° \


ie.  f ›& £«¬£  £  ¥
_ _ _ _
  \
or  f & T± ± „‘‹† £   F”²$³¨´  d ¥
_  _ _
VXW f V
i.e. a sampled sinewave at : ? Hz, of magnitude : ± _ ±
For the special case of &µ , Ž&S¶· 4 (i.e. sum of all samples) and the
contribution of C to
_ 4 is  E ¤& : < —& average of  ¤& d.c. compo-
nent.

Interpretation of example
< VE
1. C›&r$ implies a d.c. value of : C& &r (as expected)
s
 ª© ‰
2. V {& R! Œ¸
V & ²³¨´ ›& ¹‡ o
implies a fundamental component of peak amplitude
: ± ¦‘ ± & s ] Œª&r with phase given by

\ ˆ‡ \ Y‡


i.e. „‹†  o ¤&tK„‘‹†U  o (as expected)
 

: S
3. &ºH  & V – no other component here) and this implies a
component
_ _

 V &
 e c »V J & 
D- / bd¼
W
4Hd- / J & ‰ ‘’\{ (as expected)
Œ
since †¨¯D°\{i&t for all 

87
6

|F[n]|
3 3/sqrt(2)

2 sqrt(2)

0
0 1 2 3
f (Hz)

Figure 7.4: DFT of four point signal.

Thus, the conventional way of displaying a spectrum is not as shown in Fig. 7.3
but as shown in Fig. 7.4 (obviously, the information content is the same):
is much greater than Π; for example, for
In typical applications,
has U‹Œ components, but ^
‰  UR ‰ are the complex conjugates of&½ ^
 $

UR Π,
 ,
_ EV À V 
< À V A
< 
< À
leaving <B¾E ¿ as the d.c. component, <BE V ¾Â ¿ V to <BE V ¾Â ¿ à V as complete a.c. com-
s < <VÀ s{Á Á sGÁ Á
ponents and <BE V s ¾Â ¿ à V as the cosine-only component at the highest distinguishable
:V
frequency  & .
_
Most computer programmes evaluate ¾: ¿ (or ¾: ¿
fÀ fÀb
for the power spectral den-
Á Á Á Á
sity) which gives the correct “shape” for the spectrum, except for the values at
:
&Z and V .
_

7.2 Discrete Fourier Transform Errors


To what degree does the DFT approximate the Fourier transform of the function
underlying the data? Clearly the DFT is only an approximation since it provides
only for a finite set of frequencies. But how correct are these discrete values
themselves? There are two main types of DFT errors: aliasing and “leakage”:

88
7.2.1 Aliasing
This is another manifestation of the phenomenon which we have now encountered
several times. If the initial samples are not sufficiently closely spaced to represent
high-frequency components present in the underlying function, then the DFT val-
ues will be corrupted by aliasing. As before, the solution is either to increase the
sampling rate (if possible) or to pre-filter the signal in order to minimise its high-
frequency spectral content.

7.2.2 Leakage
P F P or over an integer number
Recall that the continuous Fourier transform of a periodic waveform requires the
integration to be performed over the interval - to
of cycles of the waveform. If we attempt to complete the DFT over a non-integer
number of cycles of the input signal, then we might expect the transform to be
corrupted in some way. This is indeed the case, as will now be shown.
Consider the case of an input signal which is a sinusoid with a fractional num-
:
ber of cycles in the data samples. The DFT for this case (for &Ä to & V )
is shown below in 7.5.
_ _

6
|F[n]|

0
0 2 4 6 8
freq

Figure 7.5: Leakage.

We might have expected the DFT to give an output at just the quantised frequen-

89
cies either side of the true frequency. This certainly does happen but we also find
non-zero outputs at all other frequencies. This smearing effect, which is known
as leakage, arises because we are effectively calculating the Fourier series for the
waveform in Fig. 7.6, which has major discontinuities, hence other frequency
components.
1

0.5

−0.5

−1
0 5 10 15 20 25 30 35 40 45 50

Figure 7.6: Leakage. The repeating waveform has discontinuities.

Most sequences of real data are much more complicated than the sinusoidal se-
quences that we have so far considered and so it will not be possible to avoid in-
troducing discontinuities when using a finite number of points from the sequence
in order to calculate the DFT.
The solution is to use one of the window functions which we encountered in the
design of FIR filters (e.g. the Hamming or Hanning windows). These window
functions taper the samples towards zero values at both endpoints, and so there
is no discontinuity (or very little, in the case of the Hanning window) with a
hypothetical next period. Hence the leakage of spectral content away from its
correct location is much reduced, as in Fig 7.7.
(a) (b)
7 5

6
4
5

4 3

3 2
2
1
1

0 0
0 2 4 6 8 0 2 4 6 8

Figure 7.7: Leakage is reduced using a Hanning window.

90
7.3 The Fast Fourier Transform
The time taken to evaluate a DFT on a digital computer depends principally on the
V are the slowest operations. With
number of multiplications involved, since these
the DFT, this number is directly related to (matrix multiplication of a vector),
where is the length of the transform. For most problems, is chosen to be
at least 256 in order to get a reasonable approximation for the spectrum of the
sequence under consideration – hence computational speed becomes a major con-
sideration.

Highly efficient computer algorithms for estimating Discrete Fourier Trans-


forms have been developed since the mid-60’s. These are known as Fast Fourier
Transform (FFT) algorithms and they rely on the fact that the standard DFT in-
volves a lot of redundant calculations:

: L +=< : L +=<
Re-writing ›&   D- +/ bde c f J as &  dp : f J
_ JaMOE _ JNMOE
J
it is easy to realise that the same values of p : f are calculated many times as the
computation proceeds. Firstly, the integer product  repeats for different com-
J _
binations of  and ; secondly, p : f is a periodic function with only distinct
values.
_

For example, consider &9™ (the FFT is simplest by far if is an integral power
of 2)


Å < 
+ / b dÆ c +  /  !
p &t- & - s ÃXÇ & È
t & É= say 
Z

V    © 
Then É & ! ÉRq& !5Éi& É És & 
 © Å
ÉÃ & É É u &Ê! É5Ë%&Ê!5ÉÌ&9É É ~& 
From the above, it can be seen that:

91

ptÅ s &  p ÅE
p ÅÃ &  p Å V<
p Åu &  p Å
pvÅ Ë & pvÅ q
Also, if  falls outside the range 0-7, we still get one of the above values:
_
Å
eg. if &t and i&rÍ^ p Å q à &tÉ q à &ºÉ  sŽÎ É q &tÉ q
_
7.3.1 Decimation-in-time algorithm
Let us begin by splitting the single summation over samples into 2 summations,
:
each with V samples, one for  even and the other for  odd.
J
Substitute ÏS& V for  even and ÏS&
J‘+=V < for  odd and write:

e =+ < e =+ <
Lb VÐ Lb 8 V Ð < >
&  4ϸdp : f F  Ï F  dp : œ f
_ Ð OM E Ð MOE

VÐ f 
+ / d
b c 8V Ð f > + / bde c Ð f Ð
Note that p : t & - e & - b
9 &rp e f
b

e =+ < e =+ <
Lb Ð Ð Lb Ð
Therefore &  4ϸdp e f F p :  Ï F  dp e f
_ Ð OM E b Ð MOE b

Ð
F p :i
ie. &tÑÒ Ó
_ _ _
:
Thus the -point DFT can be obtained from two V -point transforms,
_
one on even input data, ÑÒ , and one on odd input data, Ó . Although the fre-
_ : _
quency index ranges over values, only V values of ÑÒ and Ó need to be
_ _ : V _
computed since ÑÔ and Ó are periodic in with period .
_ _ _
For example, for &9™ :

92
Õ even input data   d֌$ ×
Õ odd input data  ¦d ‰ d4H Í
›&tÑÒ  F p ÅE Ó C
¦‘›&tÑÒ¦ F p Å< Ó 
4‰H›&tÑÒ4‰ F p ÅV Ó
›&tÑÒ F prÅ q Ó ‰
F ptÅ s Ó  ÅE
CŒ›&tÑÒ  F p Å Ó C›&tÑÒC  p Å< Ó C
4H›&tÑÒ¦ F p Å Ãu Ó ›&tÑÒ  p ÅV Ó 
×›&tÑÒ4 ‰›&›&t ÑÒ   p Å Ó ‰
4ÍH›&tÑÒ ‰ F pvÅ Ë Ó tÑÒ ‰ prq Ó
This is shown graphically on the flow graph of Fig 7.8:
G[0]
f[0] F[0]
f[2] N/2
point
f[4]
DFT
f[6]
G[3]
H[0]
f[1]
f[3] N/2
f[5] point
DFT
f[7] F[7]
H[3]

Figure 7.8: FFT flow graph 1.

Assuming than is a power of  , we can repeat the above process on the two
:V :
-point transforms, breaking them down to -point transforms, etc  , until we
come down to  -point transforms. For &s ™ , only one further stage is needed
(i.e. there are Ø stages, where &ZHÙ ), as shown below in Fig 7.9.
Thus the FFT is computed by dividing up, or decimating, the sample sequence
  into sub-sequences until only  -point DFT’s remain. Since it is the input, or
time, samples which are divided up, this algorithm is known as the decimation-
in-time (DIT) algorithm. (An equivalent algorithm exists for which the output, or
frequency, points are sub-divided – the decimation-in-frequency algorithm.)
The basic computation at the heart of the FFT is known as the butterfly because
of its criss-cross appearance. For the DIT FFT algorithm, the butterfly computa-
tion is of the form of Fig 7.10

93
f[0] F[0]
N/4 point
f[4] DFT

f[2]
N/4 point
f[6] DFT

f[1]
N/4 point
f[5] DFT

f[3]
N/4 point
f[7] DFT
F[7]

Figure 7.9: FFT flow graph 2.

Ú Ú F Û
Þ Þ à R
à á Ý p*: Ü
Þ Þ à à à
Þ Þ à
Þ Þ à à à
Þà àÞ
F p :Ü à à à Þ Þ
Þ Þ
à à à  Þ Þ
Û à à p : Ü Þ Þ RÞ ß Ú  Û
Ý p :Ü
*

Figure 7.10: Butterfly operation in FFT.

Ú Û
where and are complex numbers. Thus a butterfly computation requires one
complex multiplication and 2 complex additions.

Note also, that the input samples are “bit-reversed” (see table below) because at
each stage of decimation the sequence input samples is separated into even- and
odd- indexed samples.

(NB: the bit-reversal algorithm only applies if is an integral power of  ).

94
Index [ Binary Bit-reversed Bit-reversed
representation Binary index
0 000 000 0
1 001 100 4
2 010 010 2
3 011 110 6
4 100 001 1
5 101 101 5
6 110 011 3
7 111 111 7

7.3.2 Computational speed of FFT


V
The DFT requires complex multiplications. At each stage of the FFT (i.e.
:V
each halving) complex multiplications are required to combine the results of
the previous stage. Since there are BâBUã V  stages, the number of complex mul-
tiplications required to evaluate an -point DFT with the FFT is approximately e
|‹e ä âBUã V (approximately E
because multiplications by factors such as p : , p : b
äe ,
p : and pµ: å are really just complex additions and subtractions).

V :V
(DFT) â,Uã V (FFT) saving
32 1,024 80 92 æ
256 65,536 1,024 98 æ
1,024 1,048,576 5,120 99.5 æ

7.3.3 Practical considerations


If is not a power of  , there are 2 strategies available to complete an -point
FFT.

1. take advantage of such factors as possesses. For example, if is divisi-


‰
ble by (e.g. &ČR™ ), the final decimation stage would include a ‰ -point
transform.

95
2. pack the data with zeroes; e.g. include 16 zeroes with the 48 data points
(for &vŒR™ ) and compute a ×$Œ -point FFT. (However, you should again be
wary of abrupt transitions between the trailing (or leading) edge of the data
and the following (or preceding) zeroes; a better approach might be to pack
the data with more realistic “dummy values”).

96
Facultatea Automatica si Calculatoare
Uiversitatea Tehnica “Gheorghe Asachi” din Iaşi,
Romania

Prelucrarea imaginilor
curs – an III CTI

prof. dr. ing. Vasile Manta


conf. dr. ing. Simona Caraiman
Prelucrarea imaginilor

Capitolul 1. Imbunatatirea imaginilor

Detectia muchiilor

PI – curs 7
Muchii
Definitie: Locatie in imagine ce prezinta o schimbare brusca,
semnificativa, locala a intensitatii.

Detectia muchiilor:
 Scop: identificarea schimbarilor bruste de intensitate in
imagine (discontinuitati);
 Primul pas spre segmentarea imaginilor (impartirea imaginii in
regiuni disjuncte ce corespund obiectelor de interes).

PI – curs 7
Cauze ale discontinuitatilor
Geometrice:
 Schimbari ale orientarii suprafetelor
 Discontinuitati in adancime
 Schimbari de culoare/textura

Non-geometrice:
 Schimbari de iluminare
 Reflexii stralucitoare
 Umbre
 Inter-reflexii

PI – curs 7
Cauze ale discontinuitatilor
Geometrice:
 Schimbari ale orientarii suprafetelor
 Discontinuitati in adancime
 Schimbari de culoare/textura

Non-geometrice:
 Schimbari de iluminare
 Reflexii stralucitoare
 Umbre
 Inter-reflexii

PI – curs 7
Cauze ale discontinuitatilor
Geometrice:
 Schimbari ale orientarii suprafetelor
 Discontinuitati in adancime
 Schimbari de culoare/textura

Non-geometrice:
 Schimbari de iluminare
 Reflexii stralucitoare
 Umbre
 Inter-reflexii

PI – curs 7
Detectia muchiilor - exemple

PI – curs 7
Detectia muchiilor - exemple

PI – curs 7
Detectia muchiilor
Modelarea schimbarilor de intensitate

PI – curs 7
Detectori de muchii

Cerinte

 Detectie buna: trebuie sa minimizeze probabilitatea de aparitie


a raspunsurilor fals-positive (ex. zgomot, adică muchii false) si
fals-negative (muchii reale nedetectate)

Muchie Robustete
reala scazuta la
zgomot

PI – curs 7
Detectori de muchii

Cerinte

 Localizare buna: muchiile detectate trebuie sa fie cat mai


apropiate de cele reale

Muchie Localizare
reala proasta

PI – curs 7
Detectori de muchii

Cerinte

 Raspuns singular: detectorul trebuie sa returneze un singur


punct pentru fiecare punct de tip muchie reala (minimizarea
numarului de maxime locale in jurul muchiei reale)

Muchie Prea multe


reala raspunsuri

PI – curs 7
Detectori de muchii

Metode

 Operatori gradient
- Roberts
- Prewitt
- Sobel

 Gradient of Gaussian (Canny)

 Laplacian of Gaussian (Mar-Hildreth)

PI – curs 7
Detectia muchiilor folosind gradientul

Functia imagine

Vectorul gradient

Magnitudinea gradientului

Directia gradientului

PI – curs 7
Detectia muchiilor folosind gradientul

Vectorul gradient este orientat in directia celei mai rapide cresteri in intensitate

Directia gradientului este


perpendiculara pe directia muchiei

PI – curs 7
Detectia muchiilor folosind gradientul

Ideea de baza

 Calcul derivate partiale dupa x si y

 Calcul magnitudine gradient

 Aplicare prag pe magnitudinea gradientului

PI – curs 7
Detectia muchiilor folosind gradientul

Ideea de baza

functia intensitate
imagine (de-a lungul liniei) prima derivata

muchiile corespund
extremelor derivatei
PI – curs 7
Detectia muchiilor folosind gradientul

Aproximarea gradientului (diferente finite)

Pentru o functie 2D, f(x,y) derivata partiala este:

Pentru functii discrete, aproximarea cu diferente finite:

masca: [-1 1]

PI – curs 7
Detectia muchiilor folosind gradientul

Aproximarea gradientului (diferente finite)

[-1 1 0]

[0 -1 1]

[-1 0 1]

PI – curs 7
Detectia muchiilor folosind gradientul

Aproximarea gradientului (diferente finite)

Derivatele partiale pot fi calculate cu

PI – curs 7
Detectia muchiilor folosind gradientul

Aproximarea gradientului (diferente finite)

Pentru c=1, se obtine operatorul Prewitt

Pentru c=2, se obtine operatorul Sobel

PI – curs 7
Detectia muchiilor folosind gradientul

Aproximarea gradientului (diferente finite)

PI – curs 7
Detectia muchiilor folosind gradientul

Aproximarea gradientului

PI – curs 7
Detectia muchiilor folosind gradientul
Efectul zgomotului
considerand o singura linie/coloana din imagine:

Unde este localizata muchia?


PI – curs 7
Detectia muchiilor folosind gradientul

Efectul zgomotului

 Filtrele cu diferente finite sunt sensibile la zgomot


 zgomot = pixeli care difera fata de vecini

 Solutie?
 Netezirea imaginii – va uniformiza diferentele dintre pixeli vecini

Medie aritmetica Medie gaussiana

PI – curs 7
Detectia muchiilor folosind gradientul

PI – curs 7
Detectia muchiilor folosind gradientul
Efectul zgomotului: solutie = netezire

PI – curs 7
Detectia muchiilor folosind gradientul
Efectul zgomotului: solutie = netezire (mai eficient!)

(de demonstrat!)

PI – curs 7
Detectia muchiilor folosind gradientul
Derivata Gaussian-ului (DoG)

PI – curs 7
Detectia muchiilor folosind gradientul
Derivata Gaussian-ului (DoG)

PI – curs 7
Detectia muchiilor folosind gradientul
Efectul netezirii la diferite scari

Parametrul sigma reprezinta “scara”/”latimea”/”imprastierea”


kernel-ului Gaussian
- controleaza nivelul de netezire
PI – curs 7
Detectia muchiilor folosind gradientul
Efectul netezirii la diferite scari – muchiile obtinute

Netezirea derivatei inlatura zgomotul, dar blureaza muchiile

PI – curs 7
Detectia muchiilor folosind gradientul
Efectul netezirii la diferite scari – muchiile obtinute

Netezirea derivatei inlatura zgomotul, dar blureaza muchiile

PI – curs 7
Detectia muchiilor folosind gradientul

Operatorul Sobel

PI – curs 7
Detectia muchiilor folosind gradientul
Operatorul Sobel

PI – curs 7
Detectia muchiilor folosind gradientul

Thresholding standard

- Se pot selecta doar muchii ‘tari’


- Nu este garantata ‘continuitatea’

PI – curs 7
Detectia muchiilor folosind gradientul

Operatorul Sobel – probleme

- Localizare slaba a muchiilor


- raspuns pt pixeli adiacenti multipli
- Valoarea de prag favorizeaza anumite directii
- Poate ‘rata’ directiile oblice
- Fals-negative
PI – curs 7
Detectia muchiilor folosind derivata a
doua

 Identificarea aproximativa a minimelor/maximelor gradientului


prin determinarea pozitiilor pt care

 Nu se pot gasi intotdeauna pixeli discreti pt care derivata a 2-a


este zero
 Cautam trecerile prin zero

PI – curs 7
Detectia muchiilor folosind derivata a
doua

 Calculul derivatei a doua

 Aceasta aproximare este centrata in x+1

 Inlocuind x+1 cu x, obtinem

PI – curs 7
Derivatele imaginii

 Prima derivata

 A doua derivata

PI – curs 7
Detectia muchiilor folosind derivata a
doua

PI – curs 7
Derivata a 2-a in 2D

 Laplacianul

PI – curs 7
Derivata a 2-a in 2D

 Laplacianul - variatii

PI – curs 7
Derivata a 2-a in 2D

 Laplacianul – proprietati

 Operator isotropic (raspuns uniform in toate directiile)

 Implementare mai putin costisitoare decat a gradientului


 O singura masca

 Nu furnizeaza informatii despre directia muchiei

 Mai sensibil la zgomot

PI – curs 7
Detectia muchiilor folosind derivata a
doua

 4 cazuri de treceri prin zero

{+,-}, {+,0,-}, {-,+}, {-,0,+}

 Panta trecerii prin zero pt. {a,-b} este |a+b|

 Pt a detecta treceri prin zero ‘puternice’, se pune un threshold


pt panta

PI – curs 7
Detectia muchiilor folosind derivata a
doua

Laplacian of Gaussian (LoG)


(operatorul Marr-Hildreth)

 Se netezeste mai intai imaginea (cu un filtru Gaussian)

 Se poate arata ca:

PI – curs 7
Detectia muchiilor folosind derivata a
doua

Laplacian of Gaussian (LoG)


(operatorul Marr-Hildreth)

PI – curs 7
Detectia muchiilor folosind derivata a
doua

Difference of Gaussians (DoG)


 LoG poate fi aproximat prin diferenta a doua functii gaussiene

PI – curs 7
Detectia muchiilor folosind derivata a
doua

Difference of Gaussians (DoG)

- pt. o aproximare buna, raportul sigma1/sigma2 este aprox. 1.6


PI – curs 7
Detectia muchiilor folosind derivata a
doua

Difference of Gaussians (DoG)

- pt. o aproximare buna, raportul sigma1/sigma2 este aprox. 1.6


PI – curs 7
Detectia muchiilor Gradient vs. LoG

- Gradientul functioneaza bine atunci cand imaginea contine


tranzitii abrupte de intensitate si putin zgomot
- Trecerile prin zero ale LoG ofera o localizare mai buna, in
special cand muchiile nu sunt foarte inguste

PI – curs 7
Detectia muchiilor Gradient vs. LoG

- LoG are probleme la colturi

PI – curs 7
Detectia muchiilor folosind derivarea

Aspecte practice

- Balanta intre atenuarea zgomotului si localizarea muchiei


- Netezirea depinde de dimensiunea mastii (ex., depinde de sigma pt
filtrul gaussian)
- Masti mai mari reduc zgomotul, dar inrautatesc localizarea
muchiilor, si vice-versa

- Alegerea threshold-ului
- Prea mic => prea multe muchii (fals-pozitive)
- Prea mare => prea putine muchii (fals-negative)

PI – curs 7
Detectia muchiilor – metoda Canny

 Atenuarea zgomotului

 Calculul marimii si directiei gradientului

 Suprimarea valorilor non-maximale (Non-Max Suppression)

 Histerezis si analiza conectivitatii pt detectia muchiilor

PI – curs 7
Detectia muchiilor – metoda Canny
Exemplu

Imaginea originala
PI – curs 7
Detectia muchiilor – metoda Canny
Calcul gradient (DoG)

PI – curs 7
Detectia muchiilor – metoda Canny
Orientarea gradientului in fiecare pixel

PI – curs 7
Detectia muchiilor – metoda Canny
Calcul gradient (DoG)

PI – curs 7
Detectia muchiilor – metoda Canny
Suprimarea valorilor non-maximale

 Muchia apare acolo unde gradientul are un maxim


 Se suprima valorile non-maximale ale gradientului, chiar daca
depasesc threshold-ul
 sunt eliminate toate valorile de-a lungul gradientului care nu sunt
varfuri

PI – curs 7
Detectia muchiilor – metoda Canny
Suprimarea valorilor non-maximale

 Muchia apare acolo unde gradientul are un maxim


 Se suprima valorile non-maximale ale gradientului, chiar daca
depasesc threshold-ul
 sunt eliminate toate valorile de-a lungul gradientului care nu sunt
varfuri
 Asigura o subtiere (thinning) a muchiilor (raspuns minimal)

PI – curs 7
Detectia muchiilor – metoda Canny
Suprimarea valorilor non-maximale

- Gradientul in pixelul (x,y)

x’ si x’’ sunt vecini ai lui x de-a lungul directiei


normale la muchie
PI – curs 7
Detectia muchiilor – metoda Canny
Suprimarea valorilor non-maximale

PI – curs 7
Detectia muchiilor – metoda Canny
Suprimarea valorilor non-maximale
Care sunt vecinii?
- urmarim directia gradientului

Directiile sunt cuantizate:

PI – curs 7
Detectia muchiilor – metoda Canny
Suprimarea valorilor non-maximale
Se verifica daca pixelul este un maxim local de-a lungul directiei
gradientului  se pastreaza conectivitatea contururilor

PI – curs 7
Detectia muchiilor – metoda Canny
Suprimarea valorilor non-maximale

Inainte

PI – curs 7
Detectia muchiilor – metoda Canny
Suprimarea valorilor non-maximale

Dupa

PI – curs 7
Detectia muchiilor – metoda Canny
Suprimarea valorilor non-maximale

Inainte Dupa

PI – curs 7
Detectia muchiilor – metoda Canny
Thresholding prin histerezis

- Rezultatul din NMS inca include zgomot (maxime locale fals-


pozitive)
- Contrastul (intensitatea muchiei) variaza de-a lungul conturului
- Binarizarea magnitudinii gradientului trebuie sa inlature muchiile
slabe, dar sa pastreze continuitatea de-a lungul conturului

- Algoritmul utilizeaza 2 valori de prag Tlow si Thigh


MNMS > Thigh  muchie ‘tare’
MNMS < Tlow  non-muchie
Tlow < MNMS > Thigh  muchie ‘slaba’ - validata
daca este conectata cu o muchie tare (direct sau prin intermediul
unor muchii slabe)
PI – curs 7
Detectia muchiilor – metoda Canny
Thresholding prin histerezis

PI – curs 7
Detectia muchiilor – metoda Canny
Thresholding prin histerezis

c1 si c2 sunt validate ca muchii


c3 si c4 sunt rejectate
PI – curs 7
Detectia muchiilor – metoda Canny
Rezultatul final

PI – curs 7
Detectia muchiilor – metoda Canny
Rezultatul final

PI – curs 7
Detectia muchiilor – metoda Canny
Efectul valorii sigma (dimensiunea kernelului Gaussian)

valori mici  muchii (detalii) fine


PI – curs 7
Detectia muchiilor – metoda Canny

Proprietati
 Metoda Canny este optimala in conditiile:
 Muchii treapta zgomotoase
 Zgomotul in imagini este aditiv, necorelat si Gaussian
 Filtrul de accentuare este linear
 Criteriul de optimalitate combina
 Detectie buna
 Localizare buna

 Obtinerea unui raspuns singular se realizeaza prin doua operatii


de post-procesare:
 Suprimarea valorilor non-maximale
 Thresholding prin histerezis

PI – curs 7
Facultatea Automatica si Calculatoare
Universitatea Tehnica “Gheorghe Asachi” din Iaşi,
Romania

Prelucrarea imaginilor
curs – an III CTI

prof. dr. ing. Vasile Manta


conf. dr. ing. Simona Caraiman
Prelucrarea imaginilor

Capitolul 2. Operatii morfologice

Surse bibliografice:
Gonzalez & Woods, Digital Image Processing
Dublin Institute of Technology, Image Processing – Morphology
Utah University, CS 4640: Image Processing Basics, Lecture 11

PI – curs 8
Operatii morfologice

Pot fi folosite în etapele de preprocesare şi postprocesare

- Inlaturarea imperfectiunilor in imaginea segmentata;


- Extragerea/modificarea structurii obiectelor dintr-o imagine
- Marirea sau reducerea obiectelor,
- Umplerea golurilor,
- Inchiderea incluziunilor,
- Netezirea muchiilor, etc.

PI – curs 8
Continut
 Ce este morfologia?

 Operatii morfologice simple


 dilatare, eroziune

 Operatii compuse
 deschidere, inchidere

 Algoritmi morfologici
 Extragerea contururilor, umplerea regiunilor, extragerea componentelor
conectate, subtiere/ingrosare, scheletonizare, netezire morfologica,
gradient morfologic, …

PI – curs 8
1, 0, Black, White?
Throughout all of the following slides whether 0 and 1 refer
Dublin Institute of Technology, Image Processing – Morphology

to white or black is a little interchangeable.

All of the discussion that follows assumes


segmentation has already taken place and that images are
made up of 0s for background pixels and 1s for object
pixels.

After this it doesn’t matter if 0 is black, white, yellow,


green…….

PI – curs 8
Pixel Neighborhoods
Remember the two definitions of “neighbors” that we have
Dublin Institute of Technology, Image Processing – Morphology

discussed:

4 Neighborhood 8 Neighborhood

PI – curs 8
Teoria multimilor

PI – curs 8
What is Morphology?
Morphological image processing (or morphology)
Dublin Institute of Technology, Image Processing – Morphology

describes a range of image processing techniques that deal


with the shape (or morphology) of features in an image.
Morphological operations are typically applied to
remove imperfections introduced during segmentation, and
so typically operate on bi-level images.
- can also operate on grayscale images!

PI – curs 8
Quick Example
Images taken from Gonzalez & Woods, Digital Image Processing (2002)

Image after segmentation Image after segmentation and


morphological processing

PI – curs 8
Structuring Element (SE)
Definition: A structuring element is simply a binary image
Dublin Institute of Technology, Image Processing – Morphology

(or mask) that allows us to define arbitrary neighborhood


structures.

Example:
This is the structuring element for the 4-neighborhood.

PI – curs 8
Structuring Elements
Structuring elements can be any size and make any
Dublin Institute of Technology, Image Processing – Morphology

shape.
However, for simplicity we will use rectangular
structuring elements with their origin at the middle
pixel (left: 8-neighborhood; center: 4-neighborhood)

0 0 1 0 0
1 1 1 0 1 0 0 1 1 1 0
1 1 1 1 1 1 1 1 1 1 1
1 1 1 0 1 0 0 1 1 1 0

PI – curs 8
0 0 1 0 0
Structuring Elements, Hits & Fits
Dublin Institute of Technology, Image Processing – Morphology

B Structuring Element

Fit: All on pixels in the


structuring element cover on
pixels in the image.
A
Hit: Any on pixel in the
C structuring element covers an
on pixel in the image.

All morphological processing operations are based


on these simple ideas. PI – curs 8
Fitting & Hitting
Dublin Institute of Technology, Image Processing – Morphology

0 0 0 0 0 0 0 0 0 0 0 0
1 1 1
0 0 0 1 1 0 0 0 0 0 0 0
1 1 1
0 0 1 B
1 1 1 1 0 C
0 0 0 0
1 1 1
0 1 1 1 1 1 1 1 0 0 0 0 Structuring
0 1 1 1 1 1 1 1 0 0 0 0 Element 1

0 0 1 1 1 1 1 1 0 0 0 0 0 1 0
0 0 1 1 1 1 1 1 1 0 0 0 1 1 1
0 0 1 1 1 1 1 A
1 1 1 1 0 0 1 0
0 0 0 0 0 1 1 1 1 1 1 0 Structuring
Element 2
0 0 0 0 0 0 0 0 0 0 0 0
PI – curs 8
Fundamental Operations
Fundamentally morphological image processing is very
Dublin Institute of Technology, Image Processing – Morphology

like spatial filtering.


The structuring element is moved across every pixel in
the original image to give a pixel in a new processed
image.
The value of this new pixel depends on the operation
performed.
There are two basic morphological operations:
- erosion and
- dilation.

PI – curs 8
Erosion
Erosion of image f by structuring element s is given by
Dublin Institute of Technology, Image Processing – Morphology

f  s.
The structuring element s is positioned with its origin at (x,
y) and the new pixel value is determined using the rule:

1 if s fits f
g ( x, y ) = 
0 otherwise

PI – curs 8
Erosion Example
Original Image Processed Image With Eroded Pixels

Structuring Element
PI – curs 8
Erosion Example
Original Image Processed Image
Dublin Institute of Technology, Image Processing – Morphology

Structuring Element
PI – curs 8
Erosion Example 1
Dublin Institute of Technology, Image Processing – Morphology

Original image Erosion by 3*3 Erosion by 5*5


square structuring square structuring
element element

Watch out: In these examples a 1 refers to a black pixel!


PI – curs 8
Erosion Example 2
Images taken from Gonzalez & Woods, Digital Image Processing (2002)

After erosion
Original
with a disc of
image
radius 10

After erosion After erosion


with a disc of with a disc of
radius 5 radius 20

PI – curs 8
What is Erosion for?
 Erosion can split apart joined objects
Dublin Institute of Technology, Image Processing – Morphology

 Erosion can strip away extrusions

Watch out: Erosion shrinks objects.


PI – curs 8
Blob separation by erosion

PI – curs 8
Blob separation by erosion

PI – curs 8
Dilation
Dilation of image f by structuring element s is given by
Dublin Institute of Technology, Image Processing – Morphology

f ⊕ s.
The structuring element s is positioned with its origin at (x,
y) and the new pixel value is determined using the rule:

1 if s hits f
g ( x, y ) = 
0 otherwise

PI – curs 8
Dilation Example
Original Image Processed Image

Structuring Element
PI – curs 8
Dilation Example
Original Image Processed Image With Dilated Pixels
Dublin Institute of Technology, Image Processing – Morphology

Structuring Element
PI – curs 8
Dilation Example 1
Dublin Institute of Technology, Image Processing – Morphology

Original image Dilation by 3*3 Dilation by 5*5


square structuring square structuring
element element

PI – curs 8
Watch out: In these examples a 1 refers to a black pixel!
Dilation Example 2
Original image After dilation
Images taken from Gonzalez & Woods, Digital Image Processing (2002)

PI – curs 8
Structuring element
What is Dilation for?
Dilation can repair breaks
Dublin Institute of Technology, Image Processing – Morphology

Dilation can repair intrusions

Watch out: Dilation enlarges objects.

PI – curs 8
Relatia dintre dilatare si eroziune
Dualitate:
- dilatarea este eroziunea background-ului
- eroziunea este dilatarea background-ului

Eroziunea nu este inversa dilatarii!

PI – curs 8
Binar vs. grayscale
Imagini binare

dilatare

PI – curs 8
Binar vs. grayscale
Imagini grayscale

dilatare

PI – curs 8
Compound Operations
More interesting morphological operations can be
Dublin Institute of Technology, Image Processing – Morphology

performed by performing combinations of erosions and


dilations.

The most widely used of these compound operations are:


 Opening;
 Closing.

PI – curs 8
Opening
The opening of image f by structuring element s, denoted f
○ s is simply an erosion followed by a dilation:
Images taken from Gonzalez & Woods, Digital Image Processing (2002)

f ○ s = (f s) ⊕ s

Original shape After erosion After dilation


(opening)

Note a disc shaped structuring element is used.

PI – curs 8
Images taken from Gonzalez & Woods, Digital Image Processing (2002)

After
Opening
Image
Image
Original
Opening Example

PI – curs 8
Opening Example
Original Image Processed Image

Structuring Element
PI – curs 8
Opening Example
Original Image Processed Image
Dublin Institute of Technology, Image Processing – Morphology

Structuring Element
PI – curs 8
Opening
Conclusions:
Dublin Institute of Technology, Image Processing – Morphology

• Opening operation is an erosion followed by a dilation.

• Stray foreground structures that are smaller than the


structuring element will disappear.

• Larger structures will remain.

PI – curs 8
Closing
The closing of image f by structuring element s, denoted f •
s is simply a dilation followed by an erosion
Images taken from Gonzalez & Woods, Digital Image Processing (2002)

f • s = (f ⊕ s)s

Original shape After dilation After erosion


(closing)

Note a disc shaped structuring element is used.

PI – curs 8
Images taken from Gonzalez & Woods, Digital Image Processing (2002)

After
Closing
Image
Image
Original
Closing Example

PI – curs 8
Closing Example
Original Image Processed Image

Structuring Element
PI – curs 8
Closing Example
Original Image Processed Image
Dublin Institute of Technology, Image Processing – Morphology

Structuring Element
PI – curs 8
Closing
Conclusions:
Dublin Institute of Technology, Image Processing – Morphology

 Closing operation is a dilation followed by an erosion.

 Holes in the foreground that are smaller than the


structuring element will be filled.

PI – curs 8
Closing

PI – curs 8
Dublin Institute of Technology, Image Processing – Morphology

PI – curs 8
Opening and Closing Example
Dublin Institute of Technology, Image Processing – Morphology

PI – curs 8
Opening and Closing Example
Dublin Institute of Technology, Image Processing – Morphology

PI – curs 8
Opening and Closing Example
Images taken from Gonzalez & Woods, Digital Image Processing (2002)

PI – curs 8
Morphological Processing Example
Morphological Algorithms
Using the simple technique we have looked at so far we can
Dublin Institute of Technology, Image Processing – Morphology

begin to consider some more interesting morphological


algorithms.
We will look at:
 Boundary extraction;
 Region filling.
There are lots of others as well though:
 Extraction of connected components,
 Thinning/thickening,
 Skeletonisation,
 Morphological smoothing,
 Morphological gradient, …
PI – curs 8
Boundary Extraction
Extracting the boundary (or outline) of an object is often
extremely useful.
Images taken from Gonzalez & Woods, Digital Image Processing (2002)

1. The boundary can be given simply as


β(A) = A – (AB)

PI – curs 8
Boundary Extraction Example
A simple image and the result of performing boundary
extraction using a square 3*3 structuring element:
Images taken from Gonzalez & Woods, Digital Image Processing (2002)

Original Image PI – cursExtracted


8 Boundary
Boundary Extraction (Outline)
2. Other methods for boundary extraction
Dublin Institute of Technology, Image Processing – Morphology

The boundary extraction (outline) can be obtained by:


 a dilation followed by a subtraction:

Obs. The boundary is located in the exterior side of the edges!

 a XOR operation between the erosion of image and the original image

Obs. The boundary is located on the edges, so it is better the previous method!
In the following example the XOR operation is implemented by the intersection
between the original image and the complement of the result after the erosion.
PI – curs 8
Dublin Institute of Technology, Image Processing – Morphology

PI – curs 8
Boundary Extraction - Example
Dublin Institute of Technology, Image Processing – Morphology

PI – curs 8
Boundary Extraction - Example
Region Filling
Given a pixel inside a boundary, region filling attempts to
fill that boundary with object pixels (1s)
Images taken from Gonzalez & Woods, Digital Image Processing (2002)

Given a point inside


here, can we fill the
whole circle?

PI – curs 8
Region Filling (cont…)
The key equation for region filling is
Images taken from Gonzalez & Woods, Digital Image Processing (2002)

X k= ( X k −1 ⊕ B) ∩ A c
k= 1,2,3.....
where X0 is simply the starting point inside the boundary, B
is a simple structuring element and Ac is the complement of
A.
- This equation is applied repeatedly until Xk is equal to Xk-1.
- Finally the result is unioned with the original boundary

=I X kfinal ∪ A
PI – curs 8
Images taken from Gonzalez & Woods, Digital Image Processing (2002)

PI – curs 8
Region Filling Step By Step
Exercises
Which is the result of:
Dublin Institute of Technology, Image Processing – Morphology

 𝑋𝑋0 ⊕B,
 𝑋𝑋1 ⊕B,
 𝑋𝑋2 ⊕B
 𝑋𝑋3 ⊕B,
 𝑋𝑋4 ⊕B,
 𝑋𝑋5 ⊕B,
 𝑋𝑋6 ⊕B,
 𝑋𝑋7 ⊕B?

PI – curs 8
Region Filling - Example
Images taken from Gonzalez & Woods, Digital Image Processing (2002)

Original Image One Region All Regions


Filled Filled

PI – curs 8
Dublin Institute of Technology, Image Processing – Morphology

Skeletonisation

PI – curs 8
Dublin Institute of Technology, Image Processing – Morphology

Morphological smoothing

PI – curs 8
Dublin Institute of Technology, Image Processing – Morphology

Morphological gradient
The morphological gradient is the difference between the dilation and
the erosion of a given image. It is an image where each pixel value (typically
non-negative) indicates the contrast intensity in the close neighborhood of that
pixel. It is useful for edge detection and segmentation applications.
Let a structuring element. Then, the morphological gradient of is given
by:

Similarly, it can be defined, an internal gradient given by:


and an external gradient given by:
The internal and external gradients are "thinner" than the gradient, but the
gradient peaks are located on the edges, whereas the internal and external
ones are located at each side of the edges. Notice that:

PI – curs 8
Dublin Institute of Technology, Image Processing – Morphology

Morphological gradient

PI – curs 8
Morphological gradient

PI – curs 8
Summary
The purpose of morphological processing is primarily to
Dublin Institute of Technology, Image Processing – Morphology

remove imperfections added during segmentation.


The basic operations are erosion and dilation.
Using the basic operations we can perform opening and closing.
More advanced morphological operation can then be
implemented using combinations of all of these.

PI – curs 8
Facultatea Automatica si Calculatoare
Universitatea Tehnica “Gheorghe Asachi” din Iaşi,
Romania

Prelucrarea imaginilor
curs – an III CTI

prof. dr. ing. Vasile Manta


conf. dr. ing. Simona Caraiman

PI – curs 9
Prelucrarea imaginilor

Capitolul 3. Segmentare

Thresholding

PI – curs 9
Segmentarea imaginilor
Partitionarea imaginilor intr-o colectie de seturi de pixeli
 Regiuni semnificative (obiecte coerente)
 Structuri liniare (linii, curbe, …)
 Forme (cercuri, elipse, …)

PI – curs 9
Segmentarea imaginilor
Una din cele mai vechi si mai studiate probleme din
Computer Vision
- Tehnici timpurii: region splitting and merging
- Tehnici recente: minimizarea energiei

PI – curs 9
Segmentarea imaginilor

PI – curs 9
Segmentarea imaginilor
Partitionarea imaginii in regiuni disjuncte, numite segmente

Segmentele de pixeli conectati se creeaza pe baza de


similaritate sau discontinuitate
intensitate, culoare, textura, histograma, trasaturi,…
PI – curs 9
Segmentarea imaginilor

PI – curs 9
Segmentarea cu prag (thresholding)
Prag global (T)

PI – curs 9
Segmentarea cu prag (thresholding)
Prag global (T)
Alegerea pragului
 Analiza histogramei nivelurilor de gri

Obiecte deschise
la culoare

Obiecte inchise
la culoare

PI – curs 9
Segmentarea cu prag (thresholding)
Prag global (T)
Alegerea pragului - exemple

PI – curs 9
Segmentarea cu prag (thresholding)
Prag global (T)
Alegerea pragului - exemple
Segmentarea cu prag (thresholding)
Prag global (T)
Alegerea pragului - dificultati

 Histograme multi-modale
 Detaliile din imagine pot influenta numarul de minime
 Zgomot
 Valea dintre maxime poate fi foarte larga, facand dificila
localizarea unui minim semnificativ
 Nu exista o vale vizibila

PI – curs 9
Segmentarea cu prag (thresholding)
Prag global (T)
Alegerea pragului - dificultati

Threshold prea mic Threshold prea mare

PI – curs 9
Segmentarea cu prag (thresholding)
Prag global (T)
Alegerea pragului – metoda iterativa

PI – curs 9
Segmentarea cu prag (thresholding)
Prag global (T)
Alegerea pragului

PI – curs 9
Segmentarea cu prag (thresholding)
Prag global (T)
Alegerea pragului – metoda Otsu

Ideea de baza:
Maximizarea variantei dintre clase (between/inter-class
variance). Echivalent, se minimizeaza varianta intra-clasa
(within-class variance)

PI – curs 9
Segmentarea cu prag (thresholding)
Prag global (T)
Alegerea pragului – metoda Otsu
Varianta – masura a omogenitatii unui grup (clase) de elemente
 Omogenitate mare  varianta mica
 Omogenitate mica  varianta mare

PI – curs 9
Segmentarea cu prag (thresholding)
Prag global (T)
Alegerea pragului – metoda Otsu
Fie 2 clase: C1: si C2:
Varianta intre clase:

Probabilitatea ca un pixel sa apartina clasei C1

Probabilitatea ca un pixel sa apartina clasei C2

Histograma normalizata (3)

PI – curs 9
Segmentarea cu prag (thresholding)
Prag global (T)
Alegerea pragului – metoda Otsu

Intensitatea medie a clasei C1

Intensitatea medie a clasei C2

PI – curs 9
Segmentarea cu prag (thresholding)
Prag global (T)
Alegerea pragului – metoda Otsu

Media pe primele k nivele

Media globala

PI – curs 9
Segmentarea cu prag (thresholding)
Prag global (T)
Alegerea pragului – metoda Otsu

(16)

Se evalueaza aceasta relatie pt toate valorile lui k si se retine


valoarea lui k corespunzatoare maximului
PI – curs 9
Segmentarea cu prag (thresholding)
Prag global (T)
Alegerea pragului – metoda Otsu

PI – curs 9
Segmentarea cu prag (thresholding)
Prag global (T)
Alegerea pragului – metoda Otsu

PI – curs 9
Segmentarea cu prag (thresholding)
Prag global (T)
Alegerea pragului – metoda Otsu

PI – curs 9
Segmentarea cu prag (thresholding)
Prag global (T)
Alegerea pragului – metoda Otsu

PI – curs 9
Segmentarea cu prag (thresholding)
Prag global (T)
Alegerea pragului – metoda adaptiva
 Se parcurge imaginea cu o fereastra
 In fiecare pozitie, se decide daca se aplica
binarizarea:

 Zonele neuniforme: se aplica Otsu


 pe baza histogramei locale

 Zonele uniforme: se clasifica integral ca


BG sau FG
 in functie de media intensitatilor
PI – curs 9
Segmentarea cu prag (thresholding)
Prag global (T)
Alegerea pragului – metoda adaptiva

Zonele neuniforme Valorile pragurilor Rezultatul metodei


locale adaptive
PI curs 9

Cap. Segmentarea imaginilor

1. Noţiuni fundamentale

Segmentarea constă în subdivizarea unei imagini în regiuni constituente sau în


obiectele care o compun. Nivelul de detaliu în care este făcută divizarea depinde de problema
de rezolvat. Aceasta înseamnă că segmentarea se opreşte când au fost detectate obiectele sau
regiunile de interes. De exemplu, dacă pe o linie de asamblare a circuitelor electronice pe o
placă urmărim doar anomalii şi nu neapărat defectul, segmentarea poate înceta când s-au
identificat piese lipsă sau trasee întrerupte.
Segmentarea imaginilor este una din cele mai importante etape în procesul de
procesare a imaginilor. Acurateţea segmentării determină succesul sau insuccesul
procedurilor de analiză computerizată.
În general, algoritmii utilizaţi în segmentare se bazează pe două caracteristici ale
intensităţii pixelilor:
- discontinuitate;
- similaritate.
Algoritmii din prima categorie realizează partiţionarea imaginii folosind variaţiile
bruşte ale intensităţii pixelilor, ca de exemplu segmentarea prin detecţia muchiilor (edge
based segmentation) (vezi Lecture9 de la Dublin Institute of Technology).
Algoritmii din cea de-a doua categorie partiţionează imaginea în regiuni care sunt
asemănătoare, pe baza unor criterii prestabilite. Dintre metodele din această categorie putem
aminti:
- segmentarea prin delimitare cu prag (thresholding);
- dezvoltarea (extinderea) regiunilor (region growing);
- segmentarea prin divizare şi unificare (region splitting and merging).

Considerăm că întreaga imagine este reprezentată prin regiunea R . Procesul de


segmentare poate fi văzut ca partiţionarea lui R în n subregiuni R1 , R2 , , Rn , astfel încât
n
a) R =  Ri ;
i =1
b) Ri , i = 1, n este o regiune conectată, în sensul că punctele (pixelii) regiunii sunt
conectate între ele;
c) Ri  R j = Φ , ∀i ≠ j ;
d) P( Ri ) = TRUE pentru ∀i =1, n ;
( )
e) P Ri  R j = FALSE pentru orice regiuni adiacente Ri si R j .

Obs. Două regiuni Ri si R j sunt adiacente dacă reuniunea lor este o regiune conectată. În
relaţiile anterioare P ( Ri ) reprezintă un criteriu de similaritate. De exemplu, relaţia
P( Ri ) = TRUE pentru ∀i =1, n înseamnă că toţi pixelii din regiunea Ri satisfac acelaşi
criteriu (de exemplu, au acelaşi nivel de gri).

1
PI curs 9

2. Segmentarea prin delimitare cu prag (thresholding)

Segmentarea cu prag este utilă atunci când caracteristicile de intensitate sunt


suficiente pentru a individualiza un obiect dintr-o imagine. Valorile caracteristicilor de
intensitate se aleg astfel încât un interval de intensităţi să fie caracteristic pentru un singur
obiect al imaginii.
Metodele de segmentare cu prag se folosesc în cazul imaginilor binare (documente
tipărite, desene, grafice, etc.), în cazul imaginilor cu nivele de gri, imagini color, imagini
multispectrale.
Metodele cu prag pot fi :
- globale (un singur prag pentru toată imaginea);
- locale (pragul variază în cadrul unei imagini).

Metode cu prag global


În cazul unor imagini cu nivele de gri, alegerea unui prag înseamnă impunerea unui
nivel de gri care separă obiectele de fundal. În cazul unui singur prag T avem:

1 dacă f ( x, y) > T
g( x, y) =  (1)
0 dacă f ( x, y) ≤ T

unde 1 – semnifică obiecte; 0 – semnifică fundalul sau invers.

Un algoritm iterativ de segmentare cu prag global poate fi următorul:


1. se selectează o valoare estimată a lui T (obişnuit se alege intensitatea medie a
nivelelor de gri);
2. se partiţionează imaginea în două regiuni: un grup G1 de pixeli pentru care
f ( x, y) > T şi un grup G2 de pixeli pentru care f ( x, y) ≤ T ;
3. se calculează valorile medii ale intensităţii pixelilor din cele două regiuni m1 şi
m2
4. se calculează noul prag:
m + m2
T= 1
2
5. se repetă paşii 2-4 până ce T nu se mai schimbă (sau diferenţele dintre valorile
succesive ale lui T sunt mai mici decât o valoare predefinită ∆T ).

Obs. Vezi Lecture10 (thresholding) Dublin Institute of Technology.

Se pot utiliza şi:


- praguri de bandă

1 pentru f ( x, y) ∈ D
g( x, y) = 
0 in rest
cu D o submulţime a imaginii originale

- praguri multiple

2
PI curs 9

r1 pentru f ( x, y) ∈ D1

r2 pentru f ( x, y) ∈ D2

g( x, y) = 
r pentru f ( x, y) ∈ Dn
n
0 in rest

- semipraguri - se elimină pixelii din imagine cu un nivel de gri situat sub un


anumit prag, punând 0 (negru) în locul acestora. Pixelii ce depăşesc nivelul stabilit
rămân neschimbaţi (“mascare” a fundalului):

 f ( x , y) pentru f ( x, y) ≥ T
g( x, y) = 
0 pentru f ( x, y) < T

Alegerea pragului sau pragurilor se poate face prin:


a) examinarea histogramei imaginii pentru localizarea vârfurilor (maximelor) şi
adânciturilor sau văilor (minimelor) acesteia;
b) delimitarea adaptivă a pragului.

a) Examinarea histogramei

Considerăm o histogramă a unei imagini în nuanţe de gri. Imaginea conţine obiecte


luminoase pe un fond întunecat (fig. 1a). Se consideră că obiectele şi fundalul au, fiecare, mai
multe nivele de gri.

Fig 1. a) un singur tip de obiecte luminoase pe un fond întunecat; b) două tipuri de


obiecte luminoase

Pentru a separa obiectele de fundal se selectează pragul la valoarea T . În fig. 1b se


consideră cazul a două tipuri de obiecte luminoase pe un fond întunecat. În acest caz avem
două praguri. Pentru:
- f ( x, y ) ≤ T1 avem fundalul,
- T1 < f ( x, y ) ≤ T2 un tip de obiecte,
- T2 < f ( x, y ) al doilea tip obiecte.

Observaţie. În concluzie, pragurile corespund punctelor de minim din histogramă.

3
PI curs 9

b) Determinarea pragului optim prin metoda Otsu

Determinarea pragului optim poate fi văzută ca o problemă de teorie statistică-


decizională, al cărei obiectiv este de a minimiza eroarea medie care apare în asignarea
pixelilor la două sau mai multe grupuri (clase). Soluţia problemei se bazează pe funcţia
densitate de probabilitate a nivelelor de gri (a intensităţilor), funcţie a cărei estimare nu este
trivială. Deşi se presupune că este gaussiană, soluţiile obţinute nu sunt potrivite în aplicaţiile
practice.
Metoda Otsu constituie o alternativă atractivă în determinarea pragului optim. Ea se
bazează pe maximizarea varianţei dintre clase (between class variance) numită şi varianţă
între-clase (inter-class variance). Varianţa pentru elementele din interiorul aceleiaşi clase se
numeşte varianţă intra-clasă.
Reamintim că media şi varianţa (pătratul deviaţiei standard) unei mărimi continue x
se defineşte astfel:

µ = ∫ x p( x )dx , ∫D ( x − µ )
2
σ2
= p( x ) dx (1)
D

Pentru cazul discret:

n n
µ = ∑ xi pi , ∑ ( xi − µ )
2
σ2
= pi (2)
i =1 i =1

Varianţa reprezintă o măsură a omogenităţii unui grup (clase) de elemente (în cazul nostru
pixeli). Un grup cu omogenitate mare are varianţa mică şi un grup cu omogenitate mică are
varianţa mare. În cazul unei segmentări bune, varianţa fiecărei clase de pixeli este mică, în
timp ce varianţa dintre clase este mare. Metoda Otsu maximizează varianţa dintre clase ( σ B2 )
şi se bazează pe calcule făcute asupra histogramei unei imagini.
Pentru simplitate, considerăm că imaginea conţine doar două regiuni principale de
nuanţe de gri (doar două clase). Notăm:
N - numărul total de pixeli din imagine;
L - numărul de nivele de gri.
Probabilitatea ca un pixel să aibă nivelul de intensitate i (histograma normalizată) este:

L −1
ni
pi =
N
, şi ∑ pi = 1 (3)
i =0

Presupunem că selectăm un prag T (k ) = k , unde 0 < k < L − 1 , obţinând astfel două clase: C1
şi C2 . Pixelii din clasa C1 au intensitățile cuprinse în intervalul [0, k ] și cei din clasa C2 au
intensități cuprinse în intervalul [ k + 1, L − 1] .
Probabilităţile de asignare a pixelilor claselor respective sunt:

k
P1 (k ) = ∑ pi (4)
i =0
L −1 (3)
P2 (k )= ∑ pi = 1 − P1 (k ) (5)
i = k +1

4
PI curs 9

Intensitatea medie a pixelilor din C1 este:

k
m1 (k ) = ∑ iP(i / C1 ) (6)
i =0

unde P (i / C1 ) reprezintă probabilitatea nivelului i , condiționată de apartenența pixelului


respectiv la clasa C1 .
Pentru probabilitatea condiţionată aplicăm formula lui Bayes:

P( B / A) P ( A)
P( A / B) = (7)
P( B)

k
P(C1 / i) P(i) 1 k
⇒ ∑ P(C )
= =m1 (k )
i
P ( k )
∑ i pi (8)
=i 0 =i 0 1 1

deoarece P(C1 / i) = 1 (nivelul i aparține clasei C1 ), P(i) = pi iar P(C1 ) = P1 (k )


Pentru intensitatea medie a pixelilor din clasa C2 obținem:

1 L −1
m2 (k ) = ∑ i pi
P2 (k ) i= k +1
(9)

Intensitatea medie pe primele k nivele este:

k
m(k ) = ∑ i pi (10)
i =0

Iar intensitatea medie a întregii imagini (media globală) este:

L −1
mG = ∑ i pi (11)
i =0

Din relaţiile de mai sus rezultă imediat că:

P1 + P2 =
1 (12)
şi
=
mG P1 m1 + P2 m2 (13)

În relaţiile anterioare am omis dependența de k pentru a avea o claritate mai mare a


notaţiilor.

Observație. Se putea scrie direct relația (13), media totală fiind suma ponderată a mediilor
parţiale.

5
PI curs 9

Varianţa dintre clase ( σ B2 - between class variance) se definește astfel:

σ B2 = P1 ( m1 − mG ) + P2 ( m2 − mG )
2 2
(14)

Înlocuind mG și utilizând și relaţia 12 se obţine:

σ B2 = P1 ( m1 − P1m1 − P2 m2 ) + P2 ( m2 − P1m1 − P2 m2 ) =
2 2

= P1  m1 (1 − P1 ) − P2 m2  + P2  m2 (1 − P2 ) − P1m=
2 2
1

= P1 ( m1P2 − P2 m2 ) + P2 ( m2 P1 − P1m1 )= P1P2 2 ( m1 − m2 ) + P2 P12 ( m1 − m2 )=
2 2 2 2

= P1P2 ( m1 − m2 ) ( P1 + P=
2) P1P2 ( m1 − m2 )
2 2

Deci
σ B2 P1P2 ( m1 − m2 )
2
= (15)

În această relație exprimăm m1 și m2 în funcție de mG și m ( m1 = m P1 și apoi scoatem


m2 din (13)). Se obţine:

σ B2 =
( mG P1 − m )
2
(16)
P1 (1 − P1 )

unde parametrii sunt P1 și m (depind de k ).


Pragul optim, T , este acea valoare a lui k pentru care:

σ B2 (T ) = max σ B2 (k )
0 ≤ k ≤ L −1
( ) (17)

Obs. Se evaluează relaţia (17) pentru toate valorile lui k și se reține valoarea lui k
corespunzătoare maximului.
O măsură a calității alegerii pragului T = k poate fi raportul dintre varianţa între-clase
şi varianţa totală (gradul de separabilitate între clase):

σ B2
η= (18)
σ G2
cu
L −1
∑ ( i − mG )
2
σ G2
= pi (19)
i =0

Se vede că 0 ≤ η ≤ 1 .

6
PI curs 9

Algoritmul Otsu poate fi rezumat astfel:


1. Se calculează histograma normalizată a imaginii. Componentele sunt pi ,
= i 0,1, 2, , L − 1 ;
2. Se calculează sumele cumulative P1 (k ) ,=
pentru k 0,1, 2, , L − 1 ;
3. Se calculează mediile cumulative m(k ) ,= pentru k 0,1, 2, , L − 1 ;
4. Se calculează intensitatea medie globală mG ;
5. Se calculează varianța între-clase σ B2 (k ) , =
pentru k 0,1, 2, , L − 1 , folosind relația
(16);
6. Se obține pragul T = k pentru care σ B2 (k ) este maxim;
7. Se evaluează calitatea pragului calculând η din (18).

Exemplu:

Fig. 2

Metoda Otsu poate fi aplicată şi pentru praguri multiple (uzual se aplică pentru două
praguri). De exemplu, în cazul a două praguri varianţa între-clase se defineşte (vezi
University of Milano - Lecture 16):

σ B2 = P1 ( m1 − mG ) + P2 ( m2 − mG ) + P3 ( m3 − mG )
2 2 2
(20)

7
PI curs 9

Pragurile optime T1 și T2 pot fi calculate din:

σ B2 (T1 , T2 ) = max
0 < k1 < k2 < L −1
(σ 2
B ( k1 , k2 ) ) (21)

Gradul de separabilitate poate fi măsurat ca:

σ B2 (T1 , T2 )
η (T1 , T2 ) = (22)
σ G2

Exemplu:

Fig 3 a) imaginea originală; b) histograma; c) imaginea segmentată în 3 regiuni

Exercitiu: Sa se exemplifice cum mastile din Lecture9 (Dublin Institute of Technology)


pentru extragerea unei linii de grosimea unui pixeli sunt mai bune decât Previt sau Sobel.
Masti pentru extragerea liniilor de un pixel grosime:

8
Facultatea Automatica si Calculatoare
Universitatea Tehnica “Gheorghe Asachi” din Iaşi,
Romania

Prelucrarea imaginilor
curs – an III CTI

prof. dr. ing. Vasile Manta


conf. dr. ing. Simona Caraiman
Prelucrarea imaginilor

Capitolul 3. Segmentare

Region Growing

PI – curs 10
Segmentarea imaginilor

PI – curs 10
Segmentare pe baza de regiuni
Regiune
Un grup de pixeli conectati cu
proprietati similare

Contururi inchise

Calculul regiunilor – pe baza de


similaritate

Regiunile corespund obiectelor sau


unor parti din obiecte

Proximitate spatiala + similaritate

PI – curs 10
Region growing
Formarea unei regiuni:

 Se porneste de la un pixel samanta (x, y, I(x, y)) - seed

 Se adauga recursiv pixelii adiacenti care satisfac un criteriu de


similaritate cu pixelii continuti deja in regiune

PI – curs 10
Region growing
Adiacenta:
 vecinatate 4 sau 8 conectata

Criterii de similaritate:
 Diferenta de intensitate (in valoare absoluta) intre pixelii
candidati si samanta
 Diferenta de intensitate intre pixelul candidat si intensitatea
medie a regiunii
 Diferenta maxima de intensitate in regiune
 Diferenta intre deviatia standard a intensitatii intr-o vecinatate
a pixelului candidat si cea din vecinatatea pixelului samanta

PI – curs 10
Region growing
1. Alegerea pixelului samanta
2. Adaugarea in regiune a pixelilor vecini daca respecta criteriul
de similaritate
3. Se repeta pasul 2 pentru fiecare pixel adaugat; Terminare
cand nu mai poat fi adaugat niciun pixel

|vecin – seed| <= Threshold = 3


Region growing - exemple
Segmentare muschi/os in scanari CT

PI – curs 10
Region growing - exemple
Segmentare muschi/os in scanari CT

PI – curs 10
Region growing - exemple
Segmentare muschi/os in scanari CT

PI – curs 10
Region growing - exemple
Segmentare muschi/os in scanari CT

PI – curs 10
Region growing - implementare

PI – curs 10
Region growing - exemple
Metoda este sensibila la parametri:

d = 40 d = 41

PI – curs 10
Region growing - exemple
Metoda este sensibila la parametri:

Imagine 64x64 86 regiuni 4-conectate

PI – curs 10
Region growing - exemple
Metoda este sensibila la parametri:

Imagine 64x64 10 regiuni 8-conectate

PI – curs 10
Region growing - exemple
Metoda este sensibila la parametri:

regiuni 4-conectate regiuni 8-conectate

PI – curs 10
Region growing - limitari
Segmentarea trebuie sa satisfaca o serie de criterii:
1. Fiecare pixel trebuie sa fie asignat unei regiuni

2. Fiecare pixel trebuie sa apartina unei singure regiuni

3. Fiecare regiune trebuie sa fie un set de pixeli conectati

4. Fiecare regiune trebuie sa fie uniforma

5. Orice pereche de doua regiuni adiacente formeaza o


regiune neuniforma
PI – curs 10
Region growing - limitari
Segmentarea trebuie sa satisfaca o serie de criterii:
1. Fiecare pixel trebuie sa fie asignat unei regiuni
Numarul de pixeli seed poate fi insuficient pentru
a crea regiuni pentru fiecare pixel
2. Fiecare pixel trebuie sa apartina unei singure regiuni

3. Fiecare regiune trebuie sa fie un set de pixeli conectati

4. Fiecare regiune trebuie sa fie


Regiunile uniforma
crescute din seminte vecine vor fi
considerate distincte, chiar daca sunt definiti
intr-o zona potential uniforma in imagine
5. Orice pereche de doua regiuni adiacente formeaza o
regiune neuniforma
PI – curs 10
Segmentarea imaginilor

PI – curs 10
Segmentare prin divizare si unificare
Region splitting and merging
Splitting
1. Se porneste cu o regiune care initial este constituita din
toata imaginea
2. Regiunea este subdivizata recursiv cat timp nu este
satisfacuta o conditie de omogenitate

Merging
1. Unirea regiunilor adiacente uniforme pentru a evita
suprasegmentarea

PI – curs 10
Segmentare prin divizare si unificare
Region splitting and merging
Quadtree pentru splitting

Relatia de adiacenta intre


regiunile ce formeaza zona
neagra cea mai mare

PI – curs 10
Segmentare prin divizare si unificare
Region splitting and merging

PI – curs 10
Segmentare prin clusterizare
Clusterizare:
Organizarea unui set de date in clase astfel incat sa se obtina
- Similaritate mare in interiorul clasei
- Varianta mare intre clase
Gruparea instantelor similare

PI – curs 10
Segmentare prin clusterizare
Clusterizare:
Organizarea unui set de date in clase astfel incat sa se obtina
- Similaritate mare in interiorul clasei
- Varianta mare intre clase
Gruparea instantelor similare

PI – curs 10
Segmentare prin clusterizare
Similaritate:
- Distanta Euclidiana (patratica) mica

Rezultatele clusterizarii depind de masura de similaritate utilizata

PI – curs 10
Segmentare prin clusterizare
Similaritate:
- Distanta Euclidiana (patratica) mica

Rezultatele clusterizarii depind de masura de similaritate utilizata

PI – curs 10
Segmentare prin clusterizare
Similaritate:
- Distanta Euclidiana (patratica) mica

Rezultatele clusterizarii depind de masura de similaritate utilizata

PI – curs 10
Segmentare prin clusterizare
Segmentare
Impartirea imaginii in regiuni perceptual similare

PI – curs 10
Segmentare prin clusterizare – K-Means
Algorim iterativ de clusterizare
Initializare:
- Se aleg in mod aleator K centroizi

Iterativ:
- Se asigneaza punctele unui cluster conform celei mai mici
distante fata de un centroid
- Se actualizeaza centroizii – media punctelor din cluster

Terminare:
- Cand clusterele nu se mai modifica
PI – curs 10
Segmentare prin clusterizare – K-Means

PI – curs 10
Segmentare prin clusterizare – K-Means

PI – curs 10
Segmentare prin clusterizare – K-Means

PI – curs 10
Segmentare prin clusterizare – K-Means

PI – curs 10
Segmentare prin clusterizare – K-Means

PI – curs 10
Segmentare prin clusterizare – K-Means

PI – curs 10
Segmentare prin clusterizare – K-Means

PI – curs 10
Segmentare prin clusterizare – K-Means

K=5

PI – curs 10
Facultatea Automatica si Calculatoare
Universitatea Tehnica “Gheorghe Asachi” din Iaşi,
Romania

Prelucrarea imaginilor
curs – an III CTI

prof. dr. ing. Vasile Manta


conf. dr. ing. Simona Caraiman

PI – curs 11
Prelucrarea imaginilor

Capitolul 3. Segmentare

Watershed

PI – curs 11
Segmentare Watershed
Metoda bazinelor hidrografice
Bazata pe vizualizarea imaginilor in 3D

25

20

15

10

0
100
100
80
50 60
40
20
0 0

 Nivelurile de gri din imagine reprezinta inaltimea/altitudinea terenului ce


descrie munti si vai/bazine

PI – curs 11
Segmentare Watershed
Metoda bazinelor hidrografice

Adesea nu se aplica imaginii de segmentat,


ci imaginii gradientului acesteia

0
100
80 100
60 80
40 60
40
20 20
0 0

PI – curs 11
Segmentare Watershed
Notiuni preliminare
 Minim regional
 platou de pixeli conectati de unde nu se poate atinge un punct de
altitudine mai joasa decat prin ‘catarare’

 3 tipuri de puncte
 Puncte ce apartin unui minim regional
 Bazin hidrografic (watershed) al unui minim regional
 Puncte din care o picatura de apa sigur s-ar scurge catre un singur punct de
minim
 Linii de divizare (linii watershed)
 Puncte din care o picatura de apa s-ar scurge cu probabilitati egale catre mai
multe minime
 Cumpana apelor / crestele suprafetei topografice
PI – curs 11
Segmentare Watershed

Scopul este de a determina liniile de divizare

PI – curs 11
Segmentare Watershed
Pasii metodei

1. Se inunda topografia cu apa, pornind din punctele cu cea


mai joasa altitudine
2. Pe masura ce nivelul apei se ridica, unul sau mai multe
bazine adiacente se vor uni
3. Pentru a mentine separarea dintre bazine, se
construiesc baraje
4. Aceste baraje reprezinta contururile regiunilor
segmentate

PI – curs 11
Segmentare Watershed
Pasii metodei

PI – curs 11
Segmentare Watershed
Pasii metodei

PI – curs 11
Segmentare Watershed
Constructia barajelor
 Folosind dilatarea morfologica
 Se aplica dilatarea pana cand cele doua componente disjuncte
devin conectate

PI – curs 11
Segmentare Watershed
Constructia barajelor
 Folosind dilatarea morfologica
 Se aplica dilatarea pana cand cele doua componente disjuncte
devin conectate

PI – curs 11
Segmentare Watershed
Aplicare pe o imagine binara

Imaginea originala Transformata distanta

PI – curs 11
Segmentare Watershed
Aplicare pe o imagine binara

Transformata distanta a unei imagini binare este


definita de distanta de la un pixel la cel mai apropiat
pixel cu valoare nenula

PI – curs 11
Segmentare Watershed
Aplicare pe o imagine binara

Imaginea originala Transformata distanta aplicata


complementului imaginii originale

PI – curs 11
Segmentare Watershed
Aplicare pe o imagine binara

Negativul transformatei Rezultatul segmentarii


distanta watershed

PI – curs 11
Segmentare Watershed
Aplicare pe o
imagine binara

PI – curs 11
Segmentare Watershed
Aplicare pe gradient

a: Imaginea originala
b: Gradientul imaginii
c: Liniile de divizare
(suprasegmentare)
 Fiecare regiune conectata
contine un minim local in
imaginea gradient
d: Liniile de divizare obtinute
dupa netezirea imaginii b

a b
PI – curs 11
c d
Segmentare Watershed
Aplicare pe gradient

Suprasegmentare datorata numarului prea mare de


minime locale
PI – curs 11
Segmentare Watershed
Watershed cu markeri
 Markeri interni - utilizati pentru limitarea regiunilor
de interes
 Similari cu germenii din metoda region growing
 Pot fi asignati manual or automat
 Regiunile fara marker pot fi unite (nu se construieste
baraj)
 Markeri externi – pixeli ce apartin cu confidenta
mare regiunilor de background
 Pot fi utilizate liniile de divizare obtinute dupa o
segmentare watershed initiala

PI – curs 11
Segmentare Watershed
Watershed cu markeri

PI – curs 11
Segmentare Watershed
Watershed cu markeri Markeri interni
- Se aplica un filtru trece-jos pe
imaginea originala
- Se determina minimele regionale

Markeri externi
- Se aplica transformata Watershed
plecand de la minimele regionale de
mai sus
- Liniile de divizare obtinute sunt
considerate marker externi

Fiecare regiune definita de markerii


externi contine un singur marker intern si
o parte din background
Problema se reduce la o segmentare
background-foreground in fiecare
regiune
PI – curs 11
Segmentare Watershed
Watershed cu markeri

PI – curs 11
Segmentare Watershed
Exemple watershed
Separarea boabelor de cafea (functia distanta)

PI – curs 11
Segmentare Watershed
Exemple watershed
Monitorizarea traficului (segmentarea automata a benzilor)

PI – curs 11
Segmentare Watershed
Exemple watershed
Monitorizarea traficului (segmentarea automata a benzilor)

PI – curs 11
Segmentare Watershed
Exemple watershed
Fragmente de argint pe o placuta fotografica (obiecte
suprapuse)

PI – curs 11
Image segmentation – evaluation metrics

In computer vision, image segmentation is the process of partitioning a digital image into
multiple segments (sets of pixels, also known as image objects). The goal of segmentation is to
simplify and/or change the representation of an image into something that is more meaningful
and easier to analyze. [1][2] Image segmentation is typically used to locate objects
and boundaries (lines, curves, etc.) in images. More precisely, image segmentation is the process
of assigning a label to every pixel in an image such that pixels with the same label share certain
characteristics. [3]
I. Evaluation metrics:
When trying out different segmentation methods, how do you know which one is best? If you
have a ground truth or gold standard segmentation, you can use various metrics to check how
close each automated method comes to the truth.
1. Pixel accuracy - the percent of pixels in the image that are classified correctly [5]
∑𝒊 𝒏𝒊𝒊 𝑻𝑷 𝑻𝑵
𝑷𝒊𝒙𝒆𝒍𝒂𝒄𝒄𝒖𝒓𝒂𝒄𝒚 = ∑𝒊 𝒕𝒊
=
𝑻𝑷 𝑻𝑵 𝑭𝑷 𝑭𝑵
2. Mean accuracy over classes [5]
𝟏 ∑𝒊 𝒏𝒊𝒊
𝑴𝒆𝒂𝒏_𝒂𝒄𝒄𝒖𝒓𝒂𝒄𝒚 = ∙
𝒏𝒄𝒍 𝒕𝒊
3. Mean IoU (Mean Intersection over Union) [5] - also known as the Jaccard Index, is one
of the most commonly used metrics in image segmentation. IoU is the area of overlap
between the predicted segmentation and the ground truth divided by the area of union
between the predicted segmentation and the ground truth. This metric ranges from 0–1 (0–
100%) with 0 signifying no overlap and 1 signifying perfectly overlapping segmentation.
For binary (two classes) or multi-class segmentation, the mean IoU of the image is
calculated by taking the IoU of each class and averaging them.

Figure 1. IoU calculation visualized. Source: Wikipedia

𝟏 ∑𝒊 𝒏𝒊𝒊 𝑻𝑷
𝑰𝒐𝑼 = ∙ =
𝒏𝒄𝒍 𝒕𝒊 + ∑𝒋 𝒏𝒊𝒋 − 𝒏𝒊𝒊 𝑻𝑷 + 𝑭𝑵 + 𝑭𝑷

Where, nij – number of pixels of class i predicted to belong to class j, ncl – number of classes, ti –
total number of pixels of class i.
4. Precision - a metric of exactness or quality [4],
𝑻𝑷
𝑷𝒓𝒆𝒄𝒊𝒔𝒊𝒐𝒏 =
𝑻𝑷 + 𝑭𝑷
5. Recall - a metric of completeness or quantity [4]
𝑻𝑷
𝑹𝒆𝒄𝒂𝒍𝒍 =
𝑻𝑷 + 𝑭𝑵

Figure 2 Precision and Recall

6. F-measure, also known as Sørensen–Dice coefficient or Dice similarity coefficient [4]


𝟐 ∗ 𝑹𝒆𝒄𝒂𝒍𝒍 ∗ 𝑷𝒓𝒆𝒄𝒊𝒔𝒊𝒐𝒏
𝑭 − 𝒎𝒆𝒂𝒔𝒖𝒓𝒆 =
𝑹𝒆𝒄𝒂𝒍𝒍 + 𝑷𝒓𝒆𝒄𝒊𝒔𝒊𝒐𝒏

Figure 3 TP, TN, FP and FN


The scores of precision and recall should be both high, but there is an inverse relationship
between precision and recall, where it is possible to increase one at the cost of reducing the
other. The F-Measure which is a harmonic mean of precision and recall can be viewed as a
compromise between precision and recall. It balances the precision and recall with equal weighs,
and it is high only when both recall and precision are high. A higher score of F-Measure means
that the performance of the algorithm is better.
TP is the number of true positives, TN is the number of true negatives, FN is the number of false
negatives and FP is the number of false positives.
II. Datasets
1. Broad Bioimage Benchmark Collection - https://data.broadinstitute.org/bbbc/
a. Human HT29 colon-cancer cells
b. Synthetic cells (BBBC004, BBBC005)
c. Human U2OS cells (out of focus)
d. 3D HL60 Cell line (synthetic data)
e. 3D Colon Tissue (synthetic data)
f. Polymerized structures

III. Compute TP, TN, FP, FN using OpenCV


struct result_t { int TP;
int FP;
int FN;
int TN; };

result_t conf_mat_2c(cv::Mat1b truth, cv::Mat1b detections) {


CV_Assert(truth.size == detections.size);
result_t result = { 0 };
cv::Mat inv_truth(~truth);
cv::Mat inv_detections(~detections);
cv::Mat temp;
cv::bitwise_and(detections, truth, temp);
result.TP = cv::countNonZero(temp);
cv::bitwise_and(detections, inv_truth, temp);
result.FP = cv::countNonZero(temp);
cv::bitwise_and(inv_detections, truth, temp);
result.FN = cv::countNonZero(temp);
cv::bitwise_and(inv_detections, inv_truth, temp);
result.TN = cv::countNonZero(temp);
return result;
}

Bibliography
[1] Linda G. Shapiro and George C. Stockman (2001), “Computer Vision”, pp 279-325, New Jersey, Prentice-
Hall, ISBN 0-13-030796-3

[2] Barghout, Lauren, and Lawrence W. Lee, “Perceptual information processing system”, Paravue Inc. U.S. Patent
Application 10/618,543, filed July 11, 2003

[3] https://en.wikipedia.org/
[4] Yao G, Lei T, Zhong J, Jiang P, Jia W.,“Comparative Evaluation of Background Subtraction Algorithms in
Remote Scene Videos Captured by MWIR Sensors”, Sensors (Basel). 2017;17(9):1945. Published 2017 Aug 24.
doi:10.3390/s17091945

[5] J. Long, E. Shelhamer and T. Darrell, “Fully convolutional networks for semantic segmentation”, 2015 IEEE
Conference on Computer Vision and Pattern Recognition (CVPR), Boston, MA, 2015, pp. 3431-3440.
doi: 10.1109/CVPR.2015.7298965
Facultatea Automatica si Calculatoare
Universitatea Tehnica “Gheorghe Asachi” din Iaşi,
Romania

Prelucrarea imaginilor
curs – an III CTI

prof. dr. ing. Vasile Manta


conf. dr. ing. Simona Caraiman

PI – curs 12
Prelucrarea imaginilor

Capitolul 4. Procesarea imaginilor color

Proprietati ale luminii. Culori fundamentale

PI – curs 12
Proprietatile luminii
Lumina

PI – curs 12
Proprietatile luminii
Lumina
- radiatie electromagnetica
- spectrul vizibil: 380 – 780 nm
- lumina acromatica: contine toate lungimile de unda din spectrul
vizibil in proportii aprox. egale

PI – curs 12
Proprietatile luminii
Fotometrie
- măsurători ale radiației electromagnetice in spectrul vizibil.

Radiometrie
- Măsurători ale radiației electromagnetice in intreg spectrul.

PI – curs 12
Proprietatile luminii
Fotometrie
- masurarea energiei electromagnetice in spectrul vizibil

Fluxul luminos Φ
- puterea unei radiaţii vizibile;
- se apreciază după senzaţia de lumină ce o produce;
- unitatea de măsura: lumenul [lm]
Intensitatea luminoasa I
- fluxul luminos pe o directie in limitele unui unghi solid Ω ;
- unitatea de măsura: candela [cd]
Φ 1 lm (lumen)
I= = 1 cd (candela)
Ω 1 sr (steradian)
PI – curs 12
Proprietatile luminii
Fotometrie
- masurarea energiei electromagnetice in spectrul vizibil

Iluminarea E
- densitatea fluxului luminos pe o suprafata S, pe care cade in mod
uniform
Φ
E=
S
- caracteristica surselor secundare (cele care primesc lumină de la
o sursă primară);
- unitatea de măsura: luxul [lx].

PI – curs 12
Proprietatile luminii
Fotometrie
- masurarea energiei electromagnetice in spectrul vizibil

Luminanta
- Raport intre intensitatea luminoasa I si aria proiectiei
ortogonale a elementului de suprafata pe un plan perpendicular
pe directia considerata I
B=
S  cd lm 
- unitatea de măsura: candela/metru patrat  2 = 2 
m m sr 
- corespondent in radiometrie: radianta.

PI – curs 12
Proprietatile luminii
Fotometrie
- masurarea energiei electromagnetice in spectrul vizibil

Coeficientul de reflexie
- obiectele sunt în general iluminate de la surse primare şi apoi
vizibile datorită iluminării realizate cu un flux Φ de la care se
reflectă un flux de reflexie Φ r

Φr
ρ=
Φ

PI – curs 12
Proprietatile luminii
Parametri subiectivi si obiectivi ai culorii

 Culoarea = functiune a sistemului vizual uman, si nu o prorpietate


intrinseca a obiectelor. Obiectele nu au culoare, ele doar reflectă
radiaţii luminoase având diferite lungimi de undă, care dau
observatorului uman senzaţia de culoare.
Parametri subiectivi Parametri obiectivi

Stralucirea Luminanta

Nuanta (tonul culorii) Lungimea de unda dominanta


Bλd
Saturatia Factorul de puritate p=
B
p ∈ [0,1]
PI – curs 12
Proprietatile luminii
Perceptia culorii

Nuanta + saturatie  17000 culori


Nuanta + saturatie + stralucire  10 milioane culori

Conuri
- 3 tipuri, sensibile la culorile
- R- ρ
- G- γ
- B- β

- 5-10 milioane
PI – curs 12
Proprietatile luminii
Perceptia culorii

Nuanta + saturatie  17000 culori


Nuanta + saturatie + stralucire  10 milioane culori

Bastonase
- sensibile la străluciri relative
- permit perceptia formelor
- cca. 100 milioane

PI – curs 12
Proprietatile luminii
Perceptia culorii
 sensibilitatea receptorilor din ochiul uman diferă în funcţie de
lungimea de undă a radiaţiei percepute

65%: red 33%: green 2%: blue (blue cones are the most sensitive)
PI – curs 12
Amestecul culorilor
 orice culoare poate fi obtinuta prin amestecul mai multor culori;
 lumina alba contine aproape toate culorile spectrului vizibil.

Amestecul poate fi:


- aditiv;
- substractiv.

PI – curs 12
Amestecul culorilor – aditiv
 Adunarea a doua sau mai multe culori;
 Culoarea obtinuta este identificata de ochi drept o culoare fictiva.
turcoaz = G+B magenta = R+B galben = R+G

PI – curs 12
Amestecul culorilor – aditiv
Culoare complementara
 a unei culori primare  adunata la culoarea primara rezulta alb
alb = R+G+B R+turcoaz = R+(G+B)

PI – curs 12
Amestecul culorilor – aditiv
Suprapunerea poate fi obtinuta:
- optic;
- spatial;
- temporal.

PI – curs 12
Amestecul culorilor – substractiv
 o culoare se poate obține prin modificarea compoziţiei spectrale a radiaţiei
unei surse luminoase cu ajutorul unor medii absorbante de lumină;
 o culoare se poate obţine prin acest procedeu numai dacă sursa luminoasă
conţine această culoare.

W (white - alb) = R + G + B, atunci:


W - B = (R + G + B) - B = R + G = Y (yellow - galben)

În mod similar, se poate scrie:


W - R = G + B = cyan
W - G = R + B = magenta
W - R - G = B (blue)

 Ochiul este impresionat de o culoare reala.


PI – curs 12
Amestecul culorilor – substractiv

PI – curs 12
Colorimetria tricromatica
 orice culoare se poate obţine prin amestecul aditiv al celor 3 culori primare

Ecuatia colorimetrica unitara:

[C] = r [R] + g [G] + b [B]

C – cromaticitatea culorii (nuanta si saturatia)


r, g, b – coordonate tricromatice
r = R/(R+G+B); g = G/(R+G+B); b = B/(R+G+B);
r+g+b=1

 coordonatele punctului C sunt coeficienţii tricromatici r, g, b iar dimensiunea


vectorului reprezintă luminanţa

PI – curs 12
Prelucrarea imaginilor

Capitolul 4. Procesarea imaginilor color

Modele (spatii) de culoare

PI – curs 12
Modele (spatii) de culoare
Model de culoare = specificarea unui sistem de coordonate si a
unui subspatiu de valori, in care fiecare culoare este reprezentata
de un punct.

Exemple
- RGB
- CMY / CMYK
- NTSC
- YCbCr
- HSI / HSV
- CIE XYZ, L*a*b*

PI – curs 12
Modele (spatii) de culoare
Modelul RGB

 o culoare se specifica prin valori reale cuprinse in intervalul [0,1];


 nuantele de gri sunt reprezentate prin punctele diagonalei principale;
 model dependent de dispozitiv;
 adancimea culorii = nr. de biti utilizati pt reprezentarea fiecarui pixel
(2 ) = 16 777 216 culori
3
8
 imagine 24-biti (imagine full color) -
PI – curs 12
Modele (spatii) de culoare
Modelul CMY(K)
 C  1  R   R  1  C 
 M  = 1 − G  G  = 1 −  M 
         
 Y  1  B   B  1  Y 
Cyan, Magenta,Yellow
 sunt culori secundare, sau, altfel spus, culori primare ale pigmentilor;
 amestecate in proportii maximale ar trebui sa produca negru
 in practica, datorita imperfectiunilor cernelurilor, se obtine un negru imperfect
 CMYK:
K = min{C , M , Y }
C =C − K
M =M −K
Y =Y − K
PI – curs 12
Modele (spatii) de culoare
Modelul CMY(K)

CMY vs CMYK

K = min{C , M , Y }
C =C − K
M =M −K
Y =Y − K

Obs. Adăugarea de negru (k)


duce la eonomisirea celorlalte
culori

http://en.wikipedia.org/wiki/CMYK
PI – curs 12
Modele (spatii) de culoare
Modelul YIQ (NTSC)
Y  0.299 0.587 0.114   R 
 I = 0.596 −0.274 −0.322  G 
    
Q   0.211 −0.523 0.312   B 

 recodificare a modelului RGB de catre NTSC pt.


compatibilizarea imaginilor color cu cele alb-negru
 Problema: două culori diferite în RGB pot să apară la fel pe un ecran
alb-negru
 YIQ asigura ca două culori între care ochiul uman face distincţie
vor avea valori distincte ale luminozităţii – componenta Y
 sistemul vizual este mai sensibil la schimbări ale luminozităţii decât ale
nuanţei sau saturaţiei (I si Q)
PI – curs 12
Modele (spatii) de culoare
Modelul HSI
 Bazat pe perceptia umana a culorii
 Utilizeaza: nuanta (Hue), saturatia (Saturation) si intensitatea (Intensity)

 Artiştii precizează culorile prin tente, nuanţe, tonuri


 Pornind de la un pigment pur
 + alb  o tentă,
 + negru  o nuanţă,
 + alb + negru  o tonalitate a culorii

PI – curs 12
Modele (spatii) de culoare
Modelul HSI

PI – curs 12
Modele (spatii) de culoare
Modelul HSI
Modele (spatii) de culoare
Modelul HSI
1
I = ( R + G + B)
3

Modele (spatii) de culoare


RGB  HSI
 1 
θ if B ≤ G −1 
[ ( R − G ) + ( R − B ) ] 
H = θ = cos  2
1/2 
 ( R − G ) + ( R − B)(G − B)  
360 − θ
2
if B>G
  
3
S = 1− [ min( R, G, B)]
( R + G + B)
1
I= ( R + G + B )
3
HSV: V = max(R,G,B)
HSL: L = (1/2)(min(R,G,B) + max(R,G,B))
Modele (spatii) de culoare
HSI  RGB
sectorul RG 0 ≤ H < 120°

 S cos H 
R = I 1 + 
 cos( 60° − H ) 
G = 3I − ( R + B )

B = I (1 − S )
Modele (spatii) de culoare
HSI  RGB
sectorul GB 120° ≤ H < 240°

H= H − 120
=
R I (1 − S )
 S cos H 
=
G I 1 + 
 cos(60 
− H ) 
and
B = 3I − ( R + G )
Modele (spatii) de culoare
HSI  RGB
sectorul BR 240° ≤ H ≤ 360°

H= H − 240
=
G I (1 − S )
 S cos H 
=
B I 1 + 
 cos(60 
− H ) 
and
R = 3I − (G + B)
Modele (spatii) de culoare
RGB & HSI
RGB Colour Cube

H, S, and I Components of RGB Colour Cube


Modele (spatii) de culoare
Modelul CIE-XYZ
Spaţiul RGB are coeficienţi r, g, b
care pot fi şi negativi.
Gamut-ul de culoare RGB:
- culorile fizic realizabile
prin amestecul aditiv de culori
Primare;
- situat într-un cub.

Există culori fizice ce nu pot fi sintetizate prin amestecul aditiv cu coeficienţi


pozitivi ai componentelor primare RGB.

PI – curs 12
Modele (spatii) de culoare
Modelul CIE-XYZ
s-au definit trei culori virtuale, (X,Y, Z)
pentru a elimina valorile negative

XYZ
- valorile fundamentale în sistemul tricromatic CIE (Commission Internationale
de l'Éclairage)
- coordonate tricromatice sau valori tristimul.

PI – curs 12
Modele (spatii) de culoare
Modelul CIE-XYZ
XYZ este transformarea liniară a valorilor sistemului RGB astfel încât:
 orice culoare fizică monocromatică să fie caracterizată de valori tristimul
pozitive;
 componenta Y sa fie o măsură a luminanţei (strălucirii);
 pentru lumina alba valorile tristimul sa fie egale.

PI – curs 12
Modele (spatii) de culoare
Modelul RGB nu este
perceptual uniform!

[0, 0.5, 0] [0, 1, 0] [0, 1, 0.5]

Care din cele doua culori (stanga/dreapta) este mai apropiata de cea din mijloc
(verde pur)?

Sunt la distante egale!!!

PI – curs 12
Modele (spatii) de culoare
Modelul CIELAB (CIE - L*a*b*)
Spatiu perceptual uniform:
 Distanta euclidiana intre doua culori corespunde diferentei percepute de sistemul
vizual uman intre cele doua culori;
 Proprietate utila in analiza culorilor, segmentare prin clusterizarea culorilor.

XYZ  L*a*b*
 L* - luminozitate (L*=0 negru, L*=100 indica alb)
 a* - coordonata rosu-verde - position between red and green (negative
values indicate green while positive values indicate red)
 b* - coordonata galben-albastru - position between yellow and blue
respectively (negative values indicate blue and positive values indicate
yellow).

PI – curs 12
Modele (spatii) de culoare
Modelul CIELAB (CIE - L*a*b*)
Y 
L* 116h   − 16
 Y0 
  X   Y 
a* 500  h   − h  
  0X  Y0  
 Y   Z 
b* 200  h   − h   
  Y0   Z0 

 3 q, q > 0.008856

unde h ( q ) =  16
 7.787 q + , q ≤ 0.008856
 116
X0, Y0, Z0 - coordonate tricromatice care se obtin in cazul
unui material cu suprafata reflectanta perfect alba
PI – curs 12
Modele (spatii) de culoare
Modelul CIELAB (CIE - L*a*b*)
Caracteristici
 este colorimetric
 culorile percepute identic sunt codificate identic;
 este perceptual uniform
 diferentele de culoare datorate nuantelor diferite sunt percepute uniform;
 este independent de dispozitiv
 realizeaza o decuplare a luminozitatii de culoare
 culoarea fiind data prin valorile a* şi b*.

Diferenta de culoare dintre doua culori se calculeaza prin distanta euclidiana

∆E* = ( L*2 − L*1 ) 2 + (a 2* − a1* ) 2 + (b2* − b1* ) 2

PI – curs 12
Prelucrarea imaginilor

Capitolul 4. Procesarea imaginilor color

Pseudocolorarea

PI – curs 12
Pseudocolorarea
Pseudocolour (also called false colour) image
processing consists of assigning colours to
grey values based on a specific criterion.

The principle use of pseudocolour image


processing is for human visualisation
 Humans can discern between thousands of
colour shades and intensities, compared to
only about two dozen or so shades of grey

PI – curs 12
Pseudocolorarea
Felierea intensitții (Intensity slicing)
 Este cea mai simplă metodă şi constă în atribuirea unei
culori peste o anumită valoare a intensităţii şi altei culori
sub valoarea respectivă.
 Dacă o imagine o interpretăm ca o funcţie 3D (intensitatea
în funcţie de coordonate) metoda poate fi privită ca
plasarea unor plane paralele cu planul de coordonate,
fiecare plan tăind funcţia în zona de intersecţie.
 De o parte şi de alta a planului se atribuie culori deferite.
Luând mai multe plane rezultă mai multe colori.

PI – curs 12
Pseudocolorarea
Intensity slicing

PI – curs 12
Pseudocolorarea

PI – curs 12
Pseudocolorarea

PI – curs 12
Pseudocolorarea

PI – curs 12
Pseudocolorarea
Gray level to color transformations

PI – curs 12
Pseudocolorarea
Gray level to color transformations

PI – curs 12
Pseudocolorarea
Gray level to color
transformations

PI – curs 12
Prelucrarea imaginilor

Capitolul 4. Procesarea imaginilor color

Procesarea imaginilor full-color

PI – curs 12
Procesarea imaginilor full-color
Tehnicile de procesarea a imaginilor full-color se pot împărţi
în două categorii:

 procesarea separată a fiecărei componente a unei imagini şi


apoi formarea imaginii color prin combinarea
componentelor individuale.

 procesarea directă a culorii pixelilor (nu pe componente).


De exemplu în sistemul RGB fiecare punct de culoare
poate fi interpretat ca un vector.

PI – curs 12
Procesarea imaginilor full-color

PI – curs 12
Procesarea imaginilor full-color

PI – curs 12
Procesarea imaginilor full-color
Complementul imaginii

PI – curs 12
Procesarea imaginilor full-color
Procesarea histogramei

Extension of gray level histogram processing to color space.

Histogram equalization
 apply only to the intensity component (HSI).

PI – curs 12
Procesarea imaginilor full-color
Procesarea histogramei

PI – curs 12
Procesarea imaginilor full-color
Netezirea

Smoothing by neighborhood averaging can be done:


 on a color-plane basis (it is mathematically equivalent to
processing RGB vectors) or
 on the intensity component in the HSI color space.

PI – curs 12
Procesarea imaginilor full-color
Netezirea

PI – curs 12
Procesarea imaginilor full-color
Accentuarea contururilor

Sharpening using the Laplacian can be done:


 on a color-plane basis (it is mathematically equivalent to
processing RGB vectors) or
 on the intensity component in the HSI color space.

PI – curs 12
Procesarea imaginilor full-color
Accentuarea

PI – curs 12
Procesarea imaginilor full-color
Concept of a ”Gradient” to vector functions
 The problem is to define the gradient (magnitude and direction) of the vector
C(R,G,B) at any point (x, y). As was just mentioned, the gradient we studied until
now is applicable to a scalar function; it is not applicable to vector functions.
 The following is one of the various ways in which we can extend the concept of a
gradient to vector functions.
Let r, g and b be unit vectors along the R, G and B axis of RGB color space and
define the vectors

Let the quantities be defined in terms of the dot product of these


vectors, as follows:

PI – curs 12
Procesarea imaginilor full-color
Concept of
”Gradient”

The direction of maximum rate of change is given by θ.


For the two possible values for θ, F(θ) will have a maximum and a minimum.
PI – curs 12
Procesarea imaginilor full-color
Gradientul

PI – curs 12
Procesarea imaginilor full-color
Gradientul

PI – curs 12
Procesarea imaginilor full-color
Atenuarea zgomotului

Usually, the noise content in a color image will have the same characteristics in
all color channels:
 Faulty hardware or differences in the relative strength of illumination can
change this;
 Noise in one color channel can be proliferated by color space
transformations.

Noise filtering can be done either on individual color channels or on the entire
color image (depending on the filters definition in vector space).

PI – curs 12
Procesarea imaginilor full-color
Atenuarea zgomotului

PI – curs 12
Procesarea imaginilor full-color
Atenuarea zgomotului

Se observă că prin conversia imaginii 6.48(d) la HSI, cel mai puțin afectata este
intensitatea. De ce?
PI – curs 12
Procesarea imaginilor full-color
Atenuarea zgomotului

Se observa ca zgomotul
de pe un canal din RGB
este imprăstiat la toate
componentele din HSI!

PI – curs 12
Procesarea imaginilor full-color
Segmentarea - HSI
As HSI closely resembles how humans
describe color, using HSI gives an intuitive
representation of color segmentation.
Usually performed in two steps:
• A thresholding is done in the saturation
channel to get a filter mask;
• The hue channel is then masked and
subsequently thresholded.
The intensity channel is seldom used for
color segmentation (as it contains no
color information).
Procesarea imaginilor full-color
Segmentarea - RGB
Although HSI is more intuitive, color segmentation can be more efficient in
RGB:
 Acquire an estimate of the “average” color we wish to segment;
 Filter the image based on thresholding the Euclidian distance between the
average pixel value and the current pixel value.
Procesarea imaginilor full-color
Segmentarea - RGB
Procesarea imaginilor full-color
Segmentarea

DEMO
Kmeans Clustering - RGB vs CIELAB

https://fr.mathworks.com/help/images/color-based-segmentation-using-k-means-
clustering.html
Prelucrarea Imaginilor – Laborator 1

Introducere în prelucrarea imaginilor. Imagini grayscale.


Modelul de culoare RGB. Formatul imaginilor bitmap.

Imaginile 2D sunt constituite din matrici de valori care reprezintă diverse modalități de
codificare a culorilor pentru fiecare pixel. Există o mare varietate de formate ale imaginilor, funcție de
numărul de componente de culoare, domeniul de valori al acestora, gradul și modalitatea de
compresie etc.
Prelucrarea imaginilor presupune modificarea valorilor culorilor pixelilor prin diverse metode
și folosind o multitudine de operatori și algoritmi. De cele mai multe ori, aceasta are ca scop:
- îmbunătățirea calității imaginilor (sporirea clarității, eliminarea zgomotului);
- scoaterea în evidență a anumitor detalii de interes (identificarea de muchii și contururi
semnificative, separarea unor obiecte din imagine de fundal, etc.);
- obținerea de diverse informații legate de caracteristicile imaginilor supuse prelucrării.

Procesarea informațiilor conținute într-o imagine este strâns legată de procesarea de semnale
în general. Rezultatul aplicării unui algoritm de prelucrare a imaginilor poate fi o nouă imagine sau un
set de valori ale unor parametri sau caracteristici ale imaginii.
Imaginile se găsesc cel mai adesea sub forma unor fișiere în format binar. În cel mai simplu
caz, când nu se aplică algoritmi de compresie, imaginile conțin câte o valoare sau un set de valori
numerice pentru fiecare pixel constituent. Aceste valori sunt utilizate de programele de prelucrare și
afișare a imaginilor pentru a identifica și compune culorile pixelilor corespunzători.

Imagini grayscale

Cel mai simplu caz este cel al imaginilor binare, care au doar două valori posibile pentru
fiecare pixel. Aceste valori corespund nuanțelor de alb și negru, singurele folosite în imagine (Figura
1).
Imaginile alb-negru au asociată câte o singură valoare pentru fiecare pixel (adesea aceste
valori sunt pe 8 biți fiecare, adică aparțin domeniului 0-255). Valoarea unui pixel corepunde intensității
imaginii în punctul asociat acelui pixel. Așadar, nu se poate vorbi de culori propriu-zise în acest caz,
fiind vorba de puncte sau regiuni cu diverse nivele ale intensității. Intensitatea maxima corespunde

1
Prelucrarea Imaginilor – Laborator 1

nuanței de alb, cea minima nuanței de negru, în timp ce intensitățile intermediare iau diverse nuanțe
de gri (de aici și termenul de imagine grayscale) (Figura 1).

Figura 1. Exemple de: (stânga) imagine binară, unde pixelii sunt fie albi, fie negri;
(dreapta) imagine grayscale, unde fiecare pixel are asociată o valoare pe 8 biți. Pixelii cu
valoarea 0 sunt complet negri, cei cu valoarea maximă de 255 sunt albi, iar cei cu valori
intemediare au diverse nuanțe de gri.

Pentru a introduce informații legate de culoare într-o imagine, este nevoie de date
suplimentare pentru fiecare pixel. Există numeroase modalități de specificare a valorilor culorilor într-o
imagine. Acestea se mai numesc modele de culoare. În cadrul majorității acestor modele, culoarea se
reprezintă prin intermediul unor tuple de valori (cel mai frecvent, cu 3 sau 4 componente). Astfel, o
culoare rezultă din combinarea valorilor celor 3 sau patru componente. Dintre cel mai frecvent întâlnite
modele de culoare menționăm RGB (Red - Green - Blue), CMY (Cyan - Magenta - Yellow), HSL (Hue
- Saturation - Lightness), Cie L.a.b. etc.

Modelul de culoare RGB

În acest caz, culoarea unui pixel are la bază trei componente: roșie, verde și albastră (Red,
Green, Blue). Culoarea efectivă se obține prin combinarea celor trei componente, care pot fiecare
avea diferite intensități. Așadar, unui pixel dintr-o imagine RGB îi sunt asignate 3 valori, cel mai
adesea întregi fără semn pe 8 biți. Numărul de biți alocați pentru valorile culorii unui pixel reprezintă
adâncimea de culoare (color depth). Caracteristicile dimensionale ale unei imagini sunt constituite atât
din numărul de pixeli de pe axele orizontală și verticală (lățime și înălțime, width, height), cât și de o a
treia dimensiune, non-geometrică, reprezentată de această adâncime de culoare.

2
Prelucrarea Imaginilor – Laborator 1

O imagine RGB este constituită atât din caracteristicile ei geometrice sau non-geometrice, cât
și din datele efective, reprezentate printr-o matrice cu aceleași dimensiuni ca și numărul de pixeli de
pe fiecare axă (altfel spus, ca și rezoluția imaginii), unde pentru fiecare element există trei valori care
corespund celor trei componente de culoare. Astfel, prelucrarea unei imagini RGB presupune
modificarea valorilor componentelor de culoare ale tuturor pixelilor sau ale anumior pixeli, pentru a se
obține efectul dorit.

Figura 2. Modelul de culoare RGB: trei componente principale, roșie, verde și albastră.
Orice alte culori se obțin prin combinarea celor trei.

Structurarea și modul de aranjare a valorilor pixelilor și a altor caracteristici ale unei imagini se
numește formatul acelei imagini. Există numeroase formate, care includ imagini necomprimate,
imagini cărora li s-a aplicat un algoritm de compresie, imagini în cadrul cărora, pe lânga culori, se rețin
și multe alte caracteristici etc.

Formatul bitmap

Printre cele mai simple astfel de formate menționăm imaginile de tip bitmap, reținute în fișiere
cu extensia .bmp. Varianta de bază a unei imagini bitmap este necomprimată, ceea ce înseamnă că
valorile de culoare ale pixelilor se regăsesc nealterate în cadrul fișierului cu imaginea. O imagine
bitmap începe cu un header, a cărui dimenusine și structură depinde de platformă și modul de
implementare (există o variantă de header specifică sistemelor de operare Windows, Linux etc.).
În cele ce urmează ne vom referi la imagini bitmap necomprimate, cu header specific
Windows, unde fiecare pixel are câte trei valori RGB, fiecare pe 8 biți. Prin urmare, culoarea unui pixel

3
Prelucrarea Imaginilor – Laborator 1

se reține pe 24 biți, de aici și termenul de 24 bit bitmap. Headerul are o dimensiune fixă de 54 bytes,
iar în cadrul său se regăsesc diverse informații, cum ar fi dimensiunile imaginii, adâncimea de culoare,
codul de identificare a formatului bmp, etc. După header urmează, în ordine, valorile RGB ale pixelilor
din imagine (Figura 3).

Header R 00 G 00 B 00 R 01 G 01 B 01

54 Bytes 1B 1B 1B 1B 1B 1B

Figura 3. Structura unei imagini în format Windows BMP, 24 bit

Structura headerului pentru astfel de imagini este detaliată în Figura 4. Caracteristicile imaginii
ocupă 2 sau 4 bytes din header, în codificare Little Endian. Aceasta înseamnă că byte-ul cel mai puțin
semnificativ este primul, urmat de ceilalți bytes în ordinea inversă a rangului lor.
De exemplu: primul parametru care poate fi identificat din header este așa-numita signature
(semnătură), o valoare pe 2 bytes care ne permite sa verificăm dacă fișierul în discuție conține într-
adevăr o imagine bitmap (testăm daca această valoare este sau nu egală cu 0x4D42). Pentru a
identifica această valoare, prima dată citim primii doi bytes din header, pe care îi notăm B0 și B1.
Dintre cei doi, B0 este cel mai puțin semnificativ, ceea ce înseamnă ca biții săi sunt ultimii 8 din cei 16
ai valorii semnăturii. În mod similar, biții lui B1 sunt primii 8. Prin urmare, vom calcula valoarea
semnăturii astfel:

short sig = B0 | B1 << 8;

Prima dată se execută operația de shiftare stânga, care plasează biții lui B1 pe cele mai
semnificative 8 poziții din cele 16 ale lui sig. Cele 8 poziții rămase, cele mai puțin semnificative, vor
avea valoarea 0, de aceea facem operația sau cu biții lui B0, care trebuie să se “suprapună” peste
aceste poziții. În mod similar se procedează pentru determinarea celorlalți parametri ai imaginii.

4
Prelucrarea Imaginilor – Laborator 1

Figura 4. Headerul unei imagini în format Windows BMP, 24 bit

5
Prelucrarea Imaginilor – Laborator 1

Sarcini:
Fie următoarele declarații:

typedef unsigned char Byte;

struct PixelColor
{
Byte r, g, b;
};

- Creați o clasă care să extragă și să prelucreze datele unei imagini de tip bitmap. Folosiți
imaginea test.bmp care însoțește laboratorul.
- Clasa va conține:
o un vector cu elemente de tip Byte, unde se vor reține octeții din imagine;
o un câmp de tip întreg care va conține dimensiunea în bytes a imaginii;
- Citiți octeții dintr-un fișier bmp și rețineți-i în vectorul din clasă. Celălalt câmp întreg va conține
numărul de octeți citiți.
- Adăugați o metodă care să verifice dacă semnătura imaginii este corectă.
- Adăugați metode care să se extragă din header și să returneze următoarele caracteristici ale
imaginii:
o dimensiunile imaginii (width, height)
o offset-ul de la care încep biții ce corepund culorilor pixelilor (color data offset)
o adâncimea de culoare (bits per pixel)

- Adăugați o metodă care primește ca parametri doi întregi x, y ce denotă poziția în imagine, și
returnează un obiect de tip PixelColor ce conține valorile RGB ale pixelului de la coordonatele
(x, y).
- Adăugați o metodă ce realizează negativarea culorilor tuturor pixelilor din imagine. Creați o nouă
imagine BMP care să fie negativul celei citite inițial (Figura 4). Negativul unei culori se obține
scăzând valorile ei din valoarea maxim posibilă pe care o pot lua componentele de culoare.

Testați toate metodele create.

6
Prelucrarea Imaginilor – Laborator 1

Figura 4. Imaginea de test (stânga) și negativul ei (dreapta)

Funcție care citește un fișier și pune toți octeții într-un vector:

Byte *DataRead(char *fileName, long &fileSize)


{
fileSize = 0;
if(!fileName) return 0;
FILE *fp = fopen(fileName, "rb");
if(!fp)
{
printf("Error opening file");
return 0;
}
fseek(fp, 0, SEEK_END);
long nrBytes = ftell(fp);
if(nrBytes <= 0)
{
printf("File empty");
return 0;
}
rewind(fp);

Byte *data;
data = new Byte[nrBytes];
long readResult = fread(data, sizeof(Byte), nrBytes, fp);
if(readResult != nrBytes)
{

7
Prelucrarea Imaginilor – Laborator 1

printf("Incorrect read");
delete[] data;
fclose(fp);
return 0;
}
fileSize = readResult;
fclose(fp);
return data;
}

Funcție care scrie octeții dintr-un vector într-un fișier:

long DataWrite(Byte *data, long dataSize, char *fileName)


{
if(!data || dataSize <= 0)
{
printf("Invalid data");
return 0;
}
if(!fileName)
{
printf("Invalid file name");
return 0;
}
FILE *fp = fopen(fileName, "wb");
if(!fp)
{
printf("Error creating file");
return 0;
}

long writeResult = fwrite(data, sizeof(Byte), dataSize, fp);


if(writeResult != dataSize)
{
printf("Incorrect Write");
fclose(fp);
return 0;
}

return writeResult;
}

8
Prelucrarea Imaginilor – Laborator 2

Prelucrarea imaginilor în domeniul spaţial


Domeniul spaţial se referă la mulţimea de pixeli care compun o imagine.
Metodele din domeniul spaţial sunt transformări care operează direct pe aceşti pixeli. Din
punct de vedere al algoritmilor utilizaţi le putem împărţi în:
• Operaţiuni punctuale (accentuarea contrastului, negativarea imaginilor, etc)
• Operaţiuni spaţiale (filtrări spaţiale sau procesarea cu măşti)

Operaţiuni punctuale permit trecerea de la o nuanţă de gri r ∈ [0, L − 1] la o altă nuanţă


de gri s ∈ [0, L − 1] , conform unei transformări:

s = T (r )
T : [0, L − 1] → [0, L − 1].

r – nivelul de gri pentru f(x,y) – imaginea de intrare;


s – nivelul de gri pentru g(x,y) – imaginea de ieşire.

1) Negativarea (inversarea) imaginii

În urma negativării se obține o imagine ce conține nivelele de gri / culorile


complementare celor din imaginea de la care se pornește. Operaţia de negativare se
realizează prin transformarea următoare:

s = T (r ) = L − 1 − r
r ∈ [0, L − 1]
L-1 – nivelul corespunzător pentru alb (de ex. pentru nivele de gri pe 8 biți, L = 256)
0 – nivelul corespunzător pentru negru

Poate fi utilă atunci când se analizează obiecte negre pe un fond alb cu un


program care analizează corpuri albe pe fond negru.

2) Binarizarea imaginilor

Binarizarea are ca scop obţinerea unei imagini alb-negru dintr-o imagine cu mai
multe nivele de gri.

 0 0≤r≤a
s = T (r ) =  , pentru
L − 1 a < r ≤ L −1

1
Prelucrarea Imaginilor – Laborator 2

Fig. 1. Binarizarea imaginii

3) Ajustarea luminozității

Se adaugă tuturor pixelilor (pe componente) o valoare

s=r+D

Se are grijă să nu se iasă în afara intervalului [0, L-1].

4) Accentuarea contrastului

Accentuarea de contrast este necesară mai ales în cazul imaginilor cu un contrast


mic, datorat iluminării slabe sau sensibilităţii scăzute a elementului traductor imagine –
curent electric.

Fiind date două limite a şi b, (0 < a < b < L − 1) pentru care se cunosc valorile sa = T (a )
şi sb = T (b) , transformarea este:
 mr 0≤r≤a

s = T ( r ) =  n ( r − a ) + sa a ≤ r ≤ b
 p ( r − b) + s b ≤ r ≤ L − 1
 b

2
Prelucrarea Imaginilor – Laborator 2

Fig. 2. Accentuare de contrast

sa
m = tgα =
a
sb − sa
n = tgβ =
b−a
L − 1 − sb
p = tgγ =
L −1− b

Obs:
- parametrii a şi b se determină printr-o analiză mai amănunțită a imaginii;
- parametrii sa şi sb precizează amplificarea contrastului, amplificare ce se obţine în
domeniul [a,b]
m <1
sa = T ( a ) < a
⇔ n >1
sb = T (b) > b
p <1

În cazul sa > a şi sb < b se obţine reducerea contrastului pe domeniul [a,b].

3
Prelucrarea Imaginilor – Laborator 2

5) Corecţia gamma

Monitorele afişează imaginea mai întunecată decât este în realitate. Ele lucrează
după o lege de forma (pentru fiecare componentă R,G,B):
s = cr γ
c, γ - constante pozitive.

De exemplu, la monitoarele CRT, γ ≈ 2,5, c = 1 . Intervalul nivelelor de gri [0,L-


1] este mapat în [0,1]. Se vede că pentru γ > 1 ⇒ s < r . Pentru corecţie, la intrare se
1
γ
aplică r → r .

6) Extragerea unui bit (Bit-plane slicing)

Presupunem că intensitatea fiecărui pixel din imagine este reținută pe n biţi.


Funcţia corespunzătoare imaginii digitale se scrie:

r = bn−1 2 n−1 + bn−2 2 n−2 + ... + b1 2 + b0

Operaţia de extragere a bitului k este:

L − 1 bk = 1
sk = Tk (r ) =  pentru
 0 in rest

Operația este folositoare pentru determinarea biţilor mai semnificativi dintr-o


imagine. În cazul în care n=8, rezultă 8 plane ale imaginii. Biţii mai semnificativi
determină imagini cu zone largi uniforme, pe când imaginile biţilor mai putin
semnificativi au un aspect de zgomot. Acest fapt se poate utiliza în compresia imaginilor:
se codează plan cu plan biţii cei mai semnificativi exploatând prezenţa zonelor uniforme
(de exemplu codarea RLC sau cu arbori cuatenari), iar biţii cei mai puţin semnificativi se
codează separat.

7) Operaţiuni de tip fereastră

Transformările de acest tip permit extragerea anumitor caracteristici în regiuni


reprezentate prin diferite nuanţe de gri. Decuparea sau accentuarea acestor zone se poate
realiza astfel:

L − 1 r ∈ [ a , b]
Td (r ) =  , pentru
 0 in rest

L − 1 r ∈ [ a , b]
Ta (r ) =  , pentru
 r in rest

4
Prelucrarea Imaginilor – Laborator 2

Fig. 3. Operaţiuni de tip fereastră

8) Comprimarea de contrast

Este utilizată în cazul în care dinamica datelor în imagine este foarte largă.
Comprimarea se face printr-o transformare logaritmică.
s = c log(1 + r ), (11)
unde c- constantă.
O astfel de transformare îmbunatăţeşte vizibilitatea pixelilor de amplitudine mică
(întunecaţi) faţă de pixelii cu o amplitudine mai mare (strălucitori).

5
Prelucrarea Imaginilor – Laborator 2

Fig. 4. Comprimarea de contrast

Conversia unei imagini color în imagini cu nivele de gri

Există numeroase metode de conversie a unei imagini din color în grayscale. În


cel mai simplu caz, intensitatea fiecărui pixel se calculează ca medie a valorilor R, G, B
din imaginea color.
R+G+ B
I=
3

Cerințe
Să se implementeze in aplicatia ACPI următoarele operațiuni și să se afișeze
rezultatele obținute în urma aplicării lor:

a) negativarea unei imagini grayscale


b) binarizarea unei imagini grayscale
c) ajustarea luminozității
d) accentuarea contrastului
e) corecție gamma
f) extragerea unui bit-plane
g) comprimarea contrastului

6
Prelucrarea Imaginilor – Laborator 3

Reprezentarea și analiza histogramelor. Egalizarea unei


histograme

Histograma reprezintă ponderea fiecărui nivel de gri dintr-o imagine. Considerăm


că avem o imagine digitală cu L nivele de gri. Atunci histograma este o funcţie discretă:
h(rk )  nk , k  0, L  1

rk - al k-ulea nivel de gri

nk - numărul de pixeli din imagine care au nivelul de gri rk


De obicei, în aplicaţiile practice se lucrează cu o histogramă normalizată:
nk
h(rk )   p (rk ) , k  0, L  1 (15)
n
nk
unde n – numărul total de pixeli din imagine. În realitate, p(rk )  - probabilitatea de
n
apariţie a nivelului rk .
Rezultă că histograma reprezintă frecvenţa de apariţie a diferitelor nivele de gri
dintr-o imagine. Prin modelarea histogramei se modifică imaginea a.î. să obţinem o
imagine cu o histogramă dorită. O aplicaţie de acest gen este utilă, de exemplu, pentru
vizualizarea unor imagini cu contrast scăzut (având o histogramă foarte îngustă).
Informaţiile cuprinse în histogramă sunt folosite la compresia imaginii, la segmentare,
etc.
Remarcăm că într-o imagine întunecată componentele histogramei sunt
concentrate în partea stângă (Fig. 1(a)), o imagine luminoasă are componentele
histogramei concentrate în partea dreaptă (Fig. 1(b)), iar o imagine cu un contrast scăzut
are o histogramă îngustă situată spre mijlocul scalei de gri (Fig. 1(c)).

1
Prelucrarea Imaginilor – Laborator 3

a) Imagine întunecată b) Imagine luminoasă

c) Imagine cu un contrast scăzut

Fig. 1. Diverse histograme și tipurile de imagini cărora li se aplică

Pentru calculul histogramei, pentru fiecare nivel de gri se numără pixelii din imagine care
au acel nivel. Apoi, rezultatul se împarte la totalitatea pixelilor ce compun imaginea. De
cele mai multe ori, histograma se reprezintă pe un grafic, aceasta ușurând analiza ei
vizuală (Fig. 2).

2
Prelucrarea Imaginilor – Laborator 3

Fig. 2. O imagine grayscale și histograma ei. Imaginea este predominant întunecată, fapt
care se observă și în histogramă, unde majoritatea pixelilor se află în jumătatea mai
întunecată a domeniului nivelelor de gri.

Egalizarea histogramei

În unele cazuri se dorește modificarea unei imagini astfel încat imaginea care rezultă
să aibă o histogramă cu anumite caracteristici. Un exemplu clasic de specificare a unei
histograme îl constituie cazul histogramei uniforme, cunoscut și sub numele de
histogramă egalizată. Intuitiv, histograma uniformă înseamnă nivele de gri reprezentate
pe întregul domeniu. Pentru observatorul uman, o imagine cu o histogramă egalizată
apare cu un contrast mai bun. Egalizarea histogramei este o tehnică de îmbunătățire a
imaginilor foarte eficientă în special pentru analiza imaginilor medicale radar, sau
astronomice.

Fie f o imagine reprezentată printr-o matrice de valori întregi, din intervalul [0, L-1].
Așasar, L este numărul de nivele de gri posibile, având de exemplu valoarea 256 pentru
imagini pe 8 biți. Fie p histograma normalizată a imaginii f, unde p are asociată câte o
valoare pentru fiecare intensitate din imagine:

3
Prelucrarea Imaginilor – Laborator 3

Pn
pn  n  0, 1, ..., L  1
PT
unde Pn este numărul pixelilor cu intensitatea n, iat PT este umărul total de pixeli din
imagine.
Fie g funcția care descrie imaginea cu histograma egalizată. Aceasta se calculează
astfel:
fi, j

gi , j  floor (( L  1) pn )
n0

unde gi,j este intensitatea pixelului din imaginea g de la poziția (i, j), iar floor()
semnifică rotunjirea către cel mai apropiat întreg. Formula anterioară este echivalentă cu
aplicarea următoarei transformări pe intensitatea k a pixelilor imaginii inițiale f:

k
T (k )  floor (( L  1) p n )
n 0

Cerințe:

- Scrieți o funcție de calcul al histogramei și afisați rezultatul în aplicația ACPI ce


însoțește laboratorul.
- Deschideți câteva imagini grayscale (se pot folosi cele din directorul aferent aplicației)
și observați cum diferă histograma funcție de distribuția nivelelor de gri din fiecare
imagine.
- Completați funcțiile care efectuează operațiunile punctuale din laboratorul anterior și
obervați cum se modifică histograma în urma efectuării acelor operații pe aceeași
imagine.
- Implementați și testați operația de egalizare a histogramei și afisați imaginea inițială,
imaginea egalizată și histogramele celor două.
- Implementați operația de egalizare adaptivă a histogramei. Pentru fiecare pixel,
calculați distribuția cumulativă (formula de la operația anterioară de egalizare) pentru o
subregiune n x n din imagine, centrată în acel pixel (n este un parametru stabilit de
utilizator).

4
Prelucrarea Imaginilor - Laborator 4

Prelucrarea imaginilor în domeniul spaţial (cont.)


Domeniul spaţial se referă la mulţimea de pixeli care compun o imagine.
Metodele din domeniul spaţial sunt transformări care operează direct pe aceşti pixeli.
Din punct de vedere al algoritmilor utilizaţi le putem împarţi în:
 Operaţiuni punctuale (accentuarea contrastului, reducerea zgomotului,
negativarea imaginilor, etc)
 Operaţiuni spaţiale (filtrări spaţiale sau procesarea cu măşti)

Operaţiuni spaţiale (bazele filtrării spaţiale)

1. Consideraţii generale
Spre deosebire de operaţiunile punctuale, operaţiunile spaţiale se realizează
asupra pixelilor dintr-o vecinătate din imaginea iniţială şi o subimagine de aceeaşi
dimensiune cu vecinătatea aleasă. Imaginea este numită filtru, mască, nucleu,
fereastră. Valorile filtrului se numesc coeficienţi sau ponderi. Operaţiile de filtrare
care se aplică direct asupra pixelilor se mai numesc filtrări spaţiale, pentru a le
deosebi de tehnicile Fourier care sunt referite ca filtrări în domeniul frecvenţelor.

2. Filtre liniare (de convoluţie)


Considerăm o filtrare liniară cu un filtru (o masca) de dimensiune 3x3 cu
ponderile (coeficienţii) w(s,t) şi imaginea dată prin f(x,y).
0 X

Masca

Imagine f(x,y)

Y
w(-1,-1) w(0,-1) w(1,-1)

w(-1,0) w(0,0) w(1,0)

w(-1,1) w(0,1) w(1,1)

Coeficientii filtrului
f(x-1,y-1) f(x,y-1) f(x+1,y-1)

f(x-1,y) f(x,y) f(x+1,y)

f(x-1,y+1) f(x,y+1) f(x+1,y+1)

Pixelii din imagine


acoperiti de ma sca

Fig. 1 Mecanismul aplicării unei măşti (filtrare spaţială)

1
Prelucrarea Imaginilor - Laborator 4

Dacă imaginea (filtrată) o notăm cu g(x,y):

g ( x, y )  w(1,1) f ( x  1, y  1)  w(0,1) f ( x, y  1)  w(1,1) f ( x  1, y  1) 


w(1,0) f ( x  1, y )  w(0,0) f ( x, y )  w(0,1) f ( x, y  1)  (1)
w(1,1) f ( x  1, y  1)  w(0,1) f ( x, y  1)  w(1,1) f ( x  1, y  1)

Se observă că masca este centrată în pixelul (x,y), pentru care se calculează


ieşirea g(x,y), acesta fiind motivul pentru care se lucrează cu măşti de dimensiune
impară.
În general, filtrarea liniară a unei imagini de dimensiune MxN cu o mască mxn
este dată de:

a b
g ( x, y )    w(s, t ) f ( x  s, y  t )
s   at   b
(2)

m 1 n 1
a , b , x  0, M  1 , y  0, N  1
2 2

Relaţia (2) este de fapt o relaţie de convoluţie. Valoarea pixelului curent este
înlocuită cu produsul de convoluţie dintre vecinătatea pixelului curent şi masca de
convoluţie.
Obs: pentru simplitate relaţia (2) se scrie uneori sub forma:

mn 1
g ( x, y )  w z
i 0
i i (3)

cu z i - valoarea pixelului corespunzător din imaginea iniţială şi wi - ponderile


filtrului.

De exemplu, pentru o mască mxn, ponderile sunt numerotate astfel:

w0 w1 w2

w3 w4 w5

w6 w7 w8

Obs: Relaţia (2) se aplică şi sub forma dată atunci când o mască de dimensiune nxn
n 1
are centrul la cel puţin de marginile imaginii. În acest fel imaginea rezultată este
2
mai mică decât cea iniţială. Dacă se doreşte să fie de aceeaşi dimensiune putem
procesa pixelii de pe margine cu o mască parţială sau putem extinde imaginea
originală prin simpla copiere a liniilor sau a coloanelor.

2
Prelucrarea Imaginilor - Laborator 4

3. Filtre liniare de netezire


Filtre liniare de netezire înlocuiesc valoarea pixelului curent cu o medie a
vecinilor lui. Ele sunt numite de netezire (smoothing) deoarece netezesc detaliile
(variaţiile bruşte ale intensităţii dintre pixelii vecini) – adică frecvenţele înalte. Din
acest motiv sunt numite şi filtre trece-jos (taie frecvenţele înalte (detaliile) din
imagine).
Să presupunem că o imagine este afectată de un zgomot  ( x, y ) a cărui medie
este nulă. Imaginea de intrare va fi f ( x, y )   ( x, y ) .
Prin introducere în relaţia (2), obţinem:

a b
g ( x, y )    w(s, t ) f ( x  s, y  t )   ( x, y)
s   at   b
(4)

 ( x, y ) - este dependentă de dimensiunea ferestrei (măştii).

Cu căt dimensiunea este mai mare cu atât   0 .

Exemple de filtre de mediere:

- filtre medie aritmetică

1 a b
g ( x, y )    f ( x  s, y  t )
m  n s   at   b
(5)

Pentru m  n  3  masca:
1 1 1
1
 1 1 1
9
1 1 1
Poate fi folosit pentru zgomot gausian şi zgomot uniform.

- filtre cu medie ponderată - filtrul gaussian

Este filtrul cel mai potrivit pentru eliminarea zgomotului gaussian. Ponderea
pixelilor se reduce odată cu creşterea distanţei faţă de pixelul central.

a b s 2 t 2
1 
g ( x, y ) 
2  2
  f ( x  s, y  t )  e
s   at   b
2 2
(6)

Filtrarea este cu atât mai puternică cu cât valoarea deviaţiei standard  şi


dimensiunea măştii este mai mică. Pentru dimensiunea 3x3, aplicarea acestui fltru se
poate face cu masca:
1 2 1 
1 
2 4 2
16 
1 2 1 

3
Prelucrarea Imaginilor - Laborator 4

Concluzie:
Filtrele de mediere se folosesc în special la estomparea (blur) obiectelor mici
pentru a putea izola obiectele mari care ne interesează. Intensitatea obiectelor mici se
amestecă cu fondul şi astfel obiectele mari sunt mult mai uşor de detectat.
Dimensiunea măştii se alege în funcţie de dimensiunea obiectelor care dorim să fie
amestecate cu fondul.

Aplicaţii

Implementați în aplicația ACPI următoarele operații:

1. Convoluția unei imagini cu un filtru dat. Testaţi efectele următoarelor


filtre asupra imaginilor puse la dispoziţie în subdirectorul /Images/ al
aplicației:

a) filtru pentru netezire (blur) - se utilizează media dintre valoarea pixelului


curent şi valorile a 4 pixeli vecini:

double filter[filterWidth][filterHeight] =
{
0.0, 0.2, 0.0,
0.2, 0.2, 0.2,
0.0, 0.2, 0.0
};

Cu un filtru de dimensiune mai mare se poate obţine mai multă netezire:

double filter[filterWidth][filterHeight] =
{
0, 0, 1, 0, 0,
0, 1, 1, 1, 0,
1, 1, 1, 1, 1,
0, 1, 1, 1, 0,
0, 0, 1, 0, 0,
};

double factor = 1.0 / 13.0;

b) pentru netezire după o direcţie (motion blur)

double filter[filterWidth][filterHeight] =
{
1, 0, 0, 0, 0, 0, 0, 0, 0,
0, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 1, 0, 0, 0, 0, 0, 0,
0, 0, 0, 1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 1, 0, 0, 0, 0,
0, 0, 0, 0, 0, 1, 0, 0, 0,
0, 0, 0, 0, 0, 0, 1, 0, 0,
0, 0, 0, 0, 0, 0, 0, 1, 0,
0, 0, 0, 0, 0, 0, 0, 0, 1,
};

4
Prelucrarea Imaginilor - Laborator 4

double factor = 1.0 / 9.0;

Observaţii:
Există câteva reguli pentru filtrele de convoluţie:
 dimensiunea filtrului trebuie să fie impară, astfel încât să aiba un centru;
 nu este obligatoriu, dar suma tuturor elementelor filtrului trebuie să fie 1 dacă
se doreşte ca imaginea filtrată să aibă aceeaşi luminozitate cu cea iniţială;
 dacă suma elementelor filtrului este mai mare decât 1, rezultatul va fi o
imagine mai luminoasă, iar dacă este mai mică decât 1, o imagine mai
întunecată. Dacă suma este 0, imaginea rezultată nu este neapărat complet
neagră , însa va fi foarte întunecată.

Orice imagine are dimensiuni finite, iar dacă se doreşte calcularea unui pixel de pe
prima coloană, pentru convoluţie sunt necesari pixeli de la stânga acestuia, deşi
aceştia nu există. Se pot folosi fie valori de 0, sau se poate trece de cealaltă parte a
imaginii, lucru care se poate realiza folosind împarţirea modulo dimensiunea imaginii.

Pixelii rezultaţi în urma aplicării filtrului pot avea valori negative sau mai mari de
255. În aceste cazuri, se poate utiliza o trunchiere astfel încât valorile mai mici decât 0
să devină 0 iar cele mai mari decât 255 să devină 255. Pentru valorile negative se
poate deasemenea folosi valoarea absolută.

2. Eliminarea zgomotului

Implementati functiile specifice aplicarii următoarelor filtre spaţiale:

- filtre liniare de mediere


- filtrul medie aritmetică
- filtrul gaussian (medie ponderată)

Folosiţi aceste filtre pentru eliminarea zgomotului din următoarele imagini:


- cu zgomot uniform (Fig5.03_zgomotUniform.jpg)
- cu zgomot gaussian (Fig5.03_zgomotGaussian.jpg)
- cu zgomot sare şi piper (Fig5.03_zgomotSarePiper.jpg)

Pentru fiecare tip de imagine cu zgomot folosiţi filtrele de mai sus pentru a reduce
zgomotul. Bazându-vă pe observaţiile voastre găsiţi cel mai bun filtru pentru
reducerea fiecărui tip de zgomot.

5
Prelucrarea Imaginilor - Laborator 5

Prelucrarea imaginilor în domeniul spaţial (cont.)

Filtre neliniare
În general, zgomotele din imagini apar în domeniu frecvenţelor înalte din
specrul imaginii. De aceea, pentru înlăturarea lor se folosesc filtre trece-jos. Aceste
filtre tind să reducă detaliile din imagini (linii, colţuri). Filtrele trece-jos degradează
punctele de front, degradând imaginea.
Filtrele neliniare elimină zgomotele, păstrând totodată fronturile şi detaliile din
imagine. O clasă a filtrelor neliniare este aceea a filtrelor de ordine (filtrelor rang).
Acestea se bazează pe ordonarea intensităţilor pixelilor din fereastra de filtrare.

Filtre de ordine (filtre rang)


Cazul cel mai reprezentativ al filtrelor de ordine este filtrul median.
Filtrul median este definit pentru N impar. El corespunde poziţiei din mijloc
în vectorul Rv p , deci:

g ( p )  Rang n 1 ( Rv p ) (9)
2
g ( p) fiind intensitatea mediană din cele N intensităţi.

Obs:
În cazul în care notăm poziţiile cu 1,2,...,N, (indexul în vector ia valorile
1,2,..., N), rezultă:

g ( p )  Rang n 1 ( Rv p ) (10)
2

Filtul median înlatură zgomotele fără a degrada imaginea, deci fără a atenua
punctele de front.
Filtrele de netezire tind sa distribuie zgomotele în punctele înconjurătoare
acelora care reprezintă zgomot. Principala proprietate a filtrului median este aceea că
forţează pixelii cu nivele de gri distincte să fie mai asemănătoare cu vecinii lor. De
fapt, sunt eliminate grupurile de pixeli care sunt mai luminoase sau mai întunecate
mn
decât vecinii lor şi a căror arie este mai mică decât (jumătatea ariei filtrului).
2
Exemplu:

Considerăm N=5 (m  1, n  5) .

Vectorul ordonat al intensităţilor pixelilor din vecinătatea (fereastra, masca) de


filtrare îl considerăm:
Rv p ={100, 110, 120, 130, 250}.

1
Prelucrarea Imaginilor - Laborator 5

Ieşirea filtrului median va fi 120. Ieşirea unui filtru de netezire cu ponderi


100  110  120  130  250
egale (filtru medie aritmetică) este  142.
5

Obs: În general, filtrul median este cel mai potrivit pentru zgomotul sare şi piper.

Alegerea vecinătăţii (fereastra de filtrare)

Forma vecinătăţii în care se calculează cele N intensităţi influenţează efectul


filtrului. În general, vecinătatea se alege mică pentru a se evita efortul de calcul
presupus de sortarea unui vector mare de intensităţi. Dimensiunea este dată de
dimensiunea grupurilor de pixeli care trebuie eliminate. Alegerea formei ferestrei se
poate baza pe o cunoaştere a caracteristicilor de zgomot din imagine, de exemplu
orientarea orizontală sau verticală.
Forme de ferestre pentru filtrul median:

n n
n n

Imaginea poate fi filtrată de mai mlte ori folosind aceeaşi fereastră.

Proprietăţi ale filtrului median:


1. Reduce variaţia intensităţilor din imagine, producând regiuni de intensitate
constană sau aproape constantă. Forma regiunilor depinde de geometria
ferestrei de filtrare, aspect neplăcut deoarece sunt introduse în imaginea
filtrată regiuni care nu existau.
2. Netezeşte oscilaţiile de intensitate cu o perioadă mai mică decât lăţimea
ferestrei.
3. Modifică valoarea medie a intensităţilor din imagine dacă distribuţia spaţială a
zgomotului nu este simetrică în fereastră.
4. Conservă anumite forme de frontiere.
5. Nu generează noi nivele de gri.

La aplicarea filtrelor liniare se efectuează calcule de înmulţire şi adunare.


Aplicarea filtrului median presupune sortarea unui vector de numere întregi. Aceste
calcule se pot eficientiza în mai multe moduri. Astfel, vectorul corespunzător poziţiei
(x+1,y) se poate obţine prin modificarea vectorului corespunzător poziţiei (x,y).

Se elimină prima coloană din R  rămân m x n+2m


m pixeli din vechiul vector.

n
Prelucrarea Imaginilor - Laborator 5

Algoritmul Huang
Fereastra de mxn pixeli este deplasată pe rânduri de la stânga spre dreapta.
Ferestrele centrate în (i,j) şi (i+1,j) au în comun mxn+2m pixeli.
Calculul valorii mediane din fereastra curentă se bazează pe valoarea mediană
a ferestrei anterioare şi pe histograma imaginii din fereastră.
Astfel, valoarea mediană poate fi determinată ştiind că N/2 pixeli ai imaginii
din fereastră au intensităţi mai mici decât ea.

Exemplu: cazul N=7

0 1 2 3 4 5 6
4, 6, 8, 10, 11, 12, 14
}

N/2

N 1
valoarea mediană: poziţia 3
2

În vectorul sortat al intensităţilor N/2 intensităţi sunt mai mici decât valoarea
mediană.
Dacă valoarea mediană corespunde poziţiei i în histogramă (nivelul i de
intensitate) atunci numărul total de pixeli cu intensitatea mai mică decât i este:
i 1

 h( j )
j 0

h – vectorul histogramei ( h(k) = numărul de pixeli cu intensitatea k )

Algoritmul Huang în pseudocod:

Pentru fiecare rând al imaginii:


Pentru prima fereastră de pe rând:
 Calculează histograma
 Determină valoarea mediană
Pentru celelalte ferestre de pe rând:
 Actualizează histograma:
o Scăzând contribuţiile pixelilor de pe coloana din stânga
ferestrei
o Adaugând contribuţiile pixelilor de pe coloana din
dreapta ferestrei
 Determină valoarea mediană a ferestrei folosind valoarea
mediană a ferestrei anterioare, care se ajustează impunând
condiţia:
N
(numărul de pixeli cu intensitate < med) =
2
Aplicaţii

Implementați operațiile aferente filtrului median și algoritmului Huang.

3
Prelucrarea Imaginilor - Laborator 6

Prelucrarea imaginilor în domeniul spaţial (cont.)

Filtre spaţiale de accentuare a contururilor


Operaţia de accentuare a contururilor se utilizează în scopul punerii în
evidenţă a liniilor şi arcelor conţinute intr-o imagine. Deci prin accentuarea
contururilor se pun în evidenţă detaliile dintr-o imagine.
Aspecte legate de contururi:
- Conturul reprezintă o schimbare a nivelelor de gri cu o anumită lungime şi o
localizare precisă;
- Variaţia nivelului de gri de-a lungul conturului este mică, dar variaţia la
traversarea conturului este semnificativă;
- Conturul are o direcţie care este măsurabilă (direcţia tangentei la contur).
Estomparea unei imagini se obţine în domeniul spaţial prin mediere, operaţie
ce este similară integrării. Prin urmare, accentuarea contururilor prin tehnici spaţiale
se obţine prin operatori de derivare spaţială.
Considerăm o funcţie continuă de o variabilă f ( x ) şi analizăm derivatele de
ordinul 1 şi 2 într-o zonă în care au loc variaţii bruşte ale funcţiei (fig. 1).
Se observă că prima derivată produce o îngustare a contururilor. A doua
derivată are un răspuns mai puternic, producând de fapt un dublu răspuns la o variaţie
în rampă a nivelelor de gri. A doua derivată localizează mai bine conturul.
Dezavantajul este că amplifică zgomotul în raport cu prima derivată. În ultima fază
din figură (ne referim la f ( x ) − f ′′ ( x ) care nu este reprezentată) se vede şi
modalitatea în care se poate folosi derivata a doua în accentuarea muchiilor.
Considerăm o funcţie imagine f ( x, y ) continuă
⇒ f ′( x, y ) - corespunde gradientului funcţiei
f ′′( x, y ) - corespunde laplacianului funcţiei.

1
Prelucrarea Imaginilor - Laborator 6

Fig. 1 Graficele functiior f(x) (sus), f’(x) (mijloc) si f”(x) (jos)

2
Prelucrarea Imaginilor - Laborator 6

Gradientul imaginii

 ∂f ( x, y ) 
∂f ( x, y ) → ∂f ( x, y ) →  ∂x  → →
∇f ( x , y ) = i+ j=  =Gx i + G y j
∂x ∂y  ∂f ( x, y ) 
 ∂y 

Amplitudinea (mărimea gradientului) este:

2
 ∂f   ∂f 
2

∇f =   +   = G x2 + G y2
 ∂x   ∂y 

Ceea ce interesează este direcția pentru care apare variația maximă a funcției. Facem
=
trecerea la coordonate polare: x r cos Φ =, y r sin Φ .

∂f ∂f ∂x ∂f ∂y ∂f ∂f
= + = cos Φ + sin Φ
∂r ∂x ∂r ∂y ∂r ∂x ∂y

Impunem condiția de maxim după Φ .


∂  ∂f  ∂f ∂f
  = − sin Φ + cos Φ = 0
∂Φ  ∂r  ∂x ∂y

Deci, variaţia maximă este în direcţia:

 ∂f 
 ∂y 
Φ ( x, y ) =
arctg 
∂f 
 ∂x 
 

În aplicaţii, pentru a nu lucra cu radicali, se aproximează mărimea gradientului prin:

∇f = G x + G y
sau
∇f = {
max Gx , G y . }

3
Prelucrarea Imaginilor - Laborator 6

Aproximarea discretă a gradientului:

∂f f ( x + ∆x, y ) − f ( x, y )
Gx = ≈
∂x ∆x
∂f f ( x, y + ∆y ) − f ( x, y )
Gy = ≈
∂y ∆y

Deoarece ∆x = ∆y = 1 , ⇒

G x = f ( x + 1, y ) − f ( x, y )
G y = f ( x, y + 1) − f ( x, y )

Aceste aproximări corespund convoluţiei funcţiei imagine cu măştile:

 −1 
M1=  −1 1 şi M2 =  
 1 

Observaţii: a) poziţia pixelului curent corespunde primului element al măştii.


b) dacă dorim să avem şi în acest caz măşti de dimensiune impară,
măştile de mai sus pot fi considerate în forma:
 0 
 
=M1 0 −1 1 şi M2=  −1 
 1 
 

Alte aproximări pentru amplitudinea gradientului:

O regiune din imaginea de prelucrat (funcţia f ( x, y ) ) de dimensiune 3x3 o notăm:

x z 4 ↔ f ( x, y )
z 0 ↔ f ( x − 1, y − 1)
 z0 z1 z2 
z1 ↔ f ( x, y − 1)
z
 3 z4 z5 
y z 2 ↔ f ( x + 1, y − 1)
 z6 z7 z8 

z8 ↔ f ( x + 1, y + 1)

Aproximarea făcută anterior este:

Gx = ( z5 − z 4 ) , G y = ( z7 − z4 )

Aproximarea Roberts (gradientul cruce):

4
Prelucrarea Imaginilor - Laborator 6

G x = z8 − z 4 = f ( x + 1, y + 1) − f ( x, y )
G y = z 7 − z 5 = f ( x, y + 1) − f ( x + 1, y )

G x se implementează prin masca:

 −1 0
P= 
 0 1

respectiv G y prin masca:

0 −1
R= 
1 0

Observaţie: poziţia pixelului curent corespunde primului element al măştii.


Cele două măşti implementează aproximarea gradientului:

∇f ≈ z 8 − z 4 + z 7 − z 5

Aproximarea Sobel

- utilizează măşti de dimensiunea 3 × 3 :

Gx = ( z 2 + 2 z5 + z8 ) − ( z0 + 2 z3 + z6 ) = f ( x + 1, y − 1) + 2 f ( x + 1, y ) + f ( x + 1, y + 1) −
f ( x − 1, y − 1) − 2 f ( x − 1, y ) − f ( x − 1, y + 1)
G y = ( z6 + 2 z7 + z8 ) − ( z0 + 2 z1 + z2 )

Măştile corespunzătoare sunt:

5
Prelucrarea Imaginilor - Laborator 6

 −1 0 1
 
Gx →  −2 0 2
 −1 0 1
 
 −1 −2 −1
 
Gy →  0 0 0
1 2 1
 
Ideea de a folosi ponderea 2 este de a obţine o anumită netezire prin mărirea
importanţei centrului.

Fig. 2. Aplicarea aproximării Sobel a gradientului: imaginea originală (stânga),


accentuarea muchiilor pe orizontală (mijloc), accentuarea muchiilor pe verticală
(dreapta)

Obs: Suma coeficienţilor în măştile care implementează gradientul este 0,


indicând faptul că acolo unde funcţia imagine este constantă rezultatul aplicării
produsului de convoluţie cu masca respectivă este zero, similar unui operator de
derivare.

Aproximarea Prewitt

G x = ( z 2 + z 5 + z8 ) − ( z 0 + z 3 + z 6 )
G y = ( z 6 + z 7 + z8 ) − ( z 0 + z1 + z 2 )

Măştile corespunzătoare sunt:

 −1 0 1
 
Gx →  −1 0 1
 −1 0 1
 
 −1 −1 −1
 
Gy →  0 0 0
1 1 1
 

6
Prelucrarea Imaginilor - Laborator 6

Fig. 3. Aplicarea aproximării Prewitt a gradientului: imaginea originală (stânga),


accentuarea muchiilor pe orizontală (mijloc), accentuarea muchiilor pe verticală
(dreapta)

Gradientul este folosit în special în accentuarea contururilor necesară pentru


operaţiile din procesul de segmentare. Gradientul este folosit şi în verificările
industriale la depistarea defectelor unor piese.

Obs. Filtrele de dimensiune 3 × 3 discutate anterior (Prewitt şi Sobel) detectează


discontinuităţile pe verticală şi pe orizontală. Ele pot fi modificate astfel încât
răspunsul să fie mai pronunţat de-a lungul direcţiilor diagonale.

Sobel:
− 2 − 1 0 0 1 2
S xy =  − 1 0 1 S − xy =  − 1 0 1

 0 1 2 − 2 − 1 0

Prewit:
 − 1 − 1 0  0 1 2
Pxy = − 1 0 1 P− xy = − 1 0 1
 0 1 1 − 1 − 1 0

Mărirea imaginilor (zooming)


Dintre modalităţile de zooming amintim:
a) dublarea imaginii;
b) interpolarea liniară.

a) Dublarea imaginii

În cazul dublării imaginii, fiecare linie şi fiecare coloană este dublată. Acest
lucru este echivalent cu întreţeserea unei imagini de dimensiuni M × N cu linii şi

7
Prelucrarea Imaginilor - Laborator 6

coloane de zerouri, pentru a obţine o matrice de dimensiuni 2 M × 2 N şi apoi


convoluţia ei cu o matrice de forma:

1 1 
H = 
1 1 

Rezultă o imagine:

g (m, n) = f (k , l )

m n
unde k =   , l =   , m = 0,2 M − 1, n = 0,2 N − 1 ,
2 2
cu [ x ] reprezentând partea întreagă a valorii x .

Obs. Când se utilizează convoluţia cu matricea H , „pivotul” este H (1,1) (primul


element este H (0,0) ).

b) Interpolarea liniară

Este o multiplicare a imaginii, la care pixelii care se intercalează sunt media


aritmetică a pixelilor vecini din imaginea originală.
Interpolarea liniară se realizează în două etape:
• pe linii;
• pe coloane.
De exemplu, pentru a mări de 2 × 2 o imagine de M × N , interpolarea liniară
de-a lungul liniilor dă:

g int - de dimensiune M × 2 N :
g int (m,2n ) = f (m, n) m = 0, M − 1, n = 0, N − 1

g int (m,2n + 1) =
1
[ f (m, n) + f (m, n + 1)]
2

Pe coloane transformarea este:

g - de dimensiune 2 M × 2 N :
g (2m, n ) = g int (m, n) m = 0, M − 1, n = 0,2 N − 1

g (2m + 1, n ) =
1
[gint (m, n) + gint (m + 1, n)]
2

8
Prelucrarea Imaginilor - Laborator 6

Un rezultat similar se obţine prin convoluţia matricei 2 M × 2 N (obţinută prin


întreţeserea imaginii originale cu o matrice M × N de zerouri), cu matricea:

1 2 1 
H = 2 4 2
1
4
1 2 1

Obs. În cazul produsului de convoluție poziția pixelului curent corespunde


elementului H (1,1) (primul element este H (0,0) ).

Algoritmul folosit în acest caz este ilustrat astfel:

1 0 7 0 1 4 7 3,5
0 0 0 0 interpolare linii 0 0 0 0 
1 7
→  
intretesere cu 0
3 1         →
  3 0 1 0 3 2 1 0,5
   
0 0 0 0 0 0 0 0

1 4 7 3,5 
2 3 4 2 
    → 
interpolare coloane
3 2 1 0,5 
 
1,5 1 0,5 0,25

Interpolarea de ordin superior e posibilă prin intercalarea fiecărei linii şi


coloane cu p linii si p coloane de zerouri şi convoluţia de p ori cu matricea H.

Cerințe

Implementați următoarele operații:

1) Detecția contururilor imaginilor, utilizând filtrele Sobel și Prewitt. Se va


calcula individual gradientul pe orizontală și verticală și apoi se vor compune
cele două rezultate.
2) Funcția de zoom a imaginii, cu factorii de scalare 2x2 (caz în care imaginea
rezultanta este de 4 ori mai mare), prin:
a. dublarea imaginii
b. interpolare liniară
3) Zoom al imaginii cu factori de scalare oarecare, folosind:
a. interpolare nearest neighbor
b. interpolare liniară

9
Prelucrarea Imaginilor - Laborator 7

Prelucrarea imaginilor în domeniul spaţial (cont.)

Domeniul spaţial se referă la mulţimea de pixeli care compun o imagine. Metodele din
domeniul spaţial sunt transformări care operează direct pe aceşti pixeli.
Din punct de vedere al algoritmilor utilizaţi le putem împarţi în:
• Operaţiuni punctuale (accentuarea contrastului, reducerea zgomotului, negativarea
imaginilor, etc)
• Operaţiuni spaţiale (filtrări spaţiale sau procesarea cu măşti)
OpenCV (Open Source Computer Vision) – bibliotecă open-source pentru procesări de imagini.
Documentația se găsește la adresa http://docs.opencv.org/3.1.0/
Imaginile se stochează utilizând un obiect de tip cv::Mat
http://docs.opencv.org/3.1.0/d3/d63/classcv_1_1Mat.html#details . Un aspect important îl
reprezintă faptul că atunci când utilizatorul furnizează unui constructor al unui obiect de tipul
cv::Mat o adresă de memorie (unde se află salvată imaginea), obiectul respectiv nu devine
proprietar al memoriei alocate. Aceasta înseamnă că la apelul destructorului obiectului nu se va
dealoca memoria respectivă.

Operațiuni punctuale:

De exemplu, o funcție de negativare a imaginilor care utilizează structuri și funcții din


OpenCV este:
unsigned char* negateImage(unsigned char* img, int w, int h)
{
unsigned char* result = new unsigned char[w*h];
cv::Mat inMat(h, w, CV_8UC1, img);

cv::Mat negateMat(h, w, CV_8UC1, result);


cv::bitwise_not(inMat, negateMat);

return result;
}

Binarizarea imaginilor – se folosește funcția cv::threshold


(http://docs.opencv.org/3.1.0/d7/d1b/group__imgproc__misc.html#gae8a4a146d1ca78c626a535
77199e9c57 )
Conversie imagini - pentru a efectua conversia de la un spațiu de culoare la altul se folosește
funcția cv::cvtColor
http://docs.opencv.org/3.1.0/d7/d1b/group__imgproc__misc.html#ga397ae87e1288a81d2363b61
574eb8cab
Histograma unei imagini, egalizarea histogramei - funcțiile de calcul și egalizare a
histogramei unei imagini sunt cv::calcHist și cv::equalizeHist
http://docs.opencv.org/3.1.0/d6/dc7/group__imgproc__hist.html

Aplicatia 1.

a) Afisați pentru una din imaginile care însoțesc laboratorul imaginile care rezultă în
urma:
• negativării
• binarizării
b) Afisați o imagine, histograma ei, aceeași imagine cu histograma egalizată și
histograma acesteia

Operațiuni spațiale:
Pentru aplicarea unei măști definite de utilizator se poate utiliza secvența de cod următoare:

unsigned char* sobelImage(unsigned char* img, int w, int h)


{
unsigned char* result = new unsigned char[w*h];

cv::Mat inMat(h, w, CV_8UC1, img);


cv::Mat outMat;

cv::Mat kern = (cv::Mat_<char>(3, 3) << -1, -2, -1, 0, 0, 0, 1, 2, 1);


cv::filter2D(inMat, outMat, inMat.depth(), kern);

cv::Mat absMat(h, w, CV_8UC1, result);


cv::convertScaleAbs(outMat, absMat);

return result;
}

Biblioteca OpenCV are predefinite funcții de calcul pentru procesarea imaginilor în domeniul
spațial, prezentate la adresa http://docs.opencv.org/3.1.0/d4/d86/group__imgproc__filter.html .

Aplicatia 2.

a) Afisați într-o fereastră o imagine și rezultatul aplicării filtrelor


• motion blur pe orizontală (utilizați un filtru de dimensiune 5x5)
• gaussian, utilizând cv::GaussianBlur
• laplacian, utilizând cv::Laplacian
• filtrul Sobel, utilizând cv::Sobel
• media aritmetică, utilizând cv::blur
b) Afișați într-o fereastră o imagine și rezultatul identificării muchiilor pe
• orizontală
• verticală
• pe ambele direcții simultan (prin compunerea celor două rezultate
anterioare utilizând funcții OpenCV de multiplicare element cu element a
două obiecte de tip cv::Mat)
c) Afișati într-o fereastră o imagine și rezultatele aplicării filtrului median pe regiuni
cu următoarele dimensiuni
• 3x3
• 5x5
• 7x7

Instrucţiuni de folosire a bibliotecii OpenCV

Pentru a putea folosi biblioteca OpenCV, paşii ce trebuie urmaţi sunt:

1. Includerea fisierelor header în proiectul propriu:

Adăugarea directorului cu fisierele header OpenCV la lista de directoare suplimentare pentru


fişiere header. Pentru aceasta se accesează meniul:

Project -> Properties -> C/C++ -> General -> Additional Include Directories

La lista de directoare existentă se adaugă directorul


C:\opencv\install_debug\include

Fişierele header necesare pentru realizarea aplicaţiilor din acest laborator sunt:
opencv2/core.hpp
opencv2/imgproc.hpp
opencv2/highgui.hpp

2. Adăugarea fişierului opencv_world330d.lib la lista de biblioteci ale proiectului. Pentru


aceasta se accesează următorul meniu şi se adaugă biblioteca la lista existentă:

Project -> Properties -> C/C++ -> Linker -> Input -> Additional Dependencies

3. Adăugarea directorului unde se află biblioteca de la punctul 2 la lista de directoare de


biblioteci ale proiectului. Pentru aceasta se accesează meniul:

Project -> Properties -> C/C++ -> Linker -> General -> Additional Library Directories

Pentru calculatoarele din laborator, directorul ce trebuie adaugat este:


C:\opencv\install_debug\x64\vc14\lib
4. După compilarea cu succes a proiectului, se copiază fişierul opencv_world330d.dll din
directorul C:\opencv\install_debug\x64\vc14\bin în directorul ce conţine executabilul cu
numele proiectului.

Observaţie: Proiectul trebuie rulat în modul Debug pentru a putea folosi biblioteca si fişierul dll
menţionate mai sus.
Prelucrarea imaginilor - Laborator 8

Prelucrarea imaginilor în domeniul frecvenţelor

1. Transformata Fourier Discretă

Teorema lui Fourier arată că orice funcţie periodică poate fi reprezentată ca o sumă de
termeni sinus şi/sau cosinus (ca o serie Fourier).

Dacă funcţia este neperiodică dar are aria de sub grafic finită, aceasta poate fi
exprimată ca o integrală în funcţie de termeni sinus sau cosinus, multiplicată cu un
anumit factor.

În prelucrarea imaginilor se lucrează cu funcţii discrete şi deci interesează forma


discretă a transformatei Fourier.

Considerăm o funcţie discretă de o singură variabilă,

f ( x), x = 0,1,2,.., M − 1

Atunci transformata Fourier discretă (DFT - Discrete Fourier Transform) este:

M −1 2πux
−j
F (u ) = ∑ f ( x )e M ,u = 0,1,2,..., M − 1
x =0

Reciproc, dată fiind F (u ) , funcţia originală se obţine prin transformata inversă:

M −1 2πux
1 j
f ( x) =
M
∑ F (u )e M
u =0

Pentru cazul unei funcţii discrete bidimensionale (cazul unei imagini) f ( x, y ) de


dimensiuni M × N , transformata Fourier bidimensională este:

M −1 N −1
F (u , v ) = ∑ ∑ f (x, y )e − j 2π (ux / M +vy / N )
x =0 y =0

Inversa transformatei Fourier bidimensionale este dată de:

M −1 N −1
f ( x, y ) =
1
MN
∑ ∑ F (u, v )e j 2π (ux / M +vy / N )
x =0 y =0

Observaţii legate de transformata Fourier discretă:

1
Prelucrarea imaginilor - Laborator 8

 valoarea transformatei în originea domeniului frecvenţei, în F (0,0) , se


numeşte componenta dc ( F (0,0) este de M × N ori valoarea medie a f ( x, y ) )
 valorile transformatei Fourier sunt complexe
 transformata Fourier se analizează vizual prin calcularea unui spectru Fourier
(de mărime F (u , v) ) şi afişara acestuia într-o imagine (spectrul Fourier este
simetric în raport cu originea)
 transformata Fourier rapidă (FFT - Fast Fourier Transform) este un algoritm
rapid pentru calcularea transformatei Fourier discrete.

2. Relaţia dintre Transformata Fourier Discretă şi filtrarea


imaginilor în domeniul spaţial
Următoarea teoremă de convoluţie prezintă o relaţie interesantă între domeniul spaţial
şi domeniul frecvenţă:

f ( x, y ) * h( x, y ) ⇔ H (u , v ) F (u , v)

şi, invers,

H (u , v ) F (u , v) ⇔ f ( x, y ) * h( x, y )

unde simbolul "*" indică convoluţia a două funcţii. Observaţia importantă este că
multiplicarea a două transformate Fourier corespunde convoluţiei asociate funcţiilor
în domeniul spaţial.

Pe baza acestei observaţii, transformata Fourier poate fi folosită pentru a realiza


convoluţia rapidă a imaginilor. Trebuie menţionat însă că pentru imagini mici
prelucrarea direct în domeniul spaţial este mai rapidă.

2.1. Paşii de bază în filtrarea folosind Transformata Fourier Discretă

Filtrarea în domeniul frecvenţelor constă din următorii paşi:

1. calcularea F (u , v) , adică a transformatei Fourier discrete a imaginii


2. multiplicarea lui F (u , v) cu filtrul dorit H (u , v) : G (u , v) = F (u , v) H (u , v)
3. calcularea transformatei Fourier inverse a rezultatului de la pasul 2:
g ( x, y ) = F −1{G (u , v)}

Observaţii:

a. Transformata Fourier inversă este în general o funcţie complexă. Totuşi, când


imaginea de intrare şi funcţia de filtrare sunt reale, componentele imaginare
ale transformatei inverse trebuie să fie nule. Datorita preciziei calculelor chiar
si in acest caz se pot obtine parti imaginare nenule. Din acest motiv se
lucreaza cu partea reala a rezultatului obtinut in pasul 3.

2
Prelucrarea imaginilor - Laborator 8

b. Filtrul H(u,v) poate fi definit direct in domeniul frecventelor sau poate fi


obtinut prin aplicarea transformatei Fourier unui filtru spatial (vezi
lucrarea de laborator anterioara).
c. Atunci cand filtrul H(u,v) este construit avand componenta de frecventa zero
in centrul sau, trebuie ca inainte de aplicarea pasului 2 sa se centreze si
originea imaginii transformate prin multiplicarea imaginii originale f(x,y) cu
(-1)x+y (vezi observaţiile din curs). In acest caz rezultatul obtinut in pasul 2
(imaginea in frecventa filtrata) va fi si el multiplicat cu (-1)x+y inainte de a
realiza transformata Fourier inversa.

2.2. Afișarea spectrului transformatei Fourier

Pentru afișarea valorilor transformatei Fourier (a spectrului) intr-o maniera mai usor
de interpretat, dupa calculul transformatei mai sunt necesari o serie de pasi (acestia
sunt doar pentru afisare, alte operatii cu transformata se fac cu valorile initiale):

- shiftarea originii spectrului: In urma calculului transformatei, componentele de


frecventa mare sunt in centrul spectrului (in centrul imaginii care rezulta), iar
frecventele nule sunt in extremitatile acestuia (in “colturi”). De obicei, este mai usor
de interpretat transformata daca valorile care corespund frecventelor nule sunt in
centru si cele de valoare mare in extremitati. Asadar, in practica se shifteaza (se muta)
originea spectrului a.i. centrul sau sa corespunda componentelor de frecventa nula.
Aceasta se realizeaza cel mai simplu prin intershimbarea cadranelor stanga sus si
dreapta jos, respectiv stanga jos si dreapta sus, din imaginea care rezulta in urma
calcului transformatei:

Shiftarea spectrului transformatei Fourier

Spectrul transformatei Fourier nemodificat (stanga), respectiv shiftat (dreapta). In al doilea caz,
componentele de frecventa nula sunt reprezentate in centrul imaginii.

3
Prelucrarea imaginilor - Laborator 8

- calulul modulului: la afisare intereseaza modulele valorilor transformatei (care sunt


numere complexe), asadar urmatorii pasi se aplica pe aceste module

- logaritmare: pentru a mari luminozitatea imaginii rezultante, se aplica urmatoarea


operatie pe valorile transformatei:

x = log(1+x)

- normalizare: se impart valorile transformatei la valoarea maxima, rezultand astfel


un set de valori in intervalul [0,1].

- scalarea valorilor: pentru a afisa corect valorile, acestea trebuie aduse in intervalul
aferent intensitatilor imaginii care se va afisa. De exemplu, pentru a scala
transformata in intervalul 0-255, se inmultesc valorile normalizate cu 255;

2.3. Filtre trece-jos şi trece-sus în domeniul frecvenţelor

Filtrarea imaginilor se poate face fie calculând filtrul de la pasul 2 prin aplicarea
transformatei Fourier unui filtru din domeniul spaţial, fie specificând direct acest filtru
în domeniul frecvenţelor. În domeniul frecvenţelor se utilizează cu precădere două
tipuri de filtre:

o filtre trece-jos (FTJ), cunoscute ca filtre de netezire


o filtre trece-sus (FTS), cunoscute ca filtre de accentuare

Filtre Trece-Jos

- aplicate unei imagini realizează netezirea acesteia


- atenuează frecvenţele înalte şi lasă frecvenţele joase ale transformatei Fourier
neschimbate
Cele mai utilizate filtre trece-jos sunt:

o filtrul trece-jos idea

1 , D(u , v ) ≤ D0
H (u , v ) = 
0 , D(u , v ) > D0

o filtrul trece-jos Butterworth

H (u , v ) =
1
1 + [ D(u , v ) / D0 ]2 n

o filtrul trece-jos Gaussian

H (u , v ) = e − D (u ,v ) / 2 D0
2 2

4
Prelucrarea imaginilor - Laborator 8

unde D(u , v) reprezintă distanţa de la punctul (u , v) la originea filtrului, iar D0 este


un număr pozitiv specificat (o valoare prag).

Calculul distantei se realizeaza in raport cu originea nemodificata a spectrului


transformatei. Asadar distanta se calculeaza intre punctul (u,v) si punctul din coltul
cel mai apropiat de (u,v):

Distanta fata de un punct oarecare (u,v) din spectru si punctul corespunzator frecventelor nule (originea
spectrului, sau coltul cel mai apropiat de punctul (u,v))

Rezultatul aplicării filtrului trece-jos ideal unei imagini:

Spectrul Fourier al FTJ


Imaginea originală Spectrul Fourier al imaginii
gaussian

Imaginea filtrata cu FTJ


Spectrul imaginii filtrate TJ
gaussian

Observatie: atat imaginea in frecventa cat si filtrul sunt reprezentate cu


componenta de frecventa zero in centrul spectrului

5
Prelucrarea imaginilor - Laborator 8

Filtre Trece-Sus

- aplicate unei imagini realizează accentuarea acesteia (sau evidenţiază muchiile)


- atenuează frecvenţele joase şi lasă frecvenţele înalte ale transformatei Fourier
neschimbate

Un filtru trece-sus (H hp ) este reprezentat adesea în relaţie cu filtrul trece-jos (H lp ):

H hp (u, v ) = 1 − H lp (u , v )

Rezultatul aplicării filtrului trece-sus Gaussian unei imagini:

Spectrul Fourier al FTS


Imaginea originală Spectrul Fourier al imaginii
gaussian

Imaginea filtrata cu FTS


Spectrul imaginii filtrate TS
gaussian

Observatie: atat imaginea in frecventa cat si filtrul sunt reprezentate cu


componenta de frecventa zero in centrul spectrului

Cerințe:

1. Calculați transformata Fourier a unei imagini folosind formula din definiție, și apoi
afisați-o, conform cu cele menționate la punctul 2.2.
Observația 1 - Valorile transformatei sunt numere complexe. Puteți folosi și/
sau completa clasa Complex deja existentă sau se poate folosi std::complex.
Observația 2 – Calculul transformatei Fourier folosind definiția nu este
optimal. Utilizați imagini de mici dimensiuni (max 128x128), altfel procesarea va
dura foarte mult.

6
Prelucrarea imaginilor - Laborator 8

2. Aplicați transformata Fourier pe o imagine, apoi aplicați transformarea inversă.


Interesează doar componentele reale ale valorilor rezultate. Normalizați aceste valori
și înmulțiți-le cu 255 pentru a obtine valori din domeniul 0-255. Afisați imaginea care
se obține (evident, trebuie sa fie aceeași cu imaginea originală).

3. Aplicați filtrul trece-jos Gaussian în domeniul frecvențelor și afișați rezultatul. Pașii


sunt următorii:

- calculul transformatei Fourier a imaginii originale

- aplicarea filtrului, prin înmulțire cu fiecare valoare a transformatei

- aplicarea transformatei inverse asupra rezultatului obținut anterior

- normalizarea valorilor obținute

- înmulțirea valorilor normalizate cu 255

- afișarea imaginii care rezultă - trebuie sa fie o variantă netezită (blurred) a


imaginii originale

7
Prelucrarea imaginilor - Laborator 9

Prelucrarea imaginilor în domeniul frecvenţelor (cont.)

1. Transformata Fourier Discretă

Teorema lui Fourier arată că orice funcţie periodică poate fi reprezentată ca o sumă de
termeni sinus şi/sau cosinus (ca o serie Fourier).

Dacă funcţia este neperiodică dar are aria de sub grafic finită, aceasta poate fi
exprimată ca o integrală în funcţie de termeni sinus sau cosinus, multiplicată cu un
anumit factor.

În prelucrarea imaginilor se lucrează cu funcţii discrete şi deci interesează forma


discretă a transformatei Fourier.

Considerăm o funcţie discretă de o singură variabilă,

f ( x), x  0,1,2,.., M  1

Atunci transformata Fourier discretă (DFT - Discrete Fourier Transform) este:

M 1 2ux
j
F (u )   f ( x )e M ,u  0,1,2,..., M  1
x 0

Reciproc, dată fiind F (u ) , funcţia originală se obţine prin transformata inversă:

M 1 2ux
1 j
f ( x) 
M
 F (u )e M
u 0

Pentru cazul unei funcţii discrete bidimensionale (cazul unei imagini) f ( x, y ) de


dimensiuni M  N , transformata Fourier bidimensională este:

M 1 N 1
F u , v     f x, y e  j 2 ux / M vy / N 
x 0 y 0

Inversa transformatei Fourier bidimensionale este dată de:

M 1 N 1
1
f  x, y     F u, v e j 2 ux / M vy / N 
MN x 0 y 0

Observaţii legate de transformata Fourier discretă:

1
Prelucrarea imaginilor - Laborator 9

 valoarea transformatei în originea domeniului frecvenţei, în F (0,0) , se


numeşte componenta dc ( F (0,0) este de M  N ori valoarea medie a f ( x, y ) )
 valorile transformatei Fourier sunt complexe
 transformata Fourier se analizează vizual prin calcularea unui spectru Fourier
(de mărime F (u , v) ) şi afişara acestuia într-o imagine (spectrul Fourier este
simetric în raport cu originea)
 transformata Fourier rapidă (FFT - Fast Fourier Transform) este un algoritm
rapid pentru calcularea transformatei Fourier discrete.

2. Relaţia dintre Transformata Fourier Discretă şi filtrarea


imaginilor în domeniul spaţial

Următoarea teoremă de convoluţie prezintă o relaţie interesantă între domeniul spaţial


şi domeniul frecvenţă:

f  x, y  * h x, y   H u, v  F (u , v)

şi, invers,

H u , v  F (u , v)  f  x, y  * h x, y 

unde simbolul "*" indică convoluţia a două funcţii. Observaţia importantă este că
multiplicarea a două transformate Fourier corespunde convoluţiei asociate funcţiilor
în domeniul spaţial.

Pe baza acestei observaţii, transformata Fourier poate fi folosită pentru a realiza


convoluţia rapidă a imaginilor. Trebuie menţionat însă că pentru imagini mici
prelucrarea direct în domeniul spaţial este mai rapidă.

2.1. Paşii de bază în filtrarea folosind Transformata Fourier Discretă

Filtrarea în domeniul frecvenţelor constă din următorii paşi:

1. calcularea F (u , v) , adică a transformatei Fourier discrete a imaginii f (x, y)


2. multiplicarea lui F (u, v) cu filtrul dorit H (u, v) : G (u, v)  F (u, v) H (u, v)
3. calcularea transformatei Fourier inverse a rezultatului de la pasul 2:
g ( x, y )  F 1{G (u , v)}

Observaţii:

a. Transformata Fourier inversă este în general o funcţie complexă. Totuşi, când


imaginea de intrare şi funcţia de filtrare sunt reale, componentele imaginare
ale transformatei inverse trebuie să fie nule. Datorita preciziei calculelor chiar
si in acest caz se pot obtine parti imaginare nenule. Din acest motiv se
lucreaza cu partea reala a rezultatului obtinut in pasul 3.

2
Prelucrarea imaginilor - Laborator 9

b. Filtrul H(u,v) poate fi definit direct in domeniul frecventelor sau poate fi


obtinut prin aplicarea transformatei Fourier unui filtru spatial h(x, y) (vezi
lucrarea de laborator anterioara).
c. Atunci cand filtrul H(u,v) este construit având componenta de frecvență zero
în centrul sau, trebuie ca inainte de aplicarea pasului 2 sa se centreze si
originea imaginii transformate prin multiplicarea imaginii originale f(x,y) cu
(-1)x+y (vezi observaţiile din curs). In acest caz rezultatul obtinut in pasul 2
(imaginea in frecventa filtrata) va fi si el multiplicat cu (-1)x+y inainte de a
realiza transformata Fourier inversa.

2.2. Determinarea și afișarea spectrului transformatei Fourier utilizând OpenCV

Pentru afișarea valorilor transformatei Fourier (a spectrului) într-o manieră mai ușor
de interpretat, după calculul transformatei mai este necesară o serie de pași (aceștia
sunt doar pentru afișare, alte operații cu transformata se fac cu valorile inițiale):

Notă: Pentru prototipul și modul de utilizare a funcțiilor menționate mai jos se va


apela la documentația OpenCV (online).

a. Se creează un array cu 2 matrici, utilizând o secvenţă de forma:

Mat planes[] = { Mat_<float>(src), Mat::zeros(src.size(), CV_32F) };

b. Se combină cele două matrici într‐un un array cu 2 canale utilizând funcţia merge. Pe
primul canal se salvează imaginea originală iar al doilea se completează cu zerouri.
Ambele canale trebuie să fie de tip float pe 32 de biţi.
c. Se aplică transformata Fourier discretă pe array‐ul cu 2 canale creat (funcția dft).
Rezultatul va fi de asemenea pe 2 canale. Primul canal va reprezenta partea reală a
transformatei, iar al doilea partea imaginară.
d. Se împarte acest rezultat în cele două canale componente utilizând funcţia split.
e. Se calculează modulul (magnitudinea) celor două componente cu funcţia magnitude.
f. Elementele rezultate vor fi valori reale. La aceste componente, se adaugă valoarea 1.
Se utilizează o instrucţiune de forma:
rezultat += Scalar::all(1);
g. Se logaritmează rezultatul utilizând funcţia log.
h. în urma calculului transformatei, componentele de frecvență mare sunt în centrul
spectrului (în centrul imaginii care rezultă), iar frecvențele nule sunt în extremitățile
acestuia (în “colțuri”). De obicei, este mai usor de interpretat transformata dacă
valorile care corespund frecvențelor nule sunt în centru și cele de valoare mare în
extremități. Asadar, în practică se shiftează (se mută) originea spectrului a.î. centrul
sau să corespundă componentelor de frecvență nulă. Altfel spus, se interschimbă
pixelii din cadranele 1 cu 4 şi 2 cu 3, utilizând o secvenţă de forma

Mat q0(imagine, Rect(0, 0, cx, cy)); // Top‐Left ‐ Create a ROI per


quadrant
Mat q1(imagine, Rect(cx, 0, cx, cy)); // Top‐Right
Mat q2(imagine, Rect(0, cy, cx, cy)); // Bottom‐Left
Mat q3(imagine, Rect(cx, cy, cx, cy)); // Bottom‐Right

3
Prelucrarea imaginilor - Laborator 9

Mat tmp; // swap quadrants (Top‐Left with


Bottom‐Right)
q0.copyTo(tmp);
q3.copyTo(q0);
tmp.copyTo(q3);

q1.copyTo(tmp); // swap quadrant (Top‐Right with


Bottom‐Left)
q2.copyTo(q1);
tmp.copyTo(q2);

i. Se normalizează rezultatul cu funcţia normalize.


j. Se afişează imaginea rezultată.

2.3. Filtre trece-jos şi trece-sus în domeniul frecvenţelor

Filtrarea imaginilor se poate face fie calculând filtrul de la pasul 2 prin aplicarea
transformatei Fourier unui filtru din domeniul spaţial, fie specificând direct acest filtru
în domeniul frecvenţelor. În domeniul frecvenţelor se utilizează cu precădere două
tipuri de filtre:

o filtre trece-jos (FTJ), cunoscute ca filtre de netezire


o filtre trece-sus (FTS), cunoscute ca filtre de accentuare

Filtre Trece-Jos

- aplicate unei imagini realizează netezirea acesteia


- atenuează frecvenţele înalte şi lasă frecvenţele joase ale transformatei Fourier
neschimbate
Cele mai utilizate filtre trece-jos sunt:

o filtrul trece-jos idea

1 , Du , v   D0
H u, v   
0 , Du , v   D0

o filtrul trece-jos Butterworth

1
H u, v  
1  [ Du, v  / D0 ]2 n

o filtrul trece-jos Gaussian

H u , v   e  D u ,v  / 2 D0
2 2

4
Prelucrarea imaginilor - Laborator 9

unde D(u, v) reprezintă distanţa de la punctul (u , v) la originea filtrului, iar D0 este


un număr pozitiv specificat (o valoare prag).

Calculul distantei se realizeaza in raport cu originea nemodificata a spectrului


transformatei. Asadar distanta se calculeaza intre punctul (u,v) si punctul din coltul
cel mai apropiat de (u,v):

Distanta fata de un punct oarecare (u,v) din spectru si punctul corespunzator frecventelor nule (originea
spectrului, sau coltul cel mai apropiat de punctul (u,v))

Rezultatul aplicării filtrului trece-jos ideal unei imagini:

Spectrul Fourier al FTJ


Imaginea originală Spectrul Fourier al imaginii
gaussian

Imaginea filtrata cu FTJ


Spectrul imaginii filtrate TJ
gaussian

Observatie: atat imaginea in frecventa cat si filtrul sunt reprezentate cu


componenta de frecventa zero in centrul spectrului

5
Prelucrarea imaginilor - Laborator 9

Filtre Trece-Sus

- aplicate unei imagini realizează accentuarea acesteia (sau evidenţiază muchiile)


- atenuează frecvenţele joase şi lasă frecvenţele înalte ale transformatei Fourier
neschimbate

Un filtru trece-sus (Hhp) este reprezentat adesea în relaţie cu filtrul trece-jos (Hlp):

H hp u , v   1  H lp u , v 

Rezultatul aplicării filtrului trece-sus Gaussian unei imagini:

Spectrul Fourier al FTS


Imaginea originală Spectrul Fourier al imaginii
gaussian

Imaginea filtrata cu FTS


Spectrul imaginii filtrate TS
gaussian

Observatie: atat imaginea in frecventa cat si filtrul sunt reprezentate cu


componenta de frecventa zero in centrul spectrului

Cerinte:

Dezvoltaţi aplicaţia ACPI pentru a realiza următoarele operaţii:

1. Afisarea unei imagini si a transformatei Fourier a sa (prescurtat, TF).


 pentru calcularea transformatei Fourier Discrete în OpenCv se foloseşte funcţia:
o cv::dft – calculează transformata directă sau inversă a unui array 1D sau
2D. Descrierea funcţiei se găseşte accesând linkul de mai jos:

6
Prelucrarea imaginilor - Laborator 9

http://docs.opencv.org/3.1.0/d2/de8/group__core__array.html#gadd6cf9b
af2b8b704a11b5f04aaf4f39d
 pentru calcularea inversei transformatei Fourier Discrete în OpenCV se foloseşte
funcţia:
o cv::idft – echivalentă cu funcţia cv::dft, dar cu flagul DFT_INVERSE

2. Filtrarea unei imagini in domeniu frecventa pornind de la un filtru gaussian spatial.

- se creeaza un filtru gaussian spatial, de exemplu

[1 4 6 4 1;
4 16 24 16 4;
6 24 36 24 6;
4 16 24 16 4;
1 4 6 4 1]

- se determina TF a acestui filtru. Rezultatul trebuie sa aiba aceleasi dimensiuni ca si


imaginea de la care se porneste

- se inmultesc valorile TF ale imaginii cu cele ale TF a filtrului

- se determina si se afiseaza TF inversa a rezultatului (care ar trebui sa fie o imagine


netezita (engl. blurred) )

Comparati imaginea obtinuta cu imaginea care se obtine in urma unei filtrari in


domeniul spatial, cu acelasi filtru.

3. Filtrarea unei imagini in domeniul frecventa pornind de la un filtru gaussian in


domeniul frecventa.

- se determina valorile filtrului gaussian folosind operatia descrisa la punctul 2.3.


Filtrul trebuie sa aiba aceleasi dimensiuni ca si imaginea.

- se inmultesc valorile TF ale imaginii cu cele ale filtrului

- se determina si se afiseaza TF inversa a rezultatului (care ar trebui, de asemenea, sa


fie o imagine netezita)

Comparati rezultatul cu imaginile obtinute anterior.

7
Prelucrarea Imaginilor - Laborator 10

Segmentarea imaginilor (1)

Scopul segmentarii imaginilor este de a separa obiectele dintr-o imagine


(scena) de fundal. In general, algoritmii utilizati in segmentare se bazeaza pe doua
caracteristici ale intensitatii pixelilor: discontinuitate si similaritate.
In prima categorie, algoritmii realizeaza partitionarea unei imagini folosind
variatiile bruste ale intensitatii (ex. segmentarea prin detectarea muchiilor).
Algoritmii din cea de-a doua categorie partitioneaza imaginea in regiuni care
sunt asemanatoare, pe baza unor criterii prestabilite. Dintre metodele din a doua
categorie putem aminti:
- segmentarea cu prag
- dezvoltarea regiunilor (segmentarea prin extindere)
- segmentarea prin divizare si unificare (split and merge)

1. Segmentarea prin delimitarea cu prag


Delimitarea cu prag este utila cand caracteristicile de intensitate sunt suficiente
pentru a individualiza un obiect dintr-o imagine. Valorile caracteristicilor de
intensitate se aleg astfel incat un interval de intensitati sa fie caracteristic pentru un
singur obiect din imagine.
Metodele de segmentare cu prag se folosesc in cazul imaginilor cu niveluri de
gri, imagini binare (documente tiparite, desene, grafice etc), in cazul imaginilor color
si a celor multispectrale.
Metodele de prag pot fi :
- globale (un singur prag pentru toata imaginea)
- locale (pragul variaza in cadrul unei imagini)

In cazul unor imagini cu niveluri de gri, alegerea unui prag inseamna


impunerea unui nivel de gri care separa obiectele de fundal. In cazul unui singur prag
T:

1 f ( x, y ) T
g ( x, y )  
0 f ( x, y )  T

1 – semnifica obiecte, 0 - fundal

Se pot impune:

- praguri de banda

1 , pt. f ( x, y )  D
g ( x, y )  
0 in rest

- praguri multiple

1
Prelucrarea Imaginilor - Laborator 10

r1 , pt. f ( x, y )  D1
r , pt. f ( x, y )  D
 2 2

g ( x, y )  
r , pt. f ( x, y )  D
n n

0 , in rest
- semipraguri - elimină pixelii din imagine cu un nivel de gri situat sub un
anumit prag, punând 0 (negru) în locul acestora. Pixelii ce depăşesc nivelul
stabilit rămân neschimbaţi (“mascare” a fundalului):

 f ( x, y ) , pt. f ( x, y )  T
g ( x, y )  
 0 , pt. f ( x, y )  T

Alegerea pragului se poate face astfel:


- se examineaza histograma imaginii pentru localizarea varfurilor si
adanciturilor acesteia
- se face delimitarea adaptiva, prin examinarea histogramelor vecinatatilor
locale

Sa consideram o histograma a unei imagini in nuante de gri, imagine ce


contine obiecte luminoase pe un fond intunecat (fig. 1).

Fig. 1

Pentru a extrage obiectele de fundal se selecteaza pragul de valoare T. Se


considera ca obiectele si fundalul au, fiecare, mai multe nuante de gri.
In figura 2 se arata cazul a doua tipuri de obiecte luminoase pe un fond
intunecat:

Fig. 2
In acest caz avem doua praguri. Pentru f ( x, y )  T1 avem fundalul, pentru
T1  f ( x, y )  T2 un obiect, iar pentru T2  f ( x, y ) al doilea obiect.

2
Prelucrarea Imaginilor - Laborator 10

Funcţii OpenCV utile în segmentare:

- binarizarea imaginii – threshold, cu parametrul cv::THRESH_BINARY,


si o valoare prag aleasa de utilizator

- calcularea pragului folosing metoda Otsu – threshold, cu parametrul


cv::THRESH_BINARY + cv::THRESH_OTSU, si valoarea prag 0
-
- etichetarea componentelor conectate intr-o imagine alb-negru –
connectedComponents

Observatie:

Operatiile morfologice ce se pot aplica imaginilor binare: umplere, eroziune, dilatare,


deschidere (eroziune + dilatare), închidere (dilatare + eroziune):
· umplere (eng. fill) – operatia de colorare a unor zone de imagine ce contin pixeli cu
acelasi nivel de gri;
· eroziune – operatie morfologica ce realizeaza scaderea ariei unei zone de 1 dintr –o
imagine binara urmarind frontierea acesteia, pe interior, cu un element morfologic
dat;
· dilatare – operatia inversa eroziunii, realizata prin urmarirea frontierei cu elementul
model pe exteriorul suprafetei;
· deschidere – operatie realizata prin eroziune si dilatare succesiva cu acelasi element
– are ca efect eliminarea zonelor albe dintr-o imagine binara, de dimensiuni de pâna la
dublul dimensiunilor elementului morfologic folosit.
· închidere – operatie realizata prin dilatare si eroziune succesiva cu acelasi element –
are un efect analog deschiderii, dar elimina din zonele albe „insulele” de negru de
dimensiuni mici.

Aplicatii
Implementați următoarele operații:

1. Determinati pragul de segmentare prin urmatoarele metode:

a. Calculati pragul de segmentare folosind metoda Otsu (functia


threshold);
b. Calculati pragul de segmentare folosind urmatoarea metoda iterativa:

3
Prelucrarea Imaginilor - Laborator 10

Pentru valoarea initiala a pragului se poate utiliza valoarea medie a intensitatii din
imagine (atunci cand obiectul si fondul ocupa regiuni de dimensiuni similare) sau
valoarea mediana intre intensitatile minima si maxima din imagine (atunci cand
obiectele de interes sunt mici in raport cu aria acupata de background – in acest caz nu
se poate utiliza valoarea medie deoarece un grup de pixeli va domina histograma
imaginii).

2. Afisati imaginea initiala si rezultatul segmentarii. Ex:

3. Afisati o imagine ce conține componentele etichetate din imaginea binarizată


(rezultatul functiei connectedComponents, adus in intervalul 0-255) :

4
Prelucrarea Imaginilor - Laborator 10

4. Identificati obiectele individuale din imagine folosind rezultatul anterior, apoi


afisati, pentru cateva din aceste obiecte, atat variantele lor segmentate, cat si cele
din imaginea initiala. Ex:

4. Utilizati operatiile morfologice de dilatare, eroziune, deschidere si/sau inchidere


pentru a incerca sa corectati erorile care apar la segmentarea cu prag (regiunile negre
din interiorul monedelor). Pentru operatiile mentionate, incercati elemente structurale
de diverse forme (dreptunghi, cerc etc).
Un element structural se generează folosind functia getStructuringElement, pentru
care parametrii importanti sunt tipul elementului (MORPH_ELLIPSE,
MORPH_RECTANGLE etc.) si dimensiunea sa (Ex. Size(10, 10) )
Operațiile morfologice se aplica folosind functia morphologyEx, cu parametrul
corespunzator operatiei dorite (MORPH_DILATE, MORPH_ERODE,
MORPH_OPEN sau MORPH_CLOSE)

De exemplu, operatia de deschidere genereaza urmatorul rezultat:

5. Izolati obiectele din imagine si afisati-le (extrageti din imagine cel mai mic
dreptunghi care incadreaza obiectele individuale). Ex:

5
Prelucrarea Imaginilor - Laborator 10

6. Pentru objectele astfel extrase, realizati segmentarea utilizand un prag calculat


individual (local) pentru fiecare obiect separat. Verificati daca exista diferente fata
de segmentarea realizata la punctele anterioare.

6
Prelucrarea imaginilor - Laborator 11

Segmentarea imaginilor (2)


Scopul segmentarii imaginilor este de a separa obiectele dintr-o imagine
(scena) de fundal. In general, algoritmii utilizati in segmentare se bazeaza pe doua
caracteristici ale intensitatii pixelilor: discontinuitate si similaritate. In prima
categorie, algoritmii realizeaza partitionarea unei imagini folosind variatiile bruste ale
intensitatii (ex. segmentarea prin detectarea muchiilor). Algoritmii din cea de-a doua
categorie partitioneaza imaginea in regiuni care sunt asemanatoare, pe baza unor
criterii prestabilite. Dintre metodele din a doua categorie putem aminti:
- segmentarea cu prag
- dezvoltarea regiunilor (segmentarea prin extindere)
- segmentarea prin divizare si unificare (split and merge)

Segmentarea prin extindere (Region Growing)


În cazul segmentării prin extindere se pleacă de la pixeli „germeni” (seeds) în
jurul cărora se vor forma regiunile. Aceştia sunt, de regulă, aleşi de utilizator, într-un
mod controlat. Pixelii „germeni” pot fi aleşi şi automat, ca pixeli a căror intensitate
corespunde unuia dintre vârfurile histogramei.

Plecând de la astfel de pixeli se formează in jurul lor regiuni, adăugând


interactiv pixeli vecini care satisfac criteriul de similaritate. Segmentarea prin
extindere se bazează, în principal, pe:
• o regulă care descrie mecanismul de extindere
• o regulă de verificare a omogenităţii regiunilor, după fiecare pas de extindere

Considerăm că R reprezintă regiunea întregii imagini. Procesul de segmentare


poate fi văzut ca partiţionarea lui R în subregiunile R1 , R2 , ... , Rn astfel încât:
n
a) R = U Ri
i =1

b) Ri , i = 1, n , este o regiune conectată, în sensul că pixelii regiunii sunt conectaţi


între ei
c) Ri ∩ R j = ∅ pentru ∀i ≠ j
d) P( Ri ) = TRUE pentru ∀i = 1, n
e) P( Ri ∪ R j ) = FALSE pentru ∀i ≠ j

În relaţiile anterioare s-a notat prin P criteriul de similaritate. De exemplu,


relaţia d) înseamnă că toţi pixelii regiunilor Ri satisfac acelaşi criteriu (un criteriu
poate fi că au acelaşi nivel de gri).
Algoritmul de segmentare prin extindere poate fi rezumat astfel:

în fiecare pas K
pentru fiecare regiune R i (k) , i = 1, n
• se verifică dacă există pixeli neclasificaţi în vecinătatea de 4(8) pixeli a
fiecărui pixel de pe fontiera regiunii
• un pixel vecin, X, este adăugat la regiune dacă P( Ri( k ) ∪ {x}) = TRUE

1
Prelucrarea imaginilor - Laborator 11

Algoritmul se termină atunci când într-o iteraţie numărul de pixeli clasificaţi nu s-a
modificat (nici o regiune nu s-a putut extinde).

Aplicaţii

1. Completați funcţia recursivă de mai jos care implementează algoritmul region


growing.

void recursive_region_growing(int x, int y, unsigned char *segmMask, unsigned char *image, int
w, int h, unsigned char seedValue, unsigned char threshold)
{
//testam daca pixelul current este in interiorul imaginii si daca nu a fost deja
inclus in masca de segmentare
if (x >= 1 && y >= 1 && (x < w - 1) && (y < h - 1) && segmMask[y*w + x] == 0)
{
segmMask[y*w + x] = 255;
x = x - 1;
//se parcurg cei 4 pixeli vecini ai pixelului curent
//daca pixelul vecin indeplineste criteriul de incluziune, se apeleaza functia
recursiv pentru acel pixel
if (abs(image[y*w + x] - seedValue) < threshold)
{
recursive_region_growing(x, y, segmMask, image, w, h, seedValue,
threshold);
}
.. .. ..

}
}

2. Modificați funcția recursivă astfel încât pentru fiecare pixel să se parcurgă toți
cei 8 vecini ai săi.

3. Utilizaţi funcţia cv::floodFill pentru a implementa algoritmul region growing


utilizând OpenCV.
Obs: pentru parametrul flags, se va utiliza valoarea
4 | cv::FLOODFILL_FIXED_RANGE. Acesta valoare semnifică faptul că 4
vecini sunt consideraţi şi că intensităţile pixelilor candidaţi se vor compara cu
intensitatea pixelului seed original şi nu cu intensităţile pixelilor vecini.

4. Modificaţi aplicaţiile anterioare pentru a putea dezvolta regiuni în jurul mai


multor puncte seed cu aceeaşi valoare.

5. Scrieți o aplicație care să afișese imaginea într-o fereastră OpenCV și să


permită plasarea punctelor seed cu mouse-ul.
Vezi funcțiile: namedWindow, imread, imshow, setMouseCallback

Exemple (pagina următoare):

2
Prelucrarea imaginilor - Laborator 11

Imaginea inițială (reprezintă o imagine x-ray a unor puncte de sudură ce prezintă


unele imperfecțiuni, pe care dorim să le identificăm):

Region growing folosind:

- funcția recursivă (stânga)


- cv::floodFill (dreapta)

aplicate individual pe trei puncte seed cu următorii parametri:

P1: x=120, y=218, seedValue=255, threshold=40


P2: x=250, y=215, seedValue=255, threshold=80
P3: x=380, y=210, seedValue=255, threshold=110

3
Prelucrarea imaginilor - Laborator 12

Segmentarea imaginilor (3)


Scopul segmentarii imaginilor este de a separa obiectele dintr-o imagine
(scena) de fundal. In general, algoritmii utilizati in segmentare se bazeaza pe doua
caracteristici ale intensitatii pixelilor: discontinuitate si similaritate. In prima
categorie, algoritmii realizeaza partitionarea unei imagini folosind variatiile bruste ale
intensitatii (ex. segmentarea prin detectarea muchiilor). Algoritmii din cea de-a doua
categorie partitioneaza imaginea in regiuni care sunt asemanatoare, pe baza unor
criterii prestabilite. Dintre metodele din a doua categorie putem aminti:
- segmentarea cu prag
- dezvoltarea regiunilor (segmentarea prin extindere)
- segmentarea prin divizare si unificare (split and merge)

Segmentarea prin metoda bazinelor hidrografice (Watershed)

Conceptul de bazine hidrografice este bazat pe interpretarea imaginii sub


forma unei suprafete topografice. In aceasta interpretare sunt considerate trei tipuri de
puncte: (a) puncte de minim regional; (b) puncte in care, daca s-ar plasa o picatura de
apa, aceasta s-ar scurge cu siguranta spre un singur punct de minim; si (c) puncte din
care apa s-ar scurge cu probabilitate egala spre mai multe puncte de minim. Pentru o
valoare de minim regional setul de puncte care satisfac conditia (b) se numeste bazin
de colectare (eng. watershed) al acelui minim. Punctele care satisfac conditia (c)
formeaza cumpana apelor, crestele suprafetei topografice, si se numesc linii de
divizare (eng. watershed lines). Principalul obiectiv al algortimilor de segmentare
bazati pe aceste concepte este de a determina liniile de divizare (Figura 1).

Cel mai rapid algoritm watershed este cel propus de Luc Vincent si de Pierre
Soille, ilustrat in Figura 2 si de urmatorii pasi:

Pasul 1: Se sorteaza toti pixelii din imagine in functie de intensitate. Odata sortati, se
poate opera asupra pixelilor la niveluri succesive de gri, precum o inundatie ar
progresa in imagine crescand odata cu nivelurile de gri.
Pasul 2: Se determina pixelii cu cea mai mica valoare de gri din imagine Figura 2
(a). Pixelilor din fiecare vecinatate conectata li se asociaza o eticheta.
Pasul 3: Pixelii sunt procesati in ordinea nivelurilor de gri. Pentru fiecare nivel de gri,
pixelii care au vecini etichetati sunt adaugati intr-o coada cu prioritati ca in Figura 2
(b). Se determina eticheta pixelului din capul cozii pe baza vecinilor etichetati si se
scoate pixelul din coada. Dupa procesarea tuturor pixelilor cu vecini etichetati, se
proceseaza pixelii ramasi prin asocierea unei noi etichete ca in cazul bilei negre din
Figura 2 (b).
Pasul 4: Dupa etichetarea tuturor pixelilor, granitele obtinute intre regiunile cu
etichete diferite reprezinta liniile de divizare (watersheds) ale imaginii. In Figura 2
(c) suprafata este divizata in patru regiuni si sunt detectate trei linii de divizare.

1
Prelucrarea imaginilor - Laborator 12

Figura 1 Figura 2

Urmatoarea figura ilustreaza rezultatul aplicarii algoritmului watershed pe o imagine


binara. Exemplul demonstreaza motivul pentru care aceasta metoda este foarte
potrivita pentru segmentarea obictelor alaturate sau suprapuse.

(a) Imaginea originala; (b) Transformata distanta aplicata imaginii originale. Aceasta
nu este utila pentru aplicarea metodei watershed deoarece contine un singur bazin de
colectare. (c) Transformata distanta aplicata complementului imaginii originale. (d)
Negativul transformatei distanta de la punctul (c) in care zonele luminoase au fost
transformate in bazine de colectare. (e) Rezultatul aplicarii metodei watershed.

Din acest exemplu se poate observa ca obiectele au fost perfect separate.


Totusi, imaginea contine doua obiecte cu forma perfect rotunda. Din acest motiv
negativul transformatei distanta furnizeaza valori minime si bazine de colectare
corecte.

Aplicații:

Implementați algoritmul watershed folosind OpenCV

Funcția corespunzătoare din OpenCV se numește watershed. Aceasta


primește ca parametri imaginea inițială și o matrice de markeri ce conține puncte-
reper după care se ghidează algoritmul. Această matrice are aceleași dimensiuni ca și
imaginea inițială.

2
Prelucrarea imaginilor - Laborator 12

Markerii trebuie să indice două elemente:


- regiuni din imagine despre care se știe sigur ca sunt în interiorul
obiectelor care se doresc identificate
- regiuni din imagine despre care se știe sigur că aparțin background-ului

Restul poziților din matricea markerilor constituie regiuni de incertitudine.


Algoritmul watershed va opera cu aceste regiuni și va încerca identificarea cât mai
corectă a obiectelor vizate.

Pașii necesari sunt următorii:

1) Realizarea unei segmentări grosiere a imaginii, folosind segmentarea cu prag


(se poate utiliza metoda Otsu, vezi lab. anterioare)

Se observă că apar unele erori de segmentare: cavități în interiorului obiectelor și


puncte singulare în exteriorul lor.

2) Corectarea erorilor de segmentare: vom folosi operațiile morfologice de


închidere, pentru cavitățile interioare, respectiv deschidere pentru punctele
exterioare (vezi lab. anterioare)

3
Prelucrarea imaginilor - Laborator 12

3) Identificarea regiunilor care aparțin cu certitudine background-ului: realizăm o


dilatare morfologică a imaginii obținute la punctul (2), în urma căreia
contururile exterioare ale obiectelor vor fi ușor exagerate. Avem garanția ca
restul regiunilor rămase aparțin background-ului. Ca element structural putem
folosi un cerc de rază relativ mică.

In imaginea din dreapta, avem garanția că regiunile negre aparțin background-ului.


Cele albe sunt fie regiuni din interiorul obiectelor, fie regiuni incerte.

4) Determinarea transformatei distanță: pentru fiecare pixel din imagine se


determină distanța până la cel mai apropiat pixel de intensitate 0. Vom folosi
funcția distanceTranform, cu parametrul distanceType de valoare DIST_L2,
aplicată pe negativul imaginii obținute la punctul (2).

4
Prelucrarea imaginilor - Laborator 12

5) Identificarea regiunilor care aparțin cu certitudine interioarelor obiectelor:


Vom face o segmentare cu prag a transformatei distanță (funcția threshold cu
ultimul parametru THRESH_BINARY). Pragul poate fi, de exemplu, un
procentaj din valoarea maximă a transformatei (eg. max*0.8).
Putem identifica valorile maxime și minime ale unei matrici folosind funcția
minMaxLoc.

6) Separăm regiunile anterioare pe obiecte folosind funcția


connectedComponents (vezi lab. anterioare). Funcția generează o matrice
care conține valori de 0 pentru background și valori nenule pentru fiecare
obiect conex identificat, în ordine ascendentă. Dacă dorim să afișăm aceste
valori, le vom normaliza și le vom rescala în intervalul 0-255.

5
Prelucrarea imaginilor - Laborator 12

7) Din masca determinată la punctul (3) vom elimina regiunile obținute anterior.
Rezultă astfel o mască ce conține regiunile de incertitudine. Se poate folosi
funcția setTo :

matrice.setTo(valoare, condiție)

8) Construim matricea completă a markerilor folosind rezultatele anterioare:

- Adunăm valoarea 1 la toate elementele matricii de la punctul (6).


Așadar, background-ul va avea valoarea 1, iar centrele obiectelor vor
avea valorile 2, 3, etc.

- În matricea astfel obținută, setăm pe 0 elementele care corespund regiunilor de


incertitudine (regiunile cu valori nenule din matricea de la punctul (7);
din nou putem folosi funcția setTo)

6
Prelucrarea imaginilor - Laborator 12

Rezultă o matrice unde regiunile de incertitudine sunt nule, background-ul are


valoarea 1, iar regiunile care corespund centrelor obiectelor au valori >1.
Această matrice conține markerii de care are nevoie watershed. În imaginea de
mai jos, regiunile de incertitudine au fost marcate cu albastru.

9) Acum putem utiliza funcția watershed.

- funcția operează pe imagini RGB (cele utilizate până acum au fost


grayscale), așadar prima dată convertim imaginea inițială în RGB
(funcția cvtColor cu ultimul parametru CV_GRAY2RGB)
- apelăm funcția watershed. Parametrii sunt imaginea în format RGB,
respectiv matricea de markeri de la punctul (8)

Funcția va modifica matricea de markeri și va seta elementele fiecărei regiuni


identificate (regiunile corespunzătoare fiecărui “bazin”) pe valori nenule.
Pozițiile ce corespund marginilor bazinelor (contururile obiectelor identificate)
vor fi setate pe -1. Putem folosi funcția setTo, aplicată imaginii inițiale, pentru
a scoate în evidență aceste contururi.
Imaginile de mai jos ilustrează rezultatul algorithmului.

7
Prelucrarea imaginilor - Laborator 12

8
Prelucrarea Imaginilor - Laborator 13

Modele (spatii) de culoare

1. Modelul RGB
2. Modelul CMY(K)
3. Modelul YIQ (NTSC)
4. Modelul HSI
5. Spatiul de culori CIE-XYZ
6. Sistemul CIELAB (L*a*b*)

Exista mai multe modele (spatii, sisteme) de culoare, scopul definirii acestora
fiind de a facilita specificarea culorii in anumite standarde. Unele dintre aceste modele
se orienteaza catre echipamente (de afisare - RGB, de imprimare - CMY), altele se
bazeaza pe prorpietatile psiho-fiziologice, fiind orientate catre utilizator (HSI, HSV,
HSB).
In esenta, un model de culoare specifica un sistem de coordonate si un subspatiu
de valori, astfel incat in acest sistem orice culoare se poate reprezenta printr-un singur
punct.

1. Modelul RGB

Subspatiul culorilor este cubul unitate, definit in sistemul de coordinate carteziene


3D. O culoare se specifica prin valori reale cuprinse in intervalul [0,1]. Nuantele de
gri sunt reprezentate prin punctele diagonalei principale (Fig. 1).
RGB is a device-dependent color space: different devices detect or reproduce a
given RGB value differently, since the color elements (such as phosphors or dyes) and
their response to the individual R, G, and B levels vary from manufacturer to
manufacturer, or even in the same device over time. Thus an RGB value does not
define the same color across devices without some kind of color management.
Typical RGB input devices are color TV and video cameras, image scanners, and
digital cameras. Typical RGB output devices are TV sets of various technologies
(CRT, LCD, plasma, etc.), computer and mobile phone displays, video projectors,
multicolor LED displays, and large screens as JumboTron, etc. Color printers, on the
other hand, are not RGB devices, but subtractive color devices (typically CMYK
color model).
Prelucrarea Imaginilor - Laborator 13

Fig. 1. Spatiul RGB

Alegerea culorilor primare R, G si B este legata de fiziologia ochiului uman (vezi


ANEXA 1)

2. Modelul CMY(K)

Este utilizat pentru specificarea culorilor la dispozitive de imprimare. Cyan,


Magenta Yellow sunt culori secundare, sau, altfel spus, culori primare ale pigmentilor.

Fig. 2. Model substractiv de culoare, foloseste cerneala pentru afisarea culorilor.


Culorile sunt rezultatul luminii reflectate. Cyan+Magenta+Galben=Negru

Conversia este realizata prin operatia:


 C  1  R 
 M   1  G  (1)
    
 Y  1  B 
unde valorile C,M,Y sunt normalizate in domeniul [0,1].

Conversia inversa, CMY  RGB este:


 R  1  C 
G   1   M  (2)
    
 B  1  Y 
Prelucrarea Imaginilor - Laborator 13

In general, datorita imperfectiunilor cernelurilor, prin amestecul in proportii


maxime ale celor trei pigmenti, nu se obtine negru. De aceea, in loc de CMY se
utilizeaza sistemul CMYK:
K  min{C , M , Y }
C C  K
(3)
M M K
Y Y  K

3. Modelul YIQ (NTSC)

Este o recodificare a modelului RGB, stabilita de catre NTSC prin care s-a urmarit
compatibilizarea imaginilor color cu cele alb-negru. Prin specificarea culorilor in YIQ
se evita problema TV urmatoare: doua culori diferite in RGB pot sa apara la fel pe un
ecran alb-negru.
Problema este evitata asigurandu-se ca doua culori intre care ochiul uman face
distinctie va avea valori distincte ale luminozitatii – componenta Y. Modelul se
bazeaza pe faptul ca sistemul vizual este mai sensibil la schimbari ale luminozitatii
decat ale nuantei sau saturatiei (I si Q).
Y  0.299 0.587 0.114   R 
 I   0.596  0.274  0.322  G  (4)
     
Q   0.211  0.523 0.312   B 

4. Modelul HSI

Este un model bazat pe perceptia umana a culorii, utilizand nuanta (Hue),


saturatia (Saturation) si intensitatea (Intensity).
Artistii precizeaza culorile prin tente, nuante, tonuri. Pornind de la un pigment
pur, un artist adauga alb pentru a obtine o tenta, negru pentru a obtine o nuanta, alb si
negru pentru a obtine o tonalitate a culorii.
Prelucrarea Imaginilor - Laborator 13

Conversia RGB  HSI :

Din figurile 6.12 si 6.13, avand in vedere considerente geometrice, rezulta


 , BG
H  (5)
2   , B  G
1
( R  G)  ( R  B)
cu   arccos 2 (6)
( R  G ) 2  ( R  B)(G  B)

S 1
3
min{ R, G, B} (7)
RGB
1
I  ( R  G  B) (8)
3

Conversia HSI  RGB :

a) sectorul RG: O  H  120

B  I (1  S ) (9)
 S cos H 
R  I 1   (10)
 cos(60  H ) 
G  3I  ( R  B ) (11)
b) sectorul GB: 120  H  240 :
Prelucrarea Imaginilor - Laborator 13

H  H  120 (12)
R  I (1  S ) (13)
S cos H
G  I (1  ) (14)
cos(60  H )
B  3I  ( R  G ) (15)
c) sectorul BR: 240  H  360 :

H  H  240 (16)
G  I (1  S ) (17)
S cos H
B  I (1  ) (18)
cos(60  H )
R  3I  (G  B ) (19)

5. Spatiul de culori CIE-XYZ

Spatiul RGB are coeficienti r,g,b care pot fi si negativi (Fig. 3). Culorile fizic
realizabile prin amestecul aditiv de culori primare constituie gamut-ul de culoare RGB
si sunt situate intr-un cub. Exista culori fizice ce nu pot fi sintetizate prin amestecul
aditiv cu coeficienti pozitivi al componentelor primare RGB. Spatiul RGB este cu
variatie neuniforma (distantele euclidiene nu corespund distantelor perceptuale dintre
culorile corespunzatoare).

Fig. 3 Spatiul RGB are coeficienti negativi


Prelucrarea Imaginilor - Laborator 13

Fig. 4. Spatiul XYZ are coeficienti pozitivi

Pentru a elimina valorile negative la precizarea unei culori s-au definit trei culori
virtuale, notate X, Y, Z, care nu mai prezinta inconvenientul precizat (Fig. 4). Aceste
culori constituie valorile fundamentale in sistemul tricromatic CIE (Commission
Internationale de l'Éclairage). Valorile respective sunt de fapt denumite coordonate
tricromatice sau valori tristimul.
XYZ este transformarea liniara a valorilor sistemului RGB astfel incat:
- orice culoare fizica monocromatica sa fie caracterizata de valori tristimul
pozitive;
- componenta Y sa fie o masura a luminantei;
- pentru lumina alba valorile tristimul sa fie egale.

Astfel, conversia RGB  XYZ si invers este data in Fig. 5.

Fig. 5 Conversia RGB-XYZ, respectiv XYZ-RGB

6. Sistemul CIELAB (L*a*b*)

Although both RGB and CMYK color models are extremely useful for color
representation, color processing, and also for development of hardware, these models
are in no way similar to the human vision model. One of the major limitations of the
RGB color space is that it is a non-uniform one. Uniform color space is one in which
the Euclidean color distance between two color points at any part of the color space
corresponds to the perceptual difference between the two colors by the human vision
Prelucrarea Imaginilor - Laborator 13

system. In non-uniform color spaces, on the other hand, two different colors at a
distance d apart in one part of the color space does not exhibit the same degree of
perceptual difference as two other colors a t the same distance apart in another part of
the color space. In imaging applications, perceptually uniform color spaces are of
great importance. Based on the physiological knowledge of human vision, the non-
uniform RGB space needs to be mapped into new perceptually uniform spaces.

The CIELAB color space, which was adopted as an international standard in the
1970 by CIE is indeed a perceptually uniform space. The Euclidean distance between
two color points in the CIELAB color space corresponds to the perceptual difference
between the two colors by the human vision system. This property of the CIELAB
color space has made it particularly attractive and useful for color analysis, and the
superiority of the CIELAB color space over other color spaces has been demonstrated
in many color image applications. For example the CIELAB color space has been
successfully used for color clustering. In this approach the color difference in the
CIELAB color space has been used in the computation of the dissimilarities between
colors and this has been used for color clustering. The color difference formula in the
CIELAB color space is used in the computation of the dissimilarities between colors
and the formulation of the color membership function.

Sistemul CIELAB este independent de dispozitiv. Coordonatele tricromatice


X,Y,Z sunt transformate in alte trei coordonate:
L* - luminozitate (L*=0 yields black and L*=100 indicates white)
a* - coordonata rosu-verde - position between red and green (negative values
indicate green while positive values indicate red)
b* - coordonata galben-albastru - position between yellow and blue respectively
(negative values indicate blue and positive values indicate yellow).

Fig. 6. Modelul CIELAB

Y
L*  116h( )  16 (20)
Y0
 X Y 
a*  500h( )  h( )  (21)
 X0 Y0 
Prelucrarea Imaginilor - Laborator 13

 Y Z 
b*  200h( )  h( ) (22)
 Y0 Z0 
 3 q, q  0.008856

unde h(q)   16 (23)
7.787q  116 , q  0.008856
iar X 0 , Y0 , Z 0 - coordonate tricromatice care se obtin in cazul unui material cu
suprafata reflectanta perfect alba.
Caracteristici ale spatiului CIELAB:
- este colorimetric – culorile percepute identic sunt codificate identic;
- este perceptual uniform – diferentele de culoare datorate nuantelor diferite
sunt percepute uniform;
- este independent de dispozitiv;
- realizeaza o decuplare a luminozitatii de culoare.

Spatiul L*a*b* este utilizat in marea majoritate a aplicatiilor de analiza automata


a culorilor. Diferenta de culoare E * dintre doua culori se calculeaza prin distanta
euclidiana:
E*  ( L*2  L*1 ) 2  (a 2*  a1* ) 2  (b2*  b1* ) 2 (24)

Spatiul L*a*b* este folosit pentru masurarea culorii unui obiect.

Aplicatii:

1. Realizati egalizarea histogramei unei imagini color


a. in spatiul RGB, pe componente
b. in spatiul HSI, pe componenta I
Comparati rezultatele obtinute.

2. Netezirea unei imagini color: aplicati un filtru de netezire de tip medie


aritmetica
a. in spatiul RGB, pe componente
b. in spatiul HSI
Aplicati succesiv filtre de dimensiune 5, 10, 25 si comparati rezultatele
obtinute in cele doua spatii.

3. Accentuarea imaginilor color: Aplicati un filtru de accentuare (Laplaceian) in


spatiul RGB.

Functii OpenCV utile in rezolvarea cerintelor: imread, imshow, split, merge,


equalizeHist, calcHist, filter2D, blur, Sobel, Laplacian.
Nu faceţi însemnări pe această foaie
Prezentat curs pentru sesiunea ianuarie 2022
Prelucrarea imaginilor

1. O functie imagine o notam prin f ( x, y). Cuantizarea se refera la valorile spatiale, adica la coordonatele
spatiale (domeniul de definitie) sau la valorile functiei (codomeniu), adica ale intensitatii? Daca cuantizarea
se face pe 8 biti, care este eroarea de cuantizare?

2. O imagine este afectata de un zgomot periodic. In ce domeniu poate fi eliminat complet acest zgomot?

3. Se doreşte segmentarea unei imagini prin creşterea regiunilor. Germenii (seminţele) corespund în
histogramă punctelor de minim sau de maxim? Justificaţi răspunsul.
2 2
4. În domeniul frecvenţelor se aplică filtrul H (u , v) = 1 +  u   
 +  v v  . Ce efect are asupra
 max   max 
u
imaginii iniţiale?

5. Asupra imaginii din figura A s-a aplicat un filtru de dimensiune 3x3 obtinandu-se imaginea din figura B.
Filtrul aplicat este un filtru trece-jos, trece-sus sau trece-banda? Pe ce direcţie se realizează derivarea?

A B

6. Se consideră o imagine cu nivele de gri de dimensiune 1000 × 1000 . Se aplică filtrarea cu un filtru median
folosind algoritmul Huang, cu o fereastră de 7 × 7 . Câte sortări în fereastră se efectuează? (filtrul nu se
aplică dacă fereastra iese din imagine)? De câte ori se determină valoarea mediană din fereastră pe baza
histogramei?
7. Specificati efectele obtinute asupra unei imagini aplicand transformarea de mai jos (se va analiza fiecare
interval).

8. Ce efect se obtine asupra unei imagini daca se aplica una din transformarile din figura? (sa pun si
logaritmica, etc.)

1
Nu faceţi însemnări pe această foaie
Prezentat curs pentru sesiunea ianuarie 2022
9. Să se aplice masca M peste imaginea i ′ (convoluţia celor două matrice) obţinută prin întreţeserea matricei
originale i cu zerouri:
1 1 1 2 3 
M= , i =   . Ce operaţie este efectuată asupra imaginii iniţiale? („centrul„ măştii
1 1  4 5 6
pentru produsul de convoluţie, este ultimul element!)

10. Să se precizeze pixelii care sunt situaţi la distanţa d 4 = 3 faţă de pixelul (0,0) din figură.

(0,0)

11. Ce fel de imagine se obţine dacă asupra unei imagini cu nivele de gri se aplică funcţia următoare:
γ
T (r ) = 255 ( r 255 ) , unde r reprezintă un nivel de gri iar γ ≥ 1 ? Câte nivele de gri pot fi în
imaginea iniţială (transformarea T ia valori in intervalul [0, 255] )?

12. Se consideră că un pixel al unei imagini cu nivele de gri este cuantizat pe 7 biţi. Pentru fiecare bit al unui
 L − 1 pentru bitul k
pixel se utilizează funcţia: Tk (r ) =  , unde L este numărul de nivele de gri. Cate
0 in rest
imagini se obţin? Care dintre aceste imagini are zonele uniforme cele mai mici?

13. O imagine prezintă un contrast scăzut. Histograma acoperă uniform tot domeniul?

14. Se consideră un filtru implementat in domeniul spaţial prin masca:


 0 −1 0 
− 1 4 − 1 . Poate fi folosit acest filtru pentru netezirea detaliilor (justificati raspunsul)?
 
 0 − 1 0 
Să se scrie desfăşurat valoarea ieşirii g ( x, y ) , unde x, y reprezintă coordonatele pixelului pe care este
centrată masca.

15. Se consideră o imagine cu nivele de gri cu variaţii bruşte ale intensităţilor acestor nivele. Ce fel de
componente apar în domeniul frecvenţelor? Unde se află originea în domeniul frecvenţelor in cazul in care
se face multiplicarea cu (− 1) ?
y

16. Se doreste afisarea amplitudinii transformatei Fourier, astfel incat originea din domeniul frecventelor sa fie
in centrul ferestrei de afisarea. In prealabil nu s-a facut vreo multiplicare a functiei. Cum se poate obtine
acest lucru? (variante: originea sa fie centrata numai dupa axa u , numai dupa axa v : - indicatie: vezi si
laboratorul).

17. Ce legatura exista intre viteza de variatie a nivelui de gri dintr-o imagine si frecventele corespunzatoare din
domeniul frecventelor?

18. Se doreste evidentierea unui contur printr-un filtru de derivare. Care este directia optima de derivare? Care
este valoarea variatiei maxime?

19. In afisarea amplitudinii transformatei Fourier intr-o fereastra N × N , cate valori diferite avem?

2
Nu faceţi însemnări pe această foaie
Prezentat curs pentru sesiunea ianuarie 2022
20. Care sunt diferentele dintre implementarea transformatei Fourier rapide directe si inverse? Ce complexitate
are fiecare?
21. In urma analizei unei imagini se constata ca in domeniul frecventelor, ( u, v ) , apar zgomote cu frecvente
cuprinse in intervalul [ a, b ] . Care este filtrul ideal H ( u, v ) pentru eliminarea acestora? Ce fel de filtru este
(trece jos, trece sus, trece banda)?
22. Se realizează segmentarea prin metoda Otsu a unei imagini cu nivele de gri în care histograma are 5
minime. Să se scrie expresia varianţei interclase σ B şi condiţia de determinare a pragurilor optime.
(suplimentar: expresia gradului de separabilitate).
23. Ce fel de operatie morfologica este realizata in figurile urmatoare (specificati operatiile in fiecare pas si apoi
operatia finala):

a) b)

24. Să se stabilească ce fel de netezire şi derivare prezintă gradientul izotrop, Prewit, Sobel.
25. Ce operatii include operatorul lapalacianul gausianului (LoG) si care este ordinea? Acelasi lucru pentru
operatorul Canny.
26. Aplicarea unui filtru este o operatie de corelatie sau de convolutie? Cand nu exista deosebire intre cele doua
operatii?

27. Ce efect are operatia de egalizare a histogramei unei imagini? In ce spatiu de culoare este de preferat sa se
aplice operatia de egalizare a histogramei unei imagini color: RGB, CMY sau HSI? Justificati raspunsul.

28.
Considerati imaginea color alaturata, de dimensiuni 500x500, in care
VERDE ROSU patratele marcate au culorile rosu pur, verde pur si albastru pur. Se
converteste imaginea in reprezentarea HSI, se netezeste componenta
H (sau I, sau S) a imaginii prin aplicarea unui filtru medie aritmetica
ALBASTR de dimensiuni 25x25 si se converteste inapoi in spatiul RGB.
VERDE Descrieti rezultatul obtinut (se au in vedere in special zonele de
U
separare).

29. Se doreste evidentierea unui contur printr-un filtru de derivare. Care este directia optima de derivare? Care
este valoarea maxima a derivatei?
30. Care din spatiile de culoare urmatoare este mai potrivit pentru compararea imaginilor: RGB, CMY, CMYK,
HSI, HSV, CIELAB? Justificati foarte scurt.

31. Transformata distanta poate fi definita in mai multe cai. Consideram transformata distanta a unei imagini
binare ca distanta pana la cel mai apropiat pixel de valoare nula (in curs e invers). Care este imaginea
transformatei distanta pentru imaginea alaturata, utilizand distanta: d4 ( P1 , P2 ) = x1 − x2 + y1 − y2 ( d4 -

3
Nu faceţi însemnări pe această foaie
Prezentat curs pentru sesiunea ianuarie 2022

distanţă „city block”) sau d8 ( P1 , P2 ) = max { x1 − x2 , y1 − y2 } ( d8 - distanţă tablă de şah


„chessboard”)

32. Se doreste detectia muchiilor (verticale) dintr-o imagine folosind prima derivata partiala sau a doua derivata
partiala si binarizarea cu un prag T=4. Se considera urmatoarea linie din imagine. Marcati pixelii care vor fi
detectati drept muchii:

4
Nu faceţi însemnări pe această foaie
Prezentat curs pentru sesiunea ianuarie 2022
33. Calculati precizia, recall-ul si coeficientul de similaritate Dice (F-measure) pentru cazul segmentarii din
figura.

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