Elemente de grafică pe calculator
Noțiuni despre reprezentarea și prelucrarea imaginilor digitale și grafica 2D/3D.
Imagini raster și imagini vectoriale
Există două moduri fundamental diferite de a reprezenta o imagine în calculator, iar toată discuția despre calitate, dimensiune și formate pornește de aici.
Imaginea raster (bitmap) este o matrice de pixeli: fiecare punct are o culoare memorată explicit. Ce se cere reținut:
- rezoluția imaginii = numărul de pixeli pe orizontală și verticală (de exemplu 1920×1080);
- adâncimea de culoare (bit depth) = numărul de biți folosiți pentru culoarea unui pixel: 1 bit → 2 culori, 8 biți → 256 de culori, 24 de biți → 16.777.216 de culori (True Color), iar 32 de biți adaugă canalul de transparență alfa;
- dimensiunea aproximativă necomprimată = lățime × înălțime × adâncime / 8 (în octeți). O imagine 1000×1000 la 24 de biți ocupă circa 3 MB necomprimată — de aici necesitatea compresiei;
- mărirea peste rezoluția reală duce la pixelare, pentru că nu există informație suplimentară de afișat.
Imaginea vectorială nu memorează pixeli, ci descrieri matematice ale formelor: puncte, drepte, curbe Bézier, poligoane, cu atributele lor (culoare de umplere, grosime de contur). Consecințele decurg logic:
- scalabilitate perfectă — la orice mărire, formulele se recalculează, deci conturul rămâne net;
- dimensiune mică pentru desene cu puține forme;
- editabilitate — fiecare obiect rămâne independent, se poate muta sau recolora oricând;
- nepotrivite pentru fotografii, unde nuanțele sunt neregulate și n-ar putea fi descrise prin formule.
Regula de alegere, care e și întrebarea tipică: fotografii și imagini cu tonuri continue → raster; logo-uri, sigle, pictograme, hărți, scheme, fonturi → vectorial.
Confuzia cea mai frecventă: „am salvat logo-ul ca PNG la rezoluție mare, deci e vectorial”. Nu — rezoluția mare doar amână pixelarea, natura imaginii rămâne raster. Rasterizarea (vector → raster) se poate face oricând; drumul invers, vectorizarea, este o aproximare și pierde detalii.
Sisteme de coordonate și transformări geometrice
Orice obiect grafic e definit prin coordonate într-un sistem de referință. În matematică originea e jos-stânga și axa Oy crește în sus; în grafica pe calculator, în schimb, originea (0,0) este în colțul stânga-sus, iar axa Oy crește în jos. Este cea mai comună sursă de erori la primele programe grafice: imaginea apare răsturnată sau în afara ecranului.
Se disting coordonatele obiectului (interne, ale modelului), coordonatele lumii (scena întreagă) și coordonatele dispozitivului (pixelii ferestrei). Trecerea de la o fereastră a lumii (window) la zona de afișare (viewport) se numește transformare de vizualizare.
Transformările geometrice de bază în 2D:
- Translația – deplasare cu (tx, ty): x' = x + tx, y' = y + ty. Schimbă poziția, nu forma.
- Scalarea – multiplicare cu factorii (sx, sy): x' = x · sx, y' = y · sy. Dacă sx = sy, scalarea este uniformă și păstrează proporțiile; altfel obiectul se deformează. Factori subunitari micșorează.
- Rotația – în jurul unui punct, cu un unghi θ: x' = x·cos θ − y·sin θ, y' = x·sin θ + y·cos θ (rotație în jurul originii).
- Simetria (oglindirea) – față de o axă sau un punct.
- Forfecarea (shear) – înclinare, ca la literele cursive.
Două observații care se cer înțelese, nu memorate:
- Scalarea și rotația se fac implicit față de origine. Ca să roteșți un obiect în jurul centrului lui, trebuie să faci trei operații: translatezi centrul în origine → aplici rotația → translatezi înapoi. Sărirea peste acest pas explică de ce obiectul „fuge” din locul lui.
- Ordinea transformărilor contează. O translație urmată de o rotație dă alt rezultat decât rotația urmată de translație, pentru că transformările nu sunt comutative.
Pentru a trata unitar toate transformările se folosesc coordonatele omogene: punctul (x, y) se scrie (x, y, 1), iar fiecare transformare devine o matrice 3×3. Avantajul e că translația — care în forma simplă e o adunare, nu o înmulțire — devine și ea o înmulțire de matrice, iar o succesiune de transformări se poate compune într-o singură matrice, aplicată o dată tuturor punctelor.
Reprezentarea culorilor: RGB, CMYK, HSB
Culoarea se reprezintă prin modele de culoare, iar alegerea modelului depinde de destinație: ecran sau hârtie.
RGB (Red, Green, Blue) este un model aditiv: culorile se obțin adunând lumină. Se folosește la tot ce emite lumină — monitoare, telefoane, proiectoare, aparate foto. Fiecare canal ia de obicei valori 0–255 (8 biți), deci 24 de biți dau ~16,7 milioane de culori. Repere de reținut: (0,0,0) = negru (lipsa totală de lumină), (255,255,255) = alb (toate cele trei la maximum), (255,0,0) = roșu pur. În web, culorile se scriu hexazecimal: #FF0000 roșu, #00FF00 verde, #0000FF albastru, #FFFFFF alb, #000000 negru — două cifre hexa pentru fiecare canal.
CMYK (Cyan, Magenta, Yellow, blacK) este un model substractiv: cernelurile absorb lungimi de undă din lumina albă care cade pe hârtie. Se folosește la tipar. Aici logica se inversează: 0% din toate cernelurile = alb (hârtia curată), iar amestecul lor tinde spre negru. Componenta K (negru) există pentru că amestecul C+M+Y dă în practică un maro-închis murdar, consumă multă cerneală și udă hârtia; negrul separat e mai ieftin și mai precis. Foarte important: gamutul CMYK este mai mic decât cel RGB, deci unele culori foarte saturate văzute pe ecran nu se pot tipări identic — de aceea un afiș tipărit pare uneori mai șters decât fișierul.
HSB / HSV (Hue, Saturation, Brightness/Value) descrie culoarea așa cum o percepe omul: nuanța (H) ca unghi pe cercul cromatic, în grade 0–360 (0 roșu, 120 verde, 240 albastru), saturația (S) ca intensitate a culorii (0% = gri) și luminozitatea (B/V) (0% = negru). Nu e un mod nou de a stoca imaginea, ci un mod mai intuitiv de a o selecta și ajusta — de aceea selectoarele de culoare din aplicațiile grafice îl folosesc. Varianta HSL înlocuiește luminozitatea cu lightness, unde 50% este culoarea pură, iar 100% este alb.
Alte noțiuni utile: scala de gri (grayscale), cu un singur canal, canalul alfa pentru transparență și paleta indexată, unde imaginea stochează indici într-un tabel restrâns de culori (mecanismul din GIF).
Greșeala cea mai des sancționată: a lucra o imagine destinată tiparului în RGB și a o converti la sfârșit, ori a cere unei imprimante o culoare fluorescentă văzută pe ecran.
Compresia și formatele de fișiere grafice
Alegerea formatului se face pe două întrebări: imaginea e raster sau vectorială și compresia admite pierderi sau nu.
Compresia fără pierderi (lossless) păstrează exact toți pixelii; la decomprimare se obține originalul bit cu bit (PNG, GIF, TIFF, BMP necomprimat). Compresia cu pierderi (lossy) elimină informație pe care ochiul o percepe greu; fișierul e mult mai mic, dar pierderea este ireversibilă și se acumulează la fiecare salvare succesivă — de aceea o poză JPEG reeditată de zece ori arată vizibil degradată, cu artefacte în jurul contururilor.
Formatele raster de reținut:
- JPEG (.jpg) – cu pierderi, calitate reglabilă, fără transparență. Ideal pentru fotografii; prost pentru text, sigle sau desene cu contururi nete, unde apar artefacte.
- PNG – fără pierderi, cu canal alfa (transparență). Ideal pentru logo-uri, capturi de ecran, grafice cu text. Fișiere mai mari decât JPEG pe fotografii.
- GIF – fără pierderi, dar limitat la 256 de culori (paletă indexată), cu transparență binară și animație. Nepotrivit pentru fotografii.
- BMP – de regulă necomprimat, fișiere foarte mari; util doar didactic.
- TIFF – calitate profesională, folosit în tipar și arhivare.
- WEBP / AVIF – formate moderne pentru web, cu compresie mai bună decât JPEG și suport pentru transparență și animație.
- RAW – datele brute din senzorul aparatului foto, neprelucrate; maximă flexibilitate la editare, fișiere mari.
Formatele vectoriale: SVG (standard web, bazat pe XML, deci text editabil și indexabil), AI (Adobe Illustrator), CDR (CorelDRAW), EPS și PDF, care poate conține atât elemente vectoriale, cât și raster.
Două precizări cu care se pică: PDF nu este un format pur vectorial — poate încapsula fotografii raster; iar redenumirea extensiei nu convertește formatul: un .jpg redenumit .png rămâne un JPEG, cu tot cu pierderile deja produse. Conversia reală se face prin salvare/export din aplicație.
Aplicații software pentru grafică și noțiuni de grafică 3D
Aplicațiile se împart după tipul de imagine pe care îl produc:
- Editoare raster: Adobe Photoshop, GIMP (liber și gratuit), Krita, Paint.NET. Se folosesc pentru retușul fotografiilor, compoziții și pictură digitală.
- Editoare vectoriale: Adobe Illustrator, CorelDRAW, Inkscape (liber). Se folosesc pentru sigle, ilustrații, machete tipografice.
- Aplicații 3D: Blender (liber), Autodesk 3ds Max, Maya, SketchUp pentru arhitectură.
- Aplicații CAD: AutoCAD, pentru desen tehnic precis.
Conceptul central în editarea modernă este lucrul cu straturi (layers): imaginea se compune din foi suprapuse, fiecare editabilă independent, cu propria opacitate și mod de amestecare. Avantajul e editarea nedistructivă — poți modifica sau șterge un strat fără să afectezi pixelii de dedesubt. Tot aici intră măștile, care ascund selectiv porțiuni fără a le distruge, și selecțiile (dreptunghiulară, lasso, baghetă magică).
În grafica 3D, fluxul de lucru clasic are patru etape:
1. Modelarea – construirea geometriei ca plasă de poligoane (mesh) din vârfuri, muchii și fețe; 2. Texturarea – aplicarea imaginilor pe suprafețe și definirea materialelor (reflexie, rugozitate, transparență); 3. Iluminarea și poziționarea camerei – tipurile de surse și unghiul de vizualizare; 4. Randarea (rendering) – calculul imaginii 2D finale pornind de la scena 3D; e etapa cea mai costisitoare ca timp de calcul.
Două tehnici de randare merită distinse: rasterizarea, rapidă, folosită în jocuri pentru timp real, și ray tracing (trasarea razelor), care simulează traseul razelor de lumină și dă reflexii și umbre realiste, cu preț de calcul mult mai mare. Procesorul grafic (GPU) este specializat exact pentru acest tip de calcule masiv paralele.
Un ultim reper de vocabular, cerut frecvent: animația înseamnă succesiune de cadre (frames), iar fluiditatea se măsoară în cadre pe secundă (fps) — 24 fps la film, 30–60 fps și peste în jocuri.
De reținut
- imagine raster
- imagine memorată ca matrice de pixeli, fiecare cu culoarea sa; se pixelează la mărire peste rezoluția reală
- imagine vectorială
- imagine descrisă prin formule matematice ale formelor (puncte, drepte, curbe), scalabilă fără pierdere de calitate
- adâncime de culoare
- numărul de biți folosiți pentru a memora culoarea unui pixel; 24 de biți permit 16.777.216 de culori (True Color)
- coordonate omogene
- reprezentare a punctului (x, y) sub forma (x, y, 1), care permite exprimarea tuturor transformărilor geometrice prin înmulțiri de matrice
- model RGB
- model de culoare aditiv, folosit pentru dispozitivele care emit lumină, în care alb înseamnă valoarea maximă pe toate cele trei canale
- model CMYK
- model de culoare substractiv, folosit la tipar, în care culorile rezultă din absorbția luminii de către cerneluri, iar absența lor înseamnă alb
- model HSB
- model care descrie culoarea prin nuanță (0–360 grade), saturație și luminozitate, apropiat de percepția umană
- compresie cu pierderi
- compresie care elimină definitiv o parte din informația imaginii pentru a reduce dimensiunea fișierului, precum în cazul JPEG
- canal alfa
- canal suplimentar care memorează gradul de transparență al fiecărui pixel, prezent în PNG și absent în JPEG
- randare (rendering)
- procesul de generare a imaginii bidimensionale finale pornind de la geometria, materialele, luminile și camera unei scene 3D
Greșeli frecvente
Greșit: O imagine raster salvată la rezoluție foarte mare devine practic vectorială și se poate mări oricât
Corect: Rezoluția mare doar amână pixelarea; imaginea rămâne o matrice de pixeli, în timp ce imaginea vectorială se recalculează matematic la orice dimensiune
Greșit: În CMYK, ca și în RGB, absența tuturor componentelor înseamnă negru
Corect: CMYK este substractiv: 0% din toate cernelurile lasă hârtia albă, iar amestecul lor tinde spre negru; în RGB, aditiv, absența luminii înseamnă negru
Greșit: Rotirea unui obiect se face direct cu formula de rotație, indiferent de unde se află obiectul
Corect: Formula rotește în jurul originii; pentru rotația în jurul centrului obiectului se translatează centrul în origine, se rotește și apoi se translatează înapoi
Greșit: Un logo cu fundal transparent se salvează în JPEG dacă se alege calitate maximă
Corect: JPEG nu are canal alfa, deci nu poate păstra transparența, iar contururile nete ale unui logo capătă artefacte; se folosește PNG sau, mai bine, un format vectorial precum SVG
Greșit: Schimbarea extensiei unui fișier din .jpg în .png îl transformă într-o imagine fără pierderi
Corect: Extensia este doar o etichetă; conversia reală se face prin export din aplicație, iar informația pierdută anterior de compresia JPEG nu mai poate fi recuperată
Test — 6 întrebări ca la examen
1. Care afirmație despre imaginile vectoriale este adevărată?
- sunt memorate ca matrice de pixeli, fiecare cu culoarea sa
- își păstrează calitatea la orice factor de mărire, deoarece formele sunt descrise matematic
- sunt formatul potrivit pentru fotografii cu tonuri continue
- au întotdeauna o dimensiune mai mare pe disc decât imaginile raster
Vezi răspunsul
își păstrează calitatea la orice factor de mărire, deoarece formele sunt descrise matematic. Formele fiind descrise prin ecuații, ele se recalculează la orice dimensiune, deci conturul rămâne net. Varianta cu fotografiile este distractorul tentant, dar tocmai nuanțele neregulate ale unei fotografii nu pot fi descrise eficient prin formule, așa că acolo se folosește raster.
2. Câte culori distincte pot fi reprezentate cu o adâncime de culoare de 8 biți pe pixel?
- 8
- 64
- 256
- 16.777.216
Vezi răspunsul
256. Cu 8 biți se obțin 2^8 = 256 de combinații, deci 256 de culori. Răspunsul 16.777.216 este capcana clasică, dar el corespunde adâncimii de 24 de biți, adică 8 biți pentru fiecare dintre cele trei canale RGB.
3. În modelul RGB, culoarea cu codul hexazecimal #FFFFFF este:
- negru
- alb
- roșu
- gri mediu
Vezi răspunsul
alb. FF înseamnă 255 pe fiecare canal, iar RGB fiind aditiv, toate cele trei componente la maximum dau alb. Negrul, distractorul principal, corespunde codului #000000, adică absența completă a luminii pe toate canalele.
4. Un punct are coordonatele (4, 2). După o scalare cu factorii sx = 2 și sy = 3 față de origine, noile coordonate sunt:
- (6, 5)
- (8, 6)
- (2, 0,67)
- (8, 5)
Vezi răspunsul
(8, 6). Scalarea înmulțește fiecare coordonată cu factorul corespunzător: 4·2 = 8 și 2·3 = 6. Varianta (6, 5) provine din adunarea factorilor, adică din confundarea scalării cu translația.
5. Pentru o siglă cu fundal transparent, care urmează să fie afișată pe pagini web cu fundaluri de culori diferite, formatul raster potrivit este:
- JPEG, pentru că are cea mai bună compresie
- PNG, pentru că are compresie fără pierderi și canal alfa
- BMP, pentru că păstrează toți pixelii
- GIF, pentru că suportă animație
Vezi răspunsul
PNG, pentru că are compresie fără pierderi și canal alfa. PNG combină compresia fără pierderi, necesară contururilor nete, cu canalul alfa care redă transparența gradată. JPEG, distractorul cel mai ales pentru dimensiunea mică, nu suportă deloc transparența și introduce artefacte exact în jurul marginilor unei sigle.
6. Un afiș pregătit pe ecran în RGB apare la tipar cu culori vizibil mai șterse. Explicația corectă este:
- fișierul a fost salvat cu o rezoluție prea mică
- gamutul CMYK este mai restrâns decât cel RGB, deci unele culori saturate nu pot fi reproduse pe hârtie
- modelul CMYK folosește mai puțini biți pe canal decât RGB
- imprimanta a rasterizat imaginea vectorială
Vezi răspunsul
gamutul CMYK este mai restrâns decât cel RGB, deci unele culori saturate nu pot fi reproduse pe hârtie. Cernelurile substractive nu pot reproduce toate culorile pe care le emite un ecran, așa că nuanțele din afara gamutului CMYK sunt aproximate cu cele mai apropiate disponibile. Rezoluția prea mică ar produce o imagine neclară sau pixelată, nu o schimbare a saturației culorilor.
Deschide varianta interactivă — cu AI care îți explică