TNM059 Grafisk teknik Laboration 4 - Färg Martin Solli Martin.Solli@itn.liu.se ITN, Linköpings Universitet
Introduktion Laborationen handlar om sambandet mellan reflektansspektran, belysningar och den färg våra ögon registrerar. Målet med laborationen är främst att repetera och använda delar av det som presenterades i laboration 3, och kan sammanfattas med följande punkter: Ökad förståelse för sambandet mellan reflektansspektran, belysningar och sensorer. En sensor kan vara våra ögon, en kamera, etc. Detta samband är grunden för i princip alla beräkningar inom färgvetenskap. Ökade färdigheter när det gäller att använda ovanstående samband i beräkningar i Matlab. Bekanta sig mer med färgrymderna CIEXYZ och CIELAB, och undersöka en (av många) skillnader mellan dessa färgrymder. Arbetet utförs i Matlab. Ett tips är att skapa en.m-fil som ni sparar all kod i. Om ni istället enbart använder Matlabs Command Window så blir det mycket svårare att gå tillbaka om ni efteråt behöver ändra något. Dom reflektansspektran som ska användas (20 stycken) finns i variabelnamnet chips20 i filen chips20.mat. Belysningarna finns i filen illum.mat. Spektralfördelningar och variabelnamnen för de belysningar som ingår i filen syns i nedanstående figurer. Variabeln waverange är ingen belysning utan anger våglängdsintervallet. CIED65 plank90k CIEB plank65k CIEA plank50k 400 450 500 550 600 650 700 wavelength (nm) 400 450 500 550 600 650 700 wavelength (nm) Tungsten60W Halogen75W 400 450 500 550 600 650 700 wavelength (nm) I filen xyz.mat finns CIE xyz colour matching functions. Dessa funktioner kallas ofta för standardobservatör, och är samma funktioner som användes i laboration 3. Alla reflektanser (reflektansspektran), belysningar och standardobservatören är i våglängdsintervallet 400:5:700 nm.
Förberedelseuppgifter Dessa uppgifter skall göras innan den schemalagda laborationstiden. 1. Repetera och säkerställ att du förstår alla moment som ingick i laboration 3. Mycket av det du gjorde i laboration 3 (teori, formler, kod) går att återanvända i denna laboration! 2. En kamera med filterkänsligheterna Fr och Fb, samt spektralfördelningen för belysningen I, och reflektansen för 3 färger (R1-R3) är givna enligt nedan. Beräkna kamerans respons Cr och Cb (pixelvärden) för dom tre färgerna under belysning I. (I denna uppgift behöver ni inte normera vektorerna, huvudräkning blir enklare med heltal) Fr = [0 0 1 3 2] I = [1 3 2 2 1] R1 = [1 2 3 0 1] Fb = [2 2 1 1 0] R2 = [1 0 0 3 3] R3 = [2 2 2 0 2] SVAR: R1 R2 R3 Cr = Cr = Cr = Cb = Cb = Cb = I verkligheten kan man betrakta reflektansspektran och filterkänsligheter som sannolikhetsfunktioner. Med vilken minsta gemensamma faktor måste ovanstående responsvärden divideras med för att man ska kunna anse att resultatet är verkligt?...
3. Skriv klart koden för nedanstående Matlab-funktioner. Funktionerna ska senare användas i laborationsuppgifterna. colorsignal2xyz.m function XYZ=colorsignal2xyz(reflectance,illumination) XYZ=colorsignal2xyz(reflectance,illumination) reflectance = Reflektansspektra illumination = Belysningens spektralfördelning XYZ = CIEXYZ-värden Reflektansspektra multipliceras med belysningens spektralfördelning och översätts sedan med hjälp av CIE:s standardobservatör till CIEXYZ-värden. Observatören återfinns i filen "xyz.mat". Glöm inte att beräkna k-värdet för belysningen och skala CIEXYZ-värdena med erhållet k-värde! (Formler för detta återfinns i laboration 3) Om CIEXYZ-värden ska beräknas för en belysning så kan reflektanspektrat ersättas med ettor (full reflektans i alla våglängder). Ex: reflectance = ones(1,61); Egen kod return; xyz2lab.m function Lab=xyz2lab(XYZ,XoYoZo) Lab=xyz2lab(XYZ,XoYoZo) XoYoZo = CIEXYZ-värden för vitpunkten (belysningen). XYZ = CIEXYZ-värden för färgen som ska konverteras till CIELABvärden. Lab = CIELAB-värden för den konverterade färgen. Formlerna för konvertering återfinns i laboration 3. Egen kod return;
Laborationsuppgifter För samtliga uppgifter nedan, spara kod och figurer/plottar för att kunna visa upp dessa vid redovisningen av laborationen. 1. Plotta samtliga belysningar i xy-planet (chromaticity diagram). Belysningarnas spektralfördelningar översätts först till CIEXYZ-värden med hjälp av funktionen colorsignal2xyz, och sedan till xy-planet enligt formlerna i laboration 3. Markera belysningarnas positioner i figuren nedan. 0.9 0.8 0.7 520 525 515 530 GREEN 510 505 535 540 545 550 555 0.6 560 565 y chromaticity 0.5 0.4 500 495 570 YELLOW 575 580 585 590 595 600 0.3 490 605 ORANGE 610615 RED 0.2 485 0.1 480 BLUE 475 470 VIOLET 0 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 x chromaticity 2. Använd funktionen xyz2rgb från laboration 3 för att översätta belysningarnas CIEXYZ-värden till RGB-värden. Visa sedan dessa RGB-värden på skärmen med hjälp av funktionen showrgb. Observera att showrgb kan ta emot och visa flera RGB-värden på samma gång (läs hjälptexten i funktionen!). 3. Studera dom olika belysningarna i xy-planet och på skärmen och välj ut tre med stor inbördes variation i färgnyans. Dessa tre belysningar ska användas senare i denna laboration (uppgift 5-7). Valda belysningar: 1. 2. 3. 4. Plotta spektralfördelningarna för samtliga belysningar. Studera fördelningarna och välj ut tre spektralfördelningar som är så olika varandra som möjligt (uppskatta). Valda belysningar: 1.... 2. 3.
Valde du samma, eller ungefär samma, belysningar som i uppgift 3? Kan du se något enkelt samband mellan intensitet i olika våglängder och den upplevda färgen? 5. Översätt dom 20 reflektanserna från chips20.mat till CIEXYZ-värden med hjälp av funktionen colorsignal2xyz. Som belysning används belysning 1 från uppgift 3. Konvertera CIEXYZ-värdena till RGB-värden och visa färgerna på skärmen med hjälp av funktionen showrgb. Gör om samma sak men ändra belysningen till vald belysning 2 respektive 3. Vilket samband ser du mellan olika belysningar och färgernas utseende? Det finns många fördelar med att använda CIELAB- istället för CIEXYZ-rymden då man arbetar med färger. En fördel med CIELAB-rymden är att det finns ett samband mellan det euklidiska avståndet mellan två färgkoordinater och den upplevda färgskillnaden. Sambandet gör att ett visst avstånd mellan två koordinater upplevs av det mänskliga synsinnet som lika stor färgskillnad, oavsett var i färgrymden man befinner sig. (Finns beskrivet i föreläsningsanteckningar och till viss del även i laboration 3) I resterande del av laborationen kommer en annan fördel att undersökas. För att hitta svar och slutsatser till plottarna i uppgift 6 så kan det underlätta att jämföra med plottarna i uppgift 7. Den viktigaste frågan (som i stort sett sammanfattar båda uppgifterna) är sista frågan i uppgift 7. När det står belysning 1-3 så är det dom valda belysningarna från uppgift 3 som ska användas. 6. a) Konvertera belysning 1-3 till CIEXYZ-värden, och plotta dessa i CIEXYZrymden (använd Matlab-funktionen plot3). Lägg märke till belysningarnas olika placeringar jämfört med varandra. b) Plotta dom 20 färgerna från uppgift 5 under belysning 1-3 i CIEXYZ-rymden, i en och samma figur. Ett tips är att i Matlab plotta med olika färger för respektive belysning, och att använda olika markörer (t.ex. *, x och +). Skriv hold on i Matlab för att kunna plotta flera gånger i samma figur. När belysningen ändras, hur förflyttar sig färgernas positioner i CIEXYZ-rymden? Tips: Kolla efter samband med uppgift a), och fundera även över vad som händer med färgen svart (XYZ=[0 0 0]).
7. a) Konvertera belysning 1-3 till CIELAB-värden, med hjälp av funktionen xyz2lab, och plotta dessa i CIELAB-rymden (belysningens CIEXYZ-värde används både som färg och som vitpunkt). Vad blir resultatet? Varför? b) Plotta dom 20 färgerna från uppgift 5 under belysning 1-3 i CIELAB-rymden, i en och samma figur. Använd respektive belysning som vitpunkt. När belysningen ändras, hur förflyttar sig färgernas positioner i CIELAB-rymden? Vad blir det för skillnad jämfört med att plotta i CIEXYZ-rymden? Tips: Grupperar sig färgerna? Varför? Vad har det för betydelse att belysningen används som vitpunkt vid konverteringen från CIEXYZ-värden till CIELAB-värden? 8. Kan du komma på någon situation då det kan vara bättre att mäta färg i CIELABrymden än i CIEXYZ-rymden? (Diskutera med laborationshandledaren om du inte kommer på något)