kolorni modeli i transformacije izmeĐu · pdf file2.1. anatomija oka ... razlog za ovo je...
TRANSCRIPT
UNIVERZITET CRNE GORE
VISOKA RAČUNARSKA ŠKOLA STUDIJE PRIMIJENJENOG RAČUNARSTVA
Podgorica
KOLORNI MODELI I TRANSFORMACIJE
IZMEĐU KOLORNIH MODELA
– diplomski rad –
Kandidat: Predrag Todorović
Broj indeksa: 112/03
Podgorica, 2004. godine
UNIVERZITET CRNE GORE
VISOKA RAČUNARSKA ŠKOLA STUDIJE PRIMIJENJENOG RAČUNARSTVA Podgorica Broj: ___________ Kandidat: Predrag Todorović
Broj indeksa: 112/03
KOLORNI MODELI I TRANSFORMACIJE
IZMEĐU KOLORNIH MODELA
– diplomski rad –
Mentor, Kandidat, ________________________ ________________________ dr. Igor Đurović Predrag Todorović
Izjava o samostalnom radu
Ovim izjavljujem da sam ovaj rad uradio samostalno, uz proučavanje dostupne literature i konsultacije sa mentorom. Predrag Todorović, 112/03 ________________________
Rad odbranjen dana _______________ pred ispitnom komisijom u sastavu:
1. predsjednik ____________________________, 2. mentor ____________________________, 3. član ____________________________,
sa ocjenom ____ (_____________).
4
SADRŽAJ
1. UVOD ............................................................................................................ 5
2. KAKO VIDIMO .............................................................................................. 6
2.1. Anatomija oka ..................................................................................... 6
2.2. Daltonizam........................................................................................ 10
3. MODELI BOJA............................................................................................ 11
3.1. RGB model ....................................................................................... 11
3.2. CMY i CMYK modeli ......................................................................... 13
3.3. XYZ model ........................................................................................ 16
3.4. Lab model ......................................................................................... 17
3.5. UVW model....................................................................................... 19
3.6. Luv model ......................................................................................... 20
3.7. HSL model ........................................................................................ 20
3.8. Indeksni model boja.......................................................................... 22
4. REALIZOVANI PROGRAM......................................................................... 25
4.1. Procesiranje slike.............................................................................. 27
4.2. Dobijeni rezultati ............................................................................... 33
5. ZAKLJUČAK............................................................................................... 43
6. LITERATURA.............................................................................................. 44
5
1. UVOD
U doživljavanju svijeta oko sebe veliku ulogu igra čulo vida. Oči, kao organi
čula vida, predstavljaju izuzetno složene "uređaje" koji mozgu šalju sliku naše
okoline. Jedna od bitnih karakteristika u mozgu formirane slike su boje.
Čovjek je još u praistoriji crtežima po zidovima pećina nastojao da slikama
dočara ono što vidi oko sebe ili, pak, zamišlja. Danas, u vrijeme komunikacija,
problem grafičke prezentacije podataka, bilo da se radi o običnim izvještajima,
časopisima, televiziji postaje mnogo širi, ali su neke metode u suštini ostale
slične onima iz praistorije − nanošenje boje na podlogu.
Postavlja se pitanje kako što vjernije neku sliku prenijeti na razne
medije − papir, ekran monitora, filmsku traku itd. Zato su razvijeni brojni kolorni
modeli koji sliku u boji rastavljaju na komponente pogodne za odgovarajuće
medije. U ovom radu su obrađeni neki od najbitnijih kolornih modela. Takođe,
razvijen je i kompjuterski program koji vrši separaciju slika po kanalima za
deset različitih modela.
6
2. KAKO VIDIMO
2.1. Anatomija oka
Oko, organ vida, je, mada malo veličinom, veoma kompleksan organ. Poprečni
presjek oka može se vidjeti na Slici 1.
Slika 1 Poprečni presjek oka
Oko je prirodni optički sistem koji se sastoji od dijela koji stvara lik i od dijela
koji vrši detekciju. Oko je približno sfernog oblika, prečnika oko 2,5cm, na
prednjem dijelu malo ispupčeno i providno. Ovaj dio oka se zove rožnjača
(cornea). Iza nje se nalazi očna tečnost (humor aqueus) i sočivo. Efektivna
žižna dužina oka sa strane lika je oko 20mm. Ispred sočiva se nalazi kružni
otvor, zenica oka (pupula). Prečnik joj se mijenja uz pomoć dijafragme
(dužica, iris) u zavisnosti od osvjetljenja oka u granicama od 2-3 do 6-8 mm.
Najveći dio unutrašnjosti oka čini prozračna staklasta masa (vitreous humor,
corpus vitreum).
Predrag Todorović Kolorni modeli i transformacije između kolornih modela
7
Na dnu oka, nasuprot zenice, nalazi se mrežnjača (retina). Ona sadrži
završetke nerava osjetljivih na svjetlost, koji se prema svom obliku nazivaju
štapići i čepići. Svjetlosni nadražaji ovih ćelija izazivaju elektronske impulse,
koji se nervima prenose do dijela velikog mozga zaduženog za vid, gdje se
formira konačna slika.
Broj štapića i čepića po jedinici površine (njihova površinska gustina) zavisi od
mjesta na mrežnjači. Gustina čepića je najveća u žutoj mrlji (macula) koja se
nalazi na pravcu optičke ose oka, dok se štapići uglavnom nalaze van žute
mrlje. Prečnik žute mrlje je oko 0,4mm, pa u njega staje oko 40.000 čepića. Na
Slici 2 može se vidjeti izgled štapića i čepića.
Slika 2 Štapići i čepići
Štapići su oko sto puta osjetljiviji na svjetlost i ne prenose nadražaj pri jačoj
osvijetljenosti (npr. pri dnevnom osvjetljenju), jer se nalaze u zasićenom
stanju. Oni služe pri gledanju slabih izvora svjetlosti (noćno gledanje). Veličina
štapića i čepića je oko 2µm. Ukupni broj štapića je oko 108, a čepića oko 107.
Iz mrežnjače ka mozgu polazi očni nerv. Pod uticajem jakog izvora svjetlosti
fotoosjetljive ćelije (štapići i čepići) oka mogu biti uništene, tako da više ne
vrše svoju ulogu u stvaranju osjećaja vida.
Predrag Todorović Kolorni modeli i transformacije između kolornih modela
8
Hemijska jedinjenja osjetljiva na boje u čepićima nazivaju se pigmenti i veoma
su slična jedinjenjima u štapićima. Postoje tri vrste ovih pigmenata:
– pigmenti osjetljivi na crvenu boju,
– pigmenti osjetljivi na zelenu boju i
– pigmenti osjetljivi na plavu boju.
Svaki čepić posjeduje jedan od ova tri pigmenta, tako da je osjetljiv na
odgovarajuću boju. Na dijagramu na Slici 3 prikazane su osjetljivosti po
talasnim dužinama za sve tri vrste čepića (crveni, zeleni i plavi). Pik kod
plavo-osjetljivog pigmenta je na 445nm, kod zeleno-osjetljivog na 535nm, a
kod crveno-osjetljivog je na 570nm.
Slika 3 Osjetljivost pigmenata
Na očnu jabučicu je povezano šest očnih mišića koji kontrolišu pokrete oka.
Ovi mišići se mogu vidjeti na Slici 4.
Predrag Todorović Kolorni modeli i transformacije između kolornih modela
9
Slika 4 Očni mišići
Funkcije ovih mišića su sljedeće:
Mišić Primarna funkcija
Medial rectus pomjera oko ka nosu
Lateral rectus pomjera oko od nosa
Superior rectus podiže oko
Inferior rectus spušta oko
Superior oblique rotira oko
Inferior oblique rotira oko
Kada oko fokusira neki objekat, njegova izvrnuta slika se projektuje na
mrežnjaču, kao što je prikazano na slici 5.
Predrag Todorović Kolorni modeli i transformacije između kolornih modela
10
Slika 5 Fokusiranje objekta
U slučaju deformisanja očne jabučice fokusiranje postaje otežano, te dolazi do
kratkovidosti (kod izduženja očne jabučice po dužini), odnosno
dalekovidosti (kod skraćenja jabučice).
2.2. Daltonizam
Nemogućnost oka da napravi razliku između pojedinih boja naziva se
daltonizam. Najčešći slučaj daltonizma je nerazlikovanje crvene i zelene boje.
Daltonizam se javlja kod 8% muškaraca i kod 0,4% žena i posljedica je
nedostatka crvenih ili zelenih čepića ili njihovog lošeg funkcionisanja. Daltonisti
nijesu potpuno nesposobni da vide ove boje, ali ih često miješaju.
Daltonizam je nasljedni poremećaj i mnogo češće se srijeće kod muškaraca.
Razlog za ovo je što je za sposobnost raspoznavanja boja zadužen
X hromozom. Žene imaju dva X hromozoma, za razliku od muškaraca koji
imaju samo jedan, pa je vjerovatnoća pojave daltonizma kod njih mnogo manja.
Nemogućnost raspoznavanja bilo koje boje, odnosno viđenje svijeta oko sebe
u nijansama sive boje, veoma je rijetka.
11
3. MODELI BOJA
U svakodnevnom životu srijećemo se sa nekoliko modela boja. Kada
gledamo televiziju, čitamo časopise, gledamo porodične fotografije, radimo za
računarom, slikamo itd. nesvjesno dolazimo u kontakt sa modelima boja. Oni
služe da se slika u boji predstavi ljudskom oku. Krajnje pojednostavljeno
rečeno, modeli boja predstavljaju upotrebu i miješanje nekoliko osnovnih boja
u cilju dobijanja željenih nijansi. Izbor tih "osnovnih boja" (kasnije ćemo vidjeti
da ne moraju samo boje činiti kolorne modele) čini jedan kolorni model,
odnosno model boja.
3.1. RGB model
Kao što je u prethodnom poglavlju rečeno, u oku se nalaze senzori na crvenu,
zelenu i plavu boju. Stoga je RGB model najpribližniji načinu funkcionisanja
oka. RGB je skraćenica od Red - Green - Blue (crveno - zeleno - plavo) i
označava boje koje sačinjavaju ovaj model. Sa RGB modelom srijećemo se
svakodnevno, jer se koristi kod televizijskih ekrana, računarskih monitora i
uopšte svih ekrana u boji, na primjer kod mobilnih telefona. Tehnologije na
kojima se zasnivaju ovi ekrani mogu biti suštinski različite, ali svi koriste RGB
model boja.
Kako se formira slika na ekranu monitora? Kod klasičnih ekrana sa katodnom
cijevi tzv. CRT ekrana (Cathode Ray Tube), ekran je prekriven tačkicama
(najčešće, mada postoje i drugi oblici) fosfora plave, crvene i zelene boje.
Slika se formira tako što elektronski mlaz pobuđuje odgovarajuće fosforne
tačke manjim ili većim intenzitetom, proizvodeći manju ili veću sjajnost
Predrag Todorović Kolorni modeli i transformacije između kolornih modela
12
pojedine tačke. Tačke su grupisane u grupe po tri − po jedna od svake boje.
Na Slici 6. vidi se raspored fosfornih tačaka kod klasičnih CRT ekrana.
Slika 6 Raspored fosfornih tačaka kod CRT ekrana
Na slici se može vidjeti da tri susjedne tačke predstavljaju jedan piksel.
Intenzitetom osvjetljaja svake fosforne tačke posebno definiše se boja piksela.
Tako, na primjer, ako su zeleni i plavi piksel "isključeni" (tamni), a crveni sija
polovinom intenziteta, rezultujuća boja piksela će biti tamno crvena.
Kod računara, svaka komponenta boje predstavljena je sa 256 nivoa, gdje
nivo 0 označava potpuno ugašenu tačku (crna boja), a nivo 255 označava
tačku koja sija punim intenzitetom. Pošto je jedan piksel sastavljen od tri tačke,
proizilazi da je ukupan broj raspoloživih boja na računaru 256 × 256 × 256 =
16.777.216, odnosno preko 16,7 miliona boja.
RGB model je tzv. aditivni model. Ovo znači da rezultujuća boja predstavlja
zbir svjetlosti pojedinih komponenata, odnosno, što su komponente jače to je
konačna boja svjetlija. Tako, kada sve tri komponente imaju maksimalni
intenzitet zajedno čine bijelu svjetlost (poznato je da bijela svjetlost u sebi
sadrži sav spektar boja).
Predrag Todorović Kolorni modeli i transformacije između kolornih modela
13
Na Slici 7. vidi se šta se dobija miješanjem pojedinih RGB komponenata.
Može se lako primijetiti da se sa svakim dodavanjem neke komponente dobija
svjetlija boja, tj. da se na presjeku sve tri komponente dobija bijela.
Slika 7 Miješanje RGB komponenata
Siva boja u sebi sadrži jednake količine sve tri komponente, što nači da se
između crne i bijele nalazi još i 254 nijanse sive boje.
3.2. CMY i CMYK modeli
Pored RGB modela, CMY(K) model je model sa kojim se najčešće srijećemo
u životu. CMYK model se koristi u štampi, te je praktično sva kolor štampa
zasnovana na ovom modelu.
CMYK je skraćenica sačinjena od slova koja predstavljaju boje koje ga čine:
Cyan, Magenta, Yellow (žuta) i blacK (crna). Crnu predstavlja slovo "K" da ne
bi došlo do miješanja sa plavom, koja je predstavljena slovom "B" (blue).
Predrag Todorović Kolorni modeli i transformacije između kolornih modela
14
CMYK pripada tzv. substraktivnom modelu boja, odnosno suštinski je suprotan
RGB modelu, koji je aditivan. Ovo znači da se rezultujuća boja dobija
oduzimanjem svjetlosti. Time je dobijena nijansa tamnija što su jače
komponente koje je sačinjavaju.
Zašto do ovoga dolazi? Kod RGB modela osnova je ekran koji je crne boje, a
boje se dobijaju tako što svaka tačka emituje svjetlost, pa tako dolazi do
sabiranja svjetlosti, tj. boja. Kod CMY(K) modela je medij papir, koji je bijele
boje. Svakim nanošenjem boje oduzima se određjena količina svjetlosti koja
se reflektuje od papira. Na primjer, čista žuta boja na papiru upija plavu
komponentu svjetlosti, a odbija crvenu i zelenu, koje zajedno čine žutu
svjetlost. Ako bi preko žute boje nanijeli magentu, koja upija zelenu boju, došlo
bi do upijanja i plave i zelene komponente bijele svjetlosti i kao rezultat bi se
dobila crvena boja. Nanošenjenjem i posljednje komponente − cijana, koji upija
crvenu boju, dobila bi se crna.
Na Slici 8. vidi se šta se dobija miješanjem komponenata CMY modela. Vidi se
da se sa svakim dodavanjem neke komponente dobija tamnija boja, tj. da se
na presjeku sve tri komponente dobija crna.
Slika 8 Miješanje CMY komponenata
Predrag Todorović Kolorni modeli i transformacije između kolornih modela
15
Iz navedenog se može vidjeti da su RGB i CMY modeli potpuno suprotni, ali i
da svaka boja iz jednog modela ima svoju "kontraboju" u drugom modelu.
Stoga je prelaz između ova dva modela moguće predstaviti jednostavnim
formulama
C = 1 – R
M = 1 – G (1)
Y = 1 – B
Formule (1), očigledno podrazumijevaju predstavljanje komponenti
vrijednostima iz intervala [0,1]. RGB komponente se, kao što je već rečeno,
obično predstavljaju vrijednostima od 0 do 255. Kod CMY(K) modela se,
međutim, standardno koriste vrijednosti u cjelobrojnim procentima, tj. kreću se
od 0 do 100. Stoga bi se formule (1) mogle napisati na sljedeći način:
100*255
1
100*255
1
100*255
1
−=
−=
−=
BY
GM
RC
(2)
Teorijski, u štampi bi bilo dovoljno koristiti CMY kolorni model. Međutim, zbog
toga što bi dobijanje savršenih CMY boja bilo veoma skupo, ove boje nijesu
savršene. Tako, njihovim miješanjem se ne dobija čista crna boja, pa takve
slike nijesu dovoljno oštre i djeluju pomalo "isprano" u tamnijim oblastima. Zato
je kod štampe uvedena i crna komponenta, koja značajno popravlja kvalitet
odštampanih slika.
Ako sa C', M' i Y' označimo vrijednosti komponenata u CMY modelu, njihova
konverzija u CMYK bila bi predstavljena sljedećim formulama:
Predrag Todorović Kolorni modeli i transformacije između kolornih modela
16
K = min(C', M', K')
C = C' – K
M = M' – K
Y = Y' – K
(3)
3.3. XYZ model
XYZ model je jedan od modela koje je razvila Međunarodna komisija za
rasvjetu (Commission Internationale de l'Eclairage), koja se najčešće
označava skraćenicom CIE. CIE modeli zasnovani su na odzivu ljudskog oka
na RGB i dizajnirani su da precizno reprezentuju ljudski osjećaj za boje.
Ovi modeli koriste takozvane boje nezavisne od medija na kojem se prikazuju,
što znači da bi trebalo da vjerno reprodukuju boje bez obzira na uređaj:
skener, monitor ili printer. U širokoj su upotrebi, jer se lako koriste u
kompjuterima i opisuju širok dijapazon boja.
1931 godine CIE je razvila XYZ kolor model, koji se još naziva i standardni
kolor model. Konverzija RGB modela u XYZ model vrši se pomoću sljedeće
jednačine:
=
B
G
R
Z
Y
X
116.1066.0000.0
114.0587.0299.0
200.0174.0607.0
(4)
XYZ model boja često se predstavlja dvodimenzionalnim grafikom koji
podsjeća na oblik jedra. On se dobija projektovanjem trodimenzionalnog
kolornog prostora na ravan X + Y + Z = 1. Ovaj grafik se često može vidjeti kao
reprezentacija XYZ modela (Slika 9).
Predrag Todorović Kolorni modeli i transformacije između kolornih modela
17
Slika 9 Grafičko predstavljanje XYZ modela
3.4. Lab model
Lab model (poznat i kao L*a*b) je unaprijeđeni CIE XYZ model. U ovom
trodimenzionalnom modelu a-osa predstavlja raspon od zelene (−a) do crvene
(+a) boje, b-osa predstavlja raspon od plave (−b) do žute (+b) boje, a L-osa
predstavlja osvjetljaj (Slika 10).
Slika 10 Lab model boja
Predrag Todorović Kolorni modeli i transformacije između kolornih modela
18
U poređenju sa XYZ modelom, Lab boje su kompatibilnije sa bojama koje vidi
ljudsko oko.
Konverzija iz XYZ u Lab model vrši se pomoću formula (5):
−
=
−
=
−
⋅=
00
00
0
200
500
16116
Z
Zf
Y
Yfb
Y
Yf
X
Xfa
Y
YfL
(5)
gdje je funkcija f definisana jednačinom (6):
( )
<+⋅
≥
=
24389/216,29
4
108
841
24389/216,3
xx
xx
xf , (6)
a X0, Y0 i Z0 su koordinate tzv. whitepointa, tj. koordinate referentne bijele boje.
Ako u jednačini (4) uzmemo da je R = G = B = 1 (potpuno bijela) dobićemo da
je:
182.1
000.1
981.0
0
0
0
=
=
=
Z
Y
X
(7)
Vrijednosti koje se, međutim, uobičajeno uzimaju u praksi su sljedeće
08883.1
00000.1
95047.0
0
0
0
=
=
=
Z
Y
X
(8)
Predrag Todorović Kolorni modeli i transformacije između kolornih modela
19
3.5. UVW model
Kod UVW kolornog modela euklidska rastojanja se poklapaju sa subjektivnim
pomacima u boji. Drugim riječima, jedinične promjene luminanse (osvjetljaja) i
hrominanse (talasne dužine boje) izgledaju uniformno.
Jednačine koje definišu ovaj model su:
( )
( )
1710025
13
13
3
0
0
−=
−⋅=
−⋅=
YW
vvWV
uuWU
(9)
Komponente u i v se izračunavaju po formuli (10):
3122
6
3122
4
++−
=
++−
=
yx
yv
yx
xu
(10)
gdje su:
ZYX
Yy
ZYX
Xx
++
=
++
=
(11)
Komponente u0 i v0 predstavljaju referentnu bijelu boju (whitepoint). Iz
jednačina (8), (10) i (11) dobijamo da je:
31225.0
19786.0
0
0
=
=
v
u
(12)
Predrag Todorović Kolorni modeli i transformacije između kolornih modela
20
3.6. Luv model
Luv model je izveden iz UVW i Lab modela i garantuje da sve komponente
imaju pozitivne vrijednosti. "L" komponenta definiše luminansu, a "u" i "w"
definišu hrominansu.
Ovaj model je definisan sljedećim jednačinama:
( )
( )0
0
3
0
13
13
1625
vvLb
uuLa
Y
YL
′−′⋅=
′−′⋅=
−=
(13)
Komponente u i v se izračunavaju po formuli (10):
ZYX
Yv
ZYX
Xu
315
9
315
4
++=′
++=′
(14)
Komponente 0
u′ i 0v′ predstavljaju referentnu bijelu boju (whitepoint). Iz
jednačina (8) i (14) dobijamo da je:
46834.0
19784.0
0
0
=′
=′
v
u
(15)
3.7. HSL model
HSL model (poznat i kao HSB) je još jedan model koji se često srijeće u
praksi. On je prilično saglasan sa načinom na koji ljudsko oko funkcioniše. "H"
Predrag Todorović Kolorni modeli i transformacije između kolornih modela
21
komponenta (hue) predstavlja nijansu boje, "S" je zasićenje boje (saturation),
a "L" je luminansa, tj. osvjetljaj, odnosno "B" (brightness) kod HSB.
H komponenta se predstavlja uglom od 0° do 360° na tzv. krugu boja (color
wheel), koji se može vidjeti na Slici 11.
Slika 11 Krug boja (color wheel)
Crvena, zelena i plava komponenta su raspoređene na 0°, 120° i 240°,
respektivno. Između njih se nalaze žuta, cijan i magenta na 60°, 180° i 300°,
respektivno.
S komponenta predstavlja, kao što je već rečeno, zasićenje boje i izražava se
u procentima. Drugim riječima, ova komponenta označava koliki je udio boje u
željenoj nijansi. Što je procenat veći boja je intenzivnija i suprotno − što se ovaj
procenat više bliži nuli boje su sve "ispranije". Zasićenje od 0% označava sive
nijanse.
L komponenta predstavlja osvjetljaj određene boje i označava se u
procentima, tj. vrijednostima od 0 do 100. Vrijednost od 100% označava istu
boju, a vrijednost od 0% označava crnu.
Predrag Todorović Kolorni modeli i transformacije između kolornih modela
22
Konverzija iz RGB u HSL model obavlja se pomoću sljedećih jednačina:
( )
2
5,0,2
5,0,
,46
1
,26
1
,6
1
minmax
minmax
minmax
minmax
minmax
max
minmax
max
minmax
max
minmax
RGBRGBL
LRGBRGB
RGBRGB
LRGBRGB
RGBRGB
S
BRGBRGBRGB
GR
GRGBRGBRGB
RB
RRGBRGBRGB
BG
H
+=
>+−
−
≤+
−
=
=
−
−+
=
−
−+
=−
−
=
(16)
gdje je:
( )
( )BGRRGB
BGRRGB
,,min
,,max
min
max
=
=
(17)
Ukoliko se dobije negativna vrijednost za H, njegovu vrijednost treba uvećati
za 1, da bi se dobila vrijednost iz intervala [0,1].
3.8. Indeksni model
Indeksni model boja u suštini nije pravi model, već varijacija nekog postojećeg
modela. Najčešći slučaj koji se danas srijeće u upotrebi je indeksni model
zasnovan na RGB modelu.
Predrag Todorović Kolorni modeli i transformacije između kolornih modela
23
Suština kod ovog modela je prikazivanje slika sa ograničenim skupom boja od
maksimalno 256 elemenata. U praksi se najčešće srijeću 4-bitni (16 boja) i
8-bitni model (256 boja).
Skup boja koje se mogu naći u slici naziva se paleta, kao analogija (mada ne
savršena) sa slikarskom paletom na kojoj se nalaze boje koje slikar nanosi na
platno. Paleta neke slike se može predstaviti u vidu tabele, kao na Slici 12.
Indeks R G B
0 0 0 0
1 80 0 128
2 3 157 49
n-1 255 255 255
Slika 12 Paleta boja
Sa slike vidimo, na primjer da boji pod rednim brojem 2 odgovara RGB
kombinacija (3,157,49).
Prednost indeksnog modela je smanjenje količine memorije za smještaj slike.
Tako, na primjer, slika u RGB formatu zauzima oko 3 ⋅ x ⋅ y bajtova, gdje su x i
y širina, odnosno visina slike u pikselima (svaki piksel zauzima tri bajta u
memoriji – po jedan za svaku RGB komponentu). Sa druge strane, u 8-bitnom
indeksnom režimu ista slika zauzima oko 3 ⋅ 256 + x ⋅ y, gdje je n broj boja u
paleti, a u 4-bitnom zauzima oko 3 ⋅ 16 + x ⋅ y / 2. Ako je slika velika 800 ⋅ 600
piksela, u RGB režimu zauzima 1,440,000 bajtova, u 8-bitnom indeksnom
režimu 480,768, a u 4-bitnom 240,048 bajtova.
Predrag Todorović Kolorni modeli i transformacije između kolornih modela
24
Očigledna prednost indeksnog režima je ušteda u memorijskom prostoru
potrebnom za smještaj slike. Međutim, kako se prosječna slika u sebi sadrži
obično mnogo više od 16, tj. 256 boja, potrebno je smanjiti broj upotrijebljenih
boja u slici i svesti ih na odgovarajuću paletu.
Postoje razni algoritmi za određivanje optimalne palete boja i primjene
izabrane palete na sliku, da bi se što manje uočavao nedostatak boja u slici.
Najjednostavniji način izbora odgovarajuće boje iz palete je nalaženje
"rastojanja" između stvarne boje u slici i svih boja u paleti i izbora najbliže
boje, tj. boje sa najmanjim geometrijskim rastojanjem.
Ako sa R0, G0 i B0 označimo R, G i B komponentu iz originalne slike, a sa RP,
GP i BP označimo R, G i B komponentu jedne reprezentacije boje u paleti,
"rastojanje" između ove dvije boje nalazimo po sljedećoj formuli:
( ) ( ) ( )20
2
0
2
0 PPPBBGGRRR −+−+−= (18)
25
4. REALIZOVANI PROGRAM
U cilju ilustracije teorije opisane u prethodnom dijelu rada razvijen je program
koji omogućava učitavanje slika i separaciju po kanalima za neki od deset
ponuđenih modela boja. Izgled programa sa učitanom testnom slikom je dat
na Slici 13.
Slika 13 Izgled realizovanog programa
Testna slika se sastoji iz tri dijela. Prvi dio predstavlja spektar čistih, zasićenih
boja. U drugom dijelu je isti taj spektar, ali sa horizontalnim prelazom od
Predrag Todorović Kolorni modeli i transformacije između kolornih modela
26
potpuno bijele do potpuno crne boje. Konačno, treći dio testne slike predstavlja
gradijent od bijele do crne boje.
Nakon učitavanja slike, izborom odgovarajuće opcije iz menija, slika se
prikazuje na ekranu. U statusnoj liniji vide se informacije o učitanoj slici: naziv,
dimenzije, paleta i izabrani model boja, o čemu će biti riječi u nastavku.
Iz menija Model boja bira se model na čije komponente je potrebno rastaviti
učitanu sliku. Na raspolaganju su sljedeći modeli:
– Monohromatski,
– Nijanse sive,
– RGB,
– CMY,
– CMYK,
– XYZ,
– Lab,
– UVW,
– Luv i
– HSL.
Za brži izbor modela moguća je upotreba prečica sa tastature, Ctrl+1 za
monohromatski, Ctrl+2 za nijanse sive, sve do Ctrl+0 za HSL model.
Izborom modela pojaviće se od jedan do četiri nova taba, u zavisnosti od
izabranog modela − po jedan za svaku komponentu, odnosno separaciju.
Svaku od dobijenih separacija, pa i originalnu sliku, moguće je snimiti na disk,
izborom opcije Snimanje iz menija. Kod snimanja su, kao i kod učitavanja
podržani BMP i JPEG formati, kao dva najzastupljenija formata.
Predrag Todorović Kolorni modeli i transformacije između kolornih modela
27
4.1. Procesiranje slike
"Srce" programa predstavlja procedura ProcesirajSliku, čiji izvorni kod je dat
u nastavku. Procedura ne pristupa pikselima slike, već je zbog velike razlike u
brzini korišten pristup skenlinija, čime se omogućava direktan pristup memoriji
jedne horizontalne linije slike.
Procedure TGlavniForm.ProcesirajSliku;
Const X0 = 0.95047; // Konstante
Y0 = 1.00000;
Z0 = 1.08883;
u0 = 0.19786;
v0 = 0.31225;
u0p = 0.19784;
v0p = 0.46834;
Var I, J, R, G, B, K, Separacija : integer;
X, Y, Z, T1, T2, T3 : extended;
SkenLinija : array [0..4] of PByteArray;
Function Min (X,Y,Z:integer) : integer; // Vraca minimalnu vrijednost
Begin
If X<Y then
Result:=X
else
Result:=Y;
If Result>Z then
Result:=Z
End;
Function Max (X,Y,Z:integer) : integer; // Vraca maksimalnu vrijednost
Begin
If X>Y then
Result:=X
else
Result:=Y;
If Result<Z then
Result:=Z
End;
Procedure UzmiBoju (X:integer; var R,G,B:integer); // Uzima vrijednosti RGB
Begin // komponenata za dati
B:=SkenLinija [0][X*3]; // piksel u sken-liniji
G:=SkenLinija [0][X*3+1];
R:=SkenLinija [0][X*3+2]
End;
Procedure PostaviSivu (Separacija,X,Intenzitet:integer); // Postavlja dati
Begin // piksel u sken-liniji
SkenLinija [Separacija][X*3]:=Intenzitet; // separacije na
SkenLinija [Separacija][X*3+1]:=Intenzitet; // datu nijansu sive
SkenLinija [Separacija][X*3+2]:=Intenzitet
End;
Predrag Todorović Kolorni modeli i transformacije između kolornih modela
28
Procedure RBG2XYZ (R,G,B:integer; var X,Y,Z:extended); // Konverzija iz RGB
Begin // u XYZ model
X:=0.607*R/255+0.174*G/255+0.200*B/255;
Y:=0.299*R/255+0.587*G/255+0.114*B/255;
Z:=0.000*R/255+0.066*G/255+1.116*B/255
End;
Function Qbrt (X:extended) : extended; // Kubni korijen
Begin
If X=0 then
Result:=0
else
Result:=Exp (Ln (X)/3)
End;
Function LabF (X:extended) : extended; // Funkcija koja se koristi u Lab modelu
Begin
If X>=216/24389 then
Result:=Qbrt (X)
else
Result:=841/108*X+4/29
End;
Procedure UkljuciStrane (Naziv:array of string); // Ukljucuje i podesava
Var I : integer; // tabove za odgovarajuci broj
Begin // separacija
With PageControl1 do
Begin
For I:=1 to Length (Naziv) do
Begin
With Pages [I] do
Begin
While Length (Naziv [I-1])<11 do
Naziv [I-1]:=' '+Naziv [I-1]+' ';
Caption:=Naziv [I-1];
TabVisible:=True
End;
With Self.FindComponent ('Separacija'+IntToStr (I)) as TImage do
Begin
Width:=OriginalnaSlika.Width;
Height:=OriginalnaSlika.Height;
Picture.Bitmap.Width:=Width;
Picture.Bitmap.Height:=Height
End
End;
For I:=Length (Naziv)+1 to PageCount-1 do
Pages [I].TabVisible:=False;
ActivePage:=Pages [1]
End;
End;
Begin
Screen.Cursor:=crHourglass;
Try
For Separacija:=1 to 4 do
(FindComponent ('Separacija'+IntToStr (Separacija)) as TImage)
.Picture.Bitmap.PixelFormat:=pf24bit;
Case TrenutniModel of
mbMonohromatski : Begin
UkljuciStrane (['Monohromatska slika']);
With OriginalnaSlika do
For J:=0 to Height-1 do
Begin
SkenLinija [0]:=Picture.Bitmap.ScanLine[J];
SkenLinija[1]:=Separacija1.
Picture.Bitmap.ScanLine [J];
Predrag Todorović Kolorni modeli i transformacije između kolornih modela
29
For I:=0 to Width-1 do
Begin
UzmiBoju (I,R,G,B);
PostaviSivu (1,I,Round
((Max (R,G,B)+Min (R,G,B))/2/255)*255)
End
End
End;
mbNijanseSive : Begin
UkljuciStrane (['Nijanse sive']);
With OriginalnaSlika do
For J:=0 to Height-1 do
Begin
SkenLinija [0]:=Picture.
Bitmap.ScanLine [J];
SkenLinija [1]:=Separacija1.
Picture.Bitmap.ScanLine [J];
For I:=0 to Width-1 do
Begin
UzmiBoju (I,R,G,B);
PostaviSivu (1,I,Round
((Max (R,G,B)+Min (R,G,B))/2))
End
End
End;
mbRGB : Begin
UkljuciStrane (['R','G','B']);
With OriginalnaSlika do
For J:=0 to Height-1 do
Begin
SkenLinija [0]:=Picture.Bitmap.ScanLine[J];
For Separacija:=1 to 3 do
SkenLinija [Separacija]:=(Self.
FindComponent ('Separacija'+IntToStr (Separacija)) as
TImage).Picture.Bitmap.ScanLine [J];
For I:=0 to Width-1 do
Begin
UzmiBoju (I,R,G,B);
PostaviSivu (1,I,R);
PostaviSivu (2,I,G);
PostaviSivu (3,I,B)
End
End
End;
mbCMY : Begin
UkljuciStrane (['C','M','Y']);
With OriginalnaSlika do
For J:=0 to Height-1 do
Begin
SkenLinija [0]:=Picture.Bitmap.ScanLine[J];
For Separacija:=1 to 3 do
SkenLinija [Separacija]:=(Self.
FindComponent ('Separacija'+IntToStr
(Separacija)) as TImage).
Picture.Bitmap.ScanLine [J];
For I:=0 to Width-1 do
Begin
UzmiBoju (I,R,G,B);
PostaviSivu (1,I,255-R);
PostaviSivu (2,I,255-G);
PostaviSivu (3,I,255-B)
End
End
End;
mbCMYK : Begin
UkljuciStrane (['C','M','Y','K']);
Predrag Todorović Kolorni modeli i transformacije između kolornih modela
30
With OriginalnaSlika do
For J:=0 to Height-1 do
Begin
SkenLinija [0]:=Picture.Bitmap.ScanLine[J];
For Separacija:=1 to 4 do
SkenLinija [Separacija]:=(Self.
FindComponent ('Separacija'+IntToStr
(Separacija)) as TImage).Picture.
Bitmap.ScanLine [J];
For I:=0 to Width-1 do
Begin
UzmiBoju (I,R,G,B);
K:=255-Max (R,G,B);
PostaviSivu (1,I,255-R-K);
PostaviSivu (2,I,255-G-K);
PostaviSivu (3,I,255-B-K);
PostaviSivu (4,I,K)
End
End
End;
mbXYZ : Begin
UkljuciStrane (['X','Y','Z']);
With OriginalnaSlika do
For J:=0 to Height-1 do
Begin
SkenLinija [0]:=Picture.Bitmap.ScanLine[J];
For Separacija:=1 to 3 do
SkenLinija [Separacija]:=(Self.
FindComponent ('Separacija'+IntToStr
(Separacija)) as TImage).Picture.
Bitmap.ScanLine [J];
For I:=0 to Width-1 do
Begin
UzmiBoju (I,R,G,B);
RBG2XYZ (R,G,B,X,Y,Z);
PostaviSivu (1,I,Round (X/0.981*255));
PostaviSivu (2,I,Round (Y*255));
PostaviSivu (3,I,Round (Z/1.182*255))
End
End
End;
mbLab : Begin
UkljuciStrane (['L','a','b']);
With OriginalnaSlika do
For J:=0 to Height-1 do
Begin
SkenLinija [0]:=Picture.Bitmap.ScanLine[J];
For Separacija:=1 to 3 do
SkenLinija [Separacija]:=(Self.
FindComponent ('Separacija'+IntToStr
(Separacija)) asTImage).Picture.
Bitmap.ScanLine [J];
For I:=0 to Width-1 do
Begin
UzmiBoju (I,R,G,B);
RBG2XYZ (R,G,B,X,Y,Z);
T1:=116*LabF (Y/Y0)-16;
T2:=500*(LabF (X/X0)-LabF (Y/Y0));
T3:=200*(LabF (Y/Y0)-LabF (Z/Z0));
PostaviSivu (1,I,
Round ((T1+16)/116*255));
PostaviSivu (2,I,
Round ((T2+500)/1000*255));
PostaviSivu (3,I,
Round ((T3+200)/400*255))
End
Predrag Todorović Kolorni modeli i transformacije između kolornih modela
31
End
End;
mbUVW : Begin
UkljuciStrane (['U','V','W']);
With OriginalnaSlika do
For J:=0 to Height-1 do
Begin
SkenLinija [0]:=Picture.Bitmap.ScanLine[J];
For Separacija:=1 to 3 do
SkenLinija [Separacija]:=(Self.
FindComponent ('Separacija'+IntToStr
(Separacija)) as TImage).Picture.
Bitmap.ScanLine [J];
For I:=0 to Width-1 do
Begin
UzmiBoju (I,R,G,B);
RBG2XYZ (R,G,B,X,Y,Z);
T3:=25*Qbrt (100*Y)-17;
Z:=X+Y+Z;
If Z=0 then
Z:=1;
X:=X/Z;
Y:=Y/Z;
T1:=4*X/(-2*X+12*Y+3);
T2:=6*Y/(-2*X+12*Y+3);
T1:=13*T3*(T1-u0);
T2:=13*T3*(T2-v0);
PostaviSivu (1,I,
Round ((T1+127.05)/346.85*255));
PostaviSivu (2,I,
Round ((T2+93.1)/167.7*255));
PostaviSivu (3,I,
Round ((T3+17)/116.04*255))
End
End
End;
mbLuv : Begin
UkljuciStrane (['L','u','v']);
With OriginalnaSlika do
For J:=0 to Height-1 do
Begin
SkenLinija [0]:=Picture.Bitmap.ScanLine[J];
For Separacija:=1 to 3 do
SkenLinija [Separacija]:=(Self.
FindComponent ('Separacija'+IntToStr
(Separacija)) as TImage).Picture.
Bitmap.ScanLine [J];
For I:=0 to Width-1 do
Begin
UzmiBoju (I,R,G,B);
RBG2XYZ (R,G,B,X,Y,Z);
T1:=25*Qbrt (Y/Y0)-16;
Z:=X+15*Y+3*Z;
If Z=0 then
Z:=1;
X:=4*X/Z;
Y:=9*Y/Z;
T2:=13*T1*(X-u0p);
T3:=13*T1*(Y-v0p);
PostaviSivu (1,I,
Round ((T1+16)/25*255));
PostaviSivu (2,I,
Round ((T2+48.5)/89.7*255));
PostaviSivu (3,I,
Round ((T3+17.8)/115.3*255))
End
Predrag Todorović Kolorni modeli i transformacije između kolornih modela
32
End
End;
mbHSL : Begin
UkljuciStrane (['H','S','L']);
With OriginalnaSlika do
For J:=0 to Height-1 do
Begin
SkenLinija [0]:=Picture.Bitmap.ScanLine[J];
For Separacija:=1 to 3 do
SkenLinija [Separacija]:=(Self.
FindComponent ('Separacija'+IntToStr
(Separacija)) as TImage).Picture.
Bitmap.ScanLine [J];
For I:=0 to Width-1 do
Begin
UzmiBoju (I,R,G,B);
X:=Max (R,G,B)/255;
Y:=Min (R,G,B)/255;
T3:=(X+Y)/2;
If X=Y then
Begin
T1:=0;
T2:=0
End
else
Begin
If T3<=0.5 then
T2:=(X-Y)/(X+Y)
else
T2:=(X-Y)/(2-(X+Y));
If Max (R,G,B)=R then
T1:=(G-B)/255/(X-Y)/6
else
If Max (R,G,B)=G then
T1:=(2+(B-R)/255/(X-Y))/6
else
T1:=(4+(R-G)/255/(X-Y))/6;
If T1<0 then
T1:=T1+1
End;
PostaviSivu (1,I,Round (T1*255));
PostaviSivu (2,I,Round (T2*255));
PostaviSivu (3,I,Round (T3*255))
End
End
End
End;
For Separacija:=1 to 4 do
(FindComponent ('Separacija'+IntToStr (Separacija)) as TImage).Refresh
Finally
Screen.Cursor:=crDefault
End
End;
Predrag Todorović Kolorni modeli i transformacije između kolornih modela
33
4.2. Dobijeni rezultati
Dobijeni rezultati su prikazani kao slike u nijansama sive boje, gdje crna boja
označava minimalnu moguću vrijednost, a bijela maksimalnu. Drugim riječima,
dobijene vrijednosti su normalizovane na vrijednosti iz intervala [0,255].
Isti princip je korišten za prikaz CMY i CMYK modela. Treba obratiti pažnju da
neki programi, kakav je Adobe Photoshop, koriste kod CMY(K) modela
obratan princip − crno predstavlja maksimalnu vrijednost komponente, a bijelo
potpuno odsustvo date komponente. Ovo je urađeno zbog analogije sa
štampom, tj. zbog substraktivnog karaktera CMY(K) modela.
Kod konverzije u monohromatsku sliku korištena je algoritam praga na 50%, tj.
sve tamnije of 50% sive pretvoreno je u crnu, a ostalo u bijelu boju.
Tamo gdje je to bilo moguće dobijene separacije su uvezene u programe kao
što je Paint Shop Pro, koji omogućavaju spajanje separacija u kompozitnu
sliku, radi upoređivanja sa originalnom slikom. U svim slučajevima su dobijene
identične slike.
U nastavku su dati rezultati rada programa, tj. dobijene separacije testne slike.
Predrag Todorović Kolorni modeli i transformacije između kolornih modela
34
Testna slika Monohromatska slika
Slika 14 Monohromatski model
Testna slika Slika u nijansama sive
Slika 15 Nijanse sive
Predrag Todorović Kolorni modeli i transformacije između kolornih modela
35
Testna slika R kanal
G kanal B kanal
Slika 16 RGB model
Predrag Todorović Kolorni modeli i transformacije između kolornih modela
36
Testna slika C kanal
M kanal Y kanal
Slika 17 CMY model
Predrag Todorović Kolorni modeli i transformacije između kolornih modela
37
Testna slika
C kanal M kanal
Y kanal K kanal
Slika 18 CMYK model
Predrag Todorović Kolorni modeli i transformacije između kolornih modela
38
Testna slika X kanal
Y kanal Z kanal
Slika 19 XYZ model
Predrag Todorović Kolorni modeli i transformacije između kolornih modela
39
Testna slika L kanal
a kanal b kanal
Slika 20 Lab model
Predrag Todorović Kolorni modeli i transformacije između kolornih modela
40
Testna slika U kanal
V kanal W kanal
Slika 21 UVW model
Predrag Todorović Kolorni modeli i transformacije između kolornih modela
41
Testna slika L kanal
u kanal v kanal
Slika 22 Luv model
Predrag Todorović Kolorni modeli i transformacije između kolornih modela
42
Testna slika H kanal
S kanal L kanal
Slika 23 HSL model
43
5. ZAKLJUČAK
Predstavljanje vidljivih boja je veoma složen problem. Do danas nije pronadjen
savršen način koji bi obuhvatio čitav vidljiv spektar, a koji bi bio nezavisan od
uređaja, odnosno medija. Zato se u svakodnevnoj upotrebi srijećemo sa većim
brojem modela, od kojih je dobar dio prikazan u ovom radu. Za sve modele je
dat teorijski prikaz, kao i formule za konverziju iz jednog modela u drugi.
Konačno, realizovan je i program koji vrši konverziju slike iz RGB režima u
neki od deset ponuđenih modela, odnosno rastavljanje slike na odgovarajuće
komponente. Kao primjer uzeta je odgovarajuća testna slika da bi se što bolje
uočila zavisnost između modela. Takođe, dat je opis programa i rezultati rada.
44
6. LITERATURA
[1] Igor Đurović, Digitalna obrada slike, skripta, Podgorica, 2003.
[2] Geografsko istraživačko društvo, Zaštita vida, fotografisanje i snimanje
pomračenja Sunca, http://www.sunce.org.yu/pomracenje/zastita.htm.
[3] Dr. Carl Bianco, M.D., How Vision Works, http://science.howstuff-
works.com/eye.htm.
[4] Color Representation, http://www.netnam.vn/unescocourse/computervisi-
on/12.htm.
[5] Color, http://remotesensing.org/libtiff/man/TIFFcolor.3t.html.
[6] Java Color Utilities, http://modules.geotools.org/gcs-coverage/xref/org/ge-
otools/resources/ColorUtilities.html.
[7] MtColorUtil Java klasa, http://geovistastudio.sourceforge.net/mtcom-
mon/xref/jh9gpz/ui/color/MtColorUtil.html.