Procesarea Imaginii

download Procesarea Imaginii

of 8

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