Documente Academic
Documente Profesional
Documente Cultură
Prelucrarea Imaginilor
Prelucrarea Imaginilor
I magi n i l o r
Info IV
2001
Cuprins
Pag.
Prefaţă .................................................................................... 3
Bibliografie ......................................................................................... 40
2
Prefaţă
Grafica pe calculator este un domeniu modern cu multiple aplicaţii practice în
diverse domenii de activitate (medicină, artă, etc.), care pot fi realizate datorită dezvoltării
disciplinelor matematice specializate în această direcţie.
a) Grafică
În acest material sunt abordate aspecte propriu-zisă
doar dintr-o singură ramură ale graficii pe
Descriere Imagine b)
calculator, definite de Pavlidis în [3] (vezi de imagine Prelucrarea
schemele de mai jos) şi anume Prelucrarea c) Recunoaşterea
imaginilor
imaginilor (transformarea imiginilor). formelor
În cele ce urmemză sunt prezentate diverse metode, tehnici şi algoritmi utilizaţi în
reprezentarea şi prelucrarea digitală a imaginilor, atât în vederea creşterii calităţii imaginii
destinate ochiului uman (paragraful doi intitulat Îmbunătăţirea imaginilor, prin
operaţiuni punctuale şi spaţiale) cât şi în scopul recunoaşterii formelor (paragraful trei
Transformări ale imaginilor cuprinzând algoritmi de determinare a conturului,
scheletizare şi subţiere).
Determinarea Determinarea
Segmentare Conturului Punctelor
Critice
1. Imagini 2. Imagini 3. Linii şi 4. Puncte
Color Alb-Negru Curbe Critice
3
1. Reprezentarea imaginilor digitale
4
Funcţiile picturale sunt utilizate în numeroase probleme de prelucrare a imaginilor
(codificare, aproximare, filtrare, restaurare, scalare, etc.) prin diverse operaţii aplicate
acestora .
Lema 1.1.1.
Descrierea unei imagini printr-o funcţie picturală este echivalentă cu descrierea
acesteia prin cuvinte picturale.
definit astfel :
i,u1i,u1+1...i,j...i,u2-1i,u2 pentru i impar,
wi =
i,u2i,u2-1... i,j...i,u1+1i+1,u1 pentru i par.
Subcuvintele de colorare (ij, ij) a pătratelor Sij sunt definite după cum urmează:
5
Se observă că -cuvântul de descriere,
parcurge matricea de pătrate care reprezintă
imaginea descrisă de funcţia f şi colorează
acele pătrate pentru care valoarea funcţiei
picturale este negru. Ordinea de parcurgere
este cea din figura 1.1.2. Figura 1.1.2
Pentru descrierea unei imagini color putem utiliza comenzi din mulţimea C.
Pentru a descrie o imagine formată din pătrate Sij de tipul celor de mai sus (vezi figura
1.1.1), vom preciza şi culoarea pătratului care se desenează (după deplasarea definită prin
comanda {r,u,l,d}). De exemplu c-cuvântul w = arbr3arbd3adbl3albu3fdrcr
(C)* descrie imaginea din figura 1.1.4 (unde C={a,b,c,f), iar cu f am notat culoarea
fondului care poate fi alb sau poate fi interpretat ca fără culoare ).
a:
b:
c:
f:
6
A doua metodă de construcţie a -cuvintelor pornind de la o funcţie picturală
este mai eficientă (în sensul complexităţii descrierii) pentru imaginile rare (care au puţine
pătrate colorate în comparaţie cu fereastra ecran), adică raportul
Spre deosebire de prima metodă care traversează toată fereastra (figura 1.1.2),
metoda care urmează să fie prezentată va căuta doar acele pătrate care sunt colorate
(f(Sij)>0).
Pentru imagini alb-negru vom construi -cuvântul astfel :
w = wv1,u1wv1,u1+1...wv1,j ...wv1,u2 ... wi,u1wi,u1+1...wi,j...wi,u2 ... wv2,u1wv2,u1+1...wv2,j...wv2,u2 ,
unde:
dacă f (Sij) = 0 ,
wi,j =
rj di u ui lj dacă f (Sij) > 0 . (v1 iv2 , u1j u2)
Pentru că acest cuvânt conţine multe deplasări inutile cu creionul ridicat, este
necesară o reducere a acestui cuvânt. -cuvântul redus este wr = ref(w) care reprezintă
-cuvântul independent de retrageri relativ la mulţimea retragerilor:
Algoritmul 1.1.1.
7
Construieşte cuvântul de descriere w = Reduc(ci1rwi2 wi3 ... win), unde
Lema 1.1.2.
Demonstraţie.
Se observă că formula 1.1.1 urmăreşte deplasarea cursorului începând din vârful
vi1 prin pătratele vi2, ... , vik , ... , vin , pe care le colorează. În funcţie de poziţia relativă a
două pătrate consecutive (vik-1 , vik) din lanţul hamiltonian, cursorul se va deplasa pe unul
din cele patru trasee din figura 1.1.5.
u
Din cele C trasee (u = | j1 j2|, iar v = |i1 i2|, vezi figura 1.1.6), nu
u+v
contează pe care îl vom parcurge pentru că în dreptungiul definit de cele două vârfuri
diagonal opuse nu există nici un vârf pe care trebuie să-l colorăm (dacă ar exista, atunci
lanţul determinat nu mai este minim) .
8
În cele ce urmează vom studia diverse moduri de descriere a imaginilor de tip 3
(formate din linii şi curbe). Pentru că descrierea imaginilor formate din linii a fost
prezentată în primul capitol (utilizând -limbaje), în continuarea acestui paragraf vor fi
prezentate câteva tehnici de descriere a curbelor.
O imagine este de tip 3 dacă poate fi complet descrisă printr-un număr finit de linii
şi curbe [3]. O curbă poate fi aproximată utilizând o mulţime de puncte alese dintr-o
mulţime de puncte din plan (de exemplu dintr-un sistem cartezian rectangular, ca în
figurile 1.1.7 şi 1.1.8).
Algoritmul 1.1.2.
Pentru i:=1,n execută Pi,1:=Pi;
Pentru j:=1,s execută :=(j1)/(s1);
Pentru m:=1,n1 execută
Pentru i:=1,nm execută
Pi,m+1 := (1) Pi,m + Pi+1,m ;
Bj:= P1,n
Sf_alg.
10
Algoritmul prezentat ne dă ca rezultat un şir de puncte B1,B2,...,Bs. Teoretic,
curba de interpolare Bezier (a punctelor P1,P2,...,Pn) este:
Practic, reprezentatarea grafică a curbei este realizată prin desenarea celor s-1
segmente determinate de şirul punctelor B1, B2, ... , Bs , adică
BezierSeg(P1,P2,...,Pn) = { BjBj+1 / j=1,s1} (vezi figura 1.1.11).
Se observă în figurile 1.1.9 şi 1.1.10 că dacă plecăm de la o curbă c şi
determinăm mulţimea punctelor critice MPc(c) , apoi prin algoritmul Bezier calculăm
punctele Bj, j=1,s , acestea se depărtează de punctele critice iniţiale, adică MPc(c)
{Apr(Bj) / j = 1,s}, iar curba c'= BezierSeg(MPc(c)) c. Desigur că ne-ar interesa ca
această curbă determinată prin interpolarea punctelor critice să fie cât mai apropiată de
curba iniţială, adică :
{Apr(P1,n () ) / [0,1]} = {Apr(P) / Pc }. (1.1.3.)
Presupunem că avem o curbă c0 , pentru care determinăm şirul punctelor s0 de
coordonate întregi cele mai apropiate. Acest şir poate fi descris printr-un -cuvânt w
astfel încât mulţimea punctelor desenului descris de w să fie mulţimea punctelor critice
corespunzătoare curbei c0 , adică : V(dpic(w)) = {Apr(P) / Pc0}.
Observaţia 1.1.1.
Această proprietate (1.1.5) a celor două transformări (de interpolare şi de
determinare a punctelor critice) este importantă, pentru că fiecare transformare este, în
acest caz, inversa celeilalte. De exemplu, după codificarea unei imagini (în scopul
comprimării), decodificarea (adică transformarea inversă) se va efectua printr-o
interpolare (care să conserve punctele critice, deci descrierea prin -cuvinte).
În acest scop, în continuare se va prezenta o transformare (prin interpolare
Bezier) care conservă -cuvântul de descriere.
11
Pentru a obţine un şir de puncte
cât mai apropiat de punctele critice, vom
grupa punctele P1,P2,...,Pn în subşiruri de
o anumită lungime q (de exemplu în
figura 1.1.13 am grupat câte 5 respectiv
câte 7), apoi vom aplica algoritmul
Bezier pentru fiecare subşir.
Figura 1.1.13
Curba rezultat fiind obţinută prin reuniunea curbelor descrise:
c = Bezier (P1,...,Pq) Bezier (Pq,...,P2q1) ... Bezier (Pn(n Mod q)+1,...,Pn) (1.1.6)
Lema 1.1.4.
O transformare de tipul 1.1.6, utilizând grupări de lungime q<7, conservă
punctele critice ( Apr(c)={P1,P2,...,Pn} ), deci şi -cuvântul de descriere (w), dacă acesta
nu conţine retrageri (wref(*),).
Demonstraţia se poate face pentru fiecare q începând de la 2 până la 6.
Este mult mai eficientă gruparea punctelor iniţiale, P1,P2,...,Pn în cât mai puţine
subşiruri (deci cât mai puţine curbe Bezier) care să conserve punctele critice (fără a stabili
un număr q de puncte din subşiruri). Aceasta înseamnă că se urmăreşte formarea de
subşiruri de dimensiuni cât mai mari. La un subşir Pi,Pi+1,...,Pj care conservă punctele
critice se va adăuga punctul Pj+1 doar dacă şirul Pi,Pi+1,...,PjPj+1 conservă punctele critice
(situaţie în care se continuă cu punctul Pj+2 şi aşa mai departe) altfel se începe o nouă
grupare Pj,Pj+1,.... În felul acesta se vor forma subşiruri de puncte de lungime cel puţin
şase, aceasta depinzând de poziţia relativă a punctelor.
Algoritmul următor determină numărul minim (notat cu k) de grupări care
conservă punctele critice.
Algoritmul 1.1.3.
12
Observaţia 1.1.2.
Numărul minim de grupări care conservă punctele P1, P2, ... ,Pn este NrGr(1,n) ,
unde:
1 dacă Apr(Bezier(Pi,...,Pj)) = {Pi, ...,Pj}, (a)
NrGr( i, j) =
Min {NrGr(i, l)+NrGr(l, j)}dacă Apr(Bezier(Pi,...,Pj)) {Pi, ...,Pj}. (b)
i<l<j
Dacă Lmin(i,j) este indicele l pentru care se realizează minimul din formula
precedentă cazul b) sau este egal cu 0 pentru cazul a), atunci şirul de puncte P1, P2, ... ,Pn
este despărţit optim în două subşiruri, şi anume ( P1, P2, ... ,PLmin(1, n) ) şi (PLmin(1, n), ...,Pn).
În continuare, fiecare subşir Pi, ...,Pj se desparte în două subşiruri în punctul PLmin(i, j)
(dacă Lmin(i,j)>0), şi aşa mai departe până când toate subşirurile au indicele de
separare Lmin(i,j) nul. Observăm că numărul subşirurilor astfel obţinute este minim.
Pentru ca acest algoritm să fie mai rapid (pentru a nu repeta anumite calcule) se
recomandă depunerea valorilor deja calculate NrGr (i, j) într-o matrice pătratică M de
ordin n. Valoarea NrGr(i, j) o vom depune în Mij. Valorile acestei matrice le vom
determmina succesiv pentru prima diagonală paralelă cu diagonala principală, apoi
pentru a doua, şi aşa mai departe până se ajunge la M1n care reprezintă valoarea
căutată. Pe baza lemei 1.1.4, putem să evităm calculele pentru primele şase diagonale,
acestea având toate valorile egale cu 1. Practic, calculul valorilor va începe cu
diagonala a şaptea. Pentru a putea forma subşirurile optimale (nu ne interesează doar
numărul de grupări minim dat de M1n) vom memora în elementul Mj,i indicele pentru
care se realizează minimul funcţiei pentru subşirul punctelor de la i la j (putem acest
lucru, deoarece elementele de sub diagonala principală nu sunt utilizate).
Vom construi un arbore binar care conţine în fiecare perechi de forma (i,j),
unde i şi j reprezintă limitele unui subşir optim determinat (Pi, ... ,Pj). Acest arborele
are rădăcina (1,n). Dacă pentru un nod (i,j) al arborelui avem Apr(Bezier(Pi, ... ,Pj)) =
{Pi, ... ,Pj} atunci acest nod este un nod terminal (frunză), altfel va avea doi subarbori
cu rădăcinile (i,Mji) respectiv (Mji,j). Frontul acestui arbore ne va da subşirurile
optimale.
Evident că algoritmul 1.1.3 şi cel prezentat anterior (apelând metoda
programării dinamice) nu dau neapărat aceeaşi soluţie, dar ambele sunt minimale. Dacă
avem mai multe variante de despărţire a unui subşir de puncte, se preferă, separarea în
punctul Pi, dacă punctele Pi-1, Pi şi Pi+1 sunt coliniare (aceasta asigură continuitatea
curbei Bezier, deoarece aceasta este tangentă la capetele liniei poligonale determinate
de punctele de interpolare). În acest fel curba are mai puţine puncte de întoarcere, deci
mai puţine asperităţi.
13
În continuare se va prezenta un model de descriere a unei imagini de tip 3
(după clasificarea dată în [3]) utilizând -cuvinte. Aceste cuvinte vor descrie un şir de
puncte care determină o curbă prin interpolare Bezier. Aceasta înseamnă că o mulţime
de -cuvinte descrie o imagine formată din curbe, adică de tip 3.
Plecând de la un anumit punct de start P 1(x1, y1) (care poate fi chiar originea),
printr-un -cuvânt de descriere w=a1a2...am , vom construi şirul punctelor de
interpolare P2(x2, y2), P3(x3, y3), ... , Pn(xn, yn). Din şirul punctelor traversate prin
comnezile -cuvântului w, se vor selecta în vederea interpolării doar punctele
traversate cu creionul coborât ().
Fiecare -cuvânt descrie un şir de puncte aşa cum s-a prezentat mai sus, prin
funcţiile definite anterior Nr şi Pb, iar prin interpolare Bezier a şirurilor construite se
vor obţine curbele care compun imaginea.
Figura 1.1.14.
Prin interpolarea acestor puncte se obţin cele trei curbe reprezentând imaginea
literei A mare de mână, din figura 1.1.14. Asemănător se pot defini -cuvinte de
descriere a unor simboluri matematice.
14
1.2. Reprezentarea imaginilor prin arbori
Dacă o formă complexă poate fi reprezentată natural prin arbori atunci este de
asemenea natural să generarăm descrierea sa utilizând gramatici arborescente. Figura
1.2.1 arată cum poate fi utilizat un arbore pentru a descrie o formă grafică (o imagine)
descompusă în arii elementare disjuncte. Imaginea este descompusă în patru arii
(pătrate, considerate în ordinea a11 , a12 , a21 , a21) iar dacă o arie conţine puncte de
aceeaşi culoare atunci ea va fi reprezentată printr-un nod terminal (frunză), informaţia
fiind culoarea respectivă, altfel (dacă aria conţine puncte de culori diferite) atunci ea
va fi reprezentată printr-un nod intern şi se va descompune din nou în patru arii
elementare (care vor fi subarbori) şi aşa mai departe până se ajunge la nivel de punct
(pixel).
- culoarea 1,
- culoarea 2,
- culoarea 3,
- culoarea 4,
- alb.
Figura 1.2.1
15
Altă metodă de codificare a unei imagini reprezentată prin Quad-Tree (arbri
care se ramifică în patru, prezentaţi mai sus) utilizează şiruri de caractere care conţin
codul culorilor şi un alt caracter de ramificare (de exemplu ‘*’). De exemplu imaginea
din figura 1.2.3 se codifică prin şirul ‘**annanna’ .
*
annnnannnnaann
aa * n n a
a n n a
Figura 1.2.3
16
Codificare a unei imagini prin arbri binari utilizează două caractere de
ramificare ‘─’ şi ‘|’.
De exemplu imaginea din figura 1.2.4 se codifică prin şirul :
‘─|─|an|nan|na’ ─
| |
12 534 annnnannnnaann ─ n n a
aa
| |
a n n a
Figura 1.2.4
Sf_Pb.
17
2. Îmbunătăţirea imaginilor
zgomotului, etc. şi
Operaţiuni spaţiale care permit eliminarea zgomotului, filtrări, etc.
a) Accentuarea contrastului
Această transformare este recomandată imaginilor cu contrast scăzut (obţinute
de exemplu într-un mediu cu iluminare slabă).
Fiind date două limite a şi b ( 0 < a < b < L ) pentru care se cunosc valorile
va = f(a)<a, respectiv vb = f(b) < b, transformarea este:
v
L
vb
u * va / a pentru 0 u a
f(u) = (u-a) / (b-a) * (vb - va ) + va pentru a < u b
(u-b) / (L-b) * (L - vb ) + vb pentru b < u L.
va
0 a b L u
Observaţie.
Valorile a şi b se pot obţine din histograma imaginii;
Parametrii va şi vb precizează amlificarea contrastului;
L contrastului).
Pentru va > a şi vb < b se obţine transformarea inversă (reducerea
0 L
1) f1(u) = ( sin(* u/L-/2) + 1) / 2 * L ,
b) Reducerea zgomotului
v v
vb=L vb=L
sau
vmin
va = 0 a b Lu 0 a b Lu
Observaţie.
Valorile a şi b se pot fixa studiind histograma imaginii.
c) Binarizarea imaginilor
Această operaţie are ca obiectiv obţinerea unei imagini alb-negru dintr-o
imagine care conţine şi alte nuanţe nedorite provenite din diverse motive tehnice (de
exemplu copiere). Aceste zgomote apărute în imagine vor fi eliminate prin studierea
histogramei imagini. Transformarea este un caz particular al celei precedente ( b) )
pentru a=b = valea histogramei (vezi graficul următor):
19
0 (sau o valoare minimă vmin ) pentru 0 u a
f(u) =
L pentru a< u L.
v v
Alb Alb
sau
vmin
Negru Negru
Negru a=b Alb u Negru a=b Alb u
d) Negativarea imaginilor
Această operaţie de inversare a imaginilor se poate utiliza în situaţia în care
dispunem de negativul unei imagini (de exemplu în prelucrarea imaginilor medicale).
Operaţia de inversare se realizează prin v
transformarea următoare: L
v = f(u) = L - u
sau
0 a b L u 0 a b L u
fd fa
f) Extragerea unui bit
20
Transformarea se aplică în determinarea biţilor nesemnificativi din punct de
vedere vizual dintr-o imagine (deoarece putem spune că doar primii şase au
semnificaţie vizuală, contribuţia celorlalţi fiind legată doar de redarea detaliilor fine din
imagine, fără a oferi informaţii asupra structurii acesteia).
h) Scăderea imaginilor
Operaţia de scădere a două imagini este necesară la compararea acestora dacă
deosebirile dintre ele sunt relativ mici faţă de complexitatea imaginilor. Prin scăderea
celor două imagini se pun în evidenţă diferenţele dintre cele două imagini.
21
Se observă că 0p(u)1, deci transformarea este v = f(u) = p(u) * L.
t(u) v t(v)
0 Lu 0 Lu 0 Lv
a) b) c)
22
2.2. Operaţiuni spaţiale 1
pentru ponderi egale pentru toate punctele din vecinătate 1/4 1/4
(conform figurilor alăturate, pentru vecinătăţi de 2x2
respectiv de 3x3) formula de calcul este următoarea: 1/4 1/4
vi,j = 1 * uk,l 2x2
|W| P W 1/9 1/9 1/9
k,l i,j
unde prin |W| am notat aria ferestrei de calcul, adică 1/9 1/9 1/9
numărul de pixeli pentru care se calculează media (în
exemplele de mai sus fiind 4 respectiv 9). 1/9 1/9 1/9
3x3
pentru ponderi diferite în funcţie de poziţia punctului 0 1/8 0
vecin (vezi figurile alăturate, pentru vecinătăţi de 3x3)
formula de calcul sunt următoarele: 1/8 1/2 1/8
0 1/8 0
vi,j = (ui,j + ( ui-1,j + ui+1,j + ui,j-1 + ui,j+1) / 4 ) / 2
23
Mediere spaţială
Pentru o imagine dată de relaţia: vi,j = ui,j + i,j unde i,j reprezintă zgomotul alb
(de valoare medie nulă), operaţia de mediere spaţială este dată de formula :
vi,j = 1 * uk,l + i,j
|W| P W
k,l i,j
unde prin |W| am notat aria ferestrei de calcul, iar i,j este media zgomotului i,j .
Filtrare direcţională
Această transformare permite protejarea conturului atenuat în general prin
operaţii de mediere spaţială. Relaţia de calcul este următoarea:
* este acel pentru care se realizează minimul expresiei | ui,j - vi,j ( ) | (direcţia
optimă, vezi figura alăturată) ,
vi,j ( ) = 1 * uk,l
|W | P W
k,l i,j;
Filtrare mediană
Operaţia de filtrare mediană permite eliminarea punctelor (sau chiar a liniilor)
izolate din imagine menţinând aspectul spaţial al imaginii. Transformarea este
următoarea:
x(n+1)/2 pentru n impar
vi,j =
(xn/2+xn/2+1) / 2 pentru n par
unde xs ( s = 1,2, ... ,n=|W| ) este şirul ordonat (crescător sau descrescător) format din
elementele mulţimii { uk,l / Pk,l Wi,j }.
b) Accentuarea contururilor
Operaţia de accentuare a conturului se utilizează în scopul punerii în evidenţă a
liniilor şi arcelor conţinute într-o imagine. Această tehnică se bazează pe scăderea din
imaginea iniţială a unri imagini filtrate. Transformarea este de forma:
vi,j = ui,j + * gi,j
unde >0 iar gi,j este gradientul funcţiei ui,j ales convenabil, de exemplu laplacianul
discret:
gi,j = ui,j - fi,j
24
fi,j reprezentând rezultatul filtrării :
25
e) Dilatarea imaginilor
Scalarea se obţine prin repetarea unui pixel de f ori atât pe linii cât şi pe coloane,
astfel încât fiecare pixel se transformă într-un pătrat de latură f. Transformarea unei
imagini de dimensiuni m x n este dată de formula:
interpolare pe linii :
interpolare pe coloane :
interpolare pe linii : 2 4 6 3
4 6 8 4
interpolare pe coloane : 2 4 6 3
3 5 7 3.5
4 6 8 4
2 3 4 2
26
e) Îmbunătăţirea imaginilor biomedicale
Alegerea culorilor din paletă trebuie făcută astfel încât tranziţia de la o culoare la
alta să fie cât mai lină, fără salturi mari.
27
Tabelul următor conţine o paletă propusă pentru aplicaţiile biomedicale:
28
3. Transformări ale imaginilor
Putem considera că un punct P(j,i) are patru vecini ( pe cele patru direcţii,
r(P), u(P), l(P), d(P) ) din fereastra ecran (VE) :
V4(P) = { Q VE / (P,Q) =1 }
Figura 3.1.1
Dacă imaginea este alb-negru, atunci vom preciza culoarea fondului şi culoarea
obiectului. Practic vom preciza o culoare (alb sau negru) care reprezintă culoarea
29
punctelor pentru care se verifică apartenenţa la contur (vezi figurile de mai jos, unde
conturul poate fi unul din cele două).
********** ******************
Culoare(P)=Negru şi
| {QVv(P) / Culoare(Q)=Alb } | >1
Practic se verifică pentru fiecare punct PVE condiţiile de tipul celor de mai
sus, sau mai simplu, putem spune că P Conturului dacă următoarea expresie este
adevărată:
30
3.2. Scheletizare
Obiectele sau scenele pot fi descrise prin diverse structuri compuse din diferite
elemente (linii, curbe, etc). De exemplu în recunoaşterea caracterelor, amprentelor,
cromozomilor, a norilor, etc., sunt necesare transformări ale axei mediane în scopul
obţinerii unei descrieri a obiectului studiat. În cele ce urmează vor fi prezentate două
clase de algoritmi şi anume: de scheletizare şi de subţiere.
k=1,2,...,lăţimea obiectului;
31
3.3. Subţiere
Algoritmii de subţiere urmăresc transformarea obiectelor într-un set de arce
digitale aflate de-a lungul axelor mediane (vezi figura 3.3.1).
O caracteristică importantă a acestor algoritmi
constă în faptul că structura obţinută nu depinde de
neregularităţile mici ale conturului. Strategia acestor
algoritmi poate fi următoarea: se elemină punctele P Ob
Contur(Ob), adică acele puncte de pe marginea sau
frontiera obiectului, care îndeplinesc următoarele condiţii:
au cel puţin doi vecini (Ob): |V8(P)Ob| 2 (Nv(P)>1) Figura 3.3.1
nu provoacă prin eliminare o deconectare a
obiectului (rupere a legăturilor) :
32148567
Notaţia 3.3.1
Numărul vecinilor punctului P (de culoare albă, Ob) este :
Nv(P)::= |{Q/QOb}V8(P)|.
Notaţia 3.3.2
Numărul tranziţiilor de la 0 la 1 în şirul punctelor P1, P2 ,..., P8, P9=P1 este:
Nt(P) ::= |{i{1,...,8} / PiOb şi Pi+1Ob}V8(P)| (vezi figura 3.3.2, unde Nt(P)=2)
Propoziţia 3.3.1
Punctul POb se poate elimina dacă următoarele condiţii sunt îndeplinite:
2Nv(P)6 ( dacă Nv(P)=1 atunci P este extremitate, iar dacă Nv(P)>6 atunci P
este punct interior, deci nu se poate elimina nici în acest caz);
Nt(P)=1 ( pentru a nu deconecta obiectul ).
Algoritmul constă în determinarea şi eliminarea punctelor care îndeplinesc
propoziţia 3.3.1. Verificarea condiţiilor se repetă până când nu mai sunt modificări în
imagine.
32
3.4. Transformări morfologice ( Morphological Processing [4])
Notaţia 3.4.1
Bx
Translaţia lui B în x notată cu Bx,
OB
este acea translaţie pentru care originea
elementului structural B (OB) va coincide x
cu x (vezi figura alăturată).
X B
Definiţia 3.4.1
XO- B = { x / Bx X }.
Exemplul 3.4.1
oooooooooo oooooooooo
oooooooooo oooooooooo
oooooooooo oooooooooo
oo o oo o o o oo
oo o oo o o o oo
O- o o o oo o o o o o
o o o oo o o o o o
oooooooooo oooooooooo
oooooooooo oo oooooooooo
o o oo o oo o oo o o o o o oo o o o
o o o oo o oo o o oo oo oo oo oo
o oo o oo o o o o o oo o oo o oo o
O- =
o oo o oo o oo o o oo o o o oo oo
o o o oo o oo o o oo oo o o oo o o
oo
oo o oo o o o oo o o o oo o o o oo
oooooooooo oooooooooo
o oo o oo o o o o o oo o oo o o o o
oo
oo oooooooooo oooooooooo
oooooooooo oooooooooo
oooooooooo oooooooooo
Legendă:
o - Origine,
Se observă că eroziunea este o operaţie de o - Obiect,
micşorare a obiectului. o - Fond,
o - Şters.
33
Definiţia 3.4.2
Dilatarea lui X prin B, notată cu XO+ B, este mulţimea acelor puncte x pentru
care Bx şi X au cel puţin un element (punct) comun:
XO+ B = { x / Bx X }.
ooooooooo ooooooooooooooo
O+
o oo o oo oo o oo o o o o
o oo o oo oo o oo o oo o
ooo ooooooooooooooo
oo o oo oo o o o oo o oo o o oo o o o oo
ooooooooo
oo o oo oo o o o oo o oo o o oo o o o oo
oo o oo oo o o o oo o oo oo oo o oo o o
oo o oo o o o o o oo o oo oo o o o oo o o
oo o oo o o o o o oo o oo o oo o o oo o o
O+ o o o = ooooooooooooooo
oo o oo oo oo o o o oo o o o oo o oo o o
ooooooooo
oo o o o oo o o o o o oo o o o oo o oo oo
oo o o o oo o o o o o oo o oo oo o oo oo
o oo o oo oo o oo oo o o
o oo o oo oo o oo oo o o
ooo
ooo ooooooooo ooo ooooooooooooooo
ooo
ooooooooo ooooooooooooooo
ooooooooo ooooooooooooooo
ooooooooooooooo
ooooooooooooooo
ooooooooooooooo
Legendă:
o - Origine,
o - Obiect,
o - Fond,
Se poate observa că dilatarea este o operaţie de o - Şters,
o - Adăugat.
extindere a obiectului.
34
- (X O- B) O- B' = X O- (BO+ B') ,
e) Incluziune :
- Dacă XX' Atunci X O- B X' O- B,
B ,
şi X O+ B X' O+ B, B ;
- Dacă BB' Atunci X O- B X O- B',
X;
f) Dualitate (eroziunea şi dilatarea sunt duale faţă de complementare notată cu XC):
- (XC O+ B) = (X O- B)C .
ooooooooo ooooooooo
ooooooooo ooooooooo
ooooooooo ooooooooo
ooooooooo ooo ooooooooo
ooooooooo O* ooo
ooo
= ooooooooo
ooooooooo ooooooooo
ooooooooo ooooooooo
ooooooooo ooooooooo
35
b) Deschiderea lui X faţă de B, notată cu XB este domeniul baleiat de toate translaţiile
lui B incluse în X:
- XB = (X O- B) O+ B;
Netezeşte conturul (elimină asperităţile) şi separă insulele mici:
ooooooooo ooooooooo
ooooooooo ooo ooooooooo
ooooooooo ooo ooooooooo
ooooooooo ooo ooooooooo
X B XB
ooooooooo ooooooooo
ooooooooo ooooooooo
ooooooooo ooooooooo
ooooooooo ooooooooo
ooooooooo ooooooooo
ooooooooo ooo ooooooooo
ooooooooo ooo ooooooooo
ooooooooo ooo ooooooooo
X B XB
d) Determinarea Conturlui ( X ):
- X = X \ (X O- G);
Determină punctele de pe contur fără a da o ordine a acestora:
ooooooooo ooooooooo
ooooooooo ooooooooo
ooooooooo ooo ooooooooo
ooooooooo ooo ooooooooo
ooooooooo ooo ooooooooo
ooooooooo ooooooooo
X G X
36
- X O B = X \ (X O* B);
ooo*o*ooo o - obiect,
Elementul structural uzual este B = ; unde: o - fond,
* - neutru.
oooooooooooooo oooooooooooooo
oooooooooooooo oooooooooooooo
oooooooooooooo ooo oooooooooooooo
oooooooooooooo ooo oooooooooooooo
oooooooooooooo ooo oooooooooooooo
oooooooooooooo oooooooooooooo
oooooooooooooo oooooooooooooo
X B X Os B
oooooooooooooo oooooooooooooo
oooooooooooooo oooooooooooooo
oooooooooooooo ooo oooooooooooooo
oooooooooooooo ooo oooooooooooooo
oooooooooooooo ooo oooooooooooooo
oooooooooooooo oooooooooooooo
oooooooooooooo oooooooooooooo
X B XOo B
- X=
r >0
[sr(x) O+ rD ] .
Pentru a obţine scheletul unui ooooooo ooooooo
ooooooo ooooooo
obiect vom înlocui discul rD cu ooooooo ooooooo
ooooooo ooooooo
ooooooo ooooooo
ooooooo ooooooo
ooooooo ooo ooooooo 37
ooooooo ooo ooooooo
ooooooo ooo ooooooo
X G S(X)
elementul de structură (G) definit
de un pătrat de dimensiuni 3x3 aşa
cum se opate vedea în figura
alăturată:
unde nmax este cel mai mic n pentru care X O- nG = (erodat succesiv devine vid);
Obiectul X reconstituit:
n max
- X= [sn(x) O+ nG ] .
n= 0
X2 = [ X1O* E j ] ;
j= 1
***oooooo o - obiect,
E= o - fond,
* - neutru.
;
oooooooooooooo oooooooooooooo
oooooooooooooo oooooooooooooo
oooooooooooooo ooo oooooooooooooo
oooooooooooooo ooo oooooooooooooo
oooooooooooooo ooo oooooooooooooo
oooooooooooooo oooooooooooooo
oooooooooooooo oooooooooooooo
X B Xpn
38
Lucr ă ri de laborator
39
Bibliografie
40