background image

Grafika komputerowa

Grafika komputerowa

Modelowanie koloru

background image

Światło widzialne

fiolet 

-

niebieski

-

cyan

-

zielony 

-

ż

ółty

-

pomarańczowy

-

czerwony

Ś

wiatło  widzialne  stanowi  wąski  wycinek  fal 

elektromagnetycznych  z  zakresu      400nm  ÷ 700nm. 
Fale dłuższe (podczerwień) i krótsze (nadfiolet) są dla 
oka ludzkiego niewidoczne.

Ś

wiatło  białe  składa  się ze  wszystkich  długości  fal 

widma.  

400nm

700nm

Spektrum światła białego:

background image

Wrażenie koloru - czynniki

Barwa (ang.  hue)  – określana  przez  dominującą długość fali,  czynnik 
jakościowy – to co odróżnia np. zieleń od błękitu.  

Nasycenie (ang. saturation) – określane jako stosunek energii dominującej 
długości fali e

2

do wypadkowej energii e

1

pozostałych fal tworzących widmo 

ś

wietlne.  Nasycenie  (czystość barwy)  jest  tym  większe,  im  większa  jest 

wartość e

2

w  stosunku  do  e

1

.  Dla  e

1

=0  nasycenie  maksymalne,  dla  e

2

=e

1

nasycenie zerowe (barwy achromatyczne). 

Jasność (ang. ligthness) – określana stopniem podobieństwa barwy do bieli 
(dla  odcieni  jasnych)  czy  czerni  (dla  odcieni  ciemnych),  czynnik ilościowy 
proporcjonalny do całki z widmowego rozkładu energii światła.

e2

e1

λ

λ

λ

λ

[nm]

P(λ)

Widmowy rozkład energii światła
z dominującą długością fali

background image

Barwy podstawowe, barwy dopełniające

Ś

wiatło  białe  można  uzyskać mieszając  w  odpowiednich 

proporcjach tylko kilka barw: np. barwę czerwoną, zieloną
i niebieską w stosunku 26:66:8. 

Takie  trójki  czy  pary  barw,  które  w  sumie  dają światło 
białe  nazywamy 

barwami  dopełniającymi.  Dla  barwy 

czerwonej  (656  nm)  barwą dopełniającą jest  cyjan  (492 
nm), dla żółtej (574 nm) niebieska (482 nm). 

Barwy,  którymi  opisujemy  inne  nazywane  są

barwami 

podstawowymi.  Nie  istnieje  „najlepszy” zestaw  barw 
podstawowych. 

background image

Prawa Grassmana

Cyan

Yellow

Magenta

R

B

G

Model RGB

Model CMY

I prawo – prawo trójchromatyczności

Każda dowolna barwa może być odwzorowana za pomocą
trzech liniowo niezależnych barw. 

Trzy  barwy  tworzą układ  niezależnych  liniowo  jeżeli 
dowolne  zsumowanie  dwóch  z  nich  nie  może  dać trzeciej 
barwy układu. 

uwaga:  twierdzenie  odwrotne  nie  jest  prawdziwe,  tzn.  z 
dowolnie  wybranych  trzech  liniowo  niezależnych  barw,  nie 
da się utworzyć wszystkich barw.

background image

Prawa Grassmana

II prawo  – prawo ciągłości

W  mieszaninie  złożonej  z  dwóch  barw,  stopniowa 
zmiana  barwy  jednego  ze  składników  pociąga  za  sobą
stopniową zmianę barwy mieszaniny.  

Alternatywne  sformułowanie:  przy  ciągłej  zmianie 
długości  fali  promieniowania  barwa  zmienia  się w 
sposób ciągły.

III prawo  – prawo addytywności

Barwa  mieszaniny  zależy  jedynie  od  barw  jej 
składników, a nie od ich składu widmowego.  

background image

Modele koloru



niezależne od urządzenia – CIE XYZ, CIE La*b*



ukierunkowane na użytkownika – HLS, HSV(HSB)



ukierunkowane na sprzęt – RGB, CMY, CMYK

background image

Model CIE XYZ



opracowany w 1931 r. przez Międzynarodową Komisję Oświetleniową (CIE)



zdefiniowany na podstawie systemu CIE RGB, w którym doświadczalnie za 
pomocą kolorymetru wizualnego określono wartości składowych 
trójchromatycznych r(λ), g(λ), b(λwidma światła widzialnego L



składowe r(λ), g(λ), b(λokreślają względny udział barw podstawowych 
R, G i B potrzebnych do wywołania takiego samego wrażenia jak barwa 
widmowa

- światła wzorcowe:  R[700 nm] 

G[546 nm]
B[435 nm]

- L (lambda): światlo badane

- składowe r(λ), g(λ), b(λwyznaczono dla

L=< 360-830 nm> z krokiem co 1nm

Kolorymetr wizualny

background image

Przestrzeń kolorów CIE XYZ



składowe trójchromatyczne  x(λ), y(λ), z(λotrzymane w wyniku 
przekształceń liniowych składowych r(λ), g(λ), b(λsystemu CIE RGB



są nieujemne w całym zakresie widma



składowa y(λ) – informacja o strumieniu światła (luminancja, jasność)



składowe x(λz(λ) – informacja o barwie (chromatyczność)



w przestrzeni CIE XYZ kolory widzialne są zawarte w bryle zbliżonej do 
stożka o wierzchołku w początku układu współrzędnych

Składowe trójchromatyczne w układzie CIE XYZ

background image

Diagram chromatyczności CIE

Diagram

(wykres,  trójkąt)  chromatyczności

CIE  jest  fragmentem

przestrzeni  CIE XYZ wyciętej  przez  trójkąt 

ograniczony  osiami  XYZ

leżący na płaszczyźnie X+Y+Z=1,

obszar zbliżony kształtem do trójkąta,

zamknięty dwiema liniami - krzywą i prostą.

Stożek barw widzialnych 
w przestrzeni CIE XYZ

Rzuty płaszczyzny X+Y+Z=1 
w przestrzeni CIE XYZ

background image

Diagram chromatyczności CIE

- krawędź części krzywoliniowej - barwy podstawowe widma światła białego
- krawędź dolna - purpury, powstałe przez zmieszanie w różnych proporcjach 
skrajnych barw widma światła białego (380nm światła fioletowego i 780nm światła 
czerwonego)
- barwy w pełni nasycone (czyste) na krawędziach, nienasycone wewnątrz trójkąta
- środek diagramu (C) jest punktem bieli o współrzędnych x=0,333, y=0,333
- barwa zmienia się wraz z kątem obrotu wokół punktu środkowego, nasycenie 
zmienia się wzdłuż linii prostych przechodzących przez ten punkt.

background image

Diagram CIE- wykorzystanie

1. Wyznaczanie nasycenia barwy

Nasycenie barwy A jest określone 
proporcją:

s = AC / BC

2. Dodawanie barw:

Barwę A można otrzymać jako mieszaninę
barwy B i światła białego C w proporcji 
określonej przez długości odcinków AC i 
BC

3. Wyznaczanie barw dopełniających

Dopełniające pary barw wyznaczone są
przez końce dowolnych odcinków 
przechodzących przez punkt C (światło 
białe). (Np. barwy B i G lub D i E.

4. Wyznaczanie dominującej długości fali 

Dominującą długością fali barwy A jest 
długość fali barwy B.  

background image

Model CIE La*b*

Zawiera najszerszą zdefiniowaną matematycznie 
przestrzeń

barw,  która  powstała  w  wyniku 

przekształcenia  modelu  CIE  XYZ.  Każdy  inny 
model  koloru  da  się opisać we  współrzędnych 
La*b*,  ale  nie  na  odwrót.  Model  jest  niezależny 
od  urządzeń wejścia/wyjścia.  Wykorzystywany 
do  obliczeń na  barwach  i  wyznaczania  stopnia 
podobieństwa  barw  w  systemach  zarządzania 
barwami CMS (Color Management System)

Wszystkie barwy o jednakowej jasności leżą na 
powierzchni kołowej wyznaczonej osiami a* i b*: 

- oś a* - barwy od czerwonej do zielonej 
- oś b* - barwy od żółtej do niebieskiej 

Jasność L zmienia się w kierunku pionowym. 

Kolor wynikowy określany jest przez parametry L oraz a* i b*. Zakres zmienności 
parametrów definiowany jest w programach graficznych. Np. w CorelDraw:

- a* i b*=<-60;+60>, L=<0,100>
- dostępna liczba kolorów: 121x121x101=1 478741
- różnica między 2 barwami: ∆E = [(∆L)

+ (∆a*)

+ (∆b*)

2

]

½

background image

Model RGB

Kolor wypadkowy powstaje w wyniku addytywnego 
mieszania składowych podstawowych 

R

G

,

B. 

czerwony (Red) 

-

zielony (Green) 

-

niebieski (Blue)

Model wykorzystywany:



w sprzęcie tworzącym obraz w wyniku emisji 
ś

wiatła: monitory, projektory, skanery, cyfrowe 

aparaty fotograficzne 



do sprzętowej reprezentacji (opisu) pikseli w 
systemach komputerowych

background image

Model RGB

Kolor - punkt w przestrzeni ograniczonej 
sześcianem jednostkowym, definiowany 
przez trójkę (r,g,b)

R

R

G

G

B

B

1

1

1

1

1

1

0

0

Kolory podstawowe:
R = (1,0,0)
G = (0,1,0)
B = (0,0,1)
Kolory dopełniające:
C = (0,1,1)
M = (1,0,1)
Y = (1,1,0)

Kolor czarny = (0,0,0)
Kolor biały  = (1,1,1)
50% szarość = (0.5, 0.5, 0.5)

background image

Sprzętowa reprezentacja koloru

Obraz binarny:

:



liczba możliwych kolorów: 2



wartość koloru: { 0, 1 }



głębokość bitowa: 1 

Wartość koloru - liczbowa reprezentacja barwy piksela

ębokość bitowa - liczba bitów przeznaczona do zapisu 

wartości koloru

background image

Sprzętowa reprezentacja koloru

High Color:

:



liczba możliwych kolorów: 2

×

×

×

×

lub 2

(5+6+5)

= 32 768 lub 65 536



wartość koloru: { R, G, B }, gdzie R, G, B ∈<0, 31> lub <0, 63>



głębokość bitowa: 15 lub 16 bitów (2 bajty)

True Color:

:



liczba możliwych kolorów: 2 

8×

×

×

×

3

= 16 777  216



wartość koloru: { R, G, B }, gdzie R, G, B ∈<0, 255>



głębokość bitowa: 24 bity (3 bajty ze składowymi R,G,B)

background image

Paleta barw –

Look-Up Table

x

y

pamięć obrazu
o gł
ębokości
8 bitów/piksel

ekran

11111111   11111111   00000000

R                   G                   B

111111111111000000 19

0

255

.
.
.

24-bitowa tabela barw (LUT)
wskazywana indeksem 8-bitowym

19

Liczba możliwych do uzyskania kolorów: 2 

8×

×

×

×

3

= 16 777 216. 

Kolor wybierany z palety 256 kolorów.
Zawartość tabeli barw może być w sposób dynamiczny zmieniana.

background image

Wielkość pamięci obrazu

W = K x L x Bpp

gdzie: 

Bpp – głębokość bitowa (bit per pixel)

– liczba kolumn obrazu

– liczba linii obrazu

Obraz binarny:
800×

×

×

×

600x1 = 60000B = 60000/1024 KB = 58,6KB

Obraz True Color:
800×

×

×

×

600×

×

×

×

24 = 14400000B = 14400000/1024/1024 MB = 1,373MB

1280×

×

×

×

1024×

×

×

×

24 = 3932160B = 3,75MB

background image

Model CMY

Model  wykorzystywany  w  sprzęcie  tworzącym  obraz  w  wyniku 
nakładania na nośnik barw podstawowych: drukarki, plotery 

Kolor  wypadkowy  powstaje  w  wyniku  substraktywnego mieszania 
ś

wiatła odbitego od podłoża. 

Pigment  farby/atramentu  pochłania  określone  długości  fal,  a  odbija 
pozostałe.  Np.  fiolet  (M)  pochłania  ze  światła  białego  składową G, 
odbija składowe R i B.

background image

Model CMY

Kolor - punkt w przestrzeni ograniczonej 
sześcianem jednostkowym, definiowany 
przez trójkę (c,m,y)

Kolory podstawowe:
C = (1,0,0) 

cyan

M = (0,1,0)

magenta

Y = (0,0,1)

yellow

Kolory dopełniające:
R = (0,1,1)
G = (1,0,1)
B = (1,1,0)

Kolor czarny = (1,1,1)
Kolor biały  = (0,0,0)
50% szarość = (0.5, 0.5, 0.5)

C

C

M

M

Y

Y

1

1

1

1

1

1

0

0

background image

Model CMYK

W modelu CMY równe ilości trzech barw podstawowych (c=m=y) tworzą
neutralną szarość, która w modelu CMYK jest generowana przez czwartą barwę
podstawową

(blac- czarny).

(

(

(

+

0.2

0.4

0.4

0.4

0.5

0.6

0.4

0.9

C      M     Y

)

)

)

(

(

(

+

0.2

0.4

0.5

0.2 0.5

C      M     Y      K

)

)

)

0.4

CMY = (c, m, y) → CMYK = (c - k, m - k, y - k, k)

Wartość składowej K:

k = min {c, m, y}

background image

Procedury generowania czerni

W  celu  poprawy  jakości  druku  (kolorystyka,  kontrast) 
barwa  czarna  K  zastępuje  (całkowicie  lub  częściowo)  tą
część barw  modelu  CMY,  które  tworzą neutralne  odcienie 
szarości.  

Procedury generowania czerni:



UCR (Under Color Removal) - usuwanie koloru 
neutralnego



GCR (Gray Component Replacement) - zamiana 
szarego składnika

background image

UCR (

Under Color Removal

)

UCR - odtwarza neutralną szarość jedynie przy pomocy 
czarnego atramentu. Zamiana CMY na CMYK:

(c,m,y,k) = (c-k

max

, m-k

max

, y-k

max

, k

max

)

CMY=(0.4, 0.6, 0.9)
k

max

= min {0.4, 0.6, 0.9} = 0.4

CMYK=(0.0, 0.2, 0.5, 0.4)

ilość atramentu: 
CMY=40%+60%+90%=190%
CMYK=0%+20%+50%+40%=110%

Aby  czarny  atrament  nie  powodował
„brudnego”

wyglądu  odcieni  jasnych 

(świateł), 

UCR 

stosuje 

się

od 

określonego  poziomu  neutralnej  szarości 
(od 0.5÷0.6).

CMY

CMYK

background image

GCR (

Gray Component Replacement

)

GCR - odtwarza tylko część neutralnej szarości przy pomocy 
czarnego atramentu: Zamiana CMY na CMYK:

(c,m,y,k) = (c-g, m-g, y-g, g)

gdzie: 

= s% k

max

- zadany stopień zastępowania neutralnej szarości.

Przykład:

CMY = (0.4, 0.6, 0.9),   s=50%, 

k

max

= 0.4 

g = 50% 

k

max

= 0.2

CMYK = (0.2, 0.4, 0.7, 0.2)

ilość atramentu: CMY=40%+60%+90%=190%

CMYK=20%+40%+70%+20%=150%

background image

Uwagi



druk 

CMYK 

zawsze 

obniża 

łączne 

zużycie 

atramentu/farby w porównaniu z drukiem CMY



drukarki  stosują własne  procedury  generowania 
czerni,  a więc nie mamy kontroli nad tym procesem



przy  wyznaczaniu  wartości  neutralnych  odcieni 
szarości 

urządzenia 

drukujące 

posługują

się

krzywymi 

mieszania 

atramentów 

(tonerów) 

uwzględniającymi  ich  wpływ  na  „brudzenie” odcieni 
jasnych  

background image

Model HLS

Znaczenie i zakresy współrzędnych:
H: hue - barwa o wartościach z przedziału: od 0 do 360 stopni
L: ligthness – jasność z przedziału 0...1 albo 0...100% 
S: saturation - nasycenie koloru z przedziału 0...1 albo 0...100%

Definiowanie koloru

background image

Model HSV (HSB)

Znaczenie i zakresy współrzędnych:
H: hue - barwa o wartościach z przedziału: od 0 do 360 stopni
S: saturation - nasycenie koloru z przedziału 0...1 albo 0...100% 
V(B): value (brigthness) – wartość (jaskrawość) z przedziału 0...1 albo 
0...100%

background image

Algorytm przejścia od RGB do HLS

// konwersja RGB -> HLS (wg Travisa)
// zakresy zmiennych: r[0,1], g[0,1], b[0,1], h[0,360], l[0,1], s[0,1] 

void rgb2hls (double r, double g, double b, double &h, double &l, double &s)
{

double max = max (max (r,g),b);
double min = min (min (r,g),b);

l = (max + min) / 2

// wyznaczenie jasności l

if (max = min) {

s = 0;  h = 0; } 

// wartość niezdefiniowana – kolory achromatyczne

else

{

if (l <= 0.5)  s = (max - min)/(max + min);   

// wyznaczenie nasycenia s

else s = (max -min) / (2 - max - min);

//

if (r = max)  h = (g - b) / (max - min);                // wyznaczenie barwy h
else if (g = max)  h = 2 + (b - r) / (max - min);

//

else if (b = max)  h = 4 + (r - g) / (max - min);

//

h = h * 60;

// konwersja h na stopnie

if (h < 0.0)  h += 360;

}

}

background image

Algorytm przejścia od HLS do RGB 

// konwersja: HLS -> RGB (wgTravisa)

// zakresy zmiennych: h[0,360], l[0,1], s[0,1], r[0,1], g[0,1], b[0,1]

// funkcja pomocnicza: value

#include <math.h>

inline double value (double nl, double n2, double h)

{

if (h > 360)  h -= 360;

else if (h < 0)  h += 360;

if (h < 60)   return nl + (n2 - nl) * h / 60.0;

if (h < 180) return n2;
if (h < 240) return nl + (n2 - nl) * (240 - h) / 60.0;

return nl;   // (h < 360) 

}

background image

Algorytm przejścia od HLS do RGB – cd.

void hls2rgb (double h, double l, double s, double &r, double &g, 

double &b)

{

double m1, m2;
if (l <= 0.5)

m2 = l * (1.0 + s);

else

m2 = l + s - l * s;

m1 = 2.0 * l - m2;
if (s == 0)

r = g = b = l;

else

{

r = value (m1,m2,h + 120);

//wyznaczenie wartości r,g,b

g = value (m1,m2,h);
b = value (m1,m2,h - 120);

}

}

background image

Obliczenia w przestrzeni kolorów – modele liniowe
RGB, CMY, CIE XYZ

C

1

=[r

1

g

1

b

1

];  C

2

=[r

2

g

,b

2

];   gdzie: r

n

g

n

b

n

<0;1>;

1. Operacje bezpośrednie



dodawanie kolorów

C

1

+C

2

=[r

1

+r

2

g

1

+g

2

b

1

+b

2

]



mnożenie przez skalar

α

C=[αr, αg, αb]    α

<0;1>;

2. Operacje pośrednie

background image

Obliczenia w przestrzeni kolorów – modele liniowe
RGB, CMY, CIE XYZ

3.

Nakładanie kolorów



wspólna krawędź

C

1

C

1

C

gdzie: α

1

<0;1> – współczynnik pokrycia obszaru



obszary rozłączne

C

1

C

1

C

gdzie: α

1

<0;1> – współczynnik pokrycia obszaru



obszary pokrywające się

C=F

1

C

1

+F

2

C

2      

gdzie: F

1

,F

– udział obszarów C

1

,C

w wypadkowym pokryciu obszaru

C

1

C

2

C

1

C

2

C

1

C

2

background image

Cieniowanie - porównanie

a)

model nieoświetlony

b)

cieniowanie stałą barwą wielokąta

c)

cieniowanie metodą Gourauda

d)

cieniowanie metodą Phonga

background image

Cieniowanie Gourauda

1.

Wyznaczenie barwy w wierzchołkach trójkąta:
- wyznaczenie wektorów normalnych do wszystkich wierzchołków

jako średniej arytmetycznej wektorów normalnych wszystkich ścian,
do których ten wierzchołek należy.

- na podstawie wektora normalnego wyznaczenie barwy wierzchołka 

korzystając z wybranego modelu oświetlenia

2.

Liniowa interpolacja barwy dla wszystkich punktów wielokąta zgodnie 
z zaprezentowanymi wzorami

background image

Cieniowanie Phonga

Cieniowanie metodą Phonga polega na interpolacji wektora normalnego dla 
każdego punktu wielokąta, a następnie wyznaczenie na tej podstawie 
intensywności barwy. 

Etapy:
1.

Wyznaczenie wektorów normalnych do wszystkich wierzchołków wielokąta 
jako średniej arytmetycznej wektorów normalnych wszystkich ścian, do 
których ten wierzchołek należy.

2.

Liniowa interpolacja wartości wektorów normalnych dla wszystkich punktów 
wielokąta (dla wszystkich pikseli):
2.1. Interpolacja wzdłuż krawędzi;
2.2. Interpolacja wzdłuż linii horyzontalnych.

3.

Na podstawie wartości wektorów normalnych wyznaczenie barwy dla 
wszystkich punktów wielokąta zgodnie z przyjętym modelem oświetlenia