Documente Academic
Documente Profesional
Documente Cultură
Acroitoritei Calin
Facultatea de Inginerie Electrică si Știința Calculatoarelor
Specializarea Calculatoare, An 3
Grupa 3131B
1
Descriere 2
Obiective 2
Tehnologii utilizate 2
Implementare 2
Interfața 2
Efecte 3
Efectul Sepia 3
Efectul Auriu 4
Efectul Glacial 8
Efectul Metalic 8
Efectul Valuri 9
Efectul Sticlă cu model 10
Efectul Mozaic 11
Efectul Sticlă mată 12
Efectul Piatră 13
Utilizare 14
Exemple de efecte 14
Bibliografie 20
2
Descriere
In cadrul acestui proiect mi-am propus sa construiesc o aplicație care să permită
utilizatorului aplicarea unui set de efecte artistice asupra unor imagini. Aceasta aplicație nu
își propune sa fie una profesionala, ci doar sa prezinte câteva efecte ce se pot aplica pe
imagini făcând diferite modificări asupra pixelilor.
Obiective
1. Sa permita incarcarea unei imagini stocata in calculatorul personal
2. Utilizatorul sa poată observa efectul dorit la apăsarea unui buton
3. Sa permită salvarea imaginii rezultate în urma aplicării efectului selectat
Tehnologii utilizate
Codul sursa ce sta la baza acestei aplicații a fost scris în C++ sub mediul de dezvoltare RAD
Studio XE3, pus la dispoziție de E
mbarcadero. Aplicația este de tipul VCL Forms, care
permite și proiectarea unei interfețe de utilizare prietenoase.
Implementare
I. Interfața
Primul pas în realizarea acestei aplicații a fost crearea unei interfețe prin intermediul
căreia utilizatorul sa poată sa aleagă efectul dorit și sa vadă imaginea în urma
aplicării acestui efect. Deoarece unele efecte au o serie de parametri ce pot
influenta cat de intens este acel efect, i-am oferit utilizatorului libertatea de a alege
el valorile acestor parametri.
Lupa mai multe încercări, am ajuns la interfața prezentata în figura de mai jos.
3
Asa cum se observa, în partea de sus se afla butoanele cu ajutorul cărora se alege
efectul dorit, în partea dreapta se afla un grafic ce reprezinta histograma
corespunzătoare imaginii încărcate în program, câmpuri pentru introducerea
parametrilor corespunzători fiecărui efect, un buton de aplicare a efectului și un
buton de resetare.
II. Efecte
Fiecare efect înseamna modificarea culorii pentru fiecare pixel din imagine. O
metoda de a îmbunătăți timpul de prelucrare a imaginii este folosirea proprietății
ScanLine a clasei T
Bitmap. Aceasta oferă acces indexat la fiecare linie de pixeli,
mult mai eficient din punct de vedere al timpului de execuție, decât parcurgerea
pixelilor în mod clasic folosind o bucla for.
1. Efectul Sepia
Efectul Sepia da fotografiilor aspectul de învechit, fiind prezent în majoritatea
aplicațiilor de prelucrare a imaginilor. Este apreciat deoarece induce ideea de
trecere a timpului, de întoarcere în trecut. Formulele pe baza cărora se calculează
componentele culorii pixelilor sunt:
RED = 0.393*R + 0.769*G + 0.189*B
GREEN = 0.394*R + 0.686*G + 0.168*B
BLUE = 0.272*R + 0.534*G + 0.131*B
4
Implementarea filtrului pentru efectul Sepia este prezentat în imaginea de mai jos.
2. Efectul Auriu
Acest efect acoperă imaginea cu un strat auriu. Algoritmul folosește o structură
formată din 8 componente ce memorează limitele inferioare, respectiv superioare
5
Se calculează apoi gradientul pentru intervalul dat de componentele ce memorează
limita inferioara și superioara globala, codul fiind ilustrat în imaginea următoare.
6
Implementarea functiei gradient este urmatoarea.
7
Apoi se aplica stratul auriu imaginii, utilizând vectorii pentru cele 3 culori, în modul
prezentat de imaginea următoare.
8
3. Efectul Glacial
Acest efect oferă imaginii un aspect rece, ca de gheata. Algoritmul pentru efectul
glacial este asemănător cu cel pentru efectul auriu, diferind doar valorile memorate
de structura pentru limitele inferioare și superioare ale celor 3 canale. Aceste valori
sunt prezentate în imaginea de mai jos.
4. Efectul Metalic
Acest efect oferă imaginii un aspect metalizat, accentuat în unele zone mai mult
decât în altele, în funcție de paleta de culori a imaginii. Algoritmul folosește un
vector cu 256 de elemente căruia ii sunt atribuite valori în funcție de nivelul de
intensitate. Implementarea algoritmului este ilustrata în continuare.
9
5. Efectul Valuri
Acest efect este realizat prin intermediul funcțiilor trigonometrice sinus și cosinus,
dând imaginii un aspect vălurit, ca și cum ar fi privita prin apa. Gradul de distorsiune
al imaginii poate fi ales de utilizator, acesta având la dispoziție 3 parametri:
distorsiunea globala, distorsiunea pe orizontala și distorsiunea pe verticala.
Algoritmul este următorul:
10
7. Efectul Mozaic
Mozaicul reprezinta o tehnica prin care imaginea este realizata prin intermediul
unor mici bucăți de smalț, piatra, sticla, placi de ceramica sau alte materiale solide.
Efectul de mozaic transforma imaginea prin împărțirea sa în suprafețe pătrate, egale
ca dimensiune. Pe suprafața unui pătrat culoarea este uniforma, aceasta fiind
identica cu culoarea primului pixel din coltul stânga sus al pătratului. Utilizatorul
poate alege dimensiunea pătratelor ce compun mozaicul, precum și dacă acestea sa
fie sau nu separate printr-o grila neagra. Algoritmul este următorul:
12
9. Efectul Piatră
Efectul piatra conferă imaginii un aspect dur, creând privitorului senzația ca
obiectele din imagine sunt sculptate în piatra. Acest lucru este realizat pentru fiecare
pixel din imagine, la care se aduna valoarea diferenței dintre pixelul curent și cel din
coltul dreapta jos, diferența înmulțita cu gradul de intensitate ales de utilizator.
Algoritmul este următorul:
14
Utilizare
După deschiderea aplicației, pentru a încarcă o imagine se alege opțiunea O pen din
tab-ul F
ile, iar din fereastra de dialog se alege imaginea dorita. Se alege apoi efectul
dorit, și în funcție de acesta, se pot modifica diferiți parametri.
Exemple de efecte
In continuare sunt prezentate imagini cu efecte aplicate prin intermediul acestei
aplicații.
15
Original
Sepia
16
Auriu
Glacial
17
Metalic
Valuri
18
Sticlă cu model
Mozaic
19
Sticlă mată
Piatră
20
Bibliografie
1. http://old.cescg.org/CESCG97/boros/index.html
2. https://www.mrl.nyu.edu/publications/hertzmann-thesis/hertzmann-thesis-7
2dpi.pdf
3. http://apollo.eed.usv.ro/~remus/arhive/PID/Curs3/Curs_3_ef_art.pdf