Sunteți pe pagina 1din 4

Proiect AWJ

-Operatorul Prewitt-

Andrei Cojocaru
334AA
In cadrul laboratorului am realizat un proiect ce are ca scop
procesarea unei imagini, mai exact calcularea operatorului Prewitt
pentru o imagine.
Exemplu:

Programul realizat de mine are ca intrare calea catre fisierul ce se


doreste a fi procesat si calea cu numele fisierului ce va fi salvat.
Structura:
Structura este realizata cu ajutorul a 5 clase de obiecte.

Prima este clasa principala “Main” in care se afla funtia main.


A doua este clasa “Pixel” de tip pixel care contine cele 3 culori
corespunzatoare (reg, green, blue) matricei de pixeli din care este
formata matricea propriu-zisa.
A treia clasa “Imagine” este o clasa abstracta care are ca attribute
inaltimea si latimea imaginii. Am realizat aceasta clasa petntru a
generaliza toate obiectele pentru diferitele tipuri de imagini din cadrul
proiectului.
A patra clasa “ImagineRaw” este realizata pentru a stoca imaginea
sub forta de octeti in memorie. Aceasta clasa mosteneste clasa
Imagine.
A cincea clasa “ImagePixel” mosteneste clasa ImagineRaw, si este
folosita pentru a pastra o imagine atat sub forma de octeti cat si sub
forma unei matrici de pixeli asemenea imaginii in sine.

Mod de functionare:
O data ce programul primeste calea catre imagine de la utilizator
acesta incarca intr-un vector de octeti toata memoria ocupata de
imagine.
Antetul imaginii este format din 54 de octeti fiind urmat de catre 3 biti
de culoare (R,G,B) pentru fiecare pizel in parte. Extragem din antetul
imaginii dimensiunile ei, care sunt statcate pe 4 octeti. Iar dupa
realizam o matrice in de pixeli de aceste dimeniuni ce vor contine
toate datele gasite in corpul imaginii.
La pasul urmator este create o alta matrice de pixeli in care salvam
pixelii procesati in urma aplicarii opoeratorului Prewitt.
Dupa aceea realizam un vector de octeti care reprezinta buferul
corespunzator imaginii procesate, pe care o salvam intr-un fisier de tip
bmp la calea oferita de catre utilizator.

Notiuni legate de performanta:


-in primul rand algoritmul de aplicare al operatoului Prewitt este unul
incet intrucat presupune realizarea unui produs de convolutie intre
matrici, care dureaza un timp proportional cu dimensiunile imaginii.
-din punct de vedere al memoriei din nou discutam de
proportionalitate cu dimensiunile matricii.

Explicarea conceptelor de POO:


Incapsularea: este evidentiata de atributele claselor care nu pot fi
accesate din afara obiectelor decat prin intermediul unor metode (get,
set).
Mostenire: avem aici ImagePixel care mosteneste ImagineRaw care
mosteneste clasa abstracta Imagine
Polimorfism: eu l-am evidentiat prin declararea oricarui tip de
imagine ca un obiect de tip Imagine, indifferent de tip.
Abstractizarea este evidentiata cu ajutorul clasei Imagine. Am ales sa
fac acesta clasa abstracta pentru a nu putea fi instantiate in mod direct.
De asemenea am adaugat si o metoda abstracta pentru a forta celalte
clase care o mostenesc sa ofere o declaratie pentru aceasta metoda in
functie de necesitati.
De asemenea am realizat si un exemplu de agregare prin crearea unei
matrici de pixeli intr-unul dintre celelalte obiecte.

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