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};