Page 42 - MATINF Nr. 9-10
P. 42

42                                                                   D.A. Popescu, D. Constantin




             afis ();
             return 0;
            }



            3    Stergerea unui obiect dintr-o imagine
                  ,


                 a
                                                                                                            a
            Se d˘ un tablou bidimensional cu m linii, n coloane s , i elemente din mult , imea {0, 1} care codific˘
            o fotografie alb - negru cu un singur obiect. Elementele obiectului sunt valori egale cu 1. Relat , ia
            de vecin˘atate a pixelilor este ca ˆın problema din Sect , iunea 2. S , terget , i obiectul din fotografie.
                Dimensiunile tabloului bidimensional s , i elementele lui se dau ˆın fis , ierul foto1.in. Tabloul
            dup˘ s , tergerea obiectului se va scrie ˆın fis , ierul foto1.out.
                a
                Exemplu

                foto1.in

              5 6
              0 0 0 0 0 0
              0 0 0 1 1 0
              0 0 1 0 0 0
              0 0 1 1 1 0
              0 0 1 1 0 0

                foto1.out

              0 0 0 0 0 0
              0 0 0 0 0 0
              0 0 0 0 0 0
              0 0 0 0 0 0
              0 0 0 0 0 0

                Descrierea algoritmului

                1. Citim m, n s , i elementele tabloului bidimensional a.

                2. Determin˘am coordonatele unui pixel de valoare 1 din tablou. Not˘am cu x0, y0 linia s , i
            coloana pe care se afl˘a acesta.
                3. S , tergem obiectul cu un algoritm fill mergˆand pe elemente de 1 ˆın cele 8 direct , ii posibile:
                                   a
            pe orizontal˘a, vertical˘ s , i diagonale.
                4. Afis , ˘am tabloul modificat.
                Programul C++ pentru acest algoritm este prezentat ˆın continuare.

            #include <fstream >
             using namespace std;

             ifstream fin("foto1.in");
             ofstream fout("foto1.out");

            int a[200][200] ,m,n,x0 ,y0;
            int dl[8]={-1,-1, 0, 1, 1, 1, 0,-1};
            int dc [8]={ 0, 1, 1, 1, 0,-1,-1,-1};
   37   38   39   40   41   42   43   44   45   46   47