TNM011 Grafisk teknik Laboration 3 - Färg Martin Solli marso@itn.liu.se ITN, Linköpings Universitet HT 2006
Introduktion Laborationen handlar om sambandet mellan reflektansspektran, belysningar och den färg våra ögon registrerar, och har ett starkt samband med laboration 2. Arbetet utförs i Matlab. Alla reflektansspektran som ska användas (totalt 1269 stycken) finns i variabelnamnet chips i filen chips.mat. Belysningarna finns i filen illum.mat. Spektralfördelningar och variabelnamnen för dom belysningar som ingår i filen finns i nedanstående figurer. CIED65 CIEB CIEA 400 450 500 550 600 650 700 wavelength (nm) plank90k plank65k plank50k 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 är samma funktioner som användes i laboration 2. Alla reflektanser, belysningar och standardobservatörer ä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 2. Mycket av det du gjorde i laboration 2 (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 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(COLORSIGNAL) % COLORSIGNAL = Spektralfördelning samplad för våglängderna % 400:5:700 nm. % XYZ = CIEXYZ-värden. %Spektralfördelningen översätts med hjälp av CIE:s standardobservatör %till CIEXYZ-värden. Observatören återfinns i filen "xyz.mat". % Egen kod return;
xyz2lab.m function 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 2. % Egen kod return; selectspectra.m function selected=selectspectra(allspectra,nrs) % allspectra = Samtliga spektralfördelningar som finns i % filen 'chips.mat'. % nrs = Antal spektralfördelningar som ska väljas ut. % selectedspectra = Utvalda spektralfördelningar. % % Den enklaste lösningen är att använda nedanstående kod. I detta % fall hämtas spektralfördelningar med jämna mellanrum från den % stora matrisen med alla spektralfördelningar. Nackdelen är att % man inte är säker på att få varierande spektralfördelningar % (med lite otur så kan alla utvalda spektralfördelningar t.ex. % motsvara en blå färg). % % Intresserade laborationsdeltagare får gärna hitta på någon egen % metod som väljer spektralfördelningar, där variationen % säkerställs. Diskutera din lösning med laborationshandledaren. % % Mindre intresserade laborationsdeltagare kan använda % nedanstående kod. % Martin Solli, marso@itn.liu.se % ITN, Linköpings Universitet if (size(allspectra,1)==61) allspectra=allspectra'; end; selected=zeros(nrs,61); mystep=size(allspectra,1)/(nrs+1); for n=1:nrs selected(n,:)=allspectra((mystep*(n-1)+1),:); end 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. Markera belysningarnas positioner i figuren nedan. (Glöm inte bort att skala XYZ-värden med k-värdet från belysningen. Se formlerna i laboration 2.) 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 2 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. 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. Använd funktionen selectspectra från förberedelseuppgifterna och plocka ut 20 spektralfördelningar från samtliga 1269 spektralfördelningar (chips). Multiplicera dom utvalda spektralfördelningarna med vald belysning 1 från uppgift 3, och visa färgerna på skärmen med hjälp av funktionen showrgb. Gör om samma sak men ändra belysningen till 2 respektive 3. Vilket samband ser du mellan olika belysningar och färgernas utseende? 6. Om det känns svårt att hitta svar och slutsatser till denna uppgift så gör även uppgift 7 och jämför resultaten med varandra. Den viktigaste frågan (som i stort sett sammanfattar båda uppgifterna) är sista frågan i uppgift 7. a) Konvertera belysning 1-3 till CIEXYZ-värden, och plotta dessa i CIEXYZrymden (använd t.ex. Matlab-funktionen plot3). Lägg märke till belysningarnas olika placering, och avstånden mellan dessa. b) Plotta samtliga 20 färger 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 +). När belysningen ändras, hur förflyttar sig färgernas positioner i CIEXYZ-rymden? (Tips: Kolla efter samband med uppgift a) ) När belysningen ändras, flyttas alla 20 färgernas positioner lika långt i CIEXYZrymden? Varför?
7. a) Konvertera belysning 1-3 till CIELAB-värden och plotta dessa i CIELABrymden (belysningen ska även användas som vitpunkt). Vad blir resultatet? Varför? b) Plotta samtliga 20 färger från uppgift 5 under belysning 1-3 i CIELAB-rymden, i en och samma figur. Även här ska belysningen användas som vitpunkt. När belysningen ändras, hur förflyttar sig färgernas positioner i CIELAB-rymden? Är förflyttningarna lika stora som vid plot i CIEXYZ-rymden? Vad har det för betydelse att belysningen används som vitpunkt? 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) Extrauppgift (görs i mån av tid och intresse) Uppgiften går ut på att konstruera metameriska färger. Ta en valfri spektralfördelning ur databasen och hitta andra spektralfördelningar som ger samma (eller liknande) respons. Börja enkelt med t.ex. endast en sensor (förslagsvis y) och endast en belysning, och beräkna likheten med hjälp av Y-värdet. Om det finns tid över, utöka med fler sensorer (x, y och z), beräkna likheten i CIELABrymden, och experimentera med fler belysningar. Diskutera resultaten med laborationshandledaren.