Procesarea Imaginii
-
Upload
madalina-georgiana -
Category
Documents
-
view
263 -
download
0
Embed Size (px)
Transcript of Procesarea Imaginii
-
8/19/2019 Procesarea Imaginii
1/18
PROIECT LA DISCIPLINA
Procesarea Imaginii
Procedura perimeter pentru calculul perimetrului unei
regiuni
2016
1
-
8/19/2019 Procesarea Imaginii
2/18
Cuprins
1. Cerinţa proiectului . . . . . . . 32. Considerente teoretice . . . . . . 33. Proiectarea programului . . . . . . 54. Rularea programului . . . . . . . 105. Cod sursă . . . . . . . . 12
6. Bibliograie . . . . . . . . 1!
!. "od de utili#are a aplicaţiei . . . . . . 1$$. %ne&ă . . . . . . . . . 1'
1 Cerinţa proiectuui
2
-
8/19/2019 Procesarea Imaginii
3/18
(laboraţi )n C*C++ ,i testaţi pe imaginile de test procedura perimeter de calcul a perimetruluiunei regiuni.
2 Consi!erente teoretice
Perimetru
Perimetrul unei regiuni pentru o imagine binară este alcătuit din mulţimea pi&elilor care aparţinobiectului ,i au cel puţin un -ecin care aparţine ondului.
%ce,ti pi&eli se contori#ea#ă iar -aloarea re#ultată poate i olosită ca perimetru. (&istă două
-ariante de calcul )n uncţie de tipul conectării tetra/conectare sau octo/conectare.uăm e&emplul perimetrului unei regiuni circulare negre pe ond alb cu diametrul de 1! pi&eliig 1.
ig 1. isc 1!
Calculnd perimetrul acestui cerc după relaţia P"2#R$ re#ultă P 5340!.
7n ca#ul tetra/conectării perimetrul unei regiuni estealcătuit numai din pi&eli tetra/ conectaţi. Pentru e&empluig 2 se obţine 64.
7n ca#ul octo/conectării perimetrul unei regiuni este alcătuit numai din pi&eli octo/conectaţi.Pentru e&emplu ig 3 se obţine 54.
3
-
8/19/2019 Procesarea Imaginii
4/18
ig 2. Regiune tetra/conectată ig 3. Regiune octo/conectată
Problema care apare la măsurarea perimetrului este aceea că pi&elii consideraţi repre#intă de apto arie ,i nu o distanţă liniară.
7n acest ca# trebuie introdusă obser-aţia legată de modul )n care un pi&el este tra-ersat de linia perimetrului.
Ca#ul cel mai simplu este acela )n care linia perimetrului tra-ersea#ă un pi&el P după o direcţie-erticală sau ori#ontală. %portul unui astel de pi&el la calcularea perimetrului este 1.
7n alte situaţii linia perimetrului tra-ersea#ă un pi&el după o direcţie diagonală. e această dată
contribuţia acestui pi&el este dată de diagonala pătratului √ 2 .
7n alte ca#uri linia perimetrului tra-ersea#ă pi&elul considerat după o direcţie ori#ontală*-erticală
,i o direcţie diagonală. 7n acest ca# contribuţia acestui pi&el este1
2 %√ 2
2 &
Cu aceste obser-aţii pentru determinarea perimetrului unei regiuni se parcurg următorii pa,i8
4
-
8/19/2019 Procesarea Imaginii
5/18
1. 9e identiică ,i se separă pi&elii care alcătuiesc conturul regiunii pentru care urmea#ă săcalculăm perimetrul.
2. 9e testea#ă iecare pi&el al perimetrului pentru a determina ponderea cu care -a participala calculul perimetrului.
3. 7n inal se )nsumea#ă toate aceste contribuţii indi-iduale ale pi&elilor ,i -aloarea obţinută
este o -aloare apro&imati-ă a perimetrului.
' Proiectarea programuui
Pentru implementarea programului s/au olosit urmatoarele uncţii8
(oi! citire)imagine*+ , cite,te inormaţia din i,ierul te&t )n care se ală matricea imaginii
(oi! a-isare*+ , ai,ea#ă imaginea
int -in!See!*+ , găse,te coordonatele pi&elului seed ,i returnea#ă 0 dacă nu mai e&istănicio regiune nouă
(oi! mar./*int (a$ int isee!$ int see!+ , marc:ea#ă o regiune cu -aloarea -al pornind de la pi&elul seed
int na/*int i$ int + ; returnea#ă pi&elii tetra/conectaţi cu pi&elul
-
8/19/2019 Procesarea Imaginii
6/18
int &0@int p@or i1@iAn@i++ ? or >1@>Am@>++
? p imag9eed>@ &++@ brea@
ip 1 brea@
return &@ ** daca &0 atunci nu mai e&ista regiuni noi
Pentru a marca regiunea pentru care -om calcula perimetrul olosim uncţia mar./ care -amarca cu -aloarea val toţi pi&elii din regiunea pentru care urmea#ă să calculăm perimetrul)ncepnd de la pi&elul de coordonate seed?iimag
-
8/19/2019 Procesarea Imaginii
7/18
iimag
-
8/19/2019 Procesarea Imaginii
8/18
iimag++ iimagAm@>++?int -o0@ **-ecini -erticala/ori#ontala
8
-
8/19/2019 Procesarea Imaginii
9/18
int d0@ **-ecini pe diagonalaiimag
-
8/19/2019 Procesarea Imaginii
10/18
1' 1'0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 00 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 00 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0
0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 00 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 00 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 00 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 00 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 00 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 00 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 00 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 00 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0
0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 00 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 00 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 00 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 00 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Pentru această imagine se -a calcula perimetrul olosind procedurile pre#entate mai sus.7n momentul )n care selectăm Run programul -a ai,a regiunea pentru care calculăm perimetrulig. 4regiunea marcată cu -aloarea 2 ig. 5 ,i linia perimetrului pentru care s/a calculat
perimetrul ig. 6 )n acest e&emplu iind o regiune tetra/conectată.
ig. 4 Kmagine iniţială
10
-
8/19/2019 Procesarea Imaginii
11/18
ig. 5 Regiune marcată
ig. 6 Calculul perimetrului
11
-
8/19/2019 Procesarea Imaginii
12/18
4 Co!u surs5
LincludeAprocess.:JLincludeAconio.:JLincludeAstdio.:JLincludeAstdlib.:JLincludeAmat:.:J
K( M@ **isierul in care pastram imaginea binaraint nm@ **dimensiunile imaginiiint imagopt-al@
(oi! citire)imagine*+
?i openFcerc.t&tFFrFNO
printFGn isierul nu a ost desc:isEF@scanFdFIn@scanFdFIm@or i1@iAn@i++
or >1@>Am@>++
scanFdFIimag1@>Am@>++
printFd F imag
-
8/19/2019 Procesarea Imaginii
13/18
int &0@int p@or i1@iAn@i++?
or >1@>Am@>++
? p imag9eed>@&++@ brea@
ip 1 brea@
return &@ ** daca &0 atunci nu mai e&ista regiuni noi
**marc:ea#a regiunea cu -al c(oi! mar./*int c$ int isee!$ int see!+
?iimag
-
8/19/2019 Procesarea Imaginii
14/18
mar4c iseed >seed / 1@
int na/*int i$int + ** returnea#a numarul pi&elilor tetraconectati cu pi&elul de coordonate
-
8/19/2019 Procesarea Imaginii
15/18
-oat perimeter*int reg+
?or i1@iAn@i++
or >1@>Am@>++iimag4 **nu apartine conturuluiimag1@>Am@>++
iimagAm@>++
?int -o0@ **-ecini -erticala/ori#ontalaint d0@ **-ecini pe diagonalaiimag
-
8/19/2019 Procesarea Imaginii
16/18
(oi! main*+
?clrscr@citireQimagine@ printFGn "atricea pentru care calculam perimetrul este8GnGnF@
aisare@int copie@
orint i 1@i A n@i++ ?
orint > 1@> A m@>++ ?
copie imag9eed >@ brea@
i copie 1
brea@
printFGnGnGn Regiunea a ost marcata cu -aloarea 2F@mar42i9eed>9eed@
aisare@loat p@ p perimeter2@ printFGnGnPerimetrul regiunii este8 2.F p@ getc:@
7 Mod de utilizare al aplicației
16
-
8/19/2019 Procesarea Imaginii
17/18
Pentru a rula aplica ia se eectuea#ă următorii pa i8ț ș
1. 9e introduce C/ul )n unitatea optică a calculatorului.2. 9e copia#ă de pe C i,ierul sursă perimetr.cpp ,i i,ierul te&t )n care se ală imaginea de
test cerc.t&t )ntr/un director de lucru la alegere.3. 9e lansea#ă mediul de programare urbo C++.4. in meniul ile ; Spen ile se )ncarcă i,ierul sursă din directorul )n care s/a sal-at.5. in meniul ebug ; Run se rulea#ă aplicaţia.
3 Ane5
17
-
8/19/2019 Procesarea Imaginii
18/18
(&emplu de rulare pentru regiune octo/conectată.
18