Tudományos Diákköri Dolgozat 2007
Szoftver tervezése színtorzulások hatásainak vizsgálatára
Készítették: Sik András Ferenc e-mail:
[email protected] Gruber Kristóf e-mail:
[email protected] IV éves műszaki informatikus mérnök hallgatók Konzulensek: Dr. Schanda János e-mail:
[email protected] Dr. Lányi Cecília e-mail:
[email protected] Pannon Egyetem, Virtuális Környezetek és Fénytan Laboratórium
Sik András, Gruber Kristóf : Szoftver tervezése színtorzulások hatásainak vizsgálatára Tartalomjegyzék Tartalmi összefoglaló
2
1. Bevezetés
2
1.1. Színekről röviden
3
1.2. Színharmónia
5
2. Fejlesztés
9
2.1. Modellezés 2.2. A szoftver fejlesztése, felépítése
9 11
2.2.1. A FakeRainbow osztály
11
2.2.2. A ConvertFunctions osztály
12
2.2.3. A FakeRainbowView osztály
15
2.2.4. Az UserDataDialog osztály
16
2.2.5. A ControlPanel osztály
16
2.2.6. A MeasuringField osztály
19
2.2.7. A MeasuringWindow osztály
19
2.2.8. A ColorField osztály
19
2.2.9. A DisabledField osztály
20
2.2.10. A PlusMinusField osztály
20
3. A szoftver használata
21
3.1. Rendszerkövetelmények
21
3.2. A program elindítása
22
3.2.1. Windows
22
3.2.2. Mac OS X
22
3.2.3. Linux
22
3.3. Parancssori paraméterek
22
3.4. A Program használata
23
4. Összefoglalás és jövőbeli céljaink
26
5. Köszönetnyilvánítás
27
Felhasznált irodalom
28
1
Sik András, Gruber Kristóf : Szoftver tervezése színtorzulások hatásainak vizsgálatára Tartalmi összefoglaló Manapság egyre jobban előtérbe kerülnek a színharmóniával kapcsolatos kérdések. Ezek a kérdések sokszor nem csak kényelmi tényezőket jelenthetnek, ennél sokkal többről van szó, akár baleseti kockázatról is. Dolgozatunkban egy olyan szoftver tervezését és fejlesztését tűztük ki célul, mely az egyes színtorzulások hatásait vizsgálja. JAVA nyelven készítjük el a szoftvert, mely olyan számításokat végez, melyre az RGB színtérben nem lenne lehetőség. A színeket áttranszformáljuk a CIE Technical Committee TC8-02 által kidolgozott CIECAM02-es modellbe, így lehetőségünk nyílik színjellemzők érzet szerint egyenletes színtérben való megváltoztatására, ez az RGB színtérben nem lenne lehetséges. Mivel egy nonlineáris transzformációt használunk, ezért a módosított adatokat visszaalakítjuk az RGB színtérbe, a képernyőn való megjelenítés számára. 1. Bevezetés Tudományos diákköri munkánk keretében végzett munka kezdetén meg kellett ismerkednünk a színtan és a színharmónai alapfogalmaival. De honnan tudhatnánk, hogy valamely színek összhangban vannak, illetve harmonizálnak egymással? A kérdéssel a színek művészeti felhasználásával foglalkozó számos kutató foglalkozott, és próbált meghatározást adni arra, hogy mi a színharmónia. Goethe a látás teljességéhez kapcsolta a fogalmat1, Chevreul a színek közötti rendről írt2. De foglalkoztak kérdéssel a különböző színrendszerek megalkotó is, így pl. Munsell a színharmóniát a színek közötti egyensúllyal kacsolta össze3, Nemcsics professzor úr pedig színrendszerét magát a színek közötti vizuális harmóniára építette fel4 Rudolf Arnheim a különféle színösszetételeket egyszerűen „vizuálisan helyesnek illetve helytelennek” írja le5. Ez a „vizuális helyesség” egyfajta tudatosság, melyet nevelésünk során a művészeti oktatás bontakoztat ki bennünk. Judd, a „ Color in Business, Science and Industry” című könyv szerzője a színharmóniát két, vagy több egymás mellett látható szín által keltett kellemes érzésnek nevezte6. Azonban a probléma – miszerint melyek azok a színkombinációk, amelyek ezt az érzést képesek kiváltani – óriási érdeklődésre tart jelenleg is számot7. Számos elismert és fontos kérdéskör létezik a színharmóniával kapcsolatos ötletek megértése és kidolgozása terén, melyek magukba foglalják többek között a színárnyalatok folytonosságát, valamint a kiegészítő színek elképzelését8.
2
Sik András, Gruber Kristóf : Szoftver tervezése színtorzulások hatásainak vizsgálatára 1.1. Színekről röviden A fény olyan elektromágneses sugárzás, mely a látás lehetőségét biztosítja az emberek, és más látószervekkel
rendelkező
élőlények
számára.
Egy
elektromágneses
sugárzást
hullámhosszával vagy frekvenciájával, az adott hullámhosszon sugárzott teljesítménnyel. összetett sugárzás esetén spektrumával jellemezhetünk. A látható sugárzást más néven még fénynek nevezik, ennek spektruma a CIE definíciója szerint 380 nm és 780 nm között helyezkedik el9 Első ízben Isaac Newton mutatta meg kísérleti úton, hogy a fehér fény (mint a napfény) különféle színárnyalatú sugárzásból áll. Szintén Newton-nak tulajdonítják az első színkör megalkotását, noha azt már előtte Aron Sigfried Forsius megtette, viszont az ő általa készített modellt csupán a 20. században fedezték fel8.
1. ábra: Newton színköre8. A Newton által létrehozott színkör nem volt teljes, ugyanis vannak olyan árnyalatok, melyeket nem lehet előállítani csupán egy hullámhosszúságú fény felhasználásával. Egy ilyen szín például a bíbor, mely a spektrum két végén elhelyezkedő piros és kék fény keverésével állítható elő. Newton a színharmónia alapvető szabályosságainak felfedezése során számos 3
Sik András, Gruber Kristóf : Szoftver tervezése színtorzulások hatásainak vizsgálatára hipotézist tett közzé, a színek és a zenei hangok kapcsolatáról. Továbbá a kiegészítő színekkel kapcsolatos munkája óriási hatással volt a festészet történetére. A színelméletben kiegészítő színeknek nevezik azokat a színeket, melyeket ha megfelelő arányban keverünk egymáshoz színérzetileg semleges színt kapunk: szürkét, fehéret vagy feketét8. 1730-ban Jakob Christopf LeBlon felfedezte, hogy a különböző színek előállításakor a piros, a citromsárga, valamint a zöld színek a színkeverésben különleges helyet foglalnak el, és ezért azokat elsődlegesek”-nek nevezte. E három szín kombinációja hozza létre az úgynevezett „másodlagos” színeket: narancs (piros + citromsárga), zöld (kék + citromsárga), bíbor (kék + piros). Amennyiben egy elsődleges színt egy a másik két elsődlegesből előállított másodlagos színnel keverünk, akkor semleges színt kapunk eredményül. Természetesen a fentiek szerint „másodlagos”-nak definált színekből is kiindulhatnánk, s két-két „másodlagos” szín additív keverékéből (additív: ugyanarra a helyre vetítjük a két színt, vagy olyan sok apró pontból hozzuk azokat létre, hogy szemünk már ne tudja felbontani az egyes összetevőket, mint pl. a TV képernyőjén) az előbb „elsődleges”-nek nevezett színeket kapnánk. A kiegészítő színek kapcsán, fontos, hogy néhány szót ejtsünk az additív (összeadó) és szubtraktív (kivonó) színkeverésről. Ha monokromatikus fénysugarakat összekeverünk, az eredmény egy kevert színű fénynyaláb lesz, amelyben az emberi érzékelés számára az egyes komponensek nem választhatóak szét, hanem kevert összhatást keltenek. Az ilyen fajta színkeverést additív vagy összeadó színkeverésnek nevezik. Rendszeresen találkozunk vele TV-nézéskor, vagy bármiféle színes kijelzős elektronikai készülékek használatakor10. Felületről való visszaverődéskor a legtöbb anyag a beeső fénynyaláb bizonyos hullámhosszúságú összetevőit elnyeli, csak más hullámhosszúságú összetevői verődnek vissza, ezért látjuk a fehér fénnyel megvilágított tárgyakat színesnek. Színes fényképek estében pl. a fehér papírra felvitt emulziós rétegben előhívás után három, különböző hullámhossztartományban áteresztő réteg alakul ki, melyek az áthaladó fehér fény más-más hullámhossztartományában nyelnek el. A több rétegen való áthaladás során minden réteg egyegy hullámhossz tartományba nyeli el a sugárzást, az össz-fényből kivonja azt a hullámhosszsávot. Ezt a fajta színkeverést (tehát amikor fehérből összetevők kivonásával kapunk színt) szubtraktív, vagy kivonó színkeverésnek nevezik. Festékek keverésénél hasonló jelenség játszódik le. A festék színének azt látjuk, ami a fehér spektrumból megmarad, a többi elnyelődik10.
4
Sik András, Gruber Kristóf : Szoftver tervezése színtorzulások hatásainak vizsgálatára
2. ábra: (a) összeadó (b) kivonó színkeverés. Fontos megjegyezni továbbá, hogy nem minden szín állítható elő a fentebb említett piros, citromsárga és kék alapszínekből, sőt nem is ez a három alapszín fedi le a legnagyobb színskálát. Összeadó színkeveréssel a legnagyobb színskála a piros, zöld, kék alapszínek felhasználásával fedhető le. Tehát az összeadó keverés alapszínei a piros, a zöld, és a kék, amelyek a citromsárga, magenta, és ciánkék másodlagos színeket állítják elő. A kivonó keverés alapszínei a ciánkék, a magenta, és a citromsárga, melyek a vörös (citromsárga + magenta), zöld (citromsárga + ciánkék), és kék (magenta + ciánkék) másodlagos színeket állítják elő8. 1.2. Színharmónia A nyugati világban a színharmóniát illető első rendszerezett elképzelések pitagoraszi számszimbolikára és specifikus színskálákra alapultak. A színharmóniai elméletek már a Reneszánsztól kezdve magukban foglalják a következő kérdésköröket: változások a színezetben és a világosságban azonos árnyalat mellett, szomszédos színek és ellentétes színek. A különféle „színkerekek” (melyek közül az elsőt Moses Harris készítette el a piros, citromsárga, kék színek különbözőségére alapozva) jól lehetővé tették az ilyen kapcsolatok modellezését8. A híres francia kémikus Michel Eugène Chevreul is meglehetősen sokat foglalkozott a színharmóniával2. Ő a kiegészítő színpárok minél nagyobb ellentétében vélte felfedezni a harmóniát, és a piros-zöld, narancssárga-kék, citromsárga-ibolya párokat javasolta egymás kiegészítő színeinek. Chevrul írásai nem tűntek el nyom nélkül, nagy hatást gyakorolva 5
Sik András, Gruber Kristóf : Szoftver tervezése színtorzulások hatásainak vizsgálatára néhány neo-impresszionista művészre. Később Odgen Rood is kísérletezett a kiegészítő színpárok közti ellentétekkel, és egyetértett Chevrull-al abban, hogy a kiegészítő színpárok közti ellentét „kellemes” az emberi szem számára8.
3. ábra: Munsell színrendszere11. A XX. század elején a színharmóniai kutatásoknak három kiemelkedő alakja volt: Wilhelm Ostwald, Albert Henry Munsell és Johannes Itten. Mindhárom jeles kutató elméleteiben közös, hogy a színek valamely elv alapján rendezett együttesét próbálták megalkotni. Ostwald elképzeléseit a színharmóniáról a következő pontokban foglalhatjuk össze: 1. Azok a színek harmonizálnak egymással, melyek egyazon fekete, illetve fehér tartalmú körön helyezkednek el a modellben. 2. Az azonos fehér tartalmú színek harmonizálnak egymással. 3. Az azonos fekete tartalmú színek harmonizálnak egymással. 4. Az azonos színárnyalattal rendelkező színek harmonizálnak egymással8. Munsell szerint a színek akkor harmonizálnak, ha meghatározott utak mentén helyezkednek el a Munsell színtérben. Ezek az utak a következők: 6
Sik András, Gruber Kristóf : Szoftver tervezése színtorzulások hatásainak vizsgálatára 1. A szürke skála színei. 2. Az azonos Munsell -féle színárnyalattal és színezettel rendelkező színek. 3. Az azonos fekete-fehér (világosság) értékkel, és színezettel rendelkező kiegészítő színek. 4. Olyan színek sorozata, melyben minden egyes szín az őt megelőzőnél egyel kisebb fekete-fehér értékkel és színezettel rendelkezik. 5. A Munsell színtérben elliptikus úton elhelyezkedő színek8. Manapság a különféle rajzoló-tervező programok megjelenésével számos harmónia és színegyensúly elképzelés feledésbe merülni látszik, mint például a kapcsolatok a színfoltok mérete és színezete között, továbbá a színezet és a színárnyalat között. Léteznek hibás elképzelések, miszerint a színelmélet csupán a színárnyalatokat veszi figyelembe a harmónia kérdésénél, viszont ezek az elképzelések úgy tűnik, teljesen figyelmen kívül hagyják az olyan nagy kutatók, mint például Munsell és Itten munkásságát8. A színárnyalatok harmóniájára az alábbi négy klasszikus esetet hozhatjuk fel példaként: 1. Monokrom színharmónia: Ebben az esetben közel azonos színárnyalattal rendelkező színeket választunk8, melyik csupán fekete-fehér értékben és színtelítettségben térnek el egymástól12. 2. Kiegészítő színharmónia: Ez a harmónia olyan színekre alapul, melyek a színkörök, „színkerekek” ellenkező oldalán helyezkednek el8. 3. Analóg színharmónia: Olyan színek hozzák létre, melyek közel azonos árnyalatúak8,12. 4. „Osztott-kiegészítő” színharmónia: Ebben az esetben három színről beszélhetünk. A módszer lényege, hogy analóg színharmóniát felhasználva hasonló szín(eke)t ad egy kiegészítő színpár egyik tagjához8,12. 5. Háromszögletű színharmónia: Talán a legfontosabb az összes séma közül. Három domináns más néven elsődleges színből áll, melyek azonban lehetnek elsődleges, másodlagos, és harmadlagos színek a „színkeréken”12. 6. Négyszögletű színharmónia: Négy alapszínre épül, melyek közül 2-2 egymás kiegészítő színei. Ez a 2-2 pár jelöl ki egy négyzetet, vagy egy téglalapot a „színkeréken”12.
7
Sik András, Gruber Kristóf : Szoftver tervezése színtorzulások hatásainak vizsgálatára
4. ábra (balról jobbra haladva): monokromatikus, kiegészítő, analóg és osztottkiegészítő, „háromszögletű”, „négyszögletű” színharmónia12. Napjainkban kísérleti pszichológusok megpróbálták a különféle színharmóniai elméleteket tapasztalati úton meghatározni: tanulmányozták kísérleti alanyok válaszát, reakcióit önálló, és párba állított színmintákra. Példaképpen Ou és Luo13 modelljét hozhatjuk fel, amit kínai megfigyelőkön végzett kísérletekre alapoztak, és a következőket sikerült megállapítaniuk: 1. Két szín, melyek csak világosságban térnek el egymástól, harmonizálnak. 2. A kis világosságbeli különbség akár csökkentheti is a két szín harmóniáját. 3. Minél nagyobb a párba állított színminták világossága, annál valószínűbb, hogy a két szín egymással harmonizálónak fog tűnni. 4. A kék szín a legharmonikusabb – amely azt jelenti, hogy az összes többi vizsgált színnél több színnel képes harmóniában állni – míg a piros szín a legkevésbé harmonikus8. Szabó és munkatársainak vizsgálata megerősítette Ou megfigyeléseit, s azokat hármas színharmóniák számára is továbbfejlesztette14. Láthatjuk tehát, hogy az elmúlt évek során számos ötletet vetettek fel, melyekkel megpróbálták megmagyarázni, vagy megjósolni, hogy bizonyos színkombinációk miért harmonizálnak egymással, vagy miért gyakorolnak kellemes hatást az emberi megfigyelőre. Azonban ezen elméletek egyike sem teljes, illetve alapvető a maga nemében, valamint kivétel nélkül mindegyiket komoly kritikák érték a magyarázatok, bizonyítékok hiánya miatt. Ismert a tény, miszerint ízlésünk folyamatosan változik generációról-generációra, kor, nem, nevelés, kulturális háttér függvényében, ezért is nehéz pontos szabályokat létrehozni a hatásos színkombinációkra8. Az összes eddigi színharmónia vizsgálat csak különálló mintákon, mintegy absztrakt térben vizsgálta a kérdést. A valóságban egy színes környezet színeit kellene összehasonlítani, s azoknál fellépő harmónia torzulásokat tanulmányozni. A TDK munkánk során ilyen vizsgálatok számára kívántuk a kísérleti lehetőséget megteremteni. 8
Sik András, Gruber Kristóf : Szoftver tervezése színtorzulások hatásainak vizsgálatára 2. Fejlesztés 2.1. Modellezés Dolgozatunkban egy olyan szoftver tervezését és fejlesztését tűztük ki célul, mely az egyes színtorzulások hatásait vizsgálja. Mivel az olyan jellemzők, mint például színtelítettség (s), színezeti szög (h), relatív világosság (J), világosság (L) vizsgálatára standard RGB színtérben nincs lehetőség – márpedig a színharmóniai vizsgálatokhoz ezen mennyiségek szükségesek – ezért vizsgálódásunkhoz egy másik modellt kellett választanunk.
5. ábra: CIE 1931 színességi diagram15. 6. Célszerűnek láttuk tehát a CIE által kidolgozott modellek egyikét választani a számítások elvégzéséhez, ugyanis ezekben épp a kívánt mennyiségekkel dolgozhattunk. A CIE egy nemzetközi
szervezet
(Commission
Internationale
de
L'éclairage,
Nemzetközi
Világítástechnikai Bizottság), amely a fény, optikai sugárzás, színmérés és világítástechnika kérdéseivel foglalkozik. A színmérés nemzetközi szabványa a „CIE 1931 színinger tér”, amelyet XYZ színtérként ismerünk15,16.. 9
Sik András, Gruber Kristóf : Szoftver tervezése színtorzulások hatásainak vizsgálatára A CIE XYZ színtér a színingerek megfeleltetésén alapul (mikor látszik a 3 kiválasztott színinger additív keveréke azonosnak a vizsgálandó színinger által létrehozott észlelettel). Ezen színinger térben az egyes ingerek mérőszámai közötti távolság érzet szerint nem egyenlőközű. A CIE által legfrissebben javasolt CIECAM02-es modellben végeztük el számításainkat16.
6. ábra: a CIE színmegjelenési modell sematikus ábrája. A választott modell bemeneti paramétereit előzetes mérésekkel választottuk meg. A következő bemenő adatokra volt szükség: 1. A vizsgált színinger színösszetevőire (XYZ), melyeket L*a*b* értékekből számítottunk át szintén a CIE által meghatározott módon. Az L*a*b* értékeket Adobe Photoshop® segítségével állapítottuk meg. 2. Az adott megvilágításban használt referencia fehér értékekre (XwYwZw). Ahol a programban az egyes színtranszformációkhoz szükséges volt, a D50 (X=96.40, Y=100.0, Z=82.50) referencia fehér értékeket használtunk, mivel a Photoshop program is ezt a fehérpontot használja. 3. Az La, Yb értékekre, melyek a megfigyelt mező, és a háttér megvilágítási jellemzői, ezeket néhány CIE példaszámításban megfigyelt adat alapján állítottuk be16. A kimeneti paramétereket pedig a fenti ábra szemlélteti. A dolgozatra készített programot JAVA környezetben fejlesztettük MVC (Model View Controller)
séma
alapján.
A
JAVA
programozási
nyelv
mellett
szólt
még
platformfüggetlensége is. A fejlesztéshez 1.6.0 verziószámú JAVA Runtime Environment-et 10
Sik András, Gruber Kristóf : Szoftver tervezése színtorzulások hatásainak vizsgálatára használtunk fel. A szoftver az előre megadott XYZ értékeket átszámítja a CIECAM02-es modellbe, ahol módosíthatjuk a kívánt színjellemzőket, majd az így kapott értékeket a transzformáció inverzével visszaalakítja XYZ értékekké. Az XYZ értékekből megtörténik az L*a*b*, valamint az RGB értékek kiszámítása a későbbiekben részletezett módon. 2.2. A szoftver fejlesztése, felépítése 2.2.1. A FakeRainbow osztály Az osztály a Model-View-Controller sema szerinti Controller szerepét tölti be. Elsődleges feladata a többi osztály példányosítása. Ebben az osztályban tároljuk a program alapértelmezéseinek egy részét (DEF_WIDTH, DEF_HEIGHT - az ablak mérete), valamint ezt az osztály felelős a kimeneti fájl kezeléséért. public void log(String string)
A megadott stringet hozzáfűzi a megadott kimeneti fájl (alapból “results.csv”) végére. A kimeneti fájl formátuma csv, vagyis Comma Seperated Values, amit a legtöbb táblázatkezelő alkalmazás gond nélkül tud olvasni. A fájl minden egyes sora egy mérési eredményt jelent, vagyis egy beállított és véletlenszámmal generált teszt-ábra közüli választás eredményét. A legelső adat a tesztet kitöltő neve, utána pontosvesszővel elválasztva a kora következik, majd az alany neme (M - male - férfi, ill. F - female - nő). Ez után a választás kimenetele kerül rögzítésre (RND - random - véletlenszerű értékeket tartalmazó ablak, ill. SET - administrator setting - a mérésvezető beállítása). public void setUserParam(String string)
A függvény a felhasználó adatainak beállítására szolgál, a log() ezentúl ezeket az adatokat használja az alapértelmezettek helyett. A UserDataDialog osztály hívja meg az adatok bekérése után. public void userSelected(MeasuringWindow window)
Ez a függvény hívódik meg valamely mérő-ablakra kattintáskor a mérő-ablak ActionListenere által. Paraméterként a hívó osztály referenciáját kapja. Ez alapján megállapítja, hogy melyik mérő-ablakra érkezett a kattintás, és a megfelelő (“RND” vagy “SET”) szöveget a kimeneti 11
Sik András, Gruber Kristóf : Szoftver tervezése színtorzulások hatásainak vizsgálatára fájlba íratja a log() függvény segítségével. Ezek után bezárja a mérő-ablakokat és kinyitja újra a beállítópanelt. 2.2.2. A ConvertFunctions osztály A ConvertFunctions osztály látja el az általunk fejlesztett program Model szerepét. Ez az osztály végzi a színek adatainak számítását, az átváltást az egyes színterek között. A számításkhoz szükséges előre lemért, megállapított adatokat az tömbökben tároljuk, a függvények ezekkel az adatokkal dolgoznak. Az osztály konstruktora futtatáskor felhasználva a kezdeti értékeket elvégzi az XYZ → CIECAM02 konverziót, így már ezek az értékek kerülnek megjelenítésre a képernyőn. A mérendő színek alap adatait az XcT, YcT, ZcT tömbök tartalmazzák, a színtorzított eredmények az XT, YT, ZT vektorokba kerülnek majd. A többi
megadott
adat
mind
irodalmi,
az
irodalmi
hivatkozásban
visszakereshető.
Háttérparaméterekként pedig az átlagos értékeket választottuk.[6]
1,05
1,00
Nc or F
0,95
0,90
0,85
0,80
0,75 0,50
0,55
0,60
0,65
0,70
c
7. ábra: Háttérparaméterek lehetséges értékei a CIECAM02 modellben[6] A ConverFunctions osztály főbb feladatai az XYZ → CIECAM02, CIECAM02 → XYZ, XYZ → L*a*b*, illetve az XYZ → RGB konverziók elvégzése, valamint a folyamatos kapcsolattartás a controllerrel, és a szükséges változtatások kiszámítása: pl. egy szín J 12
Sik András, Gruber Kristóf : Szoftver tervezése színtorzulások hatásainak vizsgálatára jellemzőjének megváltozása után XYZ újraszámítása. A programban egy adott ábrával dolgozunk, mely 17 színből áll, ezen színek jellemzői változtathatók meg, akár egyenként, akár egyszerre (8. ábra).
8. ábra: referencia ablak a 17 előre beállított színnel Lássuk most kicsit részletesebben az osztály működését: Inicializáláskor a programban megadott alapértékek kirajzolására kerül sor. Az alapértékek CIECAM02 modellbe való átváltását a következő függvények végzik el: public double[] calculateBegin(int inindex, double inX, double inY, double inZ, double inXw, double inYw, double inZw, double inLa, double inYb, double[][] inMcat02, double[][] iniMcat02, double[][] inMhpe, double inF)
Ez a függvény felelős a kezdeti színmintáktól független adatok kiszámításáért, valamint elvégzi a transzformáció számításait egészen a színtranszformácó 5. lépéséig (ld. irodalom). Bemenetül az aktuális szín indexét, tristimulus értékeit, a referencia fehér tristimulus értékeit, a hátérrel kapcsolatos információkat (ide tartozik F is), valamint a CIE által a számítások elvégzéséhez ajánlott mátrixokat kapja.[6] 13
Sik András, Gruber Kristóf : Szoftver tervezése színtorzulások hatásainak vizsgálatára
public
double[]
calculateH(double
inh,
double[]
inhi,
double[]
inHi,
double[] inei, int inindex)
Ez a függvény a transzformáció 7. lépéséig jut el, bemenetére elsőként egy az előző függvény által kiszámított értéket kap (színezeti szög), majd a CIE által megadott értékeket H kiszámításához, és végül, de nem utolsósorban az aktuális szín indexét is. public double calculateJ(double inH, double inR1a, double inG1a, double inB1a, double inAw, double inz, double inNbb, double insurroundc)
public
double
calculateQ(double
inJ,
double
insurroundc,
double
inAw,
double inFl)
public double calculateC(double inQ, double ina, double inb, double inNcb, double inet, double inR1a, double inG1a, double inB1a, double inn, double insurroundNc, double inJ)
public double calculateM(double inC, double inFl)
public void calculateS(double inM, double inQ, double inX, double inY, double inZ, double inXw, double inYw, double inZw, double inJ, double inC, double inH, double inh, double inLa, double inYb, int inindex)
Ezt az öt függvényt nem szükséges részletesen tárgyalnunk, annyit fontos csupán megjegyeznünk róluk, mikor ezen függvények hívása sikeresen befejeződött, akkor sikeres volt a CIECAM02-es modellbe történő transzformáció. Tehát lehetőségünk van az egyes színjellemzők
megváltoztatására.
Azonban
mielőtt
ezt
megtehetnénk,
a
program
visszaszámítja az egyes értékeket RGB értékekké, mivel a kirajzoláshoz ezek szükségesek. Ezen függvények egymás után hívódnak meg, bemenetükre korábbi függvények visszatérési értékei, és CIE által megadott adatok kerülnek. public void calculateInverse(double[][] inMcat02, double[][] iniMcat02, double[][] inMhpe, double[][] iniMhpe, double inF, double inLa, double inYb, double inXw, double inYw, double inZw, double inC, double inJ, double insurroundc, double inNc, double inh, double inh1, int inindex)
14
Sik András, Gruber Kristóf : Szoftver tervezése színtorzulások hatásainak vizsgálatára A calculateInverse függvény végzi a CIECAM02 értékek XYZ rendszerbe való visszaalakítását. Továbbá ellát még egy funkciót, az XYZ értékek L*a*b* rendszerbe történő átváltását az alábbi képletek segítségével:[6] L=116*(Y/Yw)1/3-16
a=500*[(X/Xw)1/3-(Y/Yw)1/3]
b=200*[(Y/Yw)1/3-(Z/Zw)1/3]
A következő függvény pedig az XYZ értékek RGB színtérbe való átszámítását végzi: public void XYZtoRGB(double inX, double inY, double inZ, int inindex)
Értelemszerűen a bemeneten XYZ tristimulus értékek, és színindex található. Mivel a program még csupán a kezdeti teszteléseken ment át (megjelenítés megfelelően működik...), az itt használt mátrixadatok nem a legpontosabbak. Jelen esetben számolhatunk ezekkel az értékekkel, de a későbbi statisztikailag kielégítő tesztek esetén alaposabb vizsgálat szükséges, és a monitorfüggő jellemzők pontos meghatározása. Ezen kísérleteket CRT monitor segítségével végezzük majd el, mivel LCD kijelzők még kevésbé megbízhatóan jellemezhetőek (pl. az észlelt színek a nézési iránytól függenek, ezért komolyabb mérésekre alkalmatlanok). Magát a monitort, melyet a vizuális kísérletekhez használni fogunk, a kísérletek előtt gondosan kalibrálni fogjuk. Ehhez a monitor kalibrációs mátrixát színmérő műszer segítségével fogjuk meghatározni, és az átviteli karakterisztikáját felvenni. A jelenleg implementált függvény első lépésben levonja a bemeneti értékekből a képcső nullfényét (nullfény a képcső sötét állapotban észlelhető fénye). Ezt követően egy mátrixtranszformációval kapjuk a lineáris RGB adatokat (a DisplayMatrix változó értékei függenek a képcső pontjainak anyagától). Ezt követően inverz gammákkal torzítja az értékeket, majd figyelembe veszi az egyes offseteket, melyek a későbbiekben mérések eredményeképpen ismét hozzáférhetőek lesznek. Ezt követően megkapjuk a kívánt RGB értékeket. 2.2.3. A FakeRainbowView osztály A program elsődleges ablakát megjelenítő osztály. Feladata a referencia teszt-ábra megjelenítése, arra való kattintáskor a beállítópanel megjelenítése, a programból való kilépés szabályozása. Nagyon hasonló a MeasuringWindow osztályhoz, a két osztály közti különbségeket majd ott részletezzük. 15
Sik András, Gruber Kristóf : Szoftver tervezése színtorzulások hatásainak vizsgálatára
public void componentResized(ComponentEvent arg0)
Az ablak átméretezésekor meghívódó függvény. Az ablakban található panel új méretét kérdezi le, majd átállítja a mérőábra méretét az ablak új méretének megfelelőre. public void mouseClicked(MouseEvent arg0)
Az ActionListener osztály megvalósított függvénye, mely akkor hívódik meg, ha a felhasználó rákattintott a főablakban lévő referencia mérő-ábrára. Ekkor kinyitjuk a beállíópanelt (Control Panel). Ezt a viselkedést tiltjuk, ha éppen mérés van folyamatban (vagyis nyitva van a két mérő-ablak). A ComponentListener és ActionListener osztályok többi függvényét üres törzzsel valósítottuk meg, mivel nincs rájuk szükségünk. 2.2.4. A UserDataDialog osztály Az osztály feladata a program indításakor megjelenő, a felhasználó adatait bekérő ablak megjelenítése, valamint a bekért adatok eljuttatása a controllernek. Az ablak egy név, egy kor, és egy nem beviteli mezőt tartalmaz. A gomb megnyomása után a program főablakába jutunk. public void actionPerformed(ActionEvent e)
A gombra való kattintáskor hívódik meg, kiértékeli a rádiógombok beállítását, és meghívja a beírt adatokkal a FakeRainbow osztály setUserParam() függvényét. Ezután elrejti saját magát, és megjeleníti a program főablakát (FakeRainbowView). 2.2.5. A ControlPanel osztály A program megjelenítésért felelős részének legnagyobb terhet viselő osztálya. Feladata egy összetett felületű beállítóablak megjelenítése, a beállítómezőkben lévő adatok karbantartása a modellel (ConvertFunctions) való kapcsolattartás révén és a beírt adatok érvényesítésekor a mérés megkezdése, vagyis a két mérőablak megnyitása. Az ablak - ami a főablakban történő kattintásra jelenik meg - felépítése a következő: A felső részben a színkiválasztás és a működési paramétereket meghatározó checkbox-ok kaptak helyet, valamint az alapértékek visszaállításáért felelős gomb is itt található. Alatta az ablak két részre van osztva, a bal felében a mérésvezető által beállítható mezők láthatóak, jobb 16
Sik András, Gruber Kristóf : Szoftver tervezése színtorzulások hatásainak vizsgálatára oldalt pedig a beépített értékeket, valamint a számolt XYZ és RGB értékeket jeleníti meg a program. Alul látható a mérést elindító gomb. Bővebb leírás a gombokról, mezőkről és azok használatáról a program felhasználói dokumentációjában olvasható. public void itemStateChanged(ItemEvent e)
A
legördülő
színkiválasztó
menühöz
tartozó
ItemListener
egyik
függvényének
implementációja. Az itemChangeHelper() segítségével új szín kiválasztásakor hívódik meg, és az ilyenkor szükséges beállításokat végzi el. A hibás működés elkerülése érdekében először letiltja a PlusMinusField-ek modellel való kommunikációját, majd lekérdezi a felülettől a kiválasztott színt. A megfelelő szín értékeit elkéri a modelltől, és azokat a felület beállítómezőin megjeleníti. Amennyiben a globalSetting értéke igaz, vagyis be van pipálva, hogy minden színt változtató üzemmódban vagyunk, akkor a függvény az általa az induláskor a modelltől elkért értékekből álló referenciából, és az aktuális beállított módosításból (delta) számolja ki maga a felületen megjelenítendő értékeket. A függvény gondoskodik a színmegjelenítő mező helyes beállításáról is. public void stateChanged(Object obj)
A beállítómezők (PlusMinusField) változásakor azok meghívják ezt a függvényt, paraméterül saját referenciájukat adva. A függvény esetszétválasztást végez a hívó mező alapján, mivel ügyelnünk kell arra, hogy elkerüljük a végtelen ciklust, ami akkor keletkezne, ha egy mező változásakor eme függvény minden mező új értékét elkérné a modelltől (beleértve a hívómezőét is), ami ismételt megváltozáshoz vezetne. A függvény tehát a szétválasztást követően lekéri a megváltoztatott értéket, azt közli a modellel, amely újraszámolja az értékkel összefüggő mezőket, majd az új értékeket lekéri a modelltől, és a felületen érvényesíti azokat. Szintén ügyelünk a szín-megjelenítő helyes beállítására. public void actionPerformed(ActionEvent e)
Az ActionListener egyetlen implementált függvénye, amely az ablak valamely gombjának megnyomásakor aktiválódik. Ez a gomb a “Defaults”, a “Show me!” vagy pedig a “Reset” lehet. Ezek alapján szintén esetszétválasztást végzünk az eseményben megadott, a hívást előidéző gomb kiléte alapján. 17
Sik András, Gruber Kristóf : Szoftver tervezése színtorzulások hatásainak vizsgálatára Amennyiben a “Show me!” gomb a forrás, a következőket végezzük: ha globlális értékállítás módban vagyunk (“All” pipa), akkor a modellben itt állítjuk be az éppen nem aktuális szín új értékeit (úgy ítéltük túl erőforrás pazarló lett volna a felületen való állítgatás közben minden egyes változáskor az összes szín összes értékét újraszámoltatni a modellel). Ezt követően előállítjuk a véletlenszerű CIECAM02 értékeket, amikkel a második ablakban (w2) lévő tesztábrát fogjuk megjeleníteni. Az algoritmus a következő: 1. A felületen beállított változások mértékének lekérése, ezek jellemzőnként (pl. J fényesség) való összegzése. 2. Egy új ConvertFunctions osztály példányosítása, elkerülendő a meglévővel való konfliktusokat. 3. Random
érték
generálása
az
összegzett
változások
1/17-ed
részének
nagyságrendjében. Ezt az értéket hozzáadjuk a már említett referenciaértékünkhöz, és levonunk még az összegzett változás 1/34-ed részének megfelelő értéket. A 17. szín számítása kivétel: itt a “maradék” értékekből állapítjuk meg a CIECAM02 értékeket, úgy, hogy a véletlenszerű változtatások összege megegyezzen a kézi változtatások összegével. Így sikerült elérni, hogy a véletlenszerűen változtatott és a kézzel beállított színek színkoordinátánkénti összegzett változtatása megegyezzen, valamint egy-egy véletlenszerű szín eme mérték 1/34-edével legyen több vagy kevesebb a kézzel beállított értéknél. Megjegyzés: az 1/17-ed és 1/34-ed értékek természetszerűleg adódtak a 17 db mérőmezőből. A továbbiakban a függvény a mérőablakok pozícióját és színeit állítja be, ügyelve arra, hogy a pozíció véletlenszerűen felváltva legyen, hogy a mérést végző alany ne tudhassa, melyik a véletlenszerű és melyik a kézzel beállított ábra. A teendők elvégeztével megnyitjuk az albakokat és bezárjuk a beállítópanelt. Amennyiben az esemény a “Reset” gomb megnyomásának hatására jött létre, nincs más dolgunk, mint az aktuális szín megjelenített értékeinek az eltárolt referenciaértéket visszaállítani. Harmadik lehetőségként az esemény forrása a “Defaults” gomb aktiválása lehet. Ekkor a modellt utasítjuk újrainicializálásra, kezdeti értékeinek beállítására, majd ha ez lezajlott, akkor sorban le is kérdezzük tőle a megfelelő értékeket, és a felületen megjelenítjük az aktuális színhez tartozóakat. Itt állítjuk be a referenciaértékeinket is a modell által közölt, még nem manipulált értékek segítségével.
18
Sik András, Gruber Kristóf : Szoftver tervezése színtorzulások hatásainak vizsgálatára
public void mouseWheelMoved(MouseWheelEvent e)
Segítségével egyszerűbb interakciót teszünk lehetővé a felhasználó számára: színválasztáshoz elég, ha a legördülő menü fölé viszi az egeret, és kattintás nélkül, az egérgörgő mozgatásával léptethet a színek között. Változáskor az itemChangeHelper() függvényt vesszük igénybe; az ok is ez volt, amiért külön függvénybe kerültek eme utasítások, nem pedig csak az itemChanged függvénybe. 2.2.6. A MeasuringField osztály A mérő-ábrát megvalósító osztály. Megjelenít egy 17 szegmensre osztott ábrát, melynek minden színe egy RGB színtérben beállítható érték. A beállított szélesség és magasság értékek alapján dinamikusan számolja ki a felosztást, ez futás közben is változtatható a megadott függvényekkel. Szintén lehetőség van a színek beállítására, mind egyenként, mind pedig együtt. 2.2.7. A MeasuringWindow osztály A mérőablakot megvalósító osztály. Két példánya van a program futása során, az egyik a kézi beállításokat, a másik pedig a véletlenszerűen generált színeket jeleníti meg. Egyetlen feladata, hogy megjelenítsen egy MeasuringField objektumot, koordinálja annak méretét, és lekezelje, ha rákattintanak. 2.2.8. A ColorField osztály Egy megadott alakú, változtatható méretű, RGB szín megjelenítésére képes osztály. Programunkban a beállítópanelen, a színkiválasztó legördülő menü mellett jelenik meg. Függvényei segítségével lehetőség nyílik színeinek megjelenítése utáni manipulációjára, ill. azok értékének lekérdezésére is.
19
Sik András, Gruber Kristóf : Szoftver tervezése színtorzulások hatásainak vizsgálatára 2.2.9. A DisabledField osztály A csak olvasható szövegmezők megjelenítésére használatos osztály. Létrejöttét praktikussági okok indokolták, így az egy címkéből és egy szövegmezőből álló, nem szerkeszthető mezők egyszerűbben voltak létrehozhatóak a ControlPanel osztályból, nem zavarva össze az ott megírt kód olvashatóságát. Funckiói segítségével lekérdezhető és beállítható az értéke, valamint tartalmaz egy kerekítőfüggvényt is, ami 3 tizedesjegyre kerekíti a kiírt értékeket. A kerekítés természetesen csak a kiírást befolyásolja. 2.2.10. A PlusMinusField osztály Megjelenít egy kis fel és le nyilakkal állítható szám beviteli mezőt, a hozzá tartozó címkét, egy csak olvasható, változás mértékének (delta) kijelzésére szolgáló mezőt, és kontrollálja ezek tartalmát. Itt kivételesen érdemes pár szót ejtenünk a konstruktor paraméterezéséről is: public PlusMinusField(String name, double value, final double min, final double max, final double step, FakeRainbow FR, String toolTip)
A name a címke tartalmát határozza meg, a value paraméter a kiinduló értéket. A mező értéke min és max között változtatható step lépésközzel (ez alapértelmezésként 5). Mint minden osztályunk, a PlusMinusField is megkapja a Controller referenciáját, aminek segítségével elérheti bármely, a programban használt objektumot. A toolTip a mező fölött elidőző egérmutató hatására megjelenő sárga magyarázó szöveg tartalma. A növelhető/csökkenthető értékű beviteli mezőt egy SpinnerNumberModel szerint működő JSpinner objektum valósítja meg. public void mouseWheelMoved(MouseWheelEvent e)
A felhasználói élmény növelése érdekében lehetővé tettük a JSpinnerek egyszerűbb, az egér görgője segítségével állíthatóságát. A függvény a MouseWheelListener implementációja. Ügyelve a beállított min és max értékhatárokra lekérdezzük a görgetés mértékét, és megfelelően növeljük, ill. csökkentjük a mező értékét.
20
Sik András, Gruber Kristóf : Szoftver tervezése színtorzulások hatásainak vizsgálatára
public void stateChanged(ChangeEvent e)
A ChangeListener implementációja. Akkor hívódik meg, ha a JSpinner értéke megváltozott ez a változás lehet egérgörgő, fel/le nyíl, közvetlen beírás vagy setValue() függvény általi is. A ContolPanel-ben már említett végtelen ciklus elkerülése végett a ControlPanel listenChanges változóját figyelembe véve meghívjuk annak stateChanged() függvényét paraméterül adva a PlusMinusField referenciáját. Ugyanitt frissítjük a delta értékét (vagyis a kiírásra kerülő változtatás-mértéket). public void setRef(double value)
A PlusMinusField által tárolt belső referencia értékét állítja be a megadott értékre. Ez a belső referencia érték az, amihez képest a megjelenített érték felhasználásával a delta nagyságát számítjuk. Általában ez az érték az inicializáló, modell általi alapértelmezés értéke. A függvény akkor használatos, ha az aktuális szín értékét megváltoztatjuk, így a mezőnek egy másik szín egy értékét kell megjelenítenie. 3. A szoftver használata 3.1. Rendszerkövetelmények A program futtatásához legalább feltelepített 5.0-ás verziószámú Java Runtime Envionment-re van szükség. A sok számítás miatt ajánlott 800MHz vagy gyorsabb processzor, de bizonyos megkötésekkel gyengébb konfiguráción is használható. A program számára 32MB szabad memória szükséges (az operációs rendszer és a Java RE által felhasznált területen felül). Magától értetődően szükséges egy színes monitor, az eredményes mérés érdekében lehetőleg CRT - mint már említettük -, és ideális esetben céleszközzel kalibrált. A program külön beállítás nélkül egy átlagos monitor jellemzői alapján jeleníti meg a színeket. A tesztelést Windows XP, Windows Vista, Mac OS X 10.4 és Mac OS X 10.5 alatt végeztük el 5.0-ás és 6.0-ás Sun Java RE-el.
21
Sik András, Gruber Kristóf : Szoftver tervezése színtorzulások hatásainak vizsgálatára 3.2. A program elindítása 3.2.1. Windows A program elindítása a főkönyvtárban található FakeRainbow.bat nevű fájlra dupla kattintással történik. Amennyiben nem indul el a program, hibás a számítógépre telepített Java RE beállítása, nagy valószínűséggel a java.exe nem található az elérési utakon. Ekkor tegyük a következőt: Start menü, Futtatás…, majd ide írjuk be, hogy cmd. Ekkor kinyílik egy parancssor, amibe be kell gépelni a következő utasításokat: PATH C:\WINDOWS;C:\WINDOWS\COMMAND;C:\<mappa>\BIN ahol a mappa a Java telepítési könyvtárát jelenti. Ezek után lépjünk be a FakeRainbow könyvtárába: cd <mappa> ahol a mappa a FakeRainbow program könyvtárát jelenti. Pl. ha a Desktopon van, akkor valami hasonló: C:\Documents and Settings\Administrator\Desktop\FakeRainbow. Ezek után a programot a következőképpen indíthatjuk: java tdk1/FakeRainbow 3.2.2. Mac OS X A program indítása a mellékelt FakeRainbow.applescript nevű scriptre dupla kattintással történik, vagy parancssorból a lejjebb részletezett módon. 3.2.3. Linux A program parancssorból indítható, a FakeRainbow könyvtárba való belépés után a java tdk1/FakeRainbow parancs használatával. 3.3. Parancssori paraméterek A program a következő parancssori paramétereket használja: -t vagy --test: Teszt üzemmód bekapcsolása. Teszt üzemmódban indításkor nem jelenik meg a 22
Sik András, Gruber Kristóf : Szoftver tervezése színtorzulások hatásainak vizsgálatára felhasználó adatait bekérő ablak. Ilyenkor az alapértelmezett adatok kerülnek kiírásra a kimeneti fájlba. -o vagy --out
: A megadott fájlnév nevű fájl lesz az új kimeneti fájl az alapértelmezett “results.csv” helyett. Tartalmazhat elérési utat is. --help: A paraméterezés rövid leírásának megjelenítése. 3.4. A Program használata A program rendeltetésszerű használata során egy mérésvezető és egy tesztalany közösen tevékenykednek a számítógép előtt. Elindítás után attól függően, hogy tesztmódban indítottuk-e a programot megjelenik a felhasználó adatait bekérő ablak (9. ábra). Itt a tesztalany beírja a nevét, korát és beállítja a rádiógombok segítségével a nemét, majd a „Let’s” gombra kattint.
9. ábra: Felhasználó adatait bekérő ablak. Ezek után megjelenik a referencia-ablak (10. ábra), ami egyben a program főablaka is. Ezt bezárva fejezhetjük be a munkát:
23
Sik András, Gruber Kristóf : Szoftver tervezése színtorzulások hatásainak vizsgálatára
10. ábra: Referencia ablak. A referencia-ablakra kattintva megjelenik a beállítópanel (11. ábra). Ennek kezelése a mérésvezető feladata.
11. ábra: A beállító panel ablaka. 24
Sik András, Gruber Kristóf : Szoftver tervezése színtorzulások hatásainak vizsgálatára
A felület négy jól elkülöníthető részre oszlik: Felül azt választhatjuk ki, hogy a 17 színből álló teszt-ábra melyik színét kívánjuk módosítani. Lehetőség van az összes szín, egyszerre, azonos értékekkel való manipulációjára is, ehhez be kell kapcsolni az “All” checkboxot. A Debug checkbox a konzolra történő, a hibakeresést megkönnyítő információk kiírását szabályozza. Normál használat során nincs rá szükség. A legördülő menüből választhatjuk ki a kívánt színt, amit a mellette lévő téglalap egyből meg is jelenít. A téglalapon folyamatosan nyomon követhetőek a lentebb beállított változások hatásai is. A “Defaults” gomb feladata a 17 alapértelmezett szín visszaállítása. Egyenértékű azzal, mintha minden színt kiválasztva a “Reset” gombot megnyomnánk. A középső rész bal oldalán találhatóak a kiválasztott szín CIECAM02 színtérbeli jellemző adatai: J – lightness, C – chroma, H – hue composition, h – hue angle, M – colorfullness, s – saturation, Q – brightness Ezek az értékek háromféleképpen változtathatóak meg: az érték közvetlen átírásával, a mező melletti kis fel/le nyilakra kattintással, illetve a mező felett megállva az egér görgőjének görgetésével. A beviteli mező mellett látható a beállított változás referenciaértékhez viszonyított változása. Minden szín állítása üzemmódban ez nem csak az aktuális szín változásának mértékét, hanem az összes szín változásáét jellemzi. A “Reset” gomb célja az aktuális szín referenciaértékre való visszaállítása. Egyenértékű azzal, mintha minden mező értékét addig állítanánk, amíg a mező melletti, változást mutató kijelző 0-t írna ki. Jobb oldalon láthatóak a származtatott, csak olvasható mennyiségek. Ezek: XYZ - a beállított szín színinger összetevői, RGB - a beállított szín RGB színtérbeli értékei (0-255-ös skálára normált érték, ez kerül megjelenítésre), White - a referencia fehér az adott (D50) megvilágításban, Lum.&Backgr. - A megvilágítás és a háttér jellemzői. A mérésvezető elvégzi a tesztértékek beállítását a színeken, majd megnyomja az ablak alján található gombot. Ennek hatására a beállítópanel eltűnik, és megjelenik a két szélső mérőablak (középen látható a referencia ábra). A tesztalany megnézi a három ábrát, majd kiválasztja azt, amelyik szerinte jobban hasonlít a két szélső közül a középső referencia-ábrára (12. ábra).
25
Sik András, Gruber Kristóf : Szoftver tervezése színtorzulások hatásainak vizsgálatára
12. ábra: A mérés ablaka Ekkor bezárul a két ablak, a kimeneti fájlba kerül az eredmény, és újra megjelenik a beállítópanel. Itt a mérésvezető módosíthatja az értékeket, és új méréseket végezhet. 4. Összefoglalás és jövőbeli céljaink Tudományos Diákköri munkánk céljaként az egyes színtorzulások alapvető hatásainak vizsgálatához használható eszköz készítését tűztük ki. Ennek első lépéseként egy olyan szoftver terveztünk és fejlesztettünk, mely az egyes színtorzulások hatásait vizsgálja. JAVA nyelven készítettük a szoftvert, mely olyan számításokat végez, melyre az RGB színtérben különben nem lenne lehetőség. A színeket áttranszformáltuk a CIE TC8-02 által kidolgozott CIECAM02-es modellbe, így lehetőségünk nyílik színjellemzők egyenlőközű színtérben való megváltoztatására, mely RGB színtérben nem lenne lehetséges. Egy nonlineáris transzformációt használtunk, ezért a módosított adatokat visszaalakítottuk az RGB színtérbe, ami már a képernyőn megjeleníthető. A megvalósított szoftver lehetővé teszi, hogy a színharmóniák torzulását ne csak 2-3 színminta összehasonlításával, hanem összetett ábrán, számos minta egyidejű tervezett változásának figyelembe vételével vizsgálják. A munka jelen fázisa után már színtechnikai laboratóriumban kell egyrészt a monitort bekalibrálni, a színes foltok megjelenésénél a program által számított értékeknek a mért értékekkel való összehasonlítását elvégezni, majd szisztematikus szín-változtatási kísérletekkel tesztelni, hogy a színharmóniák torzulását miként értékeli az emberi megfigyelő. A technika fejlődésével újabb és újabb vizsgálható területet tárulnak fel az érdeklődők szemei előtt. Manapság a világítástechnikában bevezetésre 26
Sik András, Gruber Kristóf : Szoftver tervezése színtorzulások hatásainak vizsgálatára kerülő LED-ek, mint új fényforrások színképe gyökeresen más, mint a hagyományos eszközöké. A fényforrások jellemzésére használt eddigi módszer, a színvisszaadás tehát nem alkalmazható rájuk megfelelően. Az általunk kidolgozott módszerrel képesek leszünk majd vizsgálni, hogy milyen színekben bekövetkező torzításokat, torzulásokat fogad el a megfigyelő, és melyeket nem. Ha az új fényforrások úgy torzítják a színeket, hogy továbbra is elfogadható színkombinációk jönnek létre, akkor az új fényforrások megfelelőek, de amennyiben ez nem igaz, abban az esetben nem. Ezért ilyen irányú kísérleteket fogunk végezni, amihez először igazolnunk kell, milyen mértékű színváltozásokat fogad el a szem, mikor válik rendezetlenné a színélmény. 5. Köszönetnyilvánítás Ezúton is szeretnénk köszönetet mondani témavezetőinknek Dr. Schanda Jánosnak, és Dr. Lányi Cecíliának a tudományos diákköri dolgozat elkészítéséhez nyújtott segítségükért, ránk fordított idejükért, ötleteikért és javaslataikért!
27
Sik András, Gruber Kristóf : Szoftver tervezése színtorzulások hatásainak vizsgálatára Felhasznált irodalom
Goethe, J. W., Theory of Colours. Translation by C. L. Eastlake (1840) from the
1
German “Farbenlehre” of 1810. Reprinted in 1970, Massachusetts: The MIT Press. 2
Chevreul, M. E., The Principles of Harmony and Contrast of Colors. Translation by C.
Martel (1854) from the French edition of 1839. Reprinted in 1981, New York: Van Nostrand Reinhold. 3
R. VAN NOSTRAND, Munsell: A Grammar of Color, 1969, Reinhold Book
Coorporation. 4
A. Nemcsics, Farbenlehre und Farbendynamik, Akadémiai Kiadó, Budapest, 1993.
5
R Arnheim in Module, proportion, symmetry, rhythm, Ed. G Kepes (New York: George
Braziller, 1966). 6
D B Judd and G Wyszecki, Color in business, science and industry, 3rd Edn
(Hoboken, NJ: John Wiley and Sons, 1975). 7
L Ou, M R Luo,, A Colour Harmony Model for Two-Colour Combinations, Color
Research and Application, 2006, 3, 191-204. 8
Stephen Westland, Kevin Laycock, Vien Cheung, Phil Henry and Forough Mahyar:
Colour Harmony http://www.colour-journal.org/2007/1/1/07101article.htm 9
CIE: Recommended practice for tabulating spectral data for use in colour
computations. CIE 167:2005. 10
Színkeverés: http://hu.wikipedia.org/wiki/Sz%C3%ADn#Sz.C3.ADnkever.C3.A9s
11
Munsell színrendszere: http://en.wikipedia.org/wiki/Munsell_color_system
12
Bruce MacEvoy: Color Harmonies.
http://www.handprint.com/HP/WCL/tech13.html#harmonies 13
L Ou, M R Luo, A Woodcock and A Wright, Col. Res. Appl., 29 (3) (2004). 232-240.
14
F. Szabó, P. Bodrogi, J. Schanda: Visual Experiments on Colour Harmony: A Model
and a Rendering Index (The 26th Session of the CIE 2007, Beijing, China). 15
CIE 1931 color space: http://en.wikipedia.org/wiki/CIE_1931_color_space
16
Janos Schanda: Colorimetry: Understanding the CIE System, Published by John Wiley
& Sons,Inc., Hoboken, New Jersay ISBN: 978-0-470-04904-4 (2007), 61-62., 268-269., 286294
28