Documente Academic
Documente Profesional
Documente Cultură
Fig. 2.1. Reprezentarea combinrii aditive a culorilor. Acolo unde culorile primare se suprapun se observ
apariia culorilor secundare. Acolo unde toate trei culorile se suprapun se observ apariia culorii albe[1].
Fig. 2.2. Imaginea color se obine prin combinarea la nivel de pixel a celor trei culori primare (vezi cele trei
canale).
Astfel, fiecare pixel din imagine va fi caracterizat prin cte o valoare pentru fiecare din cele
trei componente de culoare primare. Culoarea sa reprezint un punct n spaiul 3D al
modelului de culoare RGB (fig. 2.3). n acest cub al culorilor, originea axelor R, G i B
corespunde culorii negre (0, 0, 0). Vrful opus al cubului corespunde culorii albe (255, 255,
255). Diagonala cubului, ntre negru i alb corespunde tonurilor de gri (grayscale) (R=G=B).
Trei dintre vrfuri corespund culorilor primare rou, verde i albastru. Celelalte 3 vrfuri
corespund culorilor complementare: turcoaz, mov i galben (Cyan, Magenta and Yellow).
Dac translatm originea sistemului de coordonate n punctul alb i redenumim cele 3 axe
de coordonate ale sistemului n C, M, Y obinem spaiul de culoare complementar CMY,
(folosit la dispozitive de imprimare color).
Fig. 2.3. Modelul de culoare RGB mapat pe un cub. n acest exemplu fiecare culoare este reprezentat pe cte 8
bii (256 de nivele) (imagini bitmap RGB24). Numrul total de culori este 28x28x28 = 224 = 16.777.216.
Pentru imagini RGB24 (24 bii/pixel) spaiul de culoare poate fi reprezentat complet. ntr-o
imagine indexat (cu palet) poate fi reprezentat doar un anumit subspaiu al spaiului de
culoare din figura 2.3. n acest context, numrul de bii/pixel (numrul de bii folosii pentru
codificarea unei culori) se numete adncime de culoare (color depth). (Tabelul 2.1):
Tabel 2.1. Adncimea i tipul imaginii
Adncimea de culoare
Nr. Culori
1 bit
2
4 bii
16
8 bii
256
16 bii
65536
24 bii
16.777.216
32 bii
16.777.216
Mod de culoare
Indexed Color
Indexed Color
Indexed Color
True Color
True Color
True Color
Palette (LUT)
Yes
Yes
Yes
No
No
No
(2.1)
Procesarea Imaginilor - Laborator 2: Spaiul culorilor. Conversii. color grayscale i grayscale alb-negru
78
78
78
Fig. 2.4. Paleta nesortat dup convertirea din color la grayscale n cazul imaginilor indexate.
Alte procesri ulterioare ale imaginii grayscale necesit o palet ordonat. Din acest motiv,
dup operaia de conversie trebuie efectuat o operaie de ordonare a paletei.
Metod simpl de ordonare a paletei:
1. Se creeaz un vector de dimensiune 256:
ex: BYTE g[256];
Index nou
0
1
2
.
.
.
255
R
0
1
2
G
0
1
2
B
0
1
2
X
-
g
5
23
14
243
3. Un ultim pas const n parcurgerea pixelilor din imagine i nlocuirea valorilor (indecilor)
vechi k cu valoarea g[k] (folosind corespondenele din vectorul g obinute la pasul anterior).
(fig. 2.5):
k = lpDst[i*w+j];
lpDst[i*w+j] = g[k];
sau
BITMAPINFO *pBitmapInfoSrc = (BITMAPINFO*) lpS;
// obine dimensiunea bitmap-ului
pBitmapInfoSrc->bmiHeader.biSize;
//obine numrul de bii/pixel
pBitmapInfoSrc->bmiHeader.biBitCount); //numrul de bii/pixel (1, 4, 8, 16,
//24, 32
Modul n care se pot accesa intrrile din palet a fost prezentat n laboratorul 1.
Procesarea Imaginilor - Laborator 2: Spaiul culorilor. Conversii. color grayscale i grayscale alb-negru
3. Facei click dreapta pe noua resurs dialog creat (fig. 2.7) si selectai opiunea pentru a
crea o nou clas pentru noua resurs dialog (Add class). Se va deschide fereastra MFC
Class Wizard (fig. 2.8)
a.
b.
Fig. 2.6.
Fig. 2.7.
4. Dai un nume relevant clasei asociate dialogului (de exemplu CBitmapInfoDlg.) Wizzard-ul
creeaz automat fiierele necesare *.h and *.cpp noii clase (numele fiierului este similar
numelui clasei, i nu este necesar s l modificai). Noua clas poate fi accesat cu uurin
din tabulatorul ClassView al ferestrei Workspace (n care este adugat n mod automat fig.
2.10.d).
Fig. 2.8.
6. Creai o instan (obiect) al clasei i afiai dialogul n funcia de procesare dorit. Funcia
de mai jos afieaz dialog-ul doar n mod modal (codul ulterior apelul metodei DoModal() va
fi executat doar dup ce dialogul va fi nchis). Dialog-urile se pot afia i non-modal (tem
pentru cine dorete)
void CDibView::OnProcessingAfisarebmpheader()
{
// Puteti folosi acest apel de macro in cazul in care
// nu aveti nevoie sa afisati o imagine rezultat
BEGIN_SOURCE_PROCESSING;
END_SOURCE_PROCESSING;
Procesarea Imaginilor - Laborator 2: Spaiul culorilor. Conversii. color grayscale i grayscale alb-negru
Fig. 2.9.
a.
b.
c.
d
Fig. 2.10.
Procesarea Imaginilor - Laborator 2: Spaiul culorilor. Conversii. color grayscale i grayscale alb-negru
BEGIN_SOURCE_PROCESSING;
END_SOURCE_PROCESSING;
Fig. 2.11.
10
n acest laborator va fi discutat binarizarea cu prag fix (ales arbitrar) pentru imagini indexate
(8 bii/pixel) de tip grayscale. Binarizarea poate fi aplicat prin parcurgerea valorilor pixelilor
din imaginea surs i nlocuirea lor n imaginea destinaie cu valoarea dat de:
0 (black ) , if
lpDst[i * w j ]
255 ( white) , if
lpSrc[i * w j ] threshold
lpSrc[i * w j ] threshold
(2.2)
Valoarea pragului poate fi stabilit inline (n cadrul codului) (nerecomandat) sau printr-o
csu de dialog (recomandat). Crearea acestei resurse de dialog i adugarea la ea a unui
control de tip edit box este similar cu ceea ce s-a discutat n seciunea 2.5. Edit box-ul trebuie
s permit editarea coninutului su (adic s fie non-readonly, implicit), asa cum e artat n
figura 2.12. Tipul variabilei folosite pentru a obine sau a modifica valoarea introdus n
csua de dialog poate fi unul numeric (BYTE) (fig. 2.12).
Fig. 2.12.
Procesarea Imaginilor - Laborator 2: Spaiul culorilor. Conversii. color grayscale i grayscale alb-negru
11
CString buf;
buf.Format("Binarizare cu prag = %d", threshold);
SFARSIT_PRELUCRARI(buf);
Referine
[1] http://en.wikipedia.org/wiki/RGB_color_model
[2] http://en.wikipedia.org/wiki/Color_models
[3] http://msdn2.microsoft.com/en-us/library/ms779712(VS.85).aspx