Documente Academic
Documente Profesional
Documente Cultură
cuantificare
Prelucrarea imaginilor
Dimensiune matrice: M x N
Nivele de gri: L, cu L=2k
Numar de biti pentru stocarea imaginii: M x N x k
3/15/2015
Prelucrarea imaginilor
1024 x 1024
Esantionare
Cuantificare
4
Prelucrarea imaginilor
128 x 128
3/15/2015
3/15/2015
Prelucrarea imaginilor
1
2
3
3/15/2015
Prelucrarea imaginilor
8x8
12 x 12
Interpolare biliniara
v(x, y) = ax + by + cxy + d
Coeficientii se determina prin rezolvarea unui
sistem algebric liniar in necunoscutele a, b, c, d.
Expresia de mai sus trebuie satisfacuta in cele 4
puncte vecine cu pixelul de coordonate (x y)
3/15/2015
Prelucrarea imaginilor
Adiacente
Adiacenta 4: q este sunt adiacent 4 cu p, daca [ambii pixeli] au valorile din V si q N4(p)
Adiacenta 8: q este adiacent 8 cu p, daca [ambii pixeli] au valorile din V si q N8(p)
Adiacenta m: q este adiacent m cu p, daca [ambii pixeli] au valorile din V si:
q N4(p), sau
q ND(p) si N4(p) N4(q) nu contine nicinu pixel cu valoare din V
3/15/2015
Prelucrarea imaginilor
Adiacenta 4: q este sunt adiacent 4 cu p, daca [ambii pixeli] au valorile din V si q N4(p)
Adiacenta 8: q este adiacent 8 cu p, daca [ambii pixeli] au valorile din V si q N8(p)
Adiacenta m: q este adiacent m cu p, daca [ambii pixeli] au valorile din V si:
q N4(p), sau
q ND(p) si N4(p) N4(q) nu contine nicinu pixel cu valoare din V
3/15/2015
Prelucrarea imaginilor
Conexiuni
Fie S un subset de pixeli dintr-o imagine. Doi pixeli p si q se spune ca sunt conectati in S, daca exista o cale
intre ei, formata exclusiv din pixeli din S.
Pentru orice pixel din S, setul de pixeli care sunt conectati cu el in S se numeste o componenta conectata a
lui S. Daca S are doar o componenta conectata, atunci se numeste set conectat.
Fie R un subset de pixeli dintr-o imagine. Vom numi R o regiune a imaginii daca R este un set conectat.
Frontiera sau conturul unei regiuni este setul de pixeli din regiune care au unul sau mai multi vecini care nu
sunt in R.
3/15/2015
Prelucrarea imaginilor
10
3/15/2015
Prelucrarea imaginilor
11
Prelucrarea imaginilor
Ameliorarea imaginilor in domeniul
spatial
Prelucrarea imaginilor
a.
3/15/2015
b.
Prelucrarea imaginilor
Exemplul 1
3/15/2015
Exemplul 2
Prelucrarea imaginilor
Ex.
3/15/2015
Prelucrarea imaginilor
Ex.
Aceste transformari au ca scop sa scoata in evidenta anumite zone de nuante de gri. In functie de traseul
transformarii, efectele pot fi diferite.
Exemple:
In cazul transformarii a., sunt scoase in evidenta nivele de gri din intervalul A-B, reducandu-le pe celelalte.
In cazul transformarii b., cu zona A-B se intampla acelasi lucru, dar restul nivelelor de gri raman aceleasi.
3/15/2015
Prelucrarea imaginilor
O alta transformare utila este si decuparea pe plane de biti. Se pot obtine astfel imagini ce corespund fiecarui
bit din sirul alocat informatiei de nivel de gri (pentru imaginile de intensitate).
De exemplu, pentru o imagine cu adancimea de culoare de 8 biti, se pot obtine 8 plane, notate de regula
0,1,27. Se va vedea ca planul corespunzator bitului celui mai semnificativ (7) contine majoritatea informatiei
semnificative.
Ex.
Izolarea planelor se poate face fie prin procedee strict numerice, fie aplicand filtre de tip prag, acestea urmand
sa genereze chiar imaginile corespunzatoare unui anumit plan de biti.
Exemplu:
Fie o imagine formata din 4 pixeli, dispusi pentru simplitate pe verticala. Adancimea de culoare este de 4 biti,
deci 16 nuante de gri.
Pixel
Valoare
zecimal
Valoare
binar
Plan 3
Plan 2
Plan 1
Plan 0
11
1011
1000
14
1110
0110
3/15/2015
Prelucrarea imaginilor
Ex.
Contrast mare
3/15/2015
Contrast redus
Imagine luminoasa
Prelucrarea imaginilor
Imagine intunecata
pr (rk )
nk
, cu k 0,1, 2....., L 1
n
j 0
n
j 0
Satisface conditiile puse pentru transformarea continua notata tot cu T mai sus. Transformarea se numeste
egalizare de histograma, sau liniarizare de histograma. Ea asigura concret nivelarea histogramei unei
imagini, cu efectul vizibil de crestere a contrastului.
3/15/2015
Prelucrarea imaginilor
25000
25000
20000
20000
15000
15000
10000
10000
5000
0
1
17
33
49
65
81
97
113
129
145
161
177
193
209
225
241
1
23
45
67
89
111
133
155
177
199
221
243
5000
3/15/2015
Prelucrarea imaginilor
10
In afara de egalizarea histogramelor, este posibila si generarea unei imagini care sa aiba histograma asociata
(ca expresie a densitatii de probabilitate a aparitiei nuantelor de gri) APROXIMATIX identica cu o histograma
(densitate de probabilitate) data.
Baza teoretica
Fie o imagine sursa, caracterizata de densitatea de probabilitate pr(r) (practic de o histograma a carei
infasuratoare este functia densitate de probabilitate).
Fie o densitate de probilitate (histograma) specificata (tinta) pz(z). S-au notat cu r si z nivele de gri.
r
Fie transformarea :
s T (r ) pr ( w)dw
0
G ( z ) p z (t )dt s
In aceste conditii se poate scrie:
z G 1 ( s ) G 1[T (r )]
Aceleasi relatii, dar scrise pentru variabile si functii discrete sunt:
3/15/2015
Prelucrarea imaginilor
11
nj
j 0
j 0
sk T (rk ) pr (rj )
, k 0,1,2....., L 1
vk G ( z k ) p z ( zi ) sk , k 0,1,2....., L 1
i 0
1.
3/15/2015
Prelucrarea imaginilor
12
Imagine rezultat
Histogramele corespunzatoare
7000
6000
5000
4000
3000
2000
1000
0
6000
20000
5000
4000
15000
3000
10000
0
1
21
41
61
81
101
121
141
161
181
201
221
241
1000
3/15/2015
1
21
41
61
81
101
121
141
161
181
201
221
241
2000
5000
Prelucrarea imaginilor
1
27
53
79
105
131
157
183
209
235
7000
25000
13
Prelucrarea imaginilor
Ameliorarea imaginilor in domeniul
spatial
L 1
m ri p(ri )
i 0
Prelucrarea imaginilor
Se pot defini marimi similare la nivel local, adica intr-o vecinatate dreptunghiulara Sxy a unui pixel
cu coordonatele (x,y):
Marimile definite anterior devin:
- Media variabilei r (media nivelului de gri):
mS xy
s ,t
( s ,t )S xy
p (rs ,t )
-Ca si in cazul marimilor globale, media da o masura a nivelului mediu de gri din imagine, iar
varianta, a contrastului. Aici insa, numai in vecinatatea Sxy.
Acesti 2 parametri pot fi folositi la ameliorarea imaginilor astfel (vezi diapozitivul urmator):
3/15/2015
Prelucrarea imaginilor
Daca se doreste ca unele zone intunecate sa fie facute mai luminoase (sau invers), se va lucra pe o vecinatate
si se vor face urmatoarele rationamente:
-O masura a gradului de luminozitate poate fi si valoarea medie a nivelelor de gri. Deci se va calcula pentru
vecinatatea Sxy valoarea mSxy si se compara cu media globala M. Daca: m k M
S xy
Unde k0 este un parametru pozitiv mai mic decat 1, determinat de regula prin incercari (experienta are aici un
rol foarte important). Acest lucru se face pentru fiecare pixel al imaginii, fereastra Sxy fiind in miscare, mereu
centrata in punctul de interes (de coordonate (x,y)).
Constrastul este evaluat prin deviatia standard astfel:
Daca:
k
S xy
unde k2 este un parametru pozitiv, subunitar sau supraunitar, dupa cum se doreste scoaterea in evidenta a
zonelor intunecate, respectiv luminoase, iar G este deviatia standard la nivel global.
Se limiteaza valoarea minima a contrastului acceptat (deviatia standard a zonelor constante este zero):
S xy k1 G
Sau pe scurt, daca notam: cu f(x,y) valoarea pixelului de coordonate (x,y), respectiv cu g(xy) valoarea pixelului
din aceeasi pozitie dupa transformare:
E f ( x, y ), daca mS xy k0 M si k1 DG S xy k 2 DG
g ( x, y )
f ( x, y ) in rest
Prelucrarea imaginilor
Elemente de urmarit:
1. Dimensiunea vecinatatii. Se recomanda folosirea unor vecinatati de mici dimensiuni, 3x3, 5x5.
2. Parametrii k se aleg pe baza de incercari si experienta, dar si in functie de caracteristicile imaginii
prelucrate
3. Metoda are dezavantajul ca introduce in imagine si asa numitele artefacte, defecte de tipul unor pixeli
luminosi de exemplu.
Original
Medii
Deviatii standard
Rezultat final
3/15/2015
Prelucrarea imaginilor
3/15/2015
Prelucrarea imaginilor
Sugestie:
Incercati sa realizati si
logic folosind imaginea
sau si invers.
si
A se vedea in
Matlab sectiunea
Region of
Interest!
Functiile and si or
3/15/2015
Prelucrarea imaginilor
Daca notam doua imagini cu f1(x,y), respectiv f2(x,y). Imaginea diferenta este data de:
g(x,y)=f1(x,y)-f2(x,y).
Scopul executarii de diferente intre imagini este de a pune in evidenta deosebirile dintre ele.
Solutia 2:
- Se calculeaza valoarea minima a imaginii rezultat
-Se adauga aceasta valoare negativata la fiecare pixel al
imaginii diferenta. Valoarea minima va fi acum 0
- Se inmulteste fiecare pixel al imaginii diferenta cu
255/Max, unde Max este cea mai mare valoare a
imaginii rezultat
Aplicatii in imagistica medicala
3/15/2015
Prelucrarea imaginilor
3/15/2015
Prelucrarea imaginilor
1
g ( x, y )
K
g ( x, y )
i 1
Daca sunt respectate conditiile legate de zgomot si daca si valoarea parametrului K este suficient de mare,
putem spune ca:
g ( x, y ) f ( x, y )
Vom spune ca imaginea mediata tinde catre cea corecta. Este valabila si relatia:
g2 ( x , y )
1 2
n( x, y )
K
Cu cat K este mai mare, cu atat abaterea media patratica va fi mai mica
Prelucrarea
3/15/2015imaginilor
10
Exemplu
Discutie distributii
3/15/2015
Prelucrarea imaginilor
11
Prelucrarea imaginilor
Ameliorarea imaginilor in domeniul
spatial
w(s, t ) f ( x s, y t )
s a t b
Unde:
m 1
n 1
,b
2
2
x 0,1,.....M 1
y 0,1,....N 1
Prelucrarea imaginilor
R wi zi
i 1
3/15/2015
Prelucrarea imaginilor
Med
1 9
zi
9 i 1
Med
1 9
zi
16 i 1
a)
b)
Primul filtru face o medie clasica, al doilea, una ponderata, ce da o importanta mai mare pixelului central si valori mai mici
pixelilor aflati mai departe de acesta.
In general, pentru o imagine cu dimensiunea MxN, si o masca cu dimensiunea m x n (m si n impare), se poate scrie:
a
g ( x, y )
w(s, t ) f ( x s, y t )
s a t b
w(s, t )
s a t b
3/15/2015
Prelucrarea imaginilor
Imaginea initiala
Masca 5 x 5 neponderata
Masca 5 x 5 ponderata
Masca 3 x 3 neponderata
3/15/2015
Prelucrarea imaginilor
imagine=imread('smooth.jpg');
figure; imshow(imagine);
masca=1/9*[1 1 1;1 1 1;1 1 1];
rez=imfilter(imagine,masca);
figure; imshow(rez);
h=fspecial('average');
rez2=imfilter(imagine,h);
figure; imshow(rez2);
h2=fspecial('disk');
rez3=imfilter(imagine,h2);
figure; imshow(rez3);
h3=fspecial('disk',10);
rez4=imfilter(imagine,h3);
figure; imshow(rez4);
3/15/2015
Prelucrarea imaginilor
Imagine initiala
3/15/2015
Prelucrarea imaginilor
f
f ( x 1) f ( x)
x
2 f
f ( x 1) f ( x 1) 2 f ( x)
x 2
Aceste formulari au fost scrise tinand cont de faptul ca, data fiind structura discreta a unei imagini bitmab, variabila x ia numai
valori intregi cu pasul 1.
Prima si cea de a doua derivata trebuie sa respecte urmatoarele conditii:
Derivata 1
1. Sa fie zero pe segmentele [de imagine] fara variatii de intensitate (cu nivel de gri constant)
2. Sa fie diferita de zero pe zonele de variatie a nivelului de gri (crestere in panta sau treapta)
Derivata 2
1. Sa fie zero pe zonele fara variatii de intensitate [de gri]
2. Sa fie diferita de zero la inceputul zonelor de variatie de intensitate (panta sau treapta)
3. Sa fie zero de-a lungul rampelor cu panta constanta
3/15/2015
Prelucrarea imaginilor
3/15/2015
Concluzii:
1. Prima derivata produce in general muchii mai groase intr-o imagine
2. Derivata a doua raspunde mai bine la detalii, cum ar fi punctele izolate sau liniile
subtiri
3. Prima derivata are un raspuns mai bun la la variatia in trepte a nivelului de gri.
4. Derivata de ordinul al doilea produce un raspuns dublu la modificare nivelului de
gri in treapta
5. Pentru derivata a doua, raspunsul e mai puternic pentru o linie fata de o treapta,
sau pentru un punct fata de o linie
Prelucrarea imaginilor
O posibilitate este de a utiliza operatorul numit Laplacian, care este liniar si izotrop (invariant la rotatii). Filtrele izotropice sunt
invariante la rotatii, deci daca imaginea se roteste, se obtine acelasi efect cu cel ce s-ar obtine daca s-ar aplica filtrul si apoi s-ar
roti rezultatul [aplicarii].
2 f 2 f
Expresia laplacianului este:
2 f 2 2
x
y
Formularea discreta este:
2 f
2 f
f ( x 1, y ) f ( x 1, y ) 2 f ( x, y )
f ( x, y 1) f ( x, y 1) 2 f ( x, y )
x 2
y 2
2 f f ( x 1, y ) f ( x 1, y ) f ( x , y 1) f ( x , y 1) 4 f ( x , y )
Aceasta formulare se poate implementa cu urmatoarele masti:
a.
b.
c.
d.
Observatii:
1. Masca a. este izotropica pentru rotatii de 90 de grade
2. Mastile b. tine cont si de termenii diagonali. Ea este invarianta la rotatii de 45 grade
3. Laplacianul va avea ca efect evidentierea zonelor cu discontinuitati in nivelul de gri si le va atenua pe cele cu
variatii lente sau nule ale nivelului de gri. Acest lucru va produce imagini cu linii gri si zone de fond inchis la
culoare. Pentru a contracara acest efect se poate aduna imaginea initiala cu cea filtrata. In cazul mastilor
pentru care coeficientul central este negativ (a. si b.), Imaginea filtrata se scade din cea initiala, adica:
3/15/2015
10
Laplacian
Masca folosita
Laplacian
Imagine filtrata
Secventa Matlab:
>> imagine=imread('moon.jpg');
>> figure, imshow(imagine);
>> masca=[1 1 1;1 -8 1; 1 1 1];
>> laplace=imfilter(imagine,masca);
>> imshow(laplace);
>> clar=imagine-laplace;
>> figure, imshow(clar);
3/15/2015
Prelucrarea imaginilor
11
Mastile ce modeleaza aceste relatiile sunt (a doua tine cont si de termenii diagonali):
Se observa si aici ca luarea in
consideratie a termenilor diagonali
produce imagini mai nete
>> imagine=imread('moon.jpg');
>> masca=[0 -1 0; -1 5 -1; 0 -1 0];
>> clar=imfilter(imagine,masca);
>> imshow(clar);
3/15/2015
Prelucrarea imaginilor
12
f s ( x, y ) f ( x, y ) f nc ( x, y )
Unde fs este imaginea neta (sharped), iar fnc este imaginea neclara (blured).
O generalizare a acestei metode o constituie asa numitul filtru de accentuare (high boost filter), care este definit astfel:
f hb ( x, y ) Af ( x, y ) f nc ( x, y )
Sau inca:
f hb ( x, y ) ( A 1) f ( x, y ) f ( x, y ) f nc ( x, y )
f hb ( x, y ) ( A 1) f ( x, y ) f s ( x, y )
Cum nu se face nicio precizare privind modul de obtinere a imaginii clare (sharp), putem considera ca aceasta s-a obtinut
prin aplicarea Laplacianului, deci:
3/15/2015
Prelucrarea imaginilor
13
3/15/2015
Prelucrarea imaginilor
14
f mag (f)=[Gx2 G y2 ] 2
Operatorul magnitudine al gradientului este neliniar (datorita ridicarilor la putere si extragerii radicalului), desi componentele
sunt liniare. Pe de alta parte, operatorul magnitudine este invariant la rotire, desi derivatele partiale nu sunt.
In practica, din motive de eficienta, se utilizeaza o expresie simplificata a magnitudinii:
f Gx G y
Expresia nu asigura mentinerea caracterului izotropic.
Ca si in cazul Laplacianului, se va lucra cu masti de dimensiune 2x2, 3x3, sau mai rar, 5x5. Pastrand notatiile si conventiile deja
prezentate, se poate scrie:
Gx z8 z5
G y z6 z5
Sau, formele Gx z9 z5
diagonale:
G y z8 z6
f z9 z5 z8 z6
Masca Roberts a
gradientilor diagonali
3/15/2015
Prelucrarea imaginilor
15
f ( z7 2 z8 z9 ) ( z1 2 z2 z3 ) ( z3 2 z6 z9 ) ( z1 2 z4 z7 )
Imagine initiala
>> imagine=imread('lentila.jpg');
>> figure, imshow(imagine);
>> masca=[-1 -2 -1;0 0 0;1 2 1];
>> muchii1=imfilter(imagine, masca);
>> figure, imshow(muchii1);
>> masca2=[-1 0 1;-2 0 2;-1 0 1];
>> muchii2=imfilter(imagine,masca2);
>> figure, imshow(muchii2);
>> muchii3=imfilter(muchii1,masca2);
>> figure, imshow(muchii3);
3/15/2015
Prelucrarea imaginilor
16
>> imagine=imread('imagine.jpg');
>> masca1=[-1 0 -1;-2 0 2;-1 0 1];
>> muchii1=imfilter(imagine,masca1);
>> imshow(muchii1);
>> masca2=[-1 -2 -1; 0 0 0;1 2 1];
>> muchii2=imfilter(imagine,masca2);
>> figure, imshow(muchii2);
>> masca3=fspecial('sobel');
>> muchii3=imfilter(imagine,masca3);
>> figure, imshow(muchii3);
>> muchii4=edge(imagine,'sobel');
>> figure, imshow(muchii4);
3/15/2015
Prelucrarea imaginilor
17
>> imagine=imread('schelet.jpg');
>> masca=[-1 -1 -1;-1 8 -1;-1 -1 -1];
>> laplacian=imfilter(imagine,masca);
>> figure, imshow(laplacian);
Imaginea initiala
3/15/2015
Laplacian
Prelucrarea imaginilor
18
Imagina initiala+Laplacian
3/15/2015
Gradient Sobel
Prelucrarea imaginilor
19
3/15/2015
Imagine produs
Prelucrarea imaginilor
20
>> med=medfilt2(imag2);
>> figure,imshow(med);
3/15/2015
Prelucrarea imaginilor
21
Imagine finala
3/15/2015
Imaginea initiala
Prelucrarea imaginilor
22
3/15/2015
Prelucrarea imaginilor
23
3/15/2015
Prelucrarea imaginilor
24
] (iu ) 2 F (u , v) (iv) 2 F (u , v) (u 2 v 2 ) F (u , v)
2
2
x
y
F[
Deci:
F[ 2 f ( x, y )] (u 2 v 2 ) F (u, v)
H (u, v) (u 2 v 2 )
Avand in vedere ca este necesara centrarea transformatei Fourier (astfel incat originea frecventelor sa
fie in centrul dreptunghiului frecventelor), se poate scrie:
H (u , v) [(u M / 2) 2 (v N / 2) 2 ]
Sau:
3/15/2015
Prelucrarea imaginilor
M=256;
N=256;
% Definire Laplacian
for i=1:M
for j=1:N
H(i,j)=-[(i-M/2)^2+(j-N/2)^2];
end
end
% Reprezentare laplacian scalat in nuante de gri
imshow(gscale(H));
% Translatare Laplacian pentru centrare in dreptunghiul frecventelor
h_tr=minus1(H);
% Calculul transformaei inverse Fourier
hh=ifft2(h_tr);
hr=real(hh);
% Readucerea din translatia pentru centrare
hr_tr=minus1(hr);
figure, imshow(hr_tr);
3/15/2015
Prelucrarea imaginilor
g ( x , y ) f ( x, y ) 2 f ( x, y )
g ( x, y ) F -1{1 [(u M / 2) 2 (v N / 2) 2 ]F (u , v)}
Exemplu:
imagine=imread('moon.jpg');
figure, imshow(imagine);
[M N]=size(imagine);
imagine_tr=minus1(imagine);
F=fft2(imagine_tr);
for u=1:M
for v=1:N
H(u,v)=-[(u-M/2)^2+(v-N/2)^2];
end
end
img_filt=H.*F;
inv=ifft2(img_filt);
inv_real=real(inv);
rez=minus1(inv_real);
rez_sc=gscale(rez);
figure, imshow(imaginerez_sc+imagine);
3/15/2015
Prelucrarea imaginilor
3/15/2015
Prelucrarea imaginilor
fts ( x, y ) f ( x, y ) f tj ( x, y )
f hb ( x, y ) A * f ( x, y ) f tj ( x, y )
f hb ( x, y ) ( A 1) f ( x, y ) f ts ( x, y )
H tj (u , v) 1 H tj (u , v)
H hb (u, v) ( A 1) H ts (u, v)
Prelucrarea imaginilor
imagine=imread('Fig4_29.jpg');
figure, imshow(imagine);
[M N]=size(imagine);
imagine_tr=minus1(imagine);
F=fft2(imagine_tr);
for u=1:M
for v=1:N
H(u,v)=-[(u-M/2)^2+(v-N/2)^2];
end
end
A=2;
Hl=(A-1)+H;
img_filt=Hl.*F;
inv=ifft2(img_filt);
inv_real=real(inv);
rez=minus1(inv_real);
rez_sc=gscale(rez);
figure, imshow(rez_sc);
imagine2=(A-1)*imagine+rez_sc;
figure, imshow(gscale(imagine2));
A=2
A=2.7
3/15/2015
Prelucrarea imaginilor
A=2.2
A=2
3/15/2015
Prelucrarea imaginilor
.
a=.3;
b=1.5;
Hl=a+b*H;
img_filt=Hl.*F;
inv=ifft2(img_filt);
inv_real=real(inv);
rez=minus1(inv_real);
rez_sc=gscale(rez);
imagine2=imagine+rez_sc;
figure, imshow(gscale(imagine2));
figure, imshow(histeq(imagine2));
3/15/2015
Prelucrarea imaginilor
Unde I si r sunt iluminarea si respectiv reflectanta. Altfel spun, o imagine poate fi descompusa in componenta de luminanta si cea
de reflectanta. Cei doi parametri au proprietatile teoretice: 0 i ( x, y )
0 r ( x, y ) 1
In practica, iata cateva valori:
-Transformata Fourier nu este distributiva fata de inmultire, ci numai fata de adunare. Vom folosi logaritmarea astfel:
[[ z ( x, y )] [ln(
[ f ( x, y ))] [ln(
[ i ( x, y ))] [ln(
[ r ( x, y ))]
sau:
Daca am folosi un filtru H(u,v), s-ar putea scrie:
sau in domeniul spatial:
s ( x, y ) i ' ( x, y ) r ' ( x, y )
Sau:
(*)lumenul
este um pentru fluxul luminos, ca masura a puterii luminii percepute; candela este um pentru intensitatea luminoasa.
3/15/2015
Prelucrarea imaginilor
g ( x, y ) e s ( x , y ) ei e r i0 ( x, y ) * r0 ( x, y )
'
'
H (u, v) ( H L )(1 e
c(
D ( u ,v )2
D02
)L
L 1
H 1
3/15/2015
Prelucrarea imaginilor
10
Prelucrarea imaginilor
Ameliorarea imaginilor in domeniul
frecventelor
F (u )
f ( x)e 2i ux
f ( x)
F (u )e
2 i ux
du
F (u, v)
f ( x, y )e 2i (ux vy ) dxdy
f ( x, y )
F (u, v)e
2 i ( ux vy )
dudv
F (u )
1
M
M 1
f ( x)e
2 i ux / M
x 0
M 1
3/15/2015
Prelucrarea imaginilor
1
F (u )
M
M 1
Observatie: Fiecare termen al transformarii Fourier este o suma a tuturor termenilor functiei f(x), multiplicati cu coeficientii ce
contin functiile sin si cos.
Fiecare componenta a sumei ce il da pe F(u) se numeste componenta in/de frecventa a transformarii.
Transformata Fourier este o marime complexa.
F (u ) F (u ) e i (u )
unde:
F (u ) R 2 (u ) I 2 (u ) 2
I (u )
(u ) tan [
]
R(u )
P(u ) F (u )
Se face mentiunea ca functia f(x) nu trebuie mereu sa ia valori in intervalul [0, M-1]. In general f ia valori in intervalul:
[ x0 , ( M 1)x]
Variabila u, ia valori in succesiunea:
Este valabila relatia:
3/15/2015
0, u, 2u,......[ M 1]u
1
M x
Prelucrarea imaginilor
1
F (u, v)
MN
M 1 N 1
f ( x, y ) e
i 2 (
ux vy
)
M N
x 0 y 0
M 1 N 1
f ( x, y ) F (u, v)e
i 2 (
ux vy
)
M N
u 0 v 0
I (u, v)
]
R(u , v)
P(u , v) F (u , v)
Ca si la functiile de o singura variabila, realizarea transformatei functiei f(x,y)*(-1)(x+y), va produce o translatare a originii
trasformatei in punctul de coordonate (M/2, N/2).
Dreptunghiul de coordonate [0,0] [M-1, N-1], se numeste dreptunghiul frecventelor.
Valoarea transformatei in punctul de coordonate (0,0), va fi:
F (0, 0)
1
MN
M 1 N 1
f ( x, y )
x 0 y 0
adica valoarea medie a functiei f(x,y) (deci nivelul mediu de gri al imaginii).
Sunt valabile relatiile:
3/15/2015
1
M y
1
M x
Prelucrarea imaginilor
Imagine initiala
Transformata Fourier
translatata, careia i s-a aplicat
transformarea log
3/15/2015
Transformata Fourier
translatata ai originea
frecventelor e in mijlocul
imaginii
dim=240;
l=16;
h=6;
imagine=zeros(dim,dim);
imagine(dim/2-h/2:dim/2+h/2,dim/2-l/2:dim/2+l/2)=1;
figure, imshow(imagine);
Fourier1=fft2(imagine);
figure,imshow(Fourier1);
Fourier2=log(abs(Fourier1));
figure, imshow(Fourier2);
Fourier3=fftshift(Fourier1);
figure, imshow(Fourier3);
Fourier4=log(abs(Fourier3));
figure, imshow(Fourier4);
Prelucrarea imaginilor
3/15/2015
Prelucrarea imaginilor
1, daca D(u, v) D0
H (u, v)
0, daca D(u, v) D0
unde D0 este o valoare pozitiva, iar d(u,v) este distanta de la punctul de coordonate (u,v) in domeniul
frecventelor - la centrul domeniului frecventelor.
Pentru o imagine cu dimensiunea M x N, spatiul frecventelor are aceeasi dimensiune, deci:
3/15/2015
Prelucrarea imaginilor
Ordin filtru 15
Ordin filtru 25
ordonate_filtru=[0 0 1 1 0 0];
abscise_filtru=[0 0.3 .35 .6 .65 1];
ordin=15;
filtru_1D=firpm(ordin,abscise_filtru,ordonate_filtru);
[h,w]=freqz(filtru_1D,1,512);
plot(abscise_filtru, ordonate_filtru,w/pi, abs(h))
legend('Ideal', 'Real')
%--------------------hh=ftrans2(filtru_1D);
figure, freqz2(hh,[32 32]
2. Crearea filtrului 3D
3/15/2015
Prelucrarea imaginilor
Spectru Fourier
3/15/2015
Raza filtru 20
Raza filtru 80
Prelucrarea imaginilor
% Citire imagine
imagine=imread('Fig3.35(a).jpg');
% Centrare imagine pentru lucrul in domeniul frecventelor
g=minus1(imagine);
% Transformata Fourier a imaginii
f=fft2(g);
f_log=log(abs(f));
f_sc=gscale(f_log);
figure, imshow(f_sc)
% Stabilirea razei filtrului
do=80;
[M,N]=size(imagine);
% Construirea filtrului
[H] = lpfilter('ideal',M,N,do,1);
% Aplicarea filtrului
rez=H.*f;
% Inversarea imaginii filtrate
finv=ifft2(rez);
re_inv=real(finv);
% Readucerea imaginii in pozitia initiala
rez_final=minus1(re_inv);
%Scalarea imaginii filtrate
rez_scalat=gscale(rez_final);
% Reprezentare
figure,imshow(rez_scalat)
D0=20, n=1
n=1
n=2
M=N=500
D0=80
H (u , v)
n=4
1
1 [ D(u , v) / D0 ]2 n
D0=80, n=1
D0=160, n=2
3/15/2015
D0=160, n=3
Prelucrarea imaginilor
D0=160, n=4
10
D0=20
3/15/2015
D ( u ,v )2
2 D02
D0=80
Prelucrarea imaginilor
D0=160
11
Imagine filtrata
Imagine initiala
3/15/2015
12
H ts (u , v) 1 H tj (u , v)
Filtru Trece sus ideal:
3/15/2015
0, daca D(u, v) D0
H (u , v)
1, daca D(u, v) D0
H (u , v)
1
1 [ D0 / D(u, v)]2 n
H (u, v) 1 e
D ( u ,v )2
2 D02
Prelucrarea imaginilor
13
3/15/2015
Prelucrarea imaginilor
14
Imagine filtrata cu
filtru trece sus ideal
D0=15. Nescalata
Imagine filtrata cu
filtru trece sus ideal
D0=30. Scalata
3/15/2015
Imagine filtrata cu
filtru trece sus ideal
D0=30. Nescalata
Prelucrarea imaginilor
15
Gauss
Do=15
3/15/2015
Do=30
Prelucrarea imaginilor
16
3/15/2015
Prelucrarea imaginilor
17
3/15/2015
Prelucrarea imaginilor
18
Functia freqz2 apelata ca mai jos produce un grafic de tip suprafata al filtrului furnizat de argumentul h
freqz2(h,[n1 n2]), unde:
h este filtrul furnizat de exemplu de functie ftrans2
n1 si n2 definesc desimea caroiajului pentru reprezentare
3/15/2015
Prelucrarea imaginilor
19
Functia ifft2 intoarce transformata Fourier discreta inversa, folosind tot algoritmul FFT
X = ifft2(Y), unde:
Y este transformata Fourier pentru care se calculeaza transformata inversa.
3/15/2015
Prelucrarea imaginilor
20
3/15/2015
Prelucrarea imaginilor
21
3/15/2015
Prelucrarea imaginilor
22
Restaurarea imaginilor
Introducere - 1
Restaurarea, spre deosebire de ameliorarea imaginilor, este un proces de reconstructie a unei imagini cand se cunoaste (la un
anumit nivel) mecanismul (procesul) care a deteriorat imaginea. Adica, restaurarea ar fi procesul invers degradarii.
Ameliorarea imaginilor este un proces cu un grad mai mare de subiectivitate, pentru ca el depinde intr-o mai mare masura de
subiectivitatea perceperii unei imagini.
Ameliorarea si restaurarea au totusi zone intinse de suprapunere, deci o granita stricat intre ele nu se poate trasa.
Si in cazul restaurarii imaginilor se va lucra in domeniul spatial si in cel al frecventelor.
Modelul degradarii/restaurarii unei imagini
f(x,y)
Functia de
degradare
H
Degradare
g(x,y)
Zgomot
Filtru(e) de
restaurare
f(x,y)
Restaurare
Daca functia de degradare este liniara si invarianta la rotire, in domeniul spatial se poate scrie:
iar in cel al frecventelor:
g ( x , y ) h ( x , y ) * f ( x, y ) ( x, y )
G (u , v) H (u , v) F (u , v) N (u , v)
In continuare, pentru functia de degradare se va presupune cel mai simplu caz, cand ea (functia) este operatorul identitate.
3/15/2015
Prelucrarea imaginilor
Restaurarea imaginilor
Modele de zgomot
Zgomotul apare cel mai des fie in etapa de achizitie a imaginilor, fie in cea de transmitere a lor. Zgomotul se poate datora
conditiilor de mediu, proprietatilor senzorilor, conditiilor de transmitere a imaginii (interferenta semnalelor produce zgomot).
In continuare se va presupune despre zgomot ca are urmatoarele proprietati:
- Este independent de pozitie (de coordonatele spatiale)
- Este necorelat cu imaginea
Modele de zgomot. Densitati de probabilitate (PDF)
Zgomot gausian (normal)
p( z )
Zgomot Rayleigh
Imagini succesive
2
( z a )2 / b
, pentru z a
( z a )e
p( z ) b
0, pentru z a
a b / 4
b(4 )
2
4
3/15/2015
Prelucrarea imaginilor
Restaurarea imaginilor
Introducere - 2
Zgomot Erlang (Gamma)
a b z b 1 z
e , pentru z 0
p ( z ) (b 1)!
0, pentru z 0
Imagini laser
b
a
b
a2
Zgomot exponential
ae az , pentru z 0
p( z )
0, pentru z 0
1
a
1
2 2
a
3/15/2015
Prelucrarea imaginilor
Zgomot uniform
Restaurarea imaginilor
Introducere - 3
1
, pentru a z b
p( z ) b a
0, in rest
ab
2
(b a) 2
2
12
Pa pentru z a
( z ) Pb pentru z b
0 in rest
Daca a=b se obtine zgomotul de tip sare si piper, uniform distribuit in imagine.
Zgomotul de tip impuls poate sa fie si negativ. In general, valorile se considera saturate,
adica valorile maxime pentru nivelul de gri al imaginii (0 pentru negru si 255 pentru alb)
3/15/2015
Prelucrarea imaginilor
Restaurarea imaginilor
Exemple de corupere cu zgomot - 1
Gauss
Rayleigh
Gamma
Exponential
3/15/2015
Prelucrarea imaginilor
Restaurarea imaginilor
Exemple de corupere cu zgomot - 2
Uniform
Impuls
Zgomot periodic
Zgomotul periodic apare in mod frecvent ca urmare a interferentelor electrice si electromecanice din timpul achizitiei imaginilor.
Daca o imagine este corupta de un zgomot sinusoidal pur, atunci , transformata Fourier a functiei sin este o pereche de impulsuri
conjugate. Inseamna ca pe transformata Fourier a imaginii zgomotul va aparea sub forma unor puncte .
3/15/2015
Prelucrarea imaginilor
Restaurarea imaginilor
Estimarea parametrilor zgomotului - 1
Parametrii zgomotului periodic pot fi estimati prin analiza spectrului Fourier al imaginii. Analiza automata a acestui spectru este
posibila numai cand maximele sunt foarte pronuntate, sau cand se cunosc anumite proprietati ale zgomotului.
Uneori parametrii zgomotului sunt cunoscuti din specificatiile tehnice ale senzorilor de imagine (ca principala sursa de zgomot intro imagine).
O modalitatea de a obtine informatii despre zgomotul indus de sistemul de achizitie, daca acesta este disponibil, este sa se
fotografieze un obiect mare si plan, iluminat cat mai uniform.
Daca nu exista acces la sistemul de achizitie de imagine, se pot analiza fasii cat mai uniforme (ca nivel/dinamica de gri) din imagine.
Pentru aceste zone se pot obtine histograme si acestea din urma pot da indicatii despre tipul de zgomot continut in imagine.
3/15/2015
Prelucrarea imaginilor
Restaurarea imaginilor
Estimarea parametrilor zgomotului 2
Se vor calcula parametrii:
zi p ( zi )
zi S
2 ( zi ) 2 p( zi )
zi S
3/15/2015
Prelucrarea imaginilor
Restaurarea imaginilor
Eliminarea zgomotului in domeniul spatial - 1
Se porneste de la modelul de corupere cu zgomot de mai jos (scris si in domeniul spatial si in cel al frecventelor):
g ( x, y ) f ( x, y ) ( x , y )
G(u, v) F (u, v) N (u, v)
Filtre de mediere
Filtre de medie aritmetica
Astfel de filtre se implementeaza cu masti de convolutie. (Vezi prezentarile anterioare).
Reducerea zgomotului cu astfel de filtre produce o scadere a claritatii imaginii. Da bune rezultate in cazul zgomotului gaussian.
Filtre de medie geometrica
f ( x, y ) [
g ( s, t )] mn
( s ,t )S xy
Filtrul de mediere geometric da bune rezultate in eliminarea zgomotului gaussian, si pastreaza mai bine decat filtrele de mediere
aritmetica claritatea imaginii (muchii).
Filtre de medie armonica
f ( x, y )
mn
( s , r )S xy
1
g ( s, t )
Filtrul armonic reduce bine zgomotul de tip sare, dar nu si pe cel de tip piper. Elimina bine zgomotul gaussian.
3/15/2015
Prelucrarea imaginilor
Restaurarea imaginilor
Eliminarea zgomotului in domeniul spatial 2
Filtre de medie contra armonica
f ( x, y )
g ( s, t )Q 1
g ( s, t )Q
( s , r )S xy
( s , r )S xy
3/15/2015
Prelucrarea imaginilor
10
Restaurarea imaginilor
Eliminarea zgomotului in domeniul spatial 3
Prelucrarea imaginilor
11
Restaurarea imaginilor
Eliminarea zgomotului in domeniul spatial 4
3/15/2015
Prelucrarea imaginilor
12
Restaurarea imaginilor
Eliminarea zgomotului in domeniul spatial 5
Mediere contra-armonica
(Contharm, dim filtru 2, Q=2)
Mediere contra-armonica
(Contharm, dim filtru 3, Q=2)
3/15/2015
Prelucrarea imaginilor
13
Restaurarea imaginilor
Eliminarea zgomotului in domeniul spatial 6
Mediere geometrica
(Digimizer, dim filtru 2)
Mediere geometrica
(Digimizer, dim filtru 3)
3/15/2015
Prelucrarea imaginilor
14
Restaurarea imaginilor
Eliminarea zgomotului in domeniul spatial 7
Imagine corupta cu
zgomot sare si piper
s&p_1.jpg
3/15/2015
Prelucrarea imaginilor
15
Restaurarea imaginilor
Eliminarea zgomotului in domeniul spatial 8
Mediere geometrica
(Digimizer, dim filtru 2)
Mediere geometrica
(Digimizer, dim filtru 3)
Imagine corupta cu
zgomot sare si piper
s&p_1.jpg
3/15/2015
Prelucrarea imaginilor
16
Restaurarea imaginilor
Eliminarea zgomotului in domeniul spatial 9
3/15/2015
Prelucrarea imaginilor
17
Restaurarea imaginilor
Eliminarea zgomotului in domeniul spatial 10
Mediere geometrica
(Digimizer, dim filtru 2)
Mediere geometrica
(Digimizer, dim filtru 3)
3/15/2015
Prelucrarea imaginilor
18
Restaurarea imaginilor
Eliminarea zgomotului in domeniul spatial 11
3/15/2015
Prelucrarea imaginilor
19
Restaurarea imaginilor
Eliminarea zgomotului in domeniul spatial 12
Mediere geometrica
(Digimizer, dim filtru 2)
Mediere geometrica
(Digimizer, dim filtru 3)
3/15/2015
Prelucrarea imaginilor
20
Restaurarea imaginilor
Eliminarea zgomotului in domeniul spatial filtre de ordonare - 1
Aceste filtre obtin raspunsul prin aranjarea pixelilor de pe zona filtrului (mastii) prin ordonare.
Filtrul median
Au fost deja prezentate. Ele dau bune rezultate pentru anumite tipuri de zgomot aleator si produc o mai redusa pierdere de
claritate a imaginii dupa filtrare.
Filtrele min si max
Filtrul de forma:
f ( x, y ) max{g ( s, t )}
( s ,t )S xy
se numeste filtru max. El permite determinarea (evidentierea) punctelor celor mai luminoase dintr-o imagine, deci va reduce bine
zgomotul de tip piper.
Filtrul de forma:
f ( x, y ) min{g ( s, t )}
( s ,t )S xy
se numeste filtru min. El permite determinarea (evidentierea) punctelor celor mai intunecoase dintr-o imagine, deci va reduce bine
zgomotul de tip sare.
Filtrul punct de mijloc (midpoint filter)
Este descris de relatia:
( s ,t )S xy
Acest tip de filtru calculeaza media dintre valorile minima si maxima din zona acoperita de masca (filtru). Acest tip de filtru lucreaza
bine cu zgomotul distribuit aleator, deci cu zgomot Gauss sau uniform.
Filtrul alfa-decupat (alpha-trimmed)
Este descris de relatia:
f ( x, y )
1
mn d
( s ,t )S xy
g r ( s, t )
In cazul acestui filtru, se elimina d/2 din pixelii cei mai stralucitori, respectiv d/2 din cel mai intunecati. Raman astfel mn-d pixeli.
Pentru acestia se calculeaza media aritmetica. Daca d=0, filtrul devine cel de mediere clasic, daca d=(mn-1)/2, filtrul devine cel
median clasic. Se mai precizeaza ca d apartine intervalului [0 mn-1]. Acest filtru elimina bine combinatii de zgomote, cum ar fi gauss
si sare si piper.
3/15/2015
Prelucrarea imaginilor
21
Restaurarea imaginilor
Filtre de ordonare Filtru median 1
3/15/2015
Prelucrarea imaginilor
22
Restaurarea imaginilor
Filtre de ordonare Filtru median 2
3/15/2015
Prelucrarea imaginilor
23
Restaurarea imaginilor
Filtre de ordonare Filtru min
3/15/2015
Prelucrarea imaginilor
24
Restaurarea imaginilor
Filtre de ordonare Filtru max
3/15/2015
Prelucrarea imaginilor
25
Restaurarea imaginilor
Filtre de ordonare Filtru midpoint
3/15/2015
Prelucrarea imaginilor
26
Restaurarea imaginilor
Filtre de ordonare Filtru alfa-decupat (alpha trimmed)
Imagine filtrata cu filtru alfa
decupat
Prelucrarea imaginilor
27
Restaurarea imaginilor
Functii
filtru_min.m
filtru_midpoint.m
filtru_median.m
filtru_max.m
filtru_geometric.m
filtru_armonic.m
filtru_alphtrmed.m
Contharm.m
Sau dipimage
Sau digimizer
3/15/2015
function filtru_median(imagine)
clc;
a=imread(imagine);
[m n]=size(a);
c=ones(3,3)/9;
[p q]=size(c);
p=(p-1)/2;
q=(q-1)/2;
z=a;
for i=p+1:m-p
for j=q+1:n-q
mask1=zeros(3,3);
for k=-p: p
for l=-q:q
mask1(p+1-k,q+1-l)=a(i-k,j-l);
end
end
med1=mask1(:);
med1=median(med1);
z(i,j)=med1;
end
end
figure, imshow(z);
end
Prelucrarea imaginilor
28
Restaurarea imaginilor
Filtre adaptative - 1
In cazul filtrelor adaptative, acestea isi modifica comportamentul in functie de proprietatile locale ale imaginilor. Ele produc
rezultate in general mai bune dar presupun un effort de calcul mai mare.
Filtre adaptative de mediere
Expresia ce descrie filtrul este:
f ( x, y ) g ( x, y ) 2 ( g ( x, y ) mL )
L
2
3/15/2015
Prelucrarea imaginilor
29
Restaurarea imaginilor
Filtre adaptative - 2
Filtre adaptative mediane
Dau bune rezultate in cazul zgomotului de tip impuls (de exemplu sare si piper), cu densitati de probabilitate mai mici
decat 0.2.
Filtrele mediane adaptative cresc dimensiunea ferestrei (mastii) in functie de proprietatile zonei baleiate.
Se considera urmatoarele marimi:
- zmin=nivelul minim de gri din fereastra Sxy
- zmax=nivelul maxim de gri din fereastra Sxy
- zmed=nivelul median de gri din fereastra Sxy
-zxy = valoarea de gri in punctul de coordonate (x,y)
-Smax = dimesiunea maxima a ferestrei (mastii)
Filtrul functioneaza pe doua nivele, astfel:
Nivel A:
A1=zmed-zmin
A2=zmed-zmax
Daca A1>0 si A2<0, treci la nivelul B
Altfel creste dimensiunea ferestrei pana cand se ajunge la Smax.
si intoarce zxy
Nivel B:
B1=zxy-zmin
B2=zxy-zmax
Daca B1>0 si B2<0, intoarce zxy
Altfel intoarce zmed
3/15/2015
Prelucrarea imaginilor
30
Restaurarea imaginilor
Filtre adaptative - exemplu
adpmedian
3/15/2015
Prelucrarea imaginilor
31
Restaurarea imaginilor
Filtre in domeniul frecventelor - 1
Filtrele de tip lowpass sau highpass, cu variantele lor, decupau frecvente, dispuse dupa un disc centrat in originea
dreptunghiului frecventelor. Cu cat diametrul discului este mai mic, cu atat se elimina mai putine frecvente (si invers).
O alta posibilitate este de a elimina frecvente dispuse dupa o coroana circulara, centrata tot in origine.
Filtrele sunt tot de doua categorii. Unele de tip eliminare frecvente, altele cu efect contrar.
Filtre de tip eliminare banda
Pot fi de tip ideal, Butterworth, respectiv Gauss. In cazul acestor filtre, in afara de parametrul D0, care da diametrul discului
de filtrare, mai exista un al doilea parametru, w, care descrie latime coroanei circulare.
Aceste filtre dau bune rezultate in cazul imaginilor corupte cu zgomot aditiv periodic, atunci cand se cunoaste, macar
aproximativ, domeniul de frecvente al zgomotului.
Aceasta pentru ca transformata Fourier a unei functii sinus de exemplu ia forma unor impulsuri simetrice fata de originea
dreptunghiului frecventelor. Daca se poate estima diametrul unui astfel de cerc, se poate construi un filtru care sa elimine
exact aceasta zona.
3/15/2015
Prelucrarea imaginilor
Restaurarea imaginilor
Filtre in domeniul frecventelor - 2
Filtru ideal de tip eliminare banda
W
daca D(u , v) D0
1
2
W
W
H (u , v) 0 daca D0 D(u , v) D0
2
2
daca D(u , v) D0
1
2
H (u , v)
1
D(u , v) W 2 n
1 [ 2
]
D (u , v) D02
H (u , v) 1 e
3/15/2015
1 D 2 ( u , v ) D02 2
[
]
2 D ( u , v )W
Prelucrarea imaginilor
Restaurarea imaginilor
Filtre de eliminare (bandreject) in domeniul frecventelor Exemplu
3/15/2015
Prelucrarea imaginilor
Restaurarea imaginilor
Filtre de trecere (bandpass) in domeniul frecventelor Exemplu
Aceste filtre au efectul contrat celor de tip eliminare banda, ca atare au forma generala:
H bp (u, v) 1 H br (u, v)
Aceste filtre elimina zona din afara coroanei circulare, adica o mare parte din imagine, mai precis, zona libera de zgomot,
deci pastreaza exact zgomotul. Astefel de filtre au tocmai rolul de a extrage zgomotul dintr-o imagine.
Exemplu:
3/15/2015
Prelucrarea imaginilor
Restaurarea imaginilor
Filtre de tip crestatura (notch) - 1
Filtrele de tip crestatura nu mai intervin pe zone circulare sau inelare centrate in originea dreptunghiului frecventelor, ci in zone
circulare (sau de alte forme) excentrice fata de centrul dreptunghiului frecventelor (proprietatea de simetrie decurge din simetria
transformatei Fourier).
Filtru ideal:
Filtru Butterworth:
Filtru Gauss:
unde:
H (u , v)
1
D02
1 [
]n
D1 (u , v) D2 (u , v)
H (u, v) 1 e
1 D ( u , v ) D2 ( u , v )
[ 1
]
2
D02
D1 (u , v) [(u M / 2 u0 ) 2 (v N / 2 v0 )]1/ 2
D2 (u , v) [(u M / 2 u0 ) 2 (v N / 2 v0 )]1/ 2
sunt distantele de la punctul de coordonate (u 0, v0) la centul dreptunghiului frecventelor (translatat cu M/2, N/2).
3/15/2015
Prelucrarea imaginilor
Restaurarea imaginilor
Filtre de tip crestatura (notch) - 2
Filtru notch Butterworth (ordin 2)
Prelucrarea imaginilor
Restaurarea imaginilor
Functia de degradare - 1
Expresia ce descrie procesul general de degradare este:
g ( x, y ) H [ f ( x, y )] ( x, y )
H [ f1 ( x, y ) f 2 ( x, y )] H [ f1 ( x, y )] H [ f 2 ( x, y )]
H [af1 ( x, y )] aH [ f1 ( x, y )]
Adica Raspunsul la un semnal multiplicat cu o constanta este egal raspunsul multiplicat cu aceeasi constanta
Invarianta la pozitie: daca se noteaza:
Atunci:
g ( x, y ) H ( f ( x, y )]
H [ f ( x a, y b)] g ( x a, y b)
Adica Raspunsul in orice punct al imaginii depinde numai de valoarea semnalului in acel punct si nu de pozitia acestuia
3/15/2015
Prelucrarea imaginilor
Restaurarea imaginilor
Functia de degradare - 2
f ( x, y )
f (a, b) ( x a, y b) da db
Daca se considera ca aceasta functie suporta efectul unei functii de degradare H, se poate scrie (in absenta zgomotului):
g ( x, y ) H [ f ( x, y )] H [
f (a, b) ( x a, y b) da db]
Avand in vedere proprietatea de aditivitate ( ce se poate extinde imediat asupra integralelor care sunt de fapt niste sume), se
poate scrie:
g ( x, y )
H [ f (a, b) ( x a, y b) ]da db
Cum f(a,b) este independenta de x si y, se poate considera in expresie o constanta, si in virtutea proprietatii de omogenitate, se
poate scrie:
g ( x, y ) f (a, b) H [ ( x a, y b) ]da db
Termenul
H [ ( x a, y b) ]
Interpretare: Daca raspunsul la un impuls este cunoscut, atunci se poate cunoaste raspunsul la orice semnal f(a,b)
3/15/2015
Prelucrarea imaginilor
Restaurarea imaginilor
Functia de degradare - 3
Daca presupunem ca functie de degradare este si invarianta in raport cu pozitia, se poate nota:
H [ ( x a, y b) ] h( x a, y b)
g ( x, y )
f (a, b)h( x a, y b) da db
g ( x, y )
f (a, b)h( x a, y b) da db ( x, y )
Sau inca:
Sau, in domeniul frecventelor:
g ( x, y ) h ( x, y ) * f ( x, y ) ( x, y )
Concluzie: In cazul unei functii de degradare liniara si invarianta la pozitie, cu zgomot aditiv, raspunsul sistemului se poate
modela ca fiind convolutia functiei de degradare cu imaginea, urmata de adaugarea zgomotului.
In domeniul frecventelor, convolutia este inlocuita cu produsul
3/15/2015
Prelucrarea imaginilor
Restaurarea imaginilor
Estimarea functiei de degradare - 1
Estimarea prin observarea imaginii
Se analizeaza zone mici din imagine, care contin atat elemente de obiecte din imagine cat si fundalul. Se elege o zona cu semnal
puternic. Folosind tehnici de lucru manuale, se poate construi o imagine (e vorba despre zona analizata, care eset o mica
portiune din imaginea analizata) ameliorata.
Presupunand efectul zgomotului neglijabil (am ales o zona cu semnal puternic), se poate scrie:
G (u, v)
H (u, v)
F (u, v)
Unde: F(u,v) este transformata Fourieir a zonei de imagine recostruita manual. Intreaga relatie este scrisa numai pentru zona de
imagine analizata si recostruita manual.
Idee de
Se analizeaza functia H(u,v) si se construieste una similara la nivelul intregii imagini.
proiect
H (u, v) e k (u
v 2 )5 / 6
10
Restaurarea imaginilor
Estimarea functiei de degradare - 2
O alta modalitate de a determina prin experimentare functia de degradare este deducerea acesteia prin derivarea analitica a unui
model matematic.
O sursa de degradare o poate constitui miscarea obiectului fotografiat. Daca se presupune ca deschiderea si inchiderea
opturatorului sunt instantanee, se poate scrie:
T
g ( x, y ) f [ x x0 (t ), y y0 (t )]dt
0
Unde T este durata expunerii, iar x0(t) si y0(t) sunt legile de miscare in directiile x, respectiv y (cunoscute).
Aplicand transformata Fourier, dupa calcule se ajunge la:
T
a
t
T
b
y0 (t ) t
T
x0 (t )
Atunci:
H (u, v)
3/15/2015
T
sin[ (ua vb)]e i (ua vb )
(ua vb)
Prelucrarea imaginilor
11
Restaurarea imaginilor
Estimarea functiei de degradare - Exemplu
3/15/2015
Prelucrarea imaginilor
12
Restaurarea imaginilor
Filtrarea inversa
Procesul de obtinere a unei imagini ameliorate se numeste filtrarea inversa. Se poate scrie expresia unei estimari a transformatei
Fourier a imaginii nedegradate:
G (u , v)
F (u , v)
H (u , v)
Impartirea se face element cu element. Cum : G (u , v) H (u , v) F (u , v) N (u , v)
N (u , v)
F (u , v) F (u , v)
H (u , v)
Cum nu se cunoaste N(u,v), rezulta ca nu putem determina estimarea transformatei Fourier a imaginii analizate.
Alta problema poate aparea daca valorile functiei de degradare sunt mici (tind spre zero), caz in care se da o mai mare pondere
zgomotului (altminteri necunoscut).
Astfel de probleme se pot rezolva prin aplicarea unor filtre de tip eliminare de frecvente, care sa pastrze frecventele din
apropierea originii (acolo unde probabilitatea de aparitie a valorile ce tind spre zero este mica - se aminteste ca valoarea
transformatei Fourier in origine da chiar valoarea medie de gri a aunei imagini).
3/15/2015
Prelucrarea imaginilor
13
Restaurarea imaginilor
Filtrarea inversa- Exemplu
Fie imaginea de mai jos, corupta de of unctie de degradare cu expresia:
H (u , v) e k [(u M / 2)
( v N / 2)2 ]5 / 6
Rezultatul se poate vedea in imaginea din dreapta. Pentru parametrul k s-a ales valoarea 0.0025.
G (u , v)
Estimarea obtinuta cu ajutorul relatiei F (u , v)
H (u , v)
Aceasta trebuie prelucrata in continuare prin aplicarea unui filtru de tip Butterworth cu frecventa de taiere la 70 si de ordin
10.
Se va realiza ca tema
3/15/2015
Prelucrarea imaginilor
14
Restaurarea imaginilor
Filtrarea Wiener
Expresia filtrului Wiener se deduce din conditia ca abaterea medie patratica a imaginii si a estimarii acesteia sa fie minima.
Expresia estimarii in domeniul frecventelor este:
F (u , v) [
H (u, v)
1
]G (u, v)
2
H (u, v) H (u, v) S (u, v) / S (u, v)
unde:
F (u, v) [
H (u, v)
1
]G (u, v)
H (u, v) H (u, v) 2 K
3/15/2015
Prelucrarea imaginilor
15
Restaurarea imaginilor
Filtrarea Wiener - exemplu
Functii:
DECONVWNR (Matlab)
J = deconvwnr(I, PSF)
J = deconvwnr(I, PSF, NSR)
J = deconvwnr(I, PSF, NCORR, ICORR)
DECONVBLIND (Matlab)
[J,PSF] = deconvblind(I, INITPSF)
[J,PSF] = deconvblind(I, INITPSF, NUMIT)
[J,PSF] = deconvblind(I, INITPSF, NUMIT, DAMPAR)
[J,PSF] = deconvblind(I, INITPSF, NUMIT, DAMPAR, WEIGHT)
[J,PSF] = deconvblind(I, INITPSF, NUMIT, DAMPAR, WEIGHT, READOUT)
[J,PSF] = deconvblind(..., FUN, P1, P2,...,PN)
WIENER (Dipimage)
image_out = wiener(image_in, psf, K, Snn, Sff)
3/15/2015
Prelucrarea imaginilor
16
Dilatarea
( f b)( s, t ) max{ f ( s, t ) b( s x, t y ) | ( x, y ) D f ;( s x, t y ) Db }
Conditiile de apartenenta la domeniile celor doua functii (D f si Db), sunt echivalente cu conditia ca in cazul dilatarii binare, cele
doua seturi sa se suprapuna pe cel putin un element.
Semnul minus realizeaza simetrizarea in raport cu aza OY, iar parametrii s si t realizeaza translatia.
3/15/2015
Prelucrarea imaginilor
se=strel('diamond',1);
dil=imdilate(imagine,se);
0
1
0
1
1
1
0
1
0
3/15/2015
Prelucrarea imaginilor
se=strel('diamond',1);
dil=imdilate(imagine,se);
0
1
0
1
1
1
0
1
0
3/15/2015
Prelucrarea imaginilor
3/15/2015
Prelucrarea imaginilor
Prelucrarea imaginilor
3/15/2015
Prelucrarea imaginilor
f b ( f b) b
Inchiderea:
f b ( f b)b
Deschidere
Inchidere
3/15/2015
Prelucrarea imaginilor
[0 1 0; 1 1 1; 0 1 0]
Prelucrarea imaginilor
[0 10 0; 20 20 20; 0 10 0];
[0 1 0; 1 1 1; 0 1 0]
Prelucrarea imaginilor
g ( f b) ( f b)
h f ( f b)
3/15/2015
Prelucrarea imaginilor
10
Binar, romb,2
3/15/2015
Binar, romb,1
Prelucrarea imaginilor
Binar, disc, 2
11
Imagine initiala
3/15/2015
g ( f b) ( f b)
Prelucrarea imaginilor
Imagine initiala - g
12
f (imaginea initiala)
3/15/2015
h f ( f b)
h+f
Prelucrarea imaginilor
13
3/15/2015
Prelucrarea imaginilor
14
( A) z {c | c a z , a A}
Simetria
B {w | w b, b B}
3/15/2015
Prelucrarea imaginilor
A and B
A or B
not A
A xor B
B
(not A) and B
3/15/2015
Prelucrarea imaginilor
A B {z | ( B) z A}
3/15/2015
Prelucrarea imaginilor
AB {z | ( B) z A}
Operatia presupune translatarea lui B, astfel incat B sa fie tot timpul continut in A.
Exemple:
( A B )
3/15/2015
Prelucrarea imaginilor
>> imagine=imread('grafic2.jpg');
>> se=strel('diamond', 3);
>> imagine1=imdilate(imagine, se);
>> figure, imshow(imagine1);
Dilatare
3/15/2015
Prelucrarea imaginilor
>> imagine=imread('grafic1.jpg');
>> se=strel('diamond', 5);
>> imagine1=imerode(imagine, se);
>> figure, imshow(imagine1);
Erodare 13 x 13
Dilatare 13 x 13
3/15/2015
Prelucrarea imaginilor
3/15/2015
SE = strel(shape, parameters)
SE = strel('arbitrary', NHOOD)
SE = strel('arbitrary', NHOOD,
HEIGHT)
SE = strel('ball', R, H, N)
SE = strel('diamond', R)
SE = strel('disk', R, N)
SE = strel('line', LEN, DEG)
SE = strel('octagon', R)
SE = strel('pair', OFFSET)
SE = strel('periodicline', P, V)
SE = strel('rectangle', MN)
SE = strel('square', W)
Prelucrarea imaginilor
Imdilate
IM2 = imdilate(IM, SE)
IM2 = imdilate(IM, NHOOD)
IM2 = imdilate(IM, SE, PACKOPT)
IM2 = imdilate(...,SHAPE)
A B ( AB ) B
Deschiderea unei imagini A cu un element structurant B, inseamna erodarea lui A cu B, urmata de dilatarea rezultatului.
Inchiderea:
A B ( A B)B
Inchiderea unei imagini A cu un element structurant B, inseamna dilatarea lui A cu B, urmata de erodarea rezultatului.
Deschidere
Complementaritatea:
3/15/2015
Inchidere
( A B)c ( Ac B)
Prelucrarea imaginilor
3/15/2015
Prelucrarea imaginilor
Imclose
IM2 = imopen(IM,SE)
IM2 = imopen(IM,NHOOD)
IM2 = imclose(IM,SE)
IM2 = imclose(IM,NHOOD)
Element
Structurant
(B)
A-D
Prelucrarea imaginilor
Imaginea C deschisa
>> imagine=imread('amprenta.jpg');
>> se=[1 1 1; 1 1 1; 1 1 1];
>> erodare=imerode(imagine,se);
>> desch=imopen(imagine,se);
>> dil=imdilate(desch,se);
>> cl=imclose(desch,se);
>> figure, imshow(imagine);
>> figure, imshow(erodare);
>> figure, imshow(dil);
>> figure,imshow(cl);
>> dif=imagine-cl;
>> figure, imshow(dif);
10
A B ( AX ) [ Ac (W X )]
Aceasta transformare se foloseste pentru detectarea formelor
(obiectelor).
Mai precis se detecteaza pozitia, locatia unei forme (unui obiect).
Se observa ca transformarea foloseste doua elemente structurante.
De regula primul element structurant este asociat cu obiectul, in vreme
ce cel de-al doilea este asociat cu fundalul. Aceasta pentru ca doua
obiecte se considera disjuncte daca fiecare obiect are in jurul sau cel
putin un pixel de fundal.
In exemplul alaturat, cele doua elemente structurante sunt X si W.
Transformarea de tip hit and miss se realizeaza cu functia bwhitmiss.
Transformarea hit or miss conserva starea pixelilor ale caror vecinatati
se potrivesc (hit) formei primului element structurant si nu se potrivesc
formei celui de al doilea (miss).
3/15/2015
Prelucrarea imaginilor
11
b( A) A ( AB)
unde B este un element structurant bine ales.
Imagine initiala
3/15/2015
Prelucrarea imaginilor
X k ( X k 1 B) Ac , k 1, 2,3,.....
unde, X0=p, iar elementul structurant B are forma din
imagine.
Intersectarea la fiecare iteratie cu complementul
imagini initiale restrange rezultatul la domeniul de
interes. Procesul se numeste dilatare conditionata.
Procesul se opreste cand Xk=Xk-1.
Vezi si functia roifill. Functia se foloseste pentru
stergerea de obiecte din imagini si inlocuirea
spatiului ramas liber cu pixeli ale caror proprietati se
determina prin interpolare pornind de la frontierea
zonei ce se va sterge.
roifill(imagine);
Prelucrarea imaginilor
13
X k ( X k 1 B) A , k 1, 2,3,....
Relatie cvasi-identica cu cea folosita la umplerea regiunilor, cu
diferenta ca aici intersectia nu se mai face cu complementul lui A.
Procesul se opreste cand Xk=Xk-1.
3/15/2015
Prelucrarea imaginilor
14
X ki ( X k 1 B i ) A, i 1, 2,3, 4 si k 1, 2,3,,....
cu
X 0i A
i
Daca se noteaza cu D i X conv
Atunci:
H ( A) D i
i 1
3/15/2015
Prelucrarea imaginilor
15
3/15/2015
Prelucrarea imaginilor
16
AB A ( A B ) A ( A B )c
O alta abordare ar fi folosirea unei secvente de elemente
structurante:
3/15/2015
Prelucrarea imaginilor
17
AB A ( A B)
Sau, iterativ:
3/15/2015
Prelucrarea imaginilor
18
S ( A) K S k ( A)
k 0
Cu
S k ( A) ( AkB) ( AkB) B
3/15/2015
Prelucrarea imaginilor
19
Segmentarea imaginilor
Introducere
Segmentarea imaginilor realizeaza divizarea unei imagini in regiunile sau obiectele constituente.
Segmentarea are multiple aplicatii in prelucrarea automata a imaginilor.
Segmentarea se realizeaza prin utilizarea a doua atribute ale imaginilor de intensitate:
- Discontinuitatea (salturile in nivelul de gri, de exemplu in cazul muchiilor)
- Similaritatea (detectarea zonelor dintr-o imagine similare in functie de anumite criterii)
Detectarea discontinuitatilor
Detectarea discontinuitatilor de tip punct, linie si muchie se face prin convolutie, cu o masca aleasa adecvat si impunerea
unor conditii specifice.
9
Se calculeaza suma de produse de forma:
R w z w z ......w z w z
1 1
2 2
9 9
i 1
i i
Unde wi reprezinta valori de pe masca, iar zi, valori de pe imagine, in dreptul punctului de pe masca.
3/15/2015
Prelucrarea imaginilor
Segmentarea imaginilor
Detectarea punctelor - Exemplu
Imaginea initiala
(Imfilter)
3/15/2015
Prelucrarea imaginilor
Segmentarea imaginilor
Detectarea liniilor
Detectarea liniilor (cu grosimea de un pixel) dintr-o imagine se poate face cu una din mastile de mai jos. Fiecare masca
detecteaza preferential linii de pe o anumita directie.
R w1 z1 w2 z2 ......w9 z9 wi zi
i 1
3/15/2015
Prelucrarea imaginilor
Segmentarea imaginilor
Detectarea liniilor - Exemple
Orizontal
+45
3/15/2015
Vertical
-45
Prelucrarea imaginilor
Segmentarea imaginilor
Detectarea muchiilor - 1
Muchia este un set de pixeli interconectati care se gasesc la
granita dintre doua regiuni. Muchia inseamna deci o tranzitie de
niveld e gri, care poate fi de una din formele alaturate:
3/15/2015
Prelucrarea imaginilor
Segmentarea imaginilor
Detectarea muchiilor - 2
Fara zgomot
3/15/2015
Prelucrarea imaginilor
Segmentarea imaginilor
Detectarea muchiilor Masti de gradient
Mastile folosite pentru calcularea gradientului sunt prezentate alaturat.
Masca Prewitt este mai usor de implementat, dar masca Sobel da mai bune
rezultate in eliminarea zgomotului.
Se observa ca suma coeficientilor in cazul tuturor mastilor este zero, ceea ce
indica faptul ca ele raspuns nul in zonele fara variatii de gri.
Mastile sunt in pereche pentru ca ele produc gradientul dupa directiile x si y.
Gradientul total se determina in practica cu relatia:
f | Gx | | G y |
3/15/2015
Prelucrarea imaginilor
Segmentarea imaginilor
Detectarea muchiilor Masti de gradient Exemple 1
Gradient Prewitt
|Gx|+|Gy|
|Gx|
|Gy|
3/15/2015
Prelucrarea imaginilor
Segmentarea imaginilor
Detectarea muchiilor Masti de gradient Exemple 2
Aceeasi secventa,
pornind de imaginea
netezita cu un filtru de
mediere 5 x 5. Se observa
scaderea contributiei
detaliilor, astfel ca apar
mai evidente muchiile
lungi.
3/15/2015
Prelucrarea imaginilor
Segmentarea imaginilor
Laplacianul 1
Laplacianul
Poate fi descris de una din relatiile:
2 f
2 f 2 f
x 2 y 2
2 f 4 z5 ( z2 z4 z6 z8 )
2 f 8 z5 ( z1 z2 z3 z4 z6 z7 z8 z9 )
Prima este invarianta la rotirea cu 90 grd, iar cea de a doua la rotirea cu unghiuri de 45 grd.
In practica, laplacianul nu se foloseste in stare pura, datorita sensibilitatii sale la zgomot. In practica se
combina laplacianul cu o filtrare de netezire, cu o functie de tipul:
h( r ) e
r2
2 2
, cu r 2 x 2 y 2
r 2 2 2 2
2
h(r ) [
]e
4
2
Convolutia unei imagini cu h este echivalenta cu filtrarea de netezire cu functia h(r), urmata de calculul
laplacianului rezultatului netezirii.
3/15/2015
Prelucrarea imaginilor
10
Segmentarea imaginilor
Laplacianul 2
Reprezentarea grafica, 2D si 3D a laplacianului lui h, precum si masca corespunzatoare, sunt prezentatea mai
jos:
3/15/2015
Prelucrarea imaginilor
11
Segmentarea imaginilor
Conectarea muchiilor si detectarea frontierelor procesarea locala
Algoritmii de detectare de muchii sunt urmati de regula de proceduri de unire a bucatilor de muchii, ce pot
fi intrerupte din diverse motive.
Procesarea locala prespune analizarea pixelilor intr-o vecinatate de mici dimensiuni (3 x 3, sau 5 x 5) si
verificarea daca pixelii care au fost detectati ca apartinand unor muchii sunt similari din anumite puncte de
vedere.
De regula se folosesc doua proprietati:
1. Intensitatea raspunsului operatorului gradient. Astfel, se va considera ca un pixel de coordonate (x0, y0),
aflat intr-o vecinatate a pixelului de coordonate (x,y), este similar cu acesta din punctul de vedere al
intensitatii raspunsului operatorului gardient, daca:
f ( x, y ) f ( x0 , y0 ) E
unde E este un prag pozitiv.
2. Directia vectorului gradient. Aceasta e data de relatia:
G
( x, y ) tan 1 y
Gx
Doi pixeli ca cei descrisi mai sus se considera similari din acest punct de vedere, daca:
( x, y ) ( x0 , y0 ) A
unde A este un unghi prag pozitiv.
3/15/2015
Prelucrarea imaginilor
12
Segmentarea imaginilor
Conectarea muchiilor si detectarea frontierelor procesarea globala 1
Transformarea Hough se bazeaza pe maparea ecuatiei unui segment de dreapta din domeniul spatial in cel
numit spatiul parametric.
yi axi b
b xi a yi
Pentru o pereche de valori (xi, yi), dreapta definita de ecuatia de mai sus este unica.
In plus, un punct (xj, yj), are si el o dreapta asociata in spatiul parametric. Aceasta o intersecteaza pe cea
corespunzatoare punctului (xi, yi) in punctul (a,b), unde a si b sunt panta si respectiv ordonata la origine a
dreptei ce trece prin cele doua puncte considerate. De fapt toate punctele de pe aceasta dreapta au drepte
corespunzatoare in spatiul parametric care trec (toate), prin punctul (a,b).
3/15/2015
Prelucrarea imaginilor
13
Segmentarea imaginilor
Conectarea muchiilor si detectarea frontierelor procesarea globala 2
Spatiul parametric este divizat in celule de acumulare. Fiecare celula corespunde unei perechi (ai, bj). Pentru
fiecare punct (xk, yk) al imaginii, se dau lui a, succesiv, toate valorile pe care le poate lua in intervalul pantelor
asteptate (amin, amax) si se rezolva ecuatia in b, b=-xka+yk. Valorile gasite sunt rotunjite la nivele acceptabile in
intervalul (bmin, bmax). Daca pentru o valoare ai se gaseste o valoare acceptabila pentru bj, celula de acumulare
Ai,j este incrementata cu 1. Daca la finalul procesului valoarea celulei Ai,j este M, inseamna ca exista M puncte in
domeniul spatial care apartin dreptei y=aix+bj. Este evident ca precizia de lucru depinde de desimea diviziunilor
de pe axele a si b.
3/15/2015
Prelucrarea imaginilor
14
Segmentarea imaginilor
Conectarea muchiilor si detectarea frontierelor procesarea globala 3
In practica, aceasta metoda are dezavantajul ca nu negociaza bine situatiile dreptelor verticale, de panta
tinzand spre infinit. Evitarea acestui fenomen se face prin utilizarea ecuatiei dreptei de forma:
x cos y sin
In aceasta situatie, in planul parametric, se opereaza cu sinusoide in loc de segmente de dreapta.
3/15/2015
Prelucrarea imaginilor
15
Segmentarea imaginilor
Conectarea muchiilor si detectarea frontierelor procesarea globala
Exemplu
3/15/2015
Prelucrarea imaginilor
16
Segmentarea imaginilor
Conectarea muchiilor si detectarea frontierelor procesarea globala
Exemplu
imagine=imread('upg.jpg');
imshow(imagine);
l1=edge(imagine,'canny');
figure, imshow(l1);
[H,theta,rho]=hough(l1);
figure, imshow(imadjust(mat2gray(H)),[],'XData',theta,'YData',rho,...
'InitialMagnification','fit');
xlabel('\theta (degrees)'), ylabel('\rho');
axis on, axis normal, hold on;
colormap(hot)
P = houghpeaks(H,50,'threshold',ceil(0.2*max(H(:))));
x = theta(P(:,2));
y = rho(P(:,1));
plot(x,y,'s','color','black');
lines = houghlines(l1,theta,rho,P,'FillGap',5,'MinLength',7);
figure, imshow(imagine), hold on
max_len = 0;
for k = 1:length(lines)
xy = [lines(k).point1; lines(k).point2];
plot(xy(:,1),xy(:,2),'LineWidth',2,'Color','green');
end
3/15/2015
Prelucrarea imaginilor
17
Segmentarea imaginilor
Conectarea muchiilor si detectarea frontierelor procesarea globala
Utilizarea grafurilor - 1
O muchie poate fi considerata ca fiind granita dintre pixeli. In imaginea de mai jos, pixelii p si q sunt 4 vecini.
Putem privi traseele muchiilor ca fiind arcele unui graf. Nodurile grafului sunt punctele unde o muchie incepe (sau se termina).
k
Relatia:
c c(ni 1 , ni )
i2
c( p, q ) H [ f ( p ) f (q )]
unde H este cel mai mare nivel de gri din imagine, iar f(p), respectiv f(q) sunt nivelele de gri ale pixelilor p si q.
Se mai face conventia ca in sensul de parcurs, punctul p se gaseste la dreapta.
In aceste conditii, costurile segmentelor de muchie sunt cele din figura de mai jos (centru). Valorile de deasupra corespund
costurilor pentru sensul de deplasare orizontala de la stanga la dreapta, iar valorile de dedesupt, corespund celuilalt sens de
deplasare orizontala.
S-a mai facut presupunerea ca muchiile incep de pe primul rand de pixeli de sus si se termina pe ultimul rand de pixeli de jos.
3/15/2015
Prelucrarea imaginilor
18
Segmentarea imaginilor
Conectarea muchiilor si detectarea frontierelor procesarea globala
Utilizarea grafurilor - 2
3/15/2015
Prelucrarea imaginilor
19
Segmentarea imaginilor
Conectarea muchiilor si detectarea frontierelor thresholding - 1
Pragurile pot fi folosite si pentru segmentarea imaginilor. Daca histograma unei imagini arata ca mai jos, se poate presupune ca
zonele de maxim corespund fundalului si unui/unor obiecte. Cu ajutorul unui prag (T), sau a doua praguri (T1 si T2), se pot izola
obiectele.
1, daca f ( x, y ) T
g ( x, y )
0, daca f ( x, y ) T
Unde pixelii ce primesc valoarea 1 (sau orice nivel de gri) apartin obiectelor, iar cei care primesc valoarea 0 (sau orice nivel de gri,
neasignat obiectelor), apatin fundalului.
Data propriecatea T depinde numai de f(x,y), avem de-a face cu prag global, iar daca T depinde si de f(x,y) si de p(x,y) avem de-a
face cu un prag local. Daca T depinde si de coordonatele (x,y), pragul se numeste dinamic sau adaptativ.
3/15/2015
Prelucrarea imaginilor
20
Segmentarea imaginilor
Conectarea muchiilor si detectarea frontierelor thresholding - 2
O varianta de algoritm pentru aplicarea unui prag in vederea separarii obiectelor de fundal este urmatoarea:
1. Stabilirea unei valori initiale pentru prag
- Cand fundalul si obiectul ocupa aproximativ aceeasi suprafata din imagine, T se poate lua valoarea
medie de gri a imaginii.
Cand cele doua suprafete sunt sensibil diferite, T se considera o valoarea mediana intre cele doua
nivele de gri (ale fundalului si obiectului)
2.
3.
4.
5.
In general succesul unei operatii de segmentare prin utilizarea pragurilor depinde de iluminarea obiectelor din
imagine.
Imaginile prost iluminate sunt caracterizate de histograme la care maximele nu mai sunt aproape deloc
separate, ceea ce face aplicarea unui prag imposibila. O solutie ar fi segmentarea maginii in subimagini si
aplicarea algoritmului de mai sus pentru fiecare subimagine.
3/15/2015
Prelucrarea imaginilor
21
Segmentarea imaginilor
Conectarea muchiilor si detectarea frontierelor thresholding
Functii - 1
im2bw
BW = im2bw(I, level)
BW = im2bw(X, map, level)
BW = im2bw(RGB, level)
Functia converteste o imagine de intensitate, indexata sau color intr-o imagine alb-negru. Parametrul level, cu
valori in intervalul [0 1] defineste pragul utilizat.
Exemple:
Imagine initiala
3/15/2015
prag=.24
Prelucrarea imaginilor
prag=0.5
22
Segmentarea imaginilor
Conectarea muchiilor si detectarea frontierelor thresholding
Functii - 2
graythresh
level = graythresh(I)
[level EM] = graythresh(I)
Functia determina pragul optim ce urmeaza a fi furnizat functiei im2bw.
Parametrul EM reprezinta nivelul de eficienta al pragului.
Exemplu:
[level,EM]=graythresh(imagine);
>> EM
EM =
0.9522
>> level
level =
0.4902
3/15/2015
Prelucrarea imaginilor
23
Segmentarea imaginilor
Conectarea muchiilor si detectarea frontierelor thresholding
Functii - 3
grayslice
X = grayslice(I, n)
X = grayslice(I, v)
Functia aplica praguri multiple unei imagini.
Prima sintaxa va aplica pragurile:
1 2
n 1
, ,....,
n n
n
A doua sintaxa aplica pragurile specificate in vectorul v. Valorile pragurilor trebuie sa fie cuprinse in intervalul [0 1].
Functia transforma imaginea de intensitate intr-o imagine indexata. Vizualizarea acesteia se face si cu sintaxa:
Imshow(imagine,map), unde map este harta de culoare folosita.
Exemplu:
figure, imshow(tr2);
3/15/2015
24
Segmentarea imaginilor
Conectarea muchiilor si detectarea frontierelor thresholding
Functii - 4
threshold
type:
'isodata': Thresholding cu algoritmul Isodata - Ridler and Calvard (1978)
'otsu: Thresholding prin utilizarea variantei maximale inter-clase - Otsu (1979)
'minerror' : Thresholding prin utilizarea metodei erorii minime - Kittler si Illingworth (1986)
'triangle': Thresholding prin utilizarea metodei coardei - by Zack, Rogers si Latt (1977)
'background': Thresholding prin utilizarea metodei simetriei de fundal bimodale
'fixed': Thresholding cu o valoare fixa
'double': Thresholding intre doua valori fixe
'volume': Thresholding pentru obtinerea unei fractii de volum
'hysteresis': Din imaginea binara (valoare de gri > low (min), sunt selectati numai regiunile pentru care cel
putin un pixel are valoarea > high (max)
parameter:
Pentru isodata: numarul de praguri ce se vor folosi. Implicit 1
Pentru 'background: distanta pana la maximul maximul unde se aplica pragul, masurata la jumatate de latime
si jumatate din maxim. Implicit 2.
Pentru fixed, : Threshold la valoare fixa. Implicit valoarea medie de gri.
Pentru 'double: Doua valori de prag. Implicit min+[1/3,2/3]*(max-min).
Pentru 'volume: Volumul fractiei. Implicit 0.5
Pentru 'hysteresis: Doua valori: [min,max]
3/15/2015
Prelucrarea imaginilor
25
Segmentarea imaginilor
Conectarea muchiilor si detectarea frontierelor thresholding
Functii - 5
min=50,
max = 120
3/15/2015
Threshold (dip-image)
Prelucrarea imaginilor
26
Segmentarea imaginilor
Conectarea muchiilor si detectarea frontierelor thresholding
Functii - 6
binarize(M, thresh) Intoarce forma binara a imaginii M. Pixelii cu valoarea peste thresh sunt setati pe 1, ceilalti pe 0.
binarize2(M, lowThresh, highThresh, inValue, outValue) Intoarce forma binarizata a imaginii M. Pixelii cu valori
intre lowTresh si highTresh sunt setati pe valoarea inValue, iar ceilalti pe valoarea outValue.
binarize_auto(M) Intoarce forma binara a imaginii M, cu pragul setat automat.
threshold(M, thresh) Intoarce imaginea M, cu pixelii cu valoarea sub thresh setati pe thresh.
3/15/2015
Prelucrarea imaginilor
27
Segmentarea imaginilor
Utilizarea informatiilor de frontiera pentru ameliorarea histogramelor si
aplicarea de praguri locale - 1
Eficienta tehnicilor de aplicare de praguri depinde de calitatea histogramelor.
O solutie ar fi sa fie considerati numai pixelii care se gasesc pe sau in apropierea muchiilor dintre obiecte.
In acest caz, se va manifesta o tendinta de adancire a vailor dintre maximele unei histograme.
Modul de lucru este urmatorul:
Se formeaza o imagine ai carei pixeli sunt setati pe 3 nivele, astfel:
0, daca f T
s ( x, y ) , daca f T si 2 f 0
, daca f T si 2 f 0
Prelucrarea imaginilor
28
Segmentarea imaginilor
Utilizarea informatiilor de frontiera pentru ameliorarea histogramelor si
aplicarea de praguri locale - exemplu
3/15/2015
Prelucrarea imaginilor
29
Segmentarea imaginilor
Watersheding - 1
3/15/2015
Prelucrarea imaginilor
30
Segmentarea imaginilor
Watersheding - 2
Functii:
Matlab:
L = watershed(A)
L = watershed(A, conn)
Dipimage:
image_out = watershed(image_in,connectivity,max_depth,max_size)
image_out = waterseed(seed_image,grey_image,connectivity,max_depth,max_size)
3/15/2015
Prelucrarea imaginilor
31
rmn paralele, dar dreptunghiurile pot deveni paralelograme (de exemplu pentru
transformarea de deformare - shear).
Liniile drepte rmn drepte, dar cele paralele converg ctre puncte de fug, situate chiar i
'projective'
'box'
independent.
'custom'
'composite'
Prelucrarea imaginilor
cos( ) sin( ) 0
sin( ) cos( ) 0
0
0
1
>> imagine=imread('cladire_2.jpg');
>> a=pi/6;
>> matrice_de_rotatie=[cos(a) sin(a) 0;-sin(a) cos(a) 0;0 0 1];
>> % crearea structurii de transformare:
>> s_rotatie=maketform('affine',matrice_de_rotatie);
>> %realizarea efectiva a transformarii:
>> imagine_rotita=imtransform(imagine,s_rotatie);
>> %afisare imagine transformata (rotita):
>> imshow(imagine_rotita);
3/15/2015
Prelucrarea imaginilor
1 0 0
0 1 0
ux uy 1
>> imagine=imread('cladire_2.jpg');
>> matrice_translatie=[1 0 0;0 1 0; 200 400 1];
>> % imaginea e translatat cu 200 de pixeli pe direcia X i cu 400 de pixeli pe direcia Y.
>> % creare structura de transformare:
>> trans=maketform('affine',matrice_translatie);
>> % realizarea transformarii:
>>imagine_translatata=imtransform(imagine,trans,'Xdata', [1 1600], 'Ydata',... [1 1400], 'FillValues', [200;160;120]);
>> imshow(imagine_translatata);
3/15/2015
Prelucrarea imaginilor
0
sy
0
0
0
1
Secvena de comenzi care realizeaz scalarea unei imagini cu scrile sx=1.5, respectiv sy=.75, este urmtoarea:
>> imagine=imread('img1.jpg');
>> sx=1.5;
>> sy=.75;
>> matrice_de_scalare=[sx 0 0;0 sy 0; 0 0 1];
>> structura_scalare=maketform('affine',matrice_de_scalare);
>> imagine_scalata=imtransform(imagine,structura_scalare);
>> imshow(imagine_scalata);
3/15/2015
Prelucrarea imaginilor
1
sh
x
0
shy
1
0
0
0
1
x cu shx tan( x )
y cu shy tan( y )
>> imagine=imread('img1.jpg');
>> ax=pi/6;
>> ay=0;
>> shx=tan(ax);
>> shy=tan(ay);
>> matrice_deformare=[1 shy 0;shx 1 0;0 0 1];
>> structura_deformare=maketform('affine',matrice_deformare);
>> imagine_deformata=imtransform(imagine,structura_deformare);
>> imshow(imagine_deformata);
ax=pi/6, ay=0
3/15/2015
ax=pi/6, ay=pi/4
Prelucrarea imaginilor
Se realizeaz de fapt maparea (aducerea ) punctelor pi_in, p2_in, p3_in n (peste) punctele p1_out, p2_out,
p3_out.
Mai jos este prezentat secvena ce realizeaz o astfel de transformare afin. Imaginea utilizat are
dimensiunile 116 x 118 pixeli. n figura este prezentat imaginea de lucru i sunt marcate colurile, precum
i coordonatele lor, exprimate n coordonate pixeli (asta explic de ce punctul din stnga sus, unde se
gsete originea sistemului de axe, are coordonatele (1, 1) i nu (0, 0)). Pe figur s-a mai marcat i punctul
de la mijlocul laturii inferior orizontale. Tripleta de puncte ce se vor mapa este sugerat de ncadrarea n
ptrele. Noile puncte vor avea coordonatele (1, 1), (100, 1), (117, 60).
>> imagine=imread('img1.jpg');
>> sursa=[1 1;117 1;59 119];
>> tinta=[1 1;100 1;117 60];
>> structura_transf=maketform('affine',sursa, tinta);
>> imagine_transformata=imtransform(imagine,structura_transf);
>> imshow(imagine_transformata);
>> size(imagine_transformata)
3/15/2015
Prelucrarea imaginilor
3/15/2015
Prelucrarea imaginilor
3/15/2015
Prelucrarea imaginilor
Sunt transformri n cascad. Mai jos este prezentat o secven care aplic unei imagini o scalare,
urmat de o rotire i n final o transformare proiectiv.
>> imagine=imread('img1.jpg');
>> sx=.75;
>> sy=1.25;
>> alf=pi/6;
>> scalare=[sx 0 0;0 sy 0;0 0 1];
>> rotire=[cos(alf) sin(alf) 0;-sin(alf) cos(alf) 0;0 0 1];
>> sursa=[1 1; 117 1; 117 119; 1 119];
>> tinta=[40 1; 80 1; 117 119; 1 199];
>> structura_s=maketform('affine',scalare);
>> structura_r=maketform('affine', rotire);
>> structura_p=maketform('projective',surs, tinta);
>> structura_compusa=maketform ('composite', structura_s, structura_r, structura_p);
>> imagine_finala=imtransform(imagine,structura_compusa);
>> imshow(imagine_finala);
3/15/2015
Prelucrarea imaginilor
Crearea structurii
pentru transformarea
spatiala
(cp2tform)
Selectare puncte de
control
(cpselect)
Reglajul fin al
punctelor de control
optional (cpcorr)
3/15/2015
Prelucrarea imaginilor
Realizarea
transformatei
spatiale
(imtransform)
10
3/15/2015
Prelucrarea imaginilor
11
3/15/2015
Prelucrarea imaginilor
12
3/15/2015
Prelucrarea imaginilor
13
3/15/2015
Prelucrarea imaginilor
14
3/15/2015
Prelucrarea imaginilor
15
3/15/2015
Prelucrarea imaginilor
16
imagine_deformata=imread('centru_ploiesti deformat3.jpg');
imagine_etalon=imread('centru_ploiesti etalon.jpg');
[a,b]=cpselect(imagine_deformata, imagine_etalon, 'wait', true);
structura=cp2tform(a, b, 'affine');
info=imfinfo('centru_ploiesti etalon.jpg');
imagine_corectata=imtransform(imagine_deformata, structura,'XData',[1
info.Width],'YData',[1 info.Height]);
imshow(imagine_corectata);
hold on
h = imshow(imagine_etalon, gray(256));
set(h, 'AlphaData', 0.6);
3/15/2015
Prelucrarea imaginilor
17
3/15/2015
Prelucrarea imaginilor
18
De aceast dat imaginea defect este rotit i scalat. Pentru astfel de situaii, este suficient o
transformare liniar care necesit un numr minim de dou perechi de puncte. Fiierul m utilizat se numete
(aliniere_imagini_rotit.m).
imagine_deformata=imread('centru_ploiesti rotit.jpg');
imagine_etalon=imread('centru_ploiesti etalon.jpg');
[a,b]=cpselect(imagine_deformata, imagine_etalon, 'wait', true);
structura=cp2tform(a, b, 'linear conformal');
info=imfinfo('centru_ploiesti etalon.jpg');
imagine_corectata=imtransform(imagine_deformata, structura,'XData',[1
info.Width],'YData',[1 info.Height]);
imshow(imagine_corectata);
hold on
h = imshow(imagine_etalon, gray(256));
set(h, 'AlphaData', 0.6);
3/15/2015
Prelucrarea imaginilor
19
3/15/2015
Prelucrarea imaginilor
20
3/15/2015
Prelucrarea imaginilor
21
3/15/2015
Prelucrarea imaginilor
22
3/15/2015
Prelucrarea imaginilor
23
3/15/2015
Prelucrarea imaginilor
24