Documente Academic
Documente Profesional
Documente Cultură
Prelucrarea imaginilor
curs – an III CTI
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
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
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
PI – curs 1
Prelucrarea imaginilor - introducere
Spectrul electromagnetic
PI – curs 1
Prelucrarea imaginilor - introducere
PI – curs 1
Prelucrarea imaginilor - introducere
Dispozitive/Senzori
Time-of-flight
Kinect v1
Kinect v2
IR
DuoMLX
Bumblebee
PI – curs 1
Exemple proiecte PI @ AC
Wearable sensory substitution for the visually impaired
3D
Acquisition Encoding Rendering
processing
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
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
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
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).
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
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
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
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
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)
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.
L − 1 r ∈ [ a, b]
Td (r ) = , pentru (7)
0 in rest
L − 1 r ∈ [ a, b]
Ta (r ) = , pentru (8)
r in rest
5
Curs 2, PI
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:
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.
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
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
s=r+D (13)
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
h(rk ) = nk , k = 0, L − 1 (14)
nk
h(rk ) = ≡ p (rk ) , k = 0, L − 1 (15)
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.
10
Curs 2, PI
11
Curs 2, PI
12
Curs 2, PI
Egalizarea histogramei
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 )
ps ( s ) ds = pr (r ) dr (1)
dr
ps ( s ) = pr (r ) (2)
ds
13
Curs 2, PI
Fig. 6
14
Curs 2, PI
r
=s T=
(r ) ∫0 pr (w)dw (3)
ds
Din relația (3) rezultă: = pr (r )
dr
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)
nk
pr (rk ) = cu =
k 0, L − 1 , rk ∈ [ 0,1] (5)
n
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
15
Curs 2, PI
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
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
18
Curs 2, PI
19
PI, curs 3
Curs 3 (parţial)
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.
1
PI, curs 3
0 X
Masca
Imagine f(x,y)
Y
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)
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
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.
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
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)
4
PI, curs 3
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
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
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
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.
( )
g ( P ) = Rang j RVP , (7)
6
PI, curs 3
g ( P ) min
= = RVP ( ) {
min f ( Q ) Q ∈ VP } (8)
g ( P ) max
= = RVP ( ) {
max f ( Q ) Q ∈ VP } (9)
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
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
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
9
PI, curs 3
Algoritmul Huang
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
10
PI, curs 3
Algoritmul Huang:
11
PI, curs 3
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.
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
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
16
PI, curs 4
1
PI, curs 4
Fig. 1
2
PI, curs 4
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
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
∂ ∂f ∂f ∂f
= − sin ϕ + cos ϕ =
0.
∂ϕ ∂r ∂x ∂y
3
PI, curs 4
∂f
∂y
ϕ ( x, y ) = arctg . (3)
∂f
∂x
∇f = G x + G y (4)
sau
∇f = {
max Gx , G y . }
∂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 )
−1
M1= −1 1 şi M2 =
1
4
PI, curs 4
1
M1 1
= −1 0 şi M2= −1 )
0
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)
Gx = ( z5 − z 4 ) , G y = ( z7 − z4 ) (6)
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 )
5
PI, curs 4
−1 0
P=
0 1
0 −1
R=
1 0
∇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)
−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
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 )
−1 −1 −1
Gx → 0 0 0
1 1 1
(12)
−1 0 1
G y → −1 0 1
1
−1 0
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
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. 8
10
PI, curs 4
Laplacianul imaginii
∂2 f ∂2 f
∇(∇f ) = ∇ f = ∆f = 2 + 2
2
(15)
∂x ∂y
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
∇ 2 f = f ( x + 1, y ) + f ( x − 1, y ) + f ( x, y + 1) + f ( x, y − 1) − 4 f ( x, y ) (17)
0 1 0
L0 = 1 − 4 1 (17’)
0 1 0
∇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
0 −1 0
L2 = − 1 4 − 1 (20)
0 − 1 0
respectiv
− 1 − 1 − 1
L3 = − 1 8 − 1 (21)
− 1 − 1 − 1
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)
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)
12
PI, curs 4
0 −1 0
A0 = − 1 5 − 1 (24)
0 − 1 0
− 1 − 1 − 1
A1 = − 1 9 − 1 (25)
− 1 − 1 − 1
Fig. 9
13
PI, curs 4
Fig. 9
14
PI, curs 4
Fig. 10
15
PI, curs 4
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
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
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) ).
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
PI – curs 5
Prelucrarea imaginilor
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.
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
www.tfh-berlin.de/~schwenk/hobby/fourier/Welcome.html
PI – curs 5
Transformata Fourier - continua
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:
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:
PI – curs 5
Transformata Fourier - discreta
PI – curs 5
Transformata Fourier – discreta 2D
Cazul bidimensional:
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
PI – curs 5
Transformata Fourier – discreta 2D
Proprietati - periodicitate
PI – curs 5
Transformata Fourier – discreta 2D
Proprietati – periodicitate in domeniul spatial
PI – curs 5
Transformata Fourier – discreta 2D
Proprietati
faza
spectrul de putere
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
PI – curs 5
Transformata Fourier – discreta 2D
Vizualizarea spectrului transformatei Fourier
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
PI – curs 5
Filtrarea in domeniul frecventelor
Exemple
PI – curs 5
Filtrarea in domeniul frecventelor
Exemple
PI – curs 5
Transformata Fourier – discreta 2D
Exemple
PI – curs 5
Transformata Fourier – discreta 2D
Efectul ‘ringing’
| |
PI – curs 5
Transformata Fourier – discreta 2D
Exemple
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
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)
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
PI – curs 5
Filtrarea in domeniul frecventelor
Filtre rejectie banda
Imagine afectată de Spectrul imaginii
zgomot sinusoidal corupte
PI – curs 5
Proprietati ale transformărilor
unitare
PI – curs 5
http://www.robots.ox.ac.uk/~sjrob/Teaching/SP/l7.pdf
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
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 , &ZR
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)
: L +=<
& d- +/bdegc f J
_ JaMOE
85
is
: =+ <
L
4& D-U / bdec 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
_ _
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
: 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)
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 .
_
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
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
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
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.
: 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 Å< Ó
4H&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]
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]
Ú Ú F Û
Þ Þ à R
à á Ý p*: Ü
Þ Þ à à à
Þ Þ à
Þ Þ à à à
Þà àÞ
F p :Ü à à à Þ Þ
Þ Þ
à à à Þ Þ
Û à à p : Ü Þ Þ RÞ ß Ú Û
Ý p :Ü
*
Ú Û
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.
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
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 æ
95
2. pack the data with zeroes; e.g. include 16 zeroes with the 48 data points
(for &vR ) 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
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
Muchie Robustete
reala scazuta la
zgomot
PI – curs 7
Detectori de muchii
Cerinte
Muchie Localizare
reala proasta
PI – curs 7
Detectori de muchii
Cerinte
PI – curs 7
Detectori de muchii
Metode
Operatori gradient
- Roberts
- Prewitt
- Sobel
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
PI – curs 7
Detectia muchiilor folosind gradientul
Ideea de baza
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
masca: [-1 1]
PI – curs 7
Detectia muchiilor folosind gradientul
[-1 1 0]
[0 -1 1]
[-1 0 1]
PI – curs 7
Detectia muchiilor folosind gradientul
PI – curs 7
Detectia muchiilor folosind gradientul
PI – curs 7
Detectia muchiilor folosind gradientul
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:
Efectul zgomotului
Solutie?
Netezirea imaginii – va uniformiza diferentele dintre pixeli vecini
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
PI – curs 7
Detectia muchiilor folosind gradientul
Efectul netezirii la diferite scari – muchiile obtinute
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
PI – curs 7
Detectia muchiilor folosind gradientul
PI – curs 7
Detectia muchiilor folosind derivata a
doua
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
PI – curs 7
Detectia muchiilor folosind derivata a
doua
PI – curs 7
Detectia muchiilor folosind derivata a
doua
PI – curs 7
Detectia muchiilor folosind derivata a
doua
PI – curs 7
Detectia muchiilor folosind derivata a
doua
PI – curs 7
Detectia muchiilor folosind derivata a
doua
PI – curs 7
Detectia muchiilor Gradient vs. LoG
PI – curs 7
Detectia muchiilor folosind derivarea
Aspecte practice
- 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
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
PI – curs 7
Detectia muchiilor – metoda Canny
Suprimarea valorilor non-maximale
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
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
PI – curs 7
Detectia muchiilor – metoda Canny
Thresholding prin histerezis
PI – curs 7
Detectia muchiilor – metoda Canny
Rezultatul final
PI – curs 7
Detectia muchiilor – metoda Canny
Efectul valorii sigma (dimensiunea kernelului Gaussian)
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
PI – curs 7
Facultatea Automatica si Calculatoare
Universitatea Tehnica “Gheorghe Asachi” din Iaşi,
Romania
Prelucrarea imaginilor
curs – an III CTI
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
PI – curs 8
Continut
Ce este morfologia?
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
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
PI – curs 8
Quick Example
Images taken from Gonzalez & Woods, Digital Image Processing (2002)
PI – curs 8
Structuring Element (SE)
Definition: A structuring element is simply a binary image
Dublin Institute of Technology, Image Processing – Morphology
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
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
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
After erosion
Original
with a disc of
image
radius 10
PI – curs 8
What is Erosion for?
Erosion can split apart joined objects
Dublin Institute of Technology, Image Processing – Morphology
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
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
PI – curs 8
Relatia dintre dilatare si eroziune
Dualitate:
- dilatarea este eroziunea background-ului
- eroziunea este dilatarea background-ului
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
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
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
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
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
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
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)
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)
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)
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:
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
PI – curs 8
Facultatea Automatica si Calculatoare
Universitatea Tehnica “Gheorghe Asachi” din Iaşi,
Romania
Prelucrarea imaginilor
curs – an III CTI
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
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
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:
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
Media globala
PI – curs 9
Segmentarea cu prag (thresholding)
Prag global (T)
Alegerea pragului – metoda Otsu
(16)
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:
1. Noţiuni fundamentale
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
1 dacă f ( x, y) > T
g( x, y) = (1)
0 dacă f ( x, y) ≤ T
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
f ( x , y) pentru f ( x, y) ≥ T
g( x, y) =
0 pentru f ( x, y) < T
a) Examinarea histogramei
3
PI curs 9
µ = ∫ x p( x )dx , ∫D ( x − µ )
2
σ2
= p( x ) dx (1)
D
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
k
m1 (k ) = ∑ iP(i / C1 ) (6)
i =0
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
1 L −1
m2 (k ) = ∑ i pi
P2 (k ) i= k +1
(9)
k
m(k ) = ∑ i pi (10)
i =0
L −1
mG = ∑ i pi (11)
i =0
P1 + P2 =
1 (12)
şi
=
mG P1 m1 + P2 m2 (13)
Observație. Se putea scrie direct relația (13), media totală fiind suma ponderată a mediilor
parţiale.
5
PI curs 9
σ B2 = P1 ( m1 − mG ) + P2 ( m2 − mG )
2 2
(14)
σ 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)
σ B2 =
( mG P1 − m )
2
(16)
P1 (1 − P1 )
σ 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
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
σ B2 (T1 , T2 ) = max
0 < k1 < k2 < L −1
(σ 2
B ( k1 , k2 ) ) (21)
σ B2 (T1 , T2 )
η (T1 , T2 ) = (22)
σ G2
Exemplu:
8
Facultatea Automatica si Calculatoare
Universitatea Tehnica “Gheorghe Asachi” din Iaşi,
Romania
Prelucrarea imaginilor
curs – an III CTI
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
PI – curs 10
Region growing
Formarea unei regiuni:
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
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:
PI – curs 10
Region growing - exemple
Metoda este sensibila la parametri:
PI – curs 10
Region growing - exemple
Metoda este sensibila la parametri:
PI – curs 10
Region growing - limitari
Segmentarea trebuie sa satisfaca o serie de criterii:
1. Fiecare pixel trebuie sa fie asignat unei regiuni
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
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
PI – curs 10
Segmentare prin clusterizare
Similaritate:
- Distanta Euclidiana (patratica) mica
PI – curs 10
Segmentare prin clusterizare
Similaritate:
- Distanta Euclidiana (patratica) mica
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
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
PI – curs 11
Segmentare Watershed
Metoda bazinelor hidrografice
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
PI – curs 11
Segmentare Watershed
Pasii metodei
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
PI – curs 11
Segmentare Watershed
Aplicare pe o imagine binara
PI – curs 11
Segmentare Watershed
Aplicare pe o imagine binara
PI – curs 11
Segmentare Watershed
Aplicare pe o imagine binara
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
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
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.
𝟏 ∑𝒊 𝒏𝒊𝒊 𝑻𝑷
𝑰𝒐𝑼 = ∙ =
𝒏𝒄𝒍 𝒕𝒊 + ∑𝒋 𝒏𝒊𝒋 − 𝒏𝒊𝒊 𝑻𝑷 + 𝑭𝑵 + 𝑭𝑷
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]
𝑻𝑷
𝑹𝒆𝒄𝒂𝒍𝒍 =
𝑻𝑷 + 𝑭𝑵
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
PI – curs 12
Prelucrarea imaginilor
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
Stralucirea Luminanta
Conuri
- 3 tipuri, sensibile la culorile
- R- ρ
- G- γ
- B- β
- 5-10 milioane
PI – curs 12
Proprietatile luminii
Perceptia culorii
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.
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.
PI – curs 12
Colorimetria tricromatica
orice culoare se poate obţine prin amestecul aditiv al celor 3 culori primare
PI – curs 12
Prelucrarea imaginilor
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
CMY vs CMYK
K = min{C , M , Y }
C =C − K
M =M −K
Y =Y − K
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
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
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
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!
Care din cele doua culori (stanga/dreapta) este mai apropiata de cea din mijloc
(verde pur)?
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
0X 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*.
PI – curs 12
Prelucrarea imaginilor
Pseudocolorarea
PI – curs 12
Pseudocolorarea
Pseudocolour (also called false colour) image
processing consists of assigning colours to
grey values based on a specific criterion.
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
PI – curs 12
Procesarea imaginilor full-color
Tehnicile de procesarea a imaginilor full-color se pot împărţi
în două categorii:
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
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
PI – curs 12
Procesarea imaginilor full-color
Netezirea
PI – curs 12
Procesarea imaginilor full-color
Accentuarea contururilor
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
PI – curs 12
Procesarea imaginilor full-color
Concept of
”Gradient”
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
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.
Î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
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:
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
5
Prelucrarea Imaginilor – Laborator 1
Sarcini:
Fie următoarele declarații:
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.
6
Prelucrarea Imaginilor – Laborator 1
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;
}
return writeResult;
}
8
Prelucrarea Imaginilor – Laborator 2
s = T (r )
T : [0, L − 1] → [0, L − 1].
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
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
3) Ajustarea luminozității
s=r+D
4) Accentuarea contrastului
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
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
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.
L − 1 bk = 1
sk = Tk (r ) = pentru
0 in rest
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
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
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:
6
Prelucrarea Imaginilor – Laborator 3
1
Prelucrarea Imaginilor – Laborator 3
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 )
n0
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:
4
Prelucrarea Imaginilor - Laborator 4
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.
Masca
Imagine f(x,y)
Y
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)
1
Prelucrarea Imaginilor - Laborator 4
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)
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
a b
g ( x, y ) w(s, t ) f ( x s, y t ) ( x, y)
s at b
(4)
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.
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)
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
double filter[filterWidth][filterHeight] =
{
0.0, 0.2, 0.0,
0.2, 0.2, 0.2,
0.0, 0.2, 0.0
};
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 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
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
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
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.
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
mn
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) .
1
Prelucrarea Imaginilor - Laborator 5
Obs: În general, filtrul median este cel mai potrivit pentru zgomotul sare şi piper.
n n
n n
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.
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
3
Prelucrarea Imaginilor - Laborator 6
1
Prelucrarea Imaginilor - Laborator 6
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
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
∂f
∂y
Φ ( x, y ) =
arctg
∂f
∂x
∇f = G x + G y
sau
∇f = {
max Gx , G y . }
3
Prelucrarea Imaginilor - Laborator 6
∂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 )
−1
M1= −1 1 şi M2 =
1
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)
Gx = ( z5 − z 4 ) , G y = ( z7 − z4 )
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 )
−1 0
P=
0 1
0 −1
R=
1 0
∇f ≈ z 8 − z 4 + z 7 − z 5
Aproximarea Sobel
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 )
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.
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 )
−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
Sobel:
− 2 − 1 0 0 1 2
S xy = − 1 0 1 S − xy = − 1 0 1
Prewit:
− 1 − 1 0 0 1 2
Pxy = − 1 0 1 P− xy = − 1 0 1
0 1 1 − 1 − 1 0
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
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 .
b) Interpolarea liniară
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
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
1 2 1
H = 2 4 2
1
4
1 2 1
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
Cerințe
9
Prelucrarea Imaginilor - Laborator 7
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:
return result;
}
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:
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.
Project -> Properties -> C/C++ -> General -> Additional Include Directories
Fişierele header necesare pentru realizarea aplicaţiilor din acest laborator sunt:
opencv2/core.hpp
opencv2/imgproc.hpp
opencv2/highgui.hpp
Project -> Properties -> C/C++ -> Linker -> Input -> Additional Dependencies
Project -> Properties -> C/C++ -> Linker -> General -> Additional Library Directories
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
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.
f ( x), x = 0,1,2,.., M − 1
M −1 2πux
−j
F (u ) = ∑ f ( x )e M ,u = 0,1,2,..., M − 1
x =0
M −1 2πux
1 j
f ( x) =
M
∑ F (u )e M
u =0
M −1 N −1
F (u , v ) = ∑ ∑ f (x, y )e − j 2π (ux / M +vy / N )
x =0 y =0
M −1 N −1
f ( x, y ) =
1
MN
∑ ∑ F (u, v )e j 2π (ux / M +vy / N )
x =0 y =0
1
Prelucrarea imaginilor - Laborator 8
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.
Observaţii:
2
Prelucrarea imaginilor - Laborator 8
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):
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
x = log(1+x)
- 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;
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:
Filtre Trece-Jos
1 , D(u , v ) ≤ D0
H (u , v ) =
0 , D(u , v ) > D0
H (u , v ) =
1
1 + [ D(u , v ) / D0 ]2 n
H (u , v ) = e − D (u ,v ) / 2 D0
2 2
4
Prelucrarea imaginilor - Laborator 8
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))
5
Prelucrarea imaginilor - Laborator 8
Filtre Trece-Sus
H hp (u, v ) = 1 − H lp (u , v )
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
7
Prelucrarea imaginilor - Laborator 9
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.
f ( x), x 0,1,2,.., M 1
M 1 2ux
j
F (u ) f ( x )e M ,u 0,1,2,..., M 1
x 0
M 1 2ux
1 j
f ( x)
M
F (u )e M
u 0
M 1 N 1
F u , v f x, y e j 2 ux / M vy / N
x 0 y 0
M 1 N 1
1
f x, y F u, v e j 2 ux / M vy / N
MN x 0 y 0
1
Prelucrarea imaginilor - Laborator 9
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.
Observaţii:
2
Prelucrarea imaginilor - Laborator 9
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):
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
3
Prelucrarea imaginilor - Laborator 9
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:
Filtre Trece-Jos
1 , Du , v D0
H u, v
0 , Du , v D0
1
H u, v
1 [ Du, v / D0 ]2 n
H u , v e D u ,v / 2 D0
2 2
4
Prelucrarea imaginilor - Laborator 9
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))
5
Prelucrarea imaginilor - Laborator 9
Filtre Trece-Sus
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
Cerinte:
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
[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]
7
Prelucrarea Imaginilor - Laborator 10
1 f ( x, y ) T
g ( x, y )
0 f ( x, y ) T
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
Fig. 1
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
Observatie:
Aplicatii
Implementați următoarele operații:
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).
4
Prelucrarea Imaginilor - Laborator 10
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
Prelucrarea imaginilor - Laborator 11
î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
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.
2
Prelucrarea imaginilor - Laborator 11
3
Prelucrarea imaginilor - Laborator 12
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
(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.
Aplicații:
2
Prelucrarea imaginilor - Laborator 12
3
Prelucrarea imaginilor - Laborator 12
4
Prelucrarea imaginilor - Laborator 12
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)
6
Prelucrarea imaginilor - Laborator 12
7
Prelucrarea imaginilor - Laborator 12
8
Prelucrarea Imaginilor - Laborator 13
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
2. Modelul CMY(K)
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
S 1
3
min{ R, G, B} (7)
RGB
1
I ( R G B) (8)
3
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)
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).
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.
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.
Y
L* 116h( ) 16 (20)
Y0
X Y
a* 500h( ) h( ) (21)
X0 Y0
Prelucrarea Imaginilor - Laborator 13
Y Z
b* 200h( ) 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.
Aplicatii:
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?
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
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.