Sunteți pe pagina 1din 10

Extragerea contururilor unei regiuni

O regiune este un set de pixeli conectat n care toi pixelii au aceeai intensitate/culoare.
Definiii
1a: Doi pixeli sunt vecini direci (vecini-d) dac celulele lor au o latur comun .
1b: Doi pixeli sunt vecini indireci (vecini-i) dac celulele lor se ating numai ntr-un col
.
1c: Termenul vecin-N, 0N7, desemneaz un pixel aflat n poziia N fa de un pixel , ca n
figura de mai !os"
# $ %
& '
( ) *
+ecini-d sunt +ecini-N, cu N,par
+ecini-i sunt +ecini-N, cu N,impar
2a: O cale este o sec+en de pixeli -
%
, -
$
,., -
n
, astfel nc/t"
pentru 01%, -
0-%
este un +ecin al lui -
0
pentru 02n, -
03%
este un +ecin al lui -
0
2b: O cale-d este o cale n care toi pixelii sunt +ecini-d.
2c: O cale simpl este o cale n care toi pixelii sunt distincti i nici un pixel nu are mai mult
de $ +ecini-d n cale.
2d: O cale nchis este o cale n care primul pixel coincide cu ultimul.
3: 4n set de pixeli, S, este conectat 5sau conectat-i6, dac pentru fiecare perec7e de pixeli -
i 8 din 9, exist o cale n care - i 8 sunt primul i ultimul element, iar toi ceilali pixeli ai
cii aparin lui 9.
Termenul set de pixeli conectat-d are nelesul care rezult, adic ntre fiecare perec7e de
pixeli exist o cale-d.
Reprezentarea contururior
Curs SPG - Copyright 2005 Prof. dr. ing. Florica Moldoveanu
%
%6 rin adresele a:solute ale pixelilor care-l compun, sau adresa primului urmata de adrese
relati+e
$6 rin cod ;reeman , cod de nlnuire a:solut
#6 rin cod de nlnuire diferenial
<od ;reeman 5cod de
nlnuire6
<od de nlnuire
diferenial
alorile codului Free!an sunt
valori absolute.
alorile codului diferential sunt
valori relative.
"le e#pri!a schi!$area de
directie in pasul curent.
"#e!plu%
<odul ;reeman pentru exemplu"
', %, ', ), ', (
9unt necesari #:ii/pixel.
<odul de nlnuire diferential
pentru exemplu"
', 3%, -%, -$, 3$, -#
entru un contur neted, in codul diferential predomina ', 3%, -%. De aceea, pentru
reprezentarea unui contur prin cod diferenial se poate folosi un numr diferit de :ii pentru
fiecare direcie, rezult/nd o medie de 2bii/pixel"
' '
3% '%
Curs SPG - Copyright 2005 Prof. dr. ing. Florica Moldoveanu
$
-% '%%
3$ '%%%
-$ '%%%%
3# '%%%%%
-# '%%%%%%
& '%%%%%%%
!ra"er#area contururior re$iunior
<onturul unei regiuni este tra+ersat pe o cale nc7is, fiind posi:il ntotdeauna s se aleag o
astfel de cale.
Un pixel de contur este un pixel care are cel puin un +ecin-d n afara regiunii.
Pixelul de start se poate alege, de exemplu, scan/nd imaginea de sus n !os i de la st/nga la
dreapta" el este un pixel care aparine regiunii considerate 5are intensitatea pixelilor regiunii6
i este pixel de contur.
Tra+ersarea const ntr-o deplasare pixel cu pixel, n fiecare pas fiind ales ca pixel urmtor
pixelul din regiune care este cel mai n dreapta fa de pixelul curent. =n acest fel, interiorul
regiunii se afla ntotdeauna n st/nga pixelului selectat 5conturului6.
<u aceasta regula de tra+ersare, contururile exterioare sunt parcurse in sens trigonometric, iar
cele interioare in sensul acelor de ceas.
%$orit& de e'tra$ere a unui contur
Curs SPG - Copyright 2005 Prof. dr. ing. Florica Moldoveanu
#
unctul de start se alege astfel nc/t +ecinul su & s nu aparin regiunii.
-legerea se :azeaz pe cunoaterea intensitii pixelilor din regiune.
unctul de start ales poate fi un pixel izolat.
Notaii: 9 - pixelul de start
< - pixelul curent
D - direcia de cutare a urmatorului pixel de contur, unde '>D>*, iar direciile
sunt codificate astfel"
# $ %
& '
( ) *
ur& - pixelul din +ecinatatea celui curent, care ar putea fi urmtorul pixel de
frontier 5contur6
contur , +ector n care se memoreaz direcia de deplasare n fiecare pas? n
final se +a o:ine reprezentarea prin cod de nlnuire 5;reeman6 a conturului
tra+ersat.
ur& in R , true, daca urm aparine regiunii @ 5are intensitatea pixelilor
regiunii6.
Operatiile si & sunt operatii AmoduloB. -stfel"
daca D,' atunci D & % , *
daca D,) atunci D $ ,'

Cniial D,).
=n fiecare iteraie se caut urmtorul punct de contur printre +ecinii D & %, D, D % ai
pixelului curent.
-lgoritmul se termin c/nd pixelul curent este cel de start.
Curs SPG - Copyright 2005 Prof. dr. ing. Florica Moldoveanu
&
Dste posi:il ca pixelul de start sa fie un punct izolat. De aceea, daca dupa trei iteratii nu s-a
gasit un alt punct de contur, inseamna ca punctul de start este punct izolat.
;unctia (unct)ontur prezentata in continuare primeste ca parametru punctul de contur
curent si intoarce urmatorul punct de contur, sau punctul curent daca in +ecinatatile D & %, D,
D % nu se gaseste un punct de contur. Directia in care s-a gasit urmatorul punct de contur
este memorata in +ectorul contur.
unsigned c7ar E contur?
int n,', D?
unct (unct)ontur 5unct <6
F unct urm?
urm , +ecin5<, D & %6?
if 5urm in @6
F conturGn33H , 5unsigned c7ar6 5D & %6?
D , D & $?
return urm?
I
urm , +ecin5<, D6?
if 5urm in @6
F conturGn33H , 5unsigned c7ar6D?
return urm?
I
urm , +ecin5<, D %6?
if 5urm in @6
F conturGn33H , 5unsigned c7ar65D %6?
return urm?
I
D , D $?
return <?
I
;unctia *'tra$e)ontur primeste ca parametru punctul de start contur.

int *'tra$e)ontur 5unct 96
F unct < , 9?
D , )? // directia de cautare initiala

// cauta al doilea punct de contur
Curs SPG - Copyright 2005 Prof. dr. ing. Florica Moldoveanu
(
for 5int 0 , '? 02#? 0336
F < , unct<ontur5<6?
if 5< J,96 :rea0?
I
if5 0,,#6 return '? // 9 este punct izolat
// tra+erseaza conturul
K7ile5 < J, 96
< , unct<ontur5<6?
return %?
I

*'tra$erea tuturor contururior unei re$iuni
entru simplificare, +om considera ca"
o pixelii regiunii au intensitatea ,%?
o pixelii din afar au intensitatea ,'
-cestea nu sunt restrictii, algoritmul prezentat in continuare putand fi generalizat.
O regiune poate a+ea mai multe contururi interioare care marginesc LgauriB ale regiunii.
9e incepe cu extragerea conturului exterior, executand algoritmul LDxtrage<onturB modificat
astfel nc/t"
o punctul de start s fie memorat ntr-un +ector PStart
o codurile de nlnuire s fie memorate n +ectorul contur, n care delimitarea
contururilor se face prin +aloarea M 5adic M,sfarsit contur6
Curs SPG - Copyright 2005 Prof. dr. ing. Florica Moldoveanu
)
o la tra+ersarea unui contur, +aloarea pixelilor conturului se incrementeaza,
de+enind $ sau 1 $ in cazul in care un pixel este parcurs de mai multe ori la
tra+ersarea conturului. Cn acest fel se pot recunoaste contururile de!a tra+ersate.
;unctia *'tra$e)ontur modificata pentru tra+ersarea tuturor contururilor este"
unct E 9tart? int ncont,'?
unsigned c7ar EE Cmg?
int *'tra$e)ontur 5unct 96
F unct < , 9?
D , )? // directia de cautare initiala

// cauta al doilea punct de contur
for 5int 0 , '? 02#? 0336
F < , unct<ontur5<6?
if 5< J,96 :rea0?
I
if5 0,,#6 return '? // 9 este punct izolat

9tartGncont33H , 9?
CmgG9.NHG9.xH33?
// tra+erseaza conturul
K7ile5 < J, 96
F CmgG<.NHG<.xH33 ?
< , unct<ontur5<6?
I
conturGn33H , M?
return %?
I
Dupa ce toate contururile au fost tra+ersate, +ectorul P +a conine punctele de start pentru
toate contururile, iar +ectorul contur +a conine lista codurilor de inlantuire pentru toate
contururile, separate prin +aloarea M
(a#ii a$orit&uui:
%6 9e extrage conturul exterior.
$6 9e caut un punct pe contur din care +a ncepe parcurgerea regiunii pentru gsirea
contururilor interioare.
Curs SPG - Copyright 2005 Prof. dr. ing. Florica Moldoveanu
*
Parcurgerea regiunii are loc ntotdeauna spre dreapta, de aceea punctul de start pentru
parcurgere se alege de pe un arc cobortor.
<ondiia ca un punct sa fie punct de start parcurgere este"
o codul punctului de contur anterior s fie cuprins ntre &-*
o codul punctului de contur curent s fie cuprins ntre (-*
#6 9e parcurge regiunea din punctul de start determinat, spre dreapta, cut/nd fie un punct de
start pentru un contur interior, fie marginea regiunii 5ieirea din regiune6.
arcurgerea regiunii pe linia curenta se termin la nt/lnirea sec+enei 120 sau 01+
9ec+enta 120 marc7eaza intalnirea unui contur de!a tra+ersat.
9ec+enta 01 marc7eaza intalnirea unui contur interior netra+ersat. Cn acest moment se termina
parcurgerea liniei curente si se extrage conturul interior. Dupa extragere, pixelii conturului +or
a+ea +aloarea $, deci, pe liniile imagine urmatoare el +a fi identificat ca un contur de!a parcurs
prin intalnirea sec+entei %$'.
-tunci cand un contur interior are pixeli comuni cu un alt contur 5cel exterior sau unul
interior6, dupa tra+ersarea sa pixelii comuni +or a+ea o +aloare 1$.
Curs SPG - Copyright 2005 Prof. dr. ing. Florica Moldoveanu
M
Dxemple" curs
Cmplementarea in < a algoritmului"
unct E 9tart? int ncont,'?
unsigned c7ar EE Cmg?
unsigned c7ar E contur?
int n,', D?
int DxtrageToate<ontururile5unct 96
F
int -, 8, <, l, c, c'?
int 0s ,'? unct , 9?
if5 J Dxtrage<ontur5966 return '?

l,'?
c' , )? // codul punctului de contur anterior
, 9? // punctul de contur anterior
K7ile5 l2 n-%6 // J sfarsit lista coduri de contururi
F
c , conturGl33H? //codul punctului de contur urmator

if5 c,,M6 // start contur nou
F c' , )?
, 9tartG0s33H?
c , conturGl33H?
I
else
, unct4rm5,c6? // calculeaza adresa urmatorului punct
//de contur
if5 c' 1,& OO c' 2, * OO c1,( OO c 2, *6 // este punct de start
// parcurgere spre dreapta
Curs SPG - Copyright 2005 Prof. dr. ing. Florica Moldoveanu
P
F x , .x? N , .N? gata , '?
K7ile5 J gata6
F - , 5int6CmgGNHGxH? 8 , 5int6CmgGNHGx3%H? < , 5int6CmgGNHGx3$H?
if5 -,,' OO 8,,% QQ -,,' OO 8,,$ OO <,,'6
F // 8 este punct de start contur interior
9.N , N? 9.x , x3%?
Dxtrage<ontur596?
gata ,%?
I
else
if5 -,,' OO 81$ OO <,,' // contur interior de!a parcurs
QQ -,,% OO 8,,$ OO <,,'6 // contur exterior regiune
F //sfarsit parcurgere linie
gata , %?
I
x33?
I// K7ile 5J gata6
I
c' , c?
I//K7ile 5l2n-%6 R sfarsit lista contururi
return %?
I
O89D@S-TCD
Cn cadrul implementarii algoritmului nu au fost pre+azute unele cazuri particulare, cum ar fi"
- iesirea din spatiul imaginii, in ciclul de parcurgere spre dreapta a imaginii
- posi:ile configuratii de contururi interioare lipite intre ele sau de conturul exterior, care nu
satisfac sa:loanele utilizate pentru a depista un contur interior neparcurs sau unul de!a parcurs
Curs SPG - Copyright 2005 Prof. dr. ing. Florica Moldoveanu
%'

S-ar putea să vă placă și