reprezentarea si analiza obiectelorusers.utcluj.ro/~simona/apim/apim6.pdf–schimbam sistemul de...
TRANSCRIPT
APIM6 - 1
Reprezentarea si analiza
obiectelor
APIM6 - 2
In cursul de astazi… • Masuratori ale formei obiectelor
• Masuratori ale obiectelor multiple – masuratori globale ale obiectelor
– numararea obiectelor
– obiecte care intersecteaza marginea imaginii
– obiecte suprapuse
– distributia obiectelor
– transformata Hough
• Reprezentarea obiectelor – reprezentarea frontierei obiectelor
– reprezentarea regiunilor
APIM6 - 3
Introducere
• Segmentarea imaginilor = impartirea imaginii in structuri cu un anumit inteles
• Sarcina procesarii imaginii = determinarea unui grup de pixeli dintr-o imagine care sunt uniti intr-un anumit fel
• Grup de pixeli = obiect
• Utilizarea acestui grup de pixeli pentru a face masuratori
• Reprezentarea obiectelor
APIM6 - 4
Conectivitate • obiectul = un set de pixeli conectati
• in 2D: – conectivitate 4 (N4)
– conectivitate 8 (N8)
• in 3D: conectivitate 6, 18 sau 26
conectivitate 4 conectivitate 8
APIM6 - 5
Metrici distanta
• distanta Manhattan (city-block, taxicab) pentru N4
d4(x,y) = |x1-x2| + |y1-y2|
• distanta Chebyshev (chessboard) pentru N8
d8(x,y) = max{|x1-x2|, |y1-y2|}
• distanta euclidiana
APIM6 - 6
Masuratori ale formei obiectului
• Masuratoarea reduce imaginea la un scalar si ascunde detaliile
• Dificultatea = alegerea masuratorii adecvate tipului de aplicatie; alegerea masuratorii care reduce informatia de care avem nevoie la un scalar
• Exista un numar mare de masuratori de baza asupra formei obiectelor
• Deseori nu exista consens in definirea lor matematica
• Majoritatea masuratorilor sunt sensibile la rezolutie
APIM6 - 7
Masuratori ale formei obiectului (2) • aria
• perimetrul
• compactitatea
• rotunjimea
• cea mai lunga coarda
• cea mai lunga coarda perpendiculara
• excentricitatea
• elongatia
• aria minima a dreptunghiului circumscris
• dreptunghiularitatea
• curbura
• etc.
APIM6 - 8
Masuratori ale formei obiectului (3)
• Aria (A) – numararea tuturor pixelilor continuti in obiect
• Perimetrul (l) – lungimea totala a frontierei obiectului
– pasul poate fi 1 sau 2
l = 11.07
l = 14
APIM6 - 9
Masuratori ale formei obiectului (4) • Compactitatea:
– c mic - obiect compact
– c mare - obiect mai putin compact
– c =1 -> cerc
– c>1 pentru celelalte forme
• Rotunjimea =1/c
A
lc
4
2
APIM6 - 10
Masuratori ale formei obiectului (5)
• Cea mai lunga coarda:
– masurata intre pixeli (x1,y1) si (x2,y2) aflati pe frontiera figurii
• Cea mai lunga coarda perpendiculara = lp
• Excentricitatea = lc/lp
12
12
2
12
2
12 )()(
xx
yytg
yyxxlc
APIM6 - 11
Masuratori ale formei obiectului (6) • Aria minima a dreptunghiului circumscris – Am
– aprox. Am = lclp
• Dreptunghiularitatea = A/Am
– este 1 pentru dreptunghi
– este <1 pentru toate celelalte forme
APIM6 - 12
Masuratori ale formei obiectului (7)
• Elongatia = lb/sb
– sau A/t2, unde t este grosimea obiectului (se poate obtine prin
erodare)
APIM6 - 13
Masuratori ale formei obiectului (8) • Curbura
– unghiul dintre liniile care se intersecteaza pe frontiera in punctul i, linii ce pornesc din al n-lea pixel de pe frontiera de o parte si de alta a pixelului i
– curbura globala a obiectului= cs/ct, unde ct este numarul de pixeli de pe frontiera obiectului si cs numarul de pixeli unde curbura depaseste o anumita valoare de prag
– creste n -> scade sensitivitatea curburii locale
APIM6 - 14
Masuratori ale formei obiectului (9)
• Energia constrictoare - un alt mod de ingloba curbura
locala intr-o valoare globala
– unde l este perimetrul si α este unghiul definit pentru curbura
APIM6 - 15
Exemple
Cercuri de doua
dimensiuni -> aria Cercuri si elipse ->
excentricitatea
Elipse orientate in
doua directii ->
orientarea celei mai
lungi corzi
APIM6 - 16
Exemple
Cercuri si patrate ->
dreptunghiularitate sau
compactitate
Patrate si octogoane ->
dreptunghiularitate sau
compactitate
APIM6 - 17
Masuratori bazate pe schelet (1) • Pana acum masuratorile au fost efectuate luand in
considerare pixelii de pe frontiera obiectului
• Se pot face masuratori utilizand scheletul si functia quench
• Numarul de goluri (h) dintr-un obiect:
– unde: b – numarul de ramuri
e – numarul de puncte finale
APIM6 - 18
Masuratori bazate pe schelet (2)
h=1+(b-e)/2 -> e=2+b-2h;
e =2
e= 2 + b
e = 2 + b – 2h
APIM6 - 19
Masuratori bazate pe schelet (3) • Grosimea obiectului –data de functia quench
– functia quench -> metoda scheletului pe baza sferelor maxime -> discontinuitati si ramnificari false -> util. subtierii
APIM6 - 20
Transformata distanta • Asociaza fiecarui pixel al obiectului distanta sa pana
la cel mai apropiat pixel al fundalului
Imaginea Transformata sa distanta euclidiana
APIM6 - 21
Transformata distanta (2) • in general se utilizeaza doar numere intregi ->
distanta Manhattan
AB = 3
CD = 4
CE = 5
DE = 9
APIM6 - 22
Transformata distanta (3) • Transformata distanta a unui obiect dintr-o imagine
binara f este o suma de eroziuni cu elementul structural ’+’ de 3x3:
– unde n este suficient de mare astfel incat εn(f) sa fie o imagine goala
APIM6 - 23
Transformata distanta (4)
APIM6 - 24
Transformata distanta (5) • utilizarea eroziunii este ineficienta
• exista mai multi algoritmi
• un algoritm in doi pasi:
– se seteaza valorile pixelilor fundalului la 0 si valorile pixelilor obiectului la ;
– se parcurge imaginea de la stanga la dreapta si de sus in jos si se inlocuieste valoarea fiecarui pixel (x,y) cu valoarea:
v(x,y) = min{ v(x-1,y-1)+2, v(x,y-1)+1, v(x+1,y-1)+2, v(x-1,y)+1, v(x,y) };
– se parcurge imaginea de la dreapta la stanga si de jos in sus si se inlocuieste valoarea fiecarui pixel (x,y) cu valoarea: v(x,y) = min{v(x,y), v(x+1,y)+1,
v(x-1,y+1)+2, v(x,y+1)+1, v(x+1,y+1)+2};
APIM6 - 25
Transformata distanta (6) • uneori in loc de +1 si +2 se utilizeaza alte valori
(de ex. 3 si 4) daca se cere o aprox. mai buna a distantei euclidiene
• se pot utiliza urmatoarele nuclee
• inlocuirea se face direct in imagine si calculul valorii urmatorului pixel se face pe baza noii valori a pixelului anterior
APIM6 - 26
Exemplu
APIM6 - 27
Exemplu
Imaginea originala Transformarea ei
distanta
Scheletul obtinut
APIM6 - 28
Exemplu
Inmultirea transformatei
distanta cu scheletul
Transformata
distanta Scheletul obtinut
APIM6 - 29
Masuratori pe baza momentului (1)
• intr-o imagine binara aria este:
• coordonatele medii ale obiectului (coordonatele centrului de greutate sau centroidul) sunt:
APIM6 - 30
Exemplu
APIM6 - 31
Masuratori pe baza momentului (2)
• momentul de ordin p al functiei f(x):
• pentru 2D momentul de ordin p+q al functiei f(x,y):
• pentru o imagine f(x,y):
APIM6 - 32
Masuratori pe baza momentului (3) • pe baza definitiei momentului:
• momentul central μpq al functiei f(x,y):
• momentul central de ordinul doi ->axa momentului de inertie (echivalenta cu axa lungime a obiectului)
APIM6 - 33
Masuratori pe baza momentului (4) • excentricitatea:
• exemplu
APIM6 - 34
Exemplu
APIM6 - 35
Exemplu
APIM6 - 36
Determinarea dreptunghiului circumscris • o buna aproximare este dreptunghiul orientat dupa
unghiul θ definit anterior:
–schimbam sistemul de coordonate;
– cautam pixelii unde x' sau y' au valori maxime sau minime.
APIM6 - 37
Determinarea elipsei circumscrise • Centrul elipsei este in centrul de masa al obiectului
si axa sa cea mai lunga este aliniata cu θ:
–Excentricitatea:
APIM6 - 38
Momentele valorilor de gri Momentul mpq:
si momentul central μpq al functiei f(x,y):
au aceleasi ecuatii, apare doar suma ponderata a valorilor lui f(x,y)
APIM6 - 39
Exemplu
APIM6 - 40
Momentele valorii de gri (2) • Pot fi calculate in doua moduri:
– aplicand direct formulele momentului asupra imaginii
– utilizand un model hibrid binar/gri
APIM6 - 41
Momentele valorii de gri (3) • Utilizate la localizarea pozitiei exacte a unor
spoturi neclare datorita achizitiei imaginii
APIM6 - 42
Masuratori globale ale obiectelor • este util sa obtinem masuratori ce caracterizeaza la nivel
global obiectele dintr-o imagine
• cel mai simplu este sa obtinem masuratori individuale pe
care sa le compunem
• aria medie a unui obiect:
• eroarea medie patratica a ariei:
APIM6 - 43
Masuratori globale ale obiectelor (2)
• histograma masuratorilor -> examinarea distributiei statistice
Histograma
rectangularitatii
Histograma
excentricitatii
APIM6 - 44
Masuratori globale ale obiectelor (3)
• uneori nu e necesara obtinerea unor masuratori
individuale
• ex. distributia dimensionala a obiectelor
granulometria deschiderilor extinderea curbei (x pixeli in 103) cu inchiderile
APIM6 - 45
Masuratori globale ale obiectelor (4)
• ex. determinarea orientarii obiectelor
– determinarea imaginii modulului transformatei Fourier
– determinarea elipsei circumscrise obiectului din
imaginea Fourier -> orientarea axei lungi a elipsei
– mai putine calcule
• multe posibilitati -> dependente de aplicatii
APIM6 - 46
Numararea obiectelor
• Pentru imagini binare (f(x,y)=1 pentru pixelii (x,y) apartinand obiectului: 1. se seteaza numarul de obiecte la 0
2. se parcurge imaginea pana cand se intalneste un pixel care apartine unui obiect (f(x,y)=1)
– se incrementeaza numarul de obiecte cu 1
– se determina toti pixelii conectati cu pixelul (x,y)
– se sterge obiectul din imagine setand pixelii la 0
3. se continua parcurgerea imaginii (pasul 2) pana se ajunge la sfarsitul imaginii
APIM6 - 47
Numararea obiectelor (2)
• exemplu:
nr.de ob.=0 nr.de ob.= nr.de ob+1 cont. verificarea imag.
APIM6 - 48
Numararea obiectelor (3)
• un algoritm alternativ:
1. se aplica eroziunea finala asupra imaginii initiale f
2. daca este necesar se reduc markerii la puncte
izolate (prin subtiere); Imaginea obtinuta g contine
atatea obiecte izolate cate obiecte au fost in
imaginea initiala f
3. se numara punctele izolate din g: g(x,y)
APIM6 - 49
Numararea obiectelor (4)
• alg. original modificat-> permite asocierea unei etichete fiecarui obiect: 1. se seteaza numarul de obiecte la 0
2. se parcurge imaginea pana se intalneste un pixel care apartine unui obiect (f(x,y)=1)
– se incrementeaza numarul de obiecte cu 1
– se determina toti pixelii conectati cu pixelul
– se seteaza toti pixelii obiectului la valoarea nr.de ob.+1
3. se continua parcurgerea imaginii (pasul 2) pana se ajunge la sfarsitul imaginii
APIM6 - 50
Numararea obiectelor (5)
• dupa aplicarea alg. modificat obiectele vor fi
numerotate {2,…, n+1}
• selectarea unui obiect i pentru masuratori =
selectarea tuturor pixelilor care au valoarea i
APIM6 - 51
Obiecte care intersecteaza marginea
imaginii
• la efectuarea masuratorilor -> atentie la obiectele care intersecteaza marg. imag.
• tratare diferita, in functie de masuratoare – numarul de obiecte pe unitatea de suprafata -> nu se
numara ob. care intersecteaza marg. din dreapta si de jos a imaginii
– densitatea obiectelor -> raportul dintre aria obiectelor si cea a imaginii -> se considera toate obiectele
– masuratori de forma -> numai ob. care nu intersecteaza frontiera
APIM6 - 52
Obiecte care inters. marg. imag. (2)
• se ia o imag mai mica -> toate
obiectele care intersecteaza
marg. stanga si sus a imag.
mici
• obiecte care intersecteaza atat
marg. stanga si sus a figurii
orig cat si a fig. mici -> mas.
neconcludente
APIM6 - 53
Obiecte suprapuse
• genereaza masuratori incorecte
• numararea obiectelor suprapuse-> eroziuni
succesive -> separarea obiectelor
linia de separare
APIM6 - 54
Obiecte suprapuse (2)
• separarea obiectelor -> utila pentru eliminarea unor
deviatii introduse in masuratori
Imaginea imaginea+SKIZ
APIM6 - 55
Obiecte suprapuse (3)
• Segmentarea Watershed
APIM6 - 56
Obiecte suprapuse (4)
APIM6 - 57
Obiecte suprapuse (4)
• Prin segmentare watershed unele obiecte care se suprapun
prea mult raman neseparate
APIM6 - 58
Distributia obiectelor
• asezarea obiectelor unele fata de altele:
– grupate
– uniform distribuite
– distribuite aleator
APIM6 - 59
Distributia obiectelor (2)
• histograma distantelor celui mai apropiat obiect:
– de la frontiera pana la frontiera
– de la centroid la centroid
• histograma:
– distante mici -> ob. grupate
– distante de o valoare fixa -> ob. uniform distribuite
– mai dispersata -> ob. distribuite aleator
APIM6 - 60
Distributia obiectelor (3)
• O aproximatie buna = transformata distanta a
scheletului fundalului -> distanta pana la cel mai
apropiat obiect = dublul transf. distantei unui ob.
APIM6 - 61
Transformata Hough
• det. liniile dintr-o imagine
• spatiu (x,y), linie y=ax+b -> spatiu (a,b); o line in
spatiul (x,y) -> un punct in spatiu (a,b)
• nu pot modela liniile verticale
y=x si y= -0.5x+1 (1,0) si (-0.5, 1)
APIM6 - 62
Transformata Hough (2) • Algoritm:
– se creeaza o imagine goala H
– pentru fiecare pixel al obiectului determinam (a,b) corespunzator dreptei care trece prin pixel si marim valoarea lui H(a,b) pentru perechile respective (a,b)
• Alg. modificat: – selectam un set de valori discrete pentru a si b (ex. a
{0,0.1,0.2,0.3,…,100} si b {0,1,2,…100}
– se creeaza o imagine goala H
– pentru fiecare pixel p al obiectului pentru fiecare ai din set determinam b a.i. dreapta sa treaca prin pixel;rotunjim b la cea mai apropiata val din set, bj; H(ai,bj) = H(ai,bj)+1
APIM6 - 63
Transformata Hough (3)
APIM6 - 64
Transformata Hough (4) • in practica caract. liniilor prin a si b nu e eficienta –>
distanta de la centru la dreapta si unghiul sau fata de
abscisa
APIM6 - 65
Transformata Hough (5)
• util. pentru detectarea laturilor drepte -> calculeaza
imaginea cu laturi si apoi alg.:
a) calc. imaginii cu laturi (de ex. Sobel)
b) binarizarea imag. folosind o val. de prag
c) aplicarea transformatei Hough pe imag. binarizata
d) localizarea maximului local in imag. transformata si calcularea liniilor corespunzatoare din imag. originala
APIM6 - 66
Transformata Hough (6)
APIM6 - 67
Transformata Hough (7)
• in imaginile in nuante de gri la valoarea lui H(a,b) se adauga
valoarea de gri a pixelului respectiv
• este o tehnica robusta <- insensibila la zgomot
APIM6 - 68
Extensia transformatei Hough • se pot detecta si alte forme parametrizate
• de ex. spatiul (x,y) -> spatiul cercurilor (a,b,r) unde
(a,b) este centrul cercului si r este raza lui:
(x-a)2+(y-b)2=r2 0r
1r
0 0( , )a b
1 1( , )a b
0 0( , )x y
APIM6 - 69
Extensia transformatei Hough (2)
• algoritm asemanator:
– selectam un set de valori discrete pentru a, b si r
– se creeaza o imagine goala tridimensionala H(a,b,r)
– pentru fiecare pixel p al obiectului determinam a,b si r
din seturi a.i. cercul sa treaca prin pixel -> H(ai,bj,rj) =
H(ai,bj,rj) + 1
– se cauta maximele locale -> cercurile din imaginea
initiala
APIM6 - 70
Extensia transformatei Hough (3)
0r
1r
0 0( , )a b
1 1( , )a b
y
x
a
br
0r r
0 0( , )x y
0 0( , )x y
1 1( , )x y
1 1( , )x y
0 0 0( , , )a b r
APIM6 - 71
Extensia transformatei Hough (4) a
b
0r
1r
0 0( , )a b
1 1( , )a b
y
x
1r r
0 0( , )x y
1 1( , )x y
0 0( , )x y
1 1( , )x y
1 1 1( , , )a b r
APIM6 - 72
Reprezentarea obiectelor
• utila descrierea obiectelor atat in binar cat si intr-o reprezentare ce descrie marginile obiectului
• este o forma mai compacta a imag. originale
• retine toate informatiile legate de forma obiectului original
• skeletul impreuna cu functia quench este o alta reprezentare compacta a obiectelor
APIM6 - 73
Coduri inlantuite
• o reprezentare a frontierelor obiectului
• algoritm:
1. se alege un pixel de pe frontiera ca punct de pornire
2. se cauta directia in care se afla pixelul vecin de pe frontiera
3. se considera acest pixel vecin ca pixel curent, daca pixelul este diferit de pixelul de pornire atunci se revine la pasul 2, daca pixelul este chiar pixelul de pornire atunci alg. se opreste
APIM6 - 74
Coduri inlantuite (2)
= o lista de 17 cifre -> 17 x 3 = 51 biti
APIM6 - 75
Coduri inlantuite (3)
= o lista de 22 cifre -> 22 x 2 = 44 biti
APIM6 - 76
Coduri inlantuite (4)
• conectivitate 4 pentru obiect -> conect. 8 pt. fundal
• conectivitate 8 pentru obiect -> conect. 4 pt. fundal
APIM6 - 77
Coduri inlantuite (5)
• chiar si atunci cand pixelul obiectului are conectivitate 8 -> descriem frontiera exterioara utilizand 4 directii
APIM6 - 78
Coduri inlantuite (6) • un simplu lant {0,3,2,1} sau {3,2,1,0} sau
{2,1,0,3}
• compararea a doua obiecte: se roteste codul inlantuit astfel incat numarul format de toate cifrele sa fie minim
• utilizarea directiei relativa la directia anterioara: – aceeasi directie (0) – la stanga (1) – inapoi (2) – la dreapta (3)
{3,3,3,3} -> se scad valorile succesive {i,j} (j-i)%4 sau %8
APIM6 - 79
Coduri inlantuite (7) • Perimetrul:
– conectiv. 4 -> nr. de cifre din lant
– conectiv. 8 ->
• Aria: 1. seteaza A=0 si y=0 2. pentru fiecare cifra din lant:
– cifra=0 -> A=A-y – cifra=1 -> y=y-1 – cifra=2 -> A=A+y – cifra=3 -> y=y+1
APIM6 - 80
Coduri inlantuite (8) • Aria:
1. seteaza A=0 si y=0 2. pentru fiecare cifra din lant:
– cifra=0 -> A=A-y – cifra=1 -> y=y-1 – cifra=2 -> A=A+y – cifra=3 -> y=y+1
APIM6 - 81
Coduri inlantuite (9) • Centrul de greutate:
1. seteaza suma=0, x=0 si val=0 2. pentru fiecare cifra din lant:
– cifra=0 -> x=x+1,val=val+(x-1/2) – cifra=1 -> suma=suma-val – cifra=2 -> val=val-(x-1/2), x=x-1 – cifra=3 -> suma=suma+val
3. x=sum/A
APIM6 - 82
Coduri inlantuite (10) • Centrul de greutate:
1. seteaza suma=0, x=0 si val=0 2. pentru fiecare cifra din lant:
– cifra=0 -> x=x+1,val=val+(x-1/2) – cifra=1 -> suma=suma-val – cifra=2 -> val=val-(x-1/2), x=x-1 – cifra=3 -> suma=suma+val
3. x=sum/A
APIM6 - 83
Distanta fata de centrul de greutate • distanta fiecarui pixel fata de centrul de greutate
• caracterizeaza forma obiectului->comparatii
APIM6 - 84
Distanta fata de centrul de greutate(2)
APIM6 - 85
Distanta fata de centrul de greutate(3)
•normalizare (valori
intre 0 si 1)
•pt. comparare -> se
deplaseaza graficul
pana cand minimul
global este localizat
la θ=0
APIM6 - 86
Distanta fata de centrul de greutate(4) • discretizarea -> obiectul este dependent de
orientarea sa
APIM6 - 87
Distanta fata de centrul de greutate(5) • pt. un unghi pot exista valori multiple
APIM6 - 88
Descriptori Fourier • pixelii de pe frontiera (x(k),y(k)) unde k=0,..,n-1
-> u(k)=x(k)+iy(k) -> descriptorii Fourier ai frontierei:
– unde v=0,..,n-1
• utilizati pentru comparatii
APIM6 - 89
Coduri “Run-length” • reprezentarea regiunilor (compresie)
• regiunile sunt compuse din randuri de pixeli -> codul este format din pixelul de start urmat de numarul de pixeli
• lungimea zonelor negre si albe
APIM6 - 90
Arbori cu 4 ramuri (quadtrees) • reprezentarea regiunilor (compresie si vizualizare)