Pasi Karttunen - Joensuu
Pasi Karttunen - Joensuu
Pasi Karttunen - Joensuu
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
VÄRISPEKTRIEN RYHMITTELY<br />
HAHMONTUNNISTUKSEN MENETELMILLÄ<br />
<strong>Pasi</strong> <strong>Karttunen</strong><br />
1.10.2002<br />
<strong>Joensuu</strong>n yliopisto<br />
Tietojenkäsittelytiede<br />
Pro gradu -tutkielma
Tiivistelmä<br />
Väritutkimus on monia eri tieteenaloja kiinnostava ajankohtainen tutkimusala.<br />
Tässä tutkielmassa tarkastellaan teorian pohjalta kolmea hahmontunnistusmenetelmää,<br />
joilla värispektrejä voidaan ryhmitellä. Nämä menetelmät ovat: itseorganisoiva<br />
kartta (SOM), c-means ja parittainen lähin naapuri (PNN). Tutkielman kokeellisessa<br />
osassa näitä hahmontunnistusmenetelmiä sovelletaan käytännössä ja<br />
saavutetut tulokset esitellään. Tulokset on saatu aikaiseksi Matlab-ohjelmistolla<br />
kirjoitetuilla ohjelmilla. Ryhmittelymenetelmillä tuotettujen väriryhmien keskusvektoreita<br />
voidaan käyttää värisuotimina mm. optisen hahmontunnistuksen sovelluksissa.<br />
Tässä tutkielmassa tuotettuja värisuotimia verrataan laskennallisesti toisiinsa.<br />
Tutkielmassa käytetty aineisto on kerätty aihepiiriin liittyvistä kirjoista sekä ajankohtaisista<br />
tieteellisistä julkaisuista, joista pyritään käsittelemään mahdollisimman<br />
uutta tietoa.<br />
Avainsanat: pääkomponenttianalyysi, PCA, aliavaruusmenetelmä, itseorganisoiva<br />
kartta, SOM, c-means, parittainen lähin naapuri, PNN, värispektri, värisuotimet<br />
i
Sisältö<br />
1 Johdanto 1<br />
2 Värispektriesitys 4<br />
2.1 Kolmiulotteinen väriesitys . .................... 4<br />
2.2 Värispektrit ja niiden mittaaminen . . . . ............. 7<br />
2.3 Tutkielmassa käytetyt värispektritietokannat . . . . . . ...... 10<br />
3 Teoriaa värispektrien ryhmittelymenetelmistä 12<br />
3.1 Pääkomponenttianalyysi (PCA) . . . . . . ............. 12<br />
3.2 Itseorganisoiva kartta (SOM) .................... 15<br />
3.3 C-means ............................... 18<br />
3.4 Parittainen lähin naapuri (PNN) . . . . . ............. 20<br />
4 Värispektrien rekonstruointi ja virhemitat 24<br />
4.1 Spektrin rekonstruointi . . . .................... 24<br />
4.2 Wiener estimointi . . ........................ 25<br />
4.3 Virhemitat . . . . . . ........................ 27<br />
5 Kokeellinen osa 29<br />
5.1 Matlab . ............................... 29<br />
5.2 PCA................................. 30<br />
5.3 SOM................................. 35<br />
5.4 C-means ............................... 41<br />
5.5 PNN................................. 45<br />
5.6 Tulosten vertailua . . ........................ 49<br />
6 Menetelmien ja tulosten pohdinta 53<br />
Viitteet 56<br />
Liite 1: Esimerkki Munsell-värikirjan sivusta 61<br />
Liite 2: Macbeth-väritaulu 62<br />
ii
Liite 3: Munsell-tietokannan virheanalyysi 63<br />
Liite 4: Macbeth-tietokannan virheanalyysi 68<br />
Liite 5: Macbeth-tietokannan spektrit 73<br />
Liite 6: Ryhmien keskustat a b -koordinaatistossa 74<br />
Liite 7: Ryhmien keskustat xy -koordinaatistossa 76<br />
Liite 8: Spektrien sijoittuminen ryhmiin 78<br />
Liite 9: Ohjelmakoodi 80<br />
iii
1 Johdanto<br />
Väritutkimus on ajankohtainen ja monia eri tieteenaloja kiinnostava aihe. Väristä<br />
on tullut tärkeä tekijä mm. konenäkö-, hahmontunnistus- ja teollisen laaduntarkkailun<br />
sovelluksissa (Hauta-Kasari & al., 1998). Seuraavassa tarkastellaan lyhyesti<br />
mitä väri on ja mitä sisältyy hahmontunnistukseen. Lisäksi esitellään tarkemmin<br />
tutkielman sisältö.<br />
Valo on aaltomuotoista sähkömagneettista säteilyä, josta ihmisen silmä voi nähdä<br />
vain pienen osan. Sitä osaa valosta, jonka näemme, nimitämme väriksi. Valoa<br />
voidaan kuvailla aallonpituuksien mukaan käyttäen mittayksikkönä nanometriä<br />
(nm). Ihmisen havaitsemat aallonpituudet rajoittuvat välille 380nm – 780nm eli<br />
ns. näkyvän valon alueelle. Tämän alueen alapuolelle sijoittuu ultraviolettisäteily<br />
(UV) ja yläpuolelle infrapunasäteily (IR). Monet eläimet, kuten esimerkiksi mehiläiset,<br />
voivat nähdä UV -alueella. Jokaista väriä vastaa oma aallonpituutensa.<br />
Pisin aallonpituus on punaisella värillä ja lyhin violetilla värillä.<br />
Ihmisen värien havainnointi on hyvin subjektiivista eli näkijästä riippuvaa ja siksi<br />
värien havainnointi vaihtelee eri henkilöiden välillä suuresti. Ihminen aistii värin,<br />
kun valo heijastuu jostakin värillisestä kohteesta silmän verkkokalvolle. Aivot<br />
vastaanottavat verkkokalvolta lähteneen signaalin ja monimutkaisen käsittelyn jälkeen<br />
lopputuloksena on väriaistimus. Värin havaitseminen perustuu kolmeen tekijään:<br />
valoon, valoa heijastavaan värilliseen kohteeseen sekä silmään, joka vastaanottaa<br />
värin.<br />
Jokainen aine säteilee jatkuvan spektrin, jos sen lämpötila poikkeaa absoluuttisesta<br />
nollasta. Kappaleen tai pinnan väri määräytyy sen ominaisuudesta heijastaa tai<br />
lähettää tiettyjä aallonpituuksia. Esimerkiksi keltaiset pinnat näkyvät keltaisina,<br />
koska ne heijastavat suurimman osan niihin osuvista keltaisen valon aallonpituuksista<br />
(570nm – 580nm). Kappaletta, joka absorboi kaiken siihen tulevan säteilyn,<br />
kutsutaan mustaksi kappaleeksi.<br />
1
Hahmontunnistus tarkoittaa mittausten ja havaintojen tekemistä luonnollisista<br />
kohteista, tehtyjen mittausten automaattista analyysia sekä kohteiden tunnistusta<br />
analyysin perusteella (Hyvönen & al., 1993). Merkittävin ero hahmontunnistuksessa<br />
verrattuna muihin tekoälyyn liittyviin tekniikoihin on, että hahmontunnistusjärjestelmän<br />
on kyettävä analysoimaan ulkomaailmasta tulevia raakahavaintoja.<br />
Nämä havainnot eivät ole symbolisessa muodossa vaan ne ovat luonteeltaan<br />
vaihtelevia ja epämääräisiä kuten esimerkiksi kuvat ja äänet.<br />
Hahmontunnistusmenetelmät voidaan perinteisesti jakaa kahteen ryhmään (Hyvönen<br />
& al., 1993): tilastolliset menetelmät ja rakenteiset menetelmät. Mm. Schalkoff<br />
(1992) esittää näiden lisäksi neurolaskentaan perustuvan esitystavan. Tilastollinen<br />
hahmontunnistusmalli on yksinkertainen lähtökohta, johon muutkin hahmontunnistusmenetelmät<br />
perustuvat. Tilastollisessa hahmontunnistuksessa kohteesta<br />
on joukko mittauksia, jotka ajatellaan matemaattisesti moniulotteiseksi hahmovektoriksi.<br />
Tilastollista hahmontunnustusmallia sanotaan myös päätösteoreettiseksi.<br />
Rakenteisten hahmontunnistusmenetelmien tärkeä osaryhmä on syntaktiset<br />
menetelmät. Näissä hahmoa vastaava esitys ei ole hahmovektori kuten tilastollisessa<br />
hahmontunnistuksessa vaan esitysmuoto on esimerkiksi tietorakenne kuten<br />
merkkijono, puu tai graafi.<br />
Tässä tutkielmassa tarkastellaan värispektrien ryhmittelyä tilastollisilla hahmontunnistusmenetelmillä<br />
ja sovelletaan näitä menetelmiä käytännössä. Tarkoituksena<br />
on löytää menetelmä, joka ryhmittelee syötteenä annetun spektrijoukon tehokkaasti<br />
ja nopeasti haluttuun määrään ryhmiä, jonka jälkeen väriryhmien keskivektoreita<br />
voidaan käyttää värisuotimina optisissa sovelluksissa kuten värispektrikameroissa.<br />
Ryhmittelyn tuloksena käsiteltävä väritietokanta saadaan tiivistettyä<br />
muutamaan värisuotimeen, joiden yhdistämisellä alkuperäinen tietokanta voidaan<br />
esittää vain vähän tietoa hukaten. Tutkielma on jaettu kuuteen lukuun, joista tämä<br />
ensimmäinen luku on johdanto aiheeseen.<br />
Yleinen tapa värin esittämiseen on jokin kolmiulotteinen värikoordinaattimalli,<br />
joka perustuu ihmisen värinäköjärjestelmään. Tällaisia kolmiulotteisia värikoordinaattimalleja<br />
ovat mm. CIE xyY, CIELAB, CIELUV ja RGB mallit. CIE xyY-<br />
2
ja CIELAB -värikoordinaattimalleja tarkastellaan tarkemmin luvussa 2.1. Lisäksi<br />
luvussa 2.2 tarkastellaan kuinka spektreillä voidaan esittää värejä ja miten spektrejä<br />
mitataan. Värispektrien mittauksista saadaan tulokseksi värispektritietokantoja<br />
ja tässä tutkielmassa käytetyt värispektritietokannat esitellään luvussa 2.3.<br />
Luku 3 sisältää teoriaa pääkomponenttianalyysin lisäksi kolmesta käsiteltävästä<br />
hahmontunnistusmenetelmästä. Nämä menetelmät ovat: itseorganisoiva kartta, c-<br />
means sekä parittainen lähin naapuri. Luvussa 4 tarkastellaan teoriassa kolmea<br />
rekonstruointitapaa, joita on käytetty kokeellisessa osassa. Lisäksi tarkastellaan<br />
käsitteitä rekonstruointivirhe, keskimääräinen neliövirhe ja värivirhe (E L a b ).<br />
Luku 5 on tämän tutkielman kokeellinen osa. Luvussa 5.1 esitellään Matlabohjelmisto,<br />
jolla olen ohjelmoinut kokeellisessa osassa käytettävän Spektriohjelman.<br />
Spektri-ohjelman ohjelmakoodi löytyy liitteestä 9. Lisäksi luvussa<br />
5 tarkastellaan luvussa 3 esiteltyjen hahmontunnistusmenetelmien soveltamista<br />
käytäntöön ja esitellään tehdyistä kokeista saadut tulokset. Kokeellisen osan lopuksi<br />
luvussa 5.6 verrataan kokeellisessa osassa esiteltyjä tuloksia muihin vastaaviin<br />
tutkimuksiin. Lopuksi luvussa 6 on tämän tutkielman menetelmien ja tulosten<br />
pohdintaa.<br />
3
2 Värispektriesitys<br />
Ihmisen havaitsema väri on aivojen tuottama aistimus ja siksi väriä on vaikea määrittää<br />
(Kaiser & Boynton, 1996). Väri voidaan kuitenkin määritellä silmään tulevan<br />
valon ominaisuutena, eli fysikaalisesti mitattavana värispektrinä:<br />
s() =[s( 1 )s( 2 ):::s( n )] T (1)<br />
missä on aallonpituus ja T merkitsee transpoosia. Kaavassa 1 n on mitattujen<br />
aallonpituuksien lukumäärä. Jos värispektri on mitattu näkyvän valon alueella<br />
(400nm – 700nm) 10nm välein, niin silloin n = 31, eli spektrissä on 31 komponenttia.<br />
Värispektrejä ja niiden mittaamista käsitellään tarkemmin luvussa 2.2<br />
2.1 Kolmiulotteinen väriesitys<br />
Kolmiulotteiset värinäkömallit perustuvat ihmisen värinäköjärjestelmään, jossa<br />
on kolmentyyppisiä fotoreseptoreita (Kaiser & Boynton, 1996). Siksi kolmiulotteiset<br />
värinäkömallit ovat hallinneet väritutkimusta ja sovelluksia. Väri esitetään<br />
yleensä kolmella parametrilla ja useimmat julkaistut värikoordinaatistot ovat<br />
muunnelmia tunnetuista CIE:n (Commission Internationale de l’ Eclairage) XYZvärikoordinaateista<br />
(Wyszecki & Stiles, 1982):<br />
Z<br />
X = k<br />
s()x()E()d<br />
Z<br />
Y = k<br />
s()y()E()d (2)<br />
Z<br />
Z = k<br />
s()z()E()d<br />
4
missä s() on värispektri, x(), y() ja z() ovat ihmissilmän herkkyysfunktiot,<br />
E() on valaistusspektri ja k on normeeraustekijä. Normeeraustekijä k valitaan<br />
seuraavasti (Wyszecki & Stiles, 1982)<br />
k =<br />
100<br />
R E()y()d<br />
: (3)<br />
Seuraavaksi esitellään CIE 1931 xy ja CIELAB värikoordinaatistoesitykset.<br />
CIE 1931 (x, y, z): CIE 1931 (x, y, z) kromaattisuuskoordinaatit voidaan määrittää<br />
seuraavasti tristimulus arvojen (X, Y, Z) avulla (Wyszecki & Stiles, 1982)<br />
x =<br />
X<br />
X + Y + Z<br />
y =<br />
Y<br />
X + Y + Z<br />
(4)<br />
z =<br />
Z<br />
X + Y + Z :<br />
CIE 1931 xy -kromaattisuusdiagrammi esittää x- ja y-koordinaattien kaksiulotteisen<br />
väriavaruuden. Tässä mallissa on haittana se, että visuaaliset värierot eivät ole<br />
yhtenäisiä diagrammin joka osassa (Hauta-Kasari, 1999).<br />
CIELAB: CIELAB on värikoordinaatisto, jota kutsutaan myös nimellä CIE<br />
1976 L a b . CIE on määrittänyt CIELAB värikoordinaatiston CIE 1931 xy -<br />
koordinaatiston kaltaisten värierojen erilaisuuden välttämiseksi. CIE 1976 L a b <br />
värikoordinaatit määritellään seuraavasti (Wyszecki & Stiles, 1982)<br />
Kirkkausmuuttuja L :<br />
Kromaattisuuskoordinaatit a ja b :<br />
L =116( Y Y n<br />
) 1 3 ; 16 (5)<br />
a =500[( X X n<br />
) 1 3 ; (<br />
Y<br />
Y n<br />
) 1 3 ] (6)<br />
5
= 200[( Y Y n<br />
) 1 3 ; (<br />
Z<br />
Z n<br />
) 1 3 ] (7)<br />
missä X n , Y n , Z n ovat referenssivalkoisen X-, Y -jaZ -koordinaatit. Värikoordinaatit<br />
ovat kaavoissa 5, 6 ja 7 pätevät, jos suhteet X X n<br />
, Y Y n<br />
ja Z Z n<br />
ovat arvoa 0.008856<br />
suuremmat. Jos Y Y n<br />
on yhtäsuuri tai pienempi kuin 0.008856, silloin L määritellään<br />
seuraavasti (Wyszecki & Stiles, 1982)<br />
L =903:3( Y Y n<br />
) (8)<br />
jos mikään suhteista X Y<br />
X n<br />
,<br />
Y n<br />
tai Z Z n<br />
, on yhtäsuuri tai pienempi kuin 0.008856, silloin<br />
se korvataan a :ssä ja b :ssä seuraavasti<br />
missä F on X X n<br />
, Y Y n<br />
tai Z Z n<br />
.<br />
7:787F + 16<br />
116 (9)<br />
Kolmiulotteisiin värikoordinaatistoihin perustuva värianalyysi on laskennallisesti<br />
tehokas ja väriesityksen tarkkuus on riittävä monille sovelluksille (Hauta-Kasari,<br />
1999). Näissä kolmiulotteisissa värimalleissa on kuitenkin muutamia rajoituksia.<br />
Metamerismi on ongelma, joka voi vaivata kolmiulotteisia värikoordinaatistoja<br />
(Drew & Funt, 1992). Metamerismi tarkoittaa sitä, että kaksi kohdetta näyttävät<br />
samanvärisiltä yhdessä valaistuksessa, mutta eriväriseltä toisessa valaistuksessa.<br />
Värikoordinaatistot, joissa käytetään kolmea parametriä ovat herkkiä myös kohinalle<br />
(Parkkinen & Jaaskelainen, 1987). Spektriin perustuva väriesitys välttää<br />
metamerismin ja spektrit voidaan mitata myös näkyvän valon ulkopuolisella aallonpituusalueella<br />
eli ultravioletti- tai infrapuna-alueella.<br />
6
2.2 Värispektrit ja niiden mittaaminen<br />
Ihmisen näkemä objektin väri on aivojen tuottama aistimus, jota ei voida suoraan<br />
mitata. Väriaistimuksen aiheuttaja eli elektromagneettinen spektri on kuitenkin<br />
fysikaalisesti mitattavissa (Wyszecki & Stiles, 1982). Objektin väri on elektromagneettista<br />
säteilyä 380 – 780nm:n alueella eli ns. näkyvällä aallonpituudella.<br />
Usein kuitenkin käytetään 400 – 700nm:n aallonpituusaluetta edellä mainitun sijasta.<br />
Esimerkiksi spektri, josta on otettu näytteitä 2nm:n välein alueella 400nm –<br />
700nm, voidaan määrittää vektorina 151-ulotteisessa avaruudessa kaavan 1 mukaisesti<br />
(Hauta-Kasari, 1999). Kuvassa 1 esitellään spektrit neljälle värille: sininen,<br />
punainen, valkoinen ja musta.<br />
1<br />
Sinisen värin spektri<br />
1<br />
Punaisen värin spektri<br />
0.8<br />
0.8<br />
Heijastus<br />
0.6<br />
0.4<br />
Heijastus<br />
0.6<br />
0.4<br />
0.2<br />
0.2<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
1<br />
Valkoisen värin spektri<br />
1<br />
Mustan värin spektri<br />
0.8<br />
0.8<br />
Heijastus<br />
0.6<br />
0.4<br />
Heijastus<br />
0.6<br />
0.4<br />
0.2<br />
0.2<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
Kuva 1: Sinisen, punaisen, valkoisen ja mustan värin spektrit.<br />
7
Värien mittauslaitteistot voidaan jakaa kolmeen perusryhmään: kolmisuotimiset<br />
värimittarit, monisuotimiset värimittarit ja spektrivärimittarit (Parkkinen & Jaaskelainen,<br />
1987). Kolmisuotimiset värimittarit eli kolorimetrit perustuvat värifunktioita<br />
vastaavien suotimien käyttöön. Tämän tyyppiset värimittarit ovat nopeita<br />
toiminnoiltaan ja helposti rakennettavia. Tyypillinen monisuotiminen värimittari<br />
sisältää joukon kapeakaistaisia suotimia, joiden avulla voidaan mitata koko<br />
spektri. Spektrivärimittarit perustuvat usein hilan tai prisman käyttöön. Skannaavia<br />
spektrivärimittareita ovat mm. monokromaattoria käyttävät mittarit. Spektrivärimittareita<br />
kutsutaan yleisesti nimillä spektrofotometri ja spektroradiometri.<br />
Täyden spektritiedon mittaavia kuvantamislaitteita on mm. CCD -kamera, johon<br />
on yhdistetty kapeakaistaisia interferenssisuotimia. Kapeakaistaiset interferenssisuotimet<br />
laitetaan yleensä CCD -kameran eteen olevaan pyörään. Käytettävien<br />
interferenssisuotimien lukumäärä on yleensä enemmän kuin 30 (Baronti & al.,<br />
1999). Lisäksi täyden spektritiedon mittaavia kuvantamislaitteita ovat säädettävät<br />
nestekidesuotimet (LCTF) (Hauta-Kasari & al., 1999) ja prisma-hila-prisma<br />
komponenttiin perustuva viivakamera (Miyazawa & al., 2001). LCTF perustuu<br />
spektrin skannaukseen ja viivakamera spatiaalitason skannaukseen.<br />
Viime aikoina useiden tutkimusryhmien mielenkiinnon kohteena ovat olleet värispektrikamerat,<br />
jotka käyttävät useampaa kuin kolmea, mutta vähempää kuin<br />
kymmentä värisuodinta spektritiedon tallentamiseen. Näissä menetelmissä spektrikuva<br />
voidaan rekonstruoida laskennallisesti. Seuraavassa esitellään tähän liittyviä<br />
menetelmiä.<br />
Matalaulotteiset värisuotimet on aikaisemmin tuotettu valitsemalla optimaalinen<br />
joukko kaupallisista kapeakaistaisista suotimista (Vora & Trussell, 1997a). Kaupallisten<br />
värisuotimien käyttö on käytännöllistä ja järkevää, jos niiden käytöllä<br />
saavutetaan riittävän korkea tarkkuus spektrien estimoinnissa (Haneishi & al.,<br />
2000). Haneishi & al. (2000) mukaan parempi estimointitarkkuus saavutetaan<br />
kaupallisiin värisuotimiin verrattuna, jos suotimet suunnitellaan joustavammin.<br />
Lisäksi optimaalisesti suunnitellut suotimet ovat sopivampia estimoinnissa käytettäväksi<br />
kuin kaupalliset suotimet. Kirjallisuudessa testatut kaupalliset suotimet<br />
8
olivat Fuji Photo filmin suotimia. Haneishi & al. (2000) vertailivat näiden suotimien<br />
paremmuutta värieron (E u v) avulla. Värieroa käsitellään tarkemmin luvussa<br />
4.3. Muita kaupallisia värisuotimia, joita on käytetty spektrikameroissa ovat<br />
mm. Kodak Wratten gelatiinisuotimet, joista on valittu optimaalinen joukko suotimia<br />
(Tominaga, 1996).<br />
Matemaattisesti kehitettyjä suotimen optimointeja ovat esittäneet mm. Vrhel &<br />
Trussell (1994 ja 1995), Vrhel & al. (1995), Vora & Trussell (1993, 1997a ja<br />
1997b), Sharma & al. (1998), Lenz & al. (1996) sekä Hauta-Kasari & al. (1998).<br />
Vrhel & Trussell (1995) ovat esittäneet menetelmän värisuotimien määrittämiseen<br />
käyttämällä värinäytteiden joukkoa ja useita valaistuksia. He ovat myös pohtineet<br />
niiden tarkkuutta kohinaolosuhteissa. Optimaalisten suotimien suunnitteluun käytettävien<br />
menetelmien haittana ovat usein niiden optisessa tuottamisessa syntyvät<br />
kustannukset ja vaikeudet (Hardeberg, 1999).<br />
Suurempi määrä suotimia ei aina välttämättä paranna estimoinnin tarkkuutta (Vrhel<br />
& Trussell, 1995). Sharma & al. (1998) modifioivat menetelmää, jonka olivat<br />
kehittäneet Vrhel & Trussell (1992). Kokeet osoittivat, että neljän suotimen käyttäminen<br />
kolmen suotimen sijasta tarjoaa huomattavimman parannuksen. Lisäksi<br />
Hauta-Kasari & al. (1999) ovat tutkineet kokeellisesti, että estimointivirhe saattoi<br />
nousta huomattavasti käytettäessä useampaa kuin neljää suodinta, jos laskennallinen<br />
rekonstruointimenetelmä on herkkä kohinalle. Spektritietokantoja varten<br />
suotimet on suunniteltu mm. optimointimenetelmillä (Lenz & al., 1996) ja ryhmittelymenetelmillä<br />
(Hauta-Kasari & al., 1998). Tässä tutkielmassa tarkastellaan<br />
ryhmittelyyn perustuvaa värisuotimien suunnittelua. Tutkielmassa saatuja tuloksia<br />
on myös julkaistu kansainvälisessä konferenssissa (Hauta-Kasari & <strong>Karttunen</strong>,<br />
2002).<br />
9
2.3 Tutkielmassa käytetyt värispektritietokannat<br />
Tämän tutkielman kokeellisessa osassa on käytetty kahta värispektritietokantaa,<br />
jotka esitellään tarkemmin tässä luvussa. Nämä tietokannat ovat nimeltään Munsell<br />
ja Macbeth. On olemassa monia muitakin värispektritietokantoja kuten esimerkiksi<br />
erilaista luonnollisista kohteista kootut värispektritietokannat, joita ovat<br />
käyttäneet mm. Jaaskelainen & al. (1990). Käytetty natural-värispektritietokanta<br />
koostui 218:sta luonnollisesta värinäytteestä. Värispektritietokantoja on saatavilla<br />
<strong>Joensuu</strong>n yliopiston väritutkimusryhmän WWW -sivulla http://cs.joensuu.fi/<br />
spectral/.<br />
Munsell: Munsell on järjestelmä, jossa on joukko standardinäytesarjoja, joita voidaan<br />
käyttää värien visuaaliseen vertailuun. Näytteitä tulisi tarkastella keskimääräisessä<br />
päivänvalossa ja valaisun tulokulman tulisi olla noin 45 astetta. Taustan<br />
tulisi olla neutraalin harmaa. Munsell järjestelmässä väri määritellään kolmella<br />
parametrilla: sävy (Hue), kylläisyys (Chroma) ja kirkkaus (Value). Kirkkausasteikolla<br />
musta on 0 ja valkoinen 10. Kylläisyysasteikko on määritelty välillä 0 –<br />
10, kahden välein (2, 4, 6, 8, 10). Värisävyt kiertävät vakiokirkkaustasolla täyden<br />
ympyrän. Värisävyasteikko on 100 portainen. Se koostuu kymmenestä segmentistä,<br />
joissa kussakin on kymmenen sävyä. Liitteessä 1 on Matlab-ohjelmistolla<br />
simuloitu esimerkki yhdestä Munsell-värikirjan (Munsell Book of Color) sivusta<br />
(Munsell, 1976).<br />
Kokeellisessa osassa käytetty Munsell-tietokanta koostuu 1269:stä värispektristä,<br />
jotka ovat mitattu spektrofotometrillä Munsell-värikirjasta. Spektrit on mitattu<br />
yhden nanometrin välein 380 – 800nm:n aallonpituusalueelta. Kokeellista osaa<br />
varten tietokantaa muutettiin Matlab-ohjelmalla siten, että tietokannan jokainen<br />
spektri koostuu 151:stä näytteestä 400 – 700nm:n aallonpituusalueella. Muuttaminen<br />
tapahtui siten, että tietokannasta valittiin arvoja kahden nanometrin välein<br />
400nm – 700nm välillä.<br />
Macbeth: Macbeth-tietokanta koostuu 24:stä värispektristä, jotka on mitattu<br />
Macbeth-väritaulusta, jossa on 24 väriä (McCamy, 1976). Monet näistä väreis-<br />
10
tä kuvaavat luonnollisia värejä kuten ihmisen ihoa ja sinistä taivasta. Lisäksi<br />
väritaulu sisältää värisävyt valkoisesta mustaan siten, että harmaan värisävyjä<br />
on valkoisen ja mustan välillä neljä kappaletta. Liitteessä 2 on värikuva<br />
Macbeth-väritaulusta. Kokeellista osaa varten Macbeth-tietokantaa muutettiin kuten<br />
em. Munsell-tietokannan kohdalla. Macbeth-tietokannan spektrit sisältävät<br />
myös 151 näytettä 400 – 700nm:n aallonpituusalueella.<br />
11
3 Teoriaa värispektrien ryhmittelymenetelmistä<br />
Tässä luvussa käsitellään värispektrien ryhmittelyyn käytettävien hahmontunnistusmenetelmien<br />
teoriaa ja luvussa 5 esitellään puolestaan näiden menetelmien soveltamisesta<br />
saadut kokeelliset tulokset. Ryhmittelyn tarkoitus on vähentää tiedon<br />
määrää, ryhmittelemällä tai luokittelemalla samanlainen tieto yhteen. Ryhmittelyn<br />
tuloksena käsiteltävä väritietokanta saadaan tiivistettyä muutamaan värisuotimeen.<br />
Näitä tuloksena saatuja värisuotimia yhdistelemällä saadaan alkuperäinen<br />
väritietokanta esitettyä menettämällä vain vähän alkuperäisestä informaatiosta.<br />
3.1 Pääkomponenttianalyysi (PCA)<br />
Pääkomponenttianalyysi (PCA) on yksi keskeisimmistä hahmontunnistuksen menetelmistä<br />
(Koikkalainen, 2002). Yksinkertainen tapa kantavektorijoukon määrittämiseksi<br />
värispektreille on PCA:n käyttäminen (Jaaskelainen & al., 1990). Pääkomponenttianalyysin<br />
tärkein tehtävä on selvittää se informaation osa tutkittavasta<br />
kohteesta, joka on olennaista ja tärkeää.<br />
Seuraavana kuvataan pääkomponenttianalyysin periaate Koikkalaisen (2002) mukaan.<br />
Tutkittavassa kohteessa olevien muuttujien x 1 x 2 :::x n sisältämä tieto on<br />
esitettävä pienemmällä määrällä (m < n) muuttujia y 1 y 2 :::y m . Tarkoituksena<br />
on löytää muuttujat y j , (j = 1 2:::m) siten, että muuttujat y j sisältävät<br />
mahdollisimman suuren määrään informaatiota siitä määrästä mitä alkuperäiset<br />
muuttujat x i , (i = 1 2:::n) sisältävät, vaikka (m < n). Tämän luvun lopussa<br />
käsitellään tarkemmin käsitettä informaatiosisältö, jolla määritetään kuinka paljon<br />
informaatiota muuttujajoukko y 1 y 2 :::y m sisältää joukosta x 1 x 2 :::x n .<br />
Perusidea pääkomponenttien määräämisessä on se, että mahdollisimman vähän<br />
informaatiota menetetään toimenpiteen aikana.<br />
Pääkomponentit järjestetään ominaisarvojen mukaan suurimmasta (merkitsevin)<br />
pienimpään (vähiten merkitsevä) siten, että j 1 j j 2 j ::: j n j. Suurinta<br />
12
komponenttia edustaa 1 ja pienintä n . Suurin komponentti sisältää muita enemmän<br />
tietoa ja pienin komponentti vähiten. Pääkomponenttianalyysissä valitaan m<br />
kappaletta (m
Aliavaruusmenetelmässä käytetään korrelaatiomatriisia R (Parkkinen & al., 1989)<br />
R =<br />
NX<br />
i=1<br />
s i ()s i () T (11)<br />
missä indeksi i viittaa spektriin i, mitattujen spektrien indeksijoukossa N. Korrelaatiomatriisin<br />
ensimmäiset m ominaisvektoria, joilla on suurimmat ominaisarvot,<br />
ovat pääkomponenttivektoreita ja muodostavat kannan aliavaruudelle.<br />
Aliavaruusmenetelmän muodostama kantavektorijoukko on ortogonaalinen ja värispektreille<br />
se sisältää yleensä myös negatiivisia arvoja (Hauta-Kasari & al.,<br />
1998). Ominaisvektoreiden ortogonaalisuudesta johtuen aliavaruusmenetelmällä<br />
tuotettuja suotimia ei voida käyttää suoraan optisessa hahmontunnistuksessa.<br />
Ominaisvektoreiden negatiiviset komponentit eivät välttämättä ole ongelma, koska<br />
v:n ollessa R:n ominaisvektori myös ;v on ominaisvektori. On mahdollista jakaa<br />
nämä vektorit positiivisiin ja negatiivisiin osiin ja käsitellä näitä osia erikseen<br />
(Jaaskelainen & al., 1992). Tämä kuitenkin johtaa monimutkaisiin järjestelmiin<br />
suotimien optisessa toteutuksessa (Hauta-Kasari & al., 1998).<br />
Informaatiosisältö: Informaatiosisältö on aliavaruuden kannaksi valitun ominaisvektorijoukon<br />
(m kpl) ominaisarvojen summa suhteessa kaikkien näytteeseen<br />
kuuluvien ominaisvektoreiden ominaisarvojen (n kpl) summaan. Se kuinka monta<br />
ominaisvektoria valittu kanta sisältää riippuu halutusta informaatiosisältöarvosta.<br />
Informaatiosisältö k on siis (Hauta-Kasari & al., 1998)<br />
k =<br />
P m i=1 i<br />
P n (12)<br />
i=1 i<br />
missä k on suurimpien ominaisarvojen (m kpl) summan ja kaikkien ominaisarvojen<br />
(n kpl) summan välinen suhde. Parkkisen et. al (1989) mukaan4–8kantavektoria<br />
riittävät tarkkaan värispektrien rekonstruointiin. Rekonstruointia käsitellään<br />
tarkemmin luvussa 4.<br />
14
3.2 Itseorganisoiva kartta (SOM)<br />
Itseorganisoiva kartta (SOM) perustuu ohjaamattomaan oppimiseen (Kohonen,<br />
1997). Tässä tutkielmassa käsitellään yksiulotteista itseorganisoivaa karttaa, jota<br />
sovelletaan spektridatan ryhmittelyyn kokeellisen osan luvussa 5.3. Itseorganisoivassa<br />
prosessissa signaalit järjestäytyvät topologiseen järjestykseen (Kohonen,<br />
1982).<br />
SOM -menetelmän perusperiaate on seuraavanlainen. Ensiksi syötedata normeerataan<br />
ja kartta alustetaan (Kohonen, 1997). Alustuksen voi suorittaa satunnaisella<br />
alustuksella. Tämä ei kuitenkaan tarkoita, että satunnainen alustus olisi paras tai<br />
nopein tapa suorittaa alustus. Muita tapoja alustukseen ovat mm. näytteisiin perustuva<br />
alustus ja lineaarinen alustus. Alustukseen käytettävä tapa ei ole kuitenkaan<br />
tärkeä kartan järjestäytymisen kannalta (Fränti, 1999).<br />
Jokaisella kierroksella ohjaamattomassa oppimisessa valitaan voittajaneuroniksi<br />
painovektori m c , jolla on lyhin euklidinen etäisyys satunnaisesti valittuun syötevektoriin<br />
x (Kohonen, 1990)<br />
kx ; m c k = min i fkx ; m i kg (13)<br />
missä i on painovektoreiden indeksi. Voittajaa m c kutsutaan myös nimellä yhteensopivin<br />
vektori (BMU).<br />
Painovektorien päivitys, mukaan lukien voittajaneuroni m c ja sen topologinen<br />
naapurusto N c määritellään seuraavasti (Kohonen, 1990)<br />
(<br />
mi (t)+(t)[x(t) ; m i (t)] jos i 2 N c (t)<br />
m i (t +1)=<br />
m i (t)<br />
muutoin,<br />
(14)<br />
missä t on iteraatioparametri ja (t) on opetuskerroin. Opetusvaiheessa opetusvektorit<br />
ovat syötteenä verkolle, yksi kerrallaan satunnaisesti. Jokaiselle syötevektorille<br />
löydetään sille lähin painovektori, eli neuroni.<br />
15
Painokerrointen päivityksen vaikutus (Kaava 14) on sellainen, että lähin neuroni<br />
ja sen naapurineuronit muokataan siirtämällä niitä kohti syötevektoria.<br />
Opetuskerroin (t) riippuu ajasta eli kuluneista kierroksista t. Se pienenee suhteessa<br />
aikaan ja on välillä 0 (t) 1. Kaksi yleisesti käytettyä opetuskertoimen<br />
muotoa ovat lineaarinen funktio ja käänteisesti aikaan verrannollinen funktio.<br />
Jälkimmäinen esitetään kaavalla<br />
(t) =<br />
A<br />
t + B (15)<br />
missä A ja B ovat sopivasti valittuja vakioita. Tämän tutkielman kokeellisessa<br />
osassa käytetään SOM -menetelmässä ns. Power Series -opetuskerrointa. Power<br />
Series määritellään seuraavasti (Kohonen, 2002)<br />
a 0 = (a T ) t T<br />
a 0<br />
(16)<br />
missä a 0 on opetuskerroin, a T on lopullinen opetuskerroin, t on aika ja T on opetuksen<br />
kesto. Opetuskerroin laskee ja myös naapuruston N c koko laskee opetuksen<br />
aikana. Periaatteessa kaikki monotonisesti laskevat funktiot ovat käytännöllisiä<br />
(Kohonen, 1997). Naapuruston koko D määrittää kuinka monta naapuruston<br />
neuronia päivitetään. Viimeisellä kierroksella vain voittajaneuroni päivitetään<br />
(D = 0). Suurta naapuruston kokoa käytetään yleensä vain opetuksen alussa.<br />
Menetelmää, jossa päivitetään vain voittajaneuronia kutsutaan Winner Take All<br />
(WTA) -menetelmäksi (Kohonen, 1993a).<br />
Opetus toteutetaan yleensä kahdessa vaiheessa. Ensimmäisessä vaiheessa opetuskerroin<br />
ja naapuruston koko ovat suhteellisen suuria. Toisessa vaiheessa molemmat<br />
ovat pieniä alusta alkaen. Toisen vaiheen pituus on 4 kertaa ensimmäisen vaiheen<br />
pituus. Seuraava algoritmi esittää itseorganisoivan oppimisen askeleet (Kohonen,<br />
1997)<br />
16
Algoritmi 1: Itseorganisoiva kartta<br />
begin<br />
e = kierrosten lukumäärä<br />
l = neuronien lukumäärä<br />
normeerataan syötedata<br />
alustetaan itseorganisoivan kartan painovektorit m 1 :::m l<br />
for t=1toe do<br />
otetaan satunnaisesti vektori x syötedatasta<br />
etsitään BMU m c vektorille x (Kaava 13)<br />
päivitetään painot m c :lle ja sen naapurustolle N c (Kaava 14)<br />
lasketaan opetuskerrointa ja naapuruston N c kokoa<br />
endfor<br />
end<br />
Tuloksena itseorganisoivasta prosessista on kartta, jossa painovektorit m ovat järjestäytyneet<br />
kohti syötedatassa olevien ryhmien keskustoja.<br />
Parametrien asetus: SOM -algoritmi sisältää monia asetettavia parametrejä: kierrosten<br />
lukumäärä e, naapuruston koko D max sekä opetuskerroin . Ei ole helppoa<br />
löytää optimaalisia asetuksia, koska parametrit riippuvat toinen toisistaan ja syötedatasta.<br />
Kierrosten lukumäärä e on helpoin asettaa (Kohonen, 1997). Sen pitäisi olla niin<br />
korkea, kuin aikaa voidaan käyttää. Minimimääränä voidaan pitää 100 - 1000 kierrosta.<br />
On huomattava, että e:n valinta vaikuttaa muiden parametrien valintaan.<br />
Alustavan naapuruston koko D max , pitäisi olla välillä 1;M, missä M on ryhmien<br />
lukumäärä (Kohonen, 1997). Mieluummin koon pitäisi olla lähempänä arvoa 1<br />
kuin M:ää, koska hyvin suurella naapurustolla neuronien liikkumisvapaus alenee<br />
liikaa. Toisaalta, jos D = 0, hävittää se naapuruston vaikutuksen kokonaan ja<br />
algoritmi on tällöin yksinkertainen kilpaileva oppiminen.<br />
17
Opetuskertoimeksi voidaan asettaa aluksi =1, koska opetuskerroin voi vaihdella<br />
välillä (1.0 - 0.0). Opetuskerroin on opetuksen alussa suuri eli yleensä lähellä<br />
arvoa 1. Opetuskerroin laskee opetuksen aikana opetuskerroinfunktion mukaisesti<br />
kohti arvoa 0. Jos käytössä on esimerkiksi lineaarinen opetuskerroin, niin opetuskertoimen<br />
arvo laskee lineaarisesti suhteessa opetuksen kestoon eli kierrosten<br />
lukumäärään (Kohonen, 1997).<br />
Kuitenkin opetuskertoimen arvot lähellä arvoa 1 ovat lähinnä merkityksettömiä,<br />
koska tällöin opetuskertoimella on käytännössä satunnainen vaikutus ratkaisuun<br />
(Fränti, 1999). Lisäksi opetuskertoimen arvon tulisi olla lopuksi lähellä arvoa 0,<br />
jotta kartan lopullinen hienosäätö voisi tapahtua.<br />
SOM -algoritmista on olemassa muitakin versioita, kuin tässä luvussa esitelty.<br />
SOM -algoritmista tunnetaan myös versiot nimeltä eräajokartta-algoritmi (Kohonen,<br />
1993b ja 1998) ja puurakenteinen SOM, TS-SOM (Koikkalainen, 1994).<br />
3.3 C-means<br />
C-means -algoritmi on menetelmä, joka on keksitty useampaan otteeseen. Tästä<br />
johtuen c-means -algoritmi tunnetaan usealla eri nimellä, kuten esimerkiksi k-<br />
means (McQueen, 1967) ja ISODATA (Theodoridis & Koutroumbas, 1998). Informaatioteorian<br />
puolella k-means tunnetaan yleistettynä Lloyd -algoritmina (GLA)<br />
tai Linde-Buzo-Gray (LBG) -algoritmina (Linde & al., 1980).<br />
C-means -algoritmista tunnetaan myös versiot nimeltään kova c-means (HCM)<br />
sekä sumea c-means (FCM). Sumea c-means eroaa kovasta c-meansistä siinä, että<br />
kukin datapiste voi kuulua useampaan ryhmään tietyllä jäsenyysfunktiolla (Delport<br />
& Liesch, 1994). C-means -algoritmi on laajalti tunnettu menetelmä, joka<br />
kuuluu ohjaamattoman oppimisen algoritmeihin.<br />
C-means -algoritmin suoritus alkaa alustavalla ratkaisulla, jota parannetaan iteratiivisesti,<br />
kunnes paikallinen minimi on saavutettu (Schalkoff, 1992). Algoritmin<br />
18
alussa määritellään ne vektorit, jotka ovat ryhmien tunnuksia. Tunnukset määritellään<br />
siten, että haluttu ryhmien lukumäärä on sama kuin annettujen tunnuksien<br />
lukumäärä.<br />
Ensimmäisessä askeleessa käsiteltävät vektorit jaetaan haluttuun määrään ryhmiä.<br />
Jokainen piirrevektori sijoitetaan siihen ryhmään, johon sen etäisyys on pienin,<br />
sen perusteella minkä ryhmän keskuspiste on lähimpänä (Schalkoff, 1992). Etäisyyden<br />
laskemiseen käytetään yleensä Minkowskin etäisyyksiä (Jain & Dubes,<br />
1988):<br />
d(i k) =[<br />
nX<br />
j=1<br />
(x ij ; x kj ) r ] 1 r<br />
(17)<br />
missä x i on tunnusvektori, x k on piirrevektori, r 1 ja n on vektorissa olevien<br />
komponenttien lukumäärä. Minskowskin etäisyyksien yleisimmät muodot<br />
ovat r:n arvoilla 1 2 ja 1. Kunr =2, saadaan Euklidinen etäisyys kaavasta<br />
d(i k) =[<br />
nX<br />
j=1<br />
(x ij ; x kj ) 2 ] 1 2 : (18)<br />
C-means algoritmi on seuraava:<br />
Algoritmi 2: C-means<br />
begin<br />
l = ryhmien lukumäärä<br />
Aseta ryhmien C 1 :::C l tunnusvektorit satunnaisesti<br />
TOISTA KUNNES ryhmien tunnusvektorit eivät muutu<br />
end<br />
TOISTA jokaiselle piirrevektorille x k<br />
Laske etäisyydet d tunnusvektoreihin<br />
Siirrä piirrevektori x k siihen ryhmään C i , johon sen etäisyys d on pienin<br />
Aseta ryhmien C 1 :::C l vektorit ryhmien uusiksi tunnusvektoreiksi<br />
19
Ennen ensimmäistä kierrosta valitaan ryhmien lukumäärä ja ryhmien tunnusvektorit.<br />
Huomattavaa on, että nämä valittavat ryhmien tunnusvektorit ovat täysin satunnaisia<br />
arvauksia. Ensimmäisen kierroksen jälkeen jokainen piirrevektori kuuluu<br />
yhteen ryhmään.<br />
Tämän jälkeen kaikista yhteen ryhmään kuuluvista piirrevektoreista lasketaan keskiarvo<br />
ja tämä arvo asetetaan ryhmän uudeksi tunnusvektoriksi. Piirrevektoreiden<br />
etäisyydet uusiin tunnusvektoreihin lasketaan seuraavaksi, jonka jälkeen ne sijoitetaan<br />
etäisyyksien perusteella uudestaan ryhmiin. Tätä toistetaan, kunnes ryhmien<br />
keskiarvot eivät enää muutu.<br />
Uusi ratkaisu on aina parempi tai vähintään yhtähyvä kuin edellinen. Algoritmia<br />
käydään läpi niin pitkään kuin edistystä saavutetaan. Kierrosten lukumäärä<br />
riippuu datajoukosta ja alustavan ratkaisun laadusta. Yleensä tarvitaan 10 – 50<br />
kierrosta hyvään tulokseen pääsemiseksi, kun aloitetaan satunnaisesta alustuksesta<br />
(Fränti, 1999).<br />
Pienillä syötejoukoilla c-means -algoritmin suorituksen aikana voi syntyä tyhjiä<br />
ryhmiä. Tyhjien ryhmien syntyminen voidaan korjata siten, että syötedatasta<br />
valitaan satunnaisesti uusi tunnusvektori tyhjän ryhmän tilalle. Etuna c-means -<br />
algoritmilla on se, että se on laskennallisesti yksinkertainen (Theodoridis & Koutroumbas,<br />
1998). Lisäksi c-means -algoritmi on varsin nopea, isoillakin syötejoukoilla.<br />
3.4 Parittainen lähin naapuri (PNN)<br />
Parittainen lähin naapuri (PNN) -algoritmi on esitelty tieteellisissä julkaisuissa<br />
vaihtoehtona LBG -algoritmille (Equitz, 1989). PNN -algoritmia voidaan pitää<br />
myös alustuksena LBG -algoritmille, jolloin Equitzin (1989) mukaan saadaan parempi<br />
tehokkuus kuin kumpikaan algoritmi voisi erikseen saavuttaa. Kokeellisen<br />
osan luvussa 5.4 esitellään tulokset kokeesta, jossa PNN -algoritmilla tuotettuja<br />
suotimia käytettiin c-means -algoritmin alustuksena.<br />
20
Seuraavissa kappaleissa käsitellään ensiksi Equitzin (1989) esittelemän PNN -<br />
algoritmin täydellisen haun ja nopean haun ryhmittelyt. Lisäksi tämän luvun lopussa<br />
käsitellään Fräntin & Kaukorannan (1999) esittelemä täsmällisen PNN -<br />
algoritmin nopea toteutus. Tämä PNN -algoritmi esitellään, jotta huomattaisiin,<br />
että on kehitetty nopeampia PNN -algoritmeja kuin Equitzin vuonna 1989 esittelemä.<br />
Kokeellisessa osassa toteutettu PNN -algoritmi perustuu kuitenkin Equitzin<br />
esittelemään PNN -algoritmiin.<br />
Täydellinen haku: Täydellisen haun PNN -algoritmin periaate on seuraavanlainen<br />
(Equitz, 1989). Algoritmi alkaa alustamalla jokainen opetusvektori omaksi<br />
ryhmäkseen. Näin ollen ryhmiä on alussa sama määrä kuin opetusvektoreitakin.<br />
Algoritmi toimii ns. alhaalta-ylös (bottom-up) periaatteella. Jokaisella kierroksella<br />
etsitään kaksi lähintä ryhmää S a ja S b , ja ne korvataan yhdellä ryhmällä. Etäisyys<br />
d kahden ryhmän välillä määritellään lisäyksenä koodikirjan vääristymään,<br />
jos ryhmät yhdistetään. Etäisyys d lasketaan neliöllisenä euklidisena etäisyytenä<br />
ryhmien keskustoista, painotettuna yhdistettävien ryhmien vektoreiden lukumäärällä<br />
n a ja n b (Kaukoranta & al., 1998):<br />
d(S a S b )=<br />
n an b<br />
n a + n b<br />
kC a ; C b k 2 : (19)<br />
Etäisyyden laskemisen jälkeen ryhmät S a ja S b yhdistetään. Yhdistetyn ryhmän<br />
S a+b koko on n a + n b . Yhdistetyn ryhmän uusi keskusvektori voidaan laskea ryhmän<br />
S a keskusvektorin C a ja ryhmän S b keskusvektorin C b keskiarvona seuraavasti<br />
(Kaukoranta & al., 1998)<br />
C a+b = n aC a + n b C b<br />
n a + n b<br />
: (20)<br />
On riittävää ylläpitää algoritmin suorituksen aikana vain ryhmien keskustoja C i ja<br />
ryhmien kokoja n i . Seuraavana esitellään PNN -algoritmi (Equitz, 1989).<br />
21
Algoritmi 3: Parittainen lähin naapuri<br />
begin<br />
l = haluttujen ryhmien lukumäärä<br />
Aseta jokainen opetusvektori omaksi ryhmäksi<br />
Ryhmien lukumäärä m = opetusvektoreiden lukumäärä<br />
TOISTA<br />
Etsi kaksi lähintä ryhmää S a ja S b yhdistämistä varten<br />
Yhdistä valitut ryhmät<br />
Laske yhdistetylle ryhmälle uusi keskusvektori kaavalla 20<br />
m = m ; 1<br />
KUNNES m = l<br />
end<br />
PNN -algoritmille on olemassa kaksi lopetuskriteeriä. Ensimmäinen tapa, jolla<br />
PNN -algoritmin suoritus loppuu on kun joukosta on saavutettu haluttu määrä<br />
ryhmiä. Vaihtoehtoisesti ryhmien yhteenliittämistä voidaan jatkaa, kunhan ryhmien<br />
keskustojen ero pysyy määritellyn kynnysarvon yläpuolella. Täydellisen<br />
haun PNN -algoritmin aikakompleksisuus on luokkaa O(N 3 ).<br />
Nopea haku: Nopean haun PNN -algoritmin aikakompleksisuus on luokkaa<br />
O(NlogN). Tämä algoritmi käyttää K-d puuta paikallistaakseen koodivektoreiden<br />
etsinnän ja se liittää yhteen useita vektoripareja yhtäaikaa (Fränti & Kaukoranta,<br />
1999). Tämä algoritmi ei ole saavuttanut samanlaista suosiota kuin tarkka<br />
täydellisen haun PNN -algoritmi, koska se on monimutkaisempi toteuttaa ja tulos<br />
ei ole optimaalinen.<br />
Täsmällisen PNN -algoritmin nopea toteutus: Täsmällisen haun PNN -algoritmi<br />
käyttää paikallista optimointia löytääkseen yhdistettävät koodivektorit. Täsmällisen<br />
PNN -algoritmin nopean toteutuksen aikakompleksisuus on luokkaa O(N 2 ).<br />
Periaate tässä algoritmissa on ylläpitää lähimpien naapureiden taulua ja välttää<br />
tarpeetonta etäisyyksien uudelleen laskemista. Tarvittavien päivitysten () määrä<br />
riippuu datan luonteesta ja opetusvektoreiden suuruudesta. Käytännössä Fräntin<br />
22
ja Kaukorannan (1999) mukaan numero () oli huomattavasti pienempi kuin (N)<br />
kaikissa opetusjoukoissa. Tämä algoritmi saa aikaan samat tulokset kuin täsmällinen<br />
PNN -algoritmi, mutta tarvitsee vain murto-osan siitä ajasta mitä alkuperäinen<br />
algoritmi.<br />
23
4 Värispektrien rekonstruointi ja virhemitat<br />
Luvussa 3 esitetyillä ryhmittelymenetelmillä syötedata saadaan jaettua haluttuun<br />
määrään ryhmiä. Näiden ryhmien keskustoilla alkuperäinen syötedata voidaan<br />
esittää uudelleen tietoa hukkaavalla tavalla. Tässä tutkielmassa ryhmien keskusvektoreita<br />
käytetään värispektritietokannoille suunniteltuina suotimina, joilla alkuperäinen<br />
tietokanta voidaan rekonstruoida vain vähän tietoa hukaten.<br />
Tässä tutkielmassa käytettyjä spektritietokantoja ovat edellä luvussa 2.3 esitellyt<br />
Munsell- ja Macbeth-tietokannat. Rekonstruoinnin avulla voidaan eri menetelmillä<br />
tuotettujen värisuotimien tarkkuutta vertailla toisiinsa (Hauta-Kasari & al.,<br />
1998). Tässä luvussa esitellään kolme tapaa, joilla spektrit rekonstruoidaan tämän<br />
tutkielman kokeellisessa osassa. Lisäksi määritellään käsitteet: rekonstruointivirhe,<br />
keskimääräinen neliövirhe ja värivirhe E L a b .<br />
4.1 Spektrin rekonstruointi<br />
Kantavektorijoukon ollessa ortogonaalinen voidaan rekonstruoitu spektri s 0<br />
laskea<br />
seuraavan kaavan mukaan (Hauta-Kasari & al., 1998)<br />
s 0 = BB T s (21)<br />
missä B on spektrien korrelaatiomatriisista (Kaava 11) laskettu kantavektorijoukko,<br />
B T on transponoitu kantavektorijoukko ja s on alkuperäinen spektri. Spektrien<br />
rekonstruointi tehdään kantavektorijoukon B lineaaristen kombinaatioiden avulla.<br />
Kantavektorijoukon ollessa ei ortogonaalinen, lasketaan rekonstruointi käänteismatriisin<br />
avulla värispektritietokannoille (Hauta-Kasari & al., 1998). Tällaisessa<br />
tapauksessa voidaan rekonstruoitu spektri laskea kaavan 22 mukaan<br />
24
s 0 = W (W T W ) ;1 W T s (22)<br />
missä W on kantavektori-, eli suodinjoukko. Optisessa toteutuksessa sisätulot<br />
W T s saadaan kokeellisesti ja W (W T W ) ;1 laskennallisesti. Kaavan 22 menetelmää<br />
kutsutaan myös pseudoinverssimenetelmäksi.<br />
4.2 Wiener estimointi<br />
Tsumura et. al (1999) ovat tutkineet Wiener estimoinnin (Haneishi & al., 1997)<br />
käyttämistä spektrin rekonstruoinnissa. Menetelmä käyttää apriori-tietoa ja siinä<br />
spektrit rekonstruoidaan niiden näytteisiin perustuvan, useakaistaisen kuvantamissysteemin<br />
vasteista. Seuraavassa tarkastellaan Wiener estimoinnin teoriaa Tsumura<br />
& al. (1999) mukaan.<br />
Digitaalikameran vaste v i kohdassa (x y), käytettäessä m kappaletta värisuotimia,<br />
ilmaistaan seuraavasti<br />
v i (x y) =<br />
Z<br />
700<br />
t i ()E()S()r(x y )d i =1:::m (23)<br />
400<br />
missä t i () on värisuotimen läpäisevyys, E() on valaistuksen spektri, S() on<br />
kameran herkkyys ja r(x y ) on heijastusspektri kuvapisteessä (x y). Käyttämällä<br />
vektorimatriisinotaatiota kaava 23 voidaan esittää seuraavasti<br />
v = Fr (24)<br />
missä v on kameran vasteita esittävä pylväsvektori, jossa on m elementtiä. Kaavassa<br />
r on heijastusspektri pylväsvektoreina, joissa on l elementtiä. Yksinkertaisuuden<br />
vuoksi kaavasta on jätetty pois v:n ja r:n (x y). Nämä kaksi vektoria ovat<br />
yhteydessä lineaariseen matriisin F , jolla on m x l komponenttia. Tsumura et.<br />
25
al (1999) otaksuvat, että kohina on mitätön käytettäessä laajakaistaisia suotimia.<br />
Matriisille F pätee<br />
F = TES (25)<br />
missä T on<br />
T =[t 1 t 2 :::t m ] T : (26)<br />
Vektori t i on pylväsvektori, joka esittää suotimen läpäisyä ja [ ] T esittää transponointia.<br />
Matriisit E ja S ovat l x l diagonaalista matriisia, joka vastaa valaistuksen<br />
spektriä ja kameran herkkyyttä.<br />
Kaavasta 24 ratkaistaan Wiener estimoinnin avulla estimoitu heijastusspektri r est<br />
seuraavasti<br />
r est = Gv (27)<br />
missä arviointimatriisi G on määritelty alkuperäisten r:n ja estimoidun spektrin<br />
heijastuksen r est :n keskimääräisen neliövirheen e minimoimiseksi.<br />
e =< kr ; r est k 2 >! min (28)<br />
Tässä on keskiarvo. Arviointimatriisi G ilmaistaan täsmällisesti kaavalla 29<br />
seuraavasti<br />
G = R rv R ;1<br />
vv (29)<br />
26
missä R rv ja R vv ovat korrelaatiomatriiseja, jotka määritellään seuraavasti:<br />
R rv = (30)<br />
R vv = (31)<br />
Mm. Vhrel & Trussell (1992) ovat osoittaneet, että arvioinnin tarkkuus riippuu<br />
valittujen apriori värinäytteiden valinnasta.<br />
4.3 Virhemitat<br />
Rekonstruointivirhe alkuperäisen spektrin s ja rekonstruoidun spektrin s 0<br />
lasketaan seuraavasti (Hauta-Kasari & al., 1998)<br />
välillä<br />
virhe = 100 k ; s k s0<br />
(%) (32)<br />
k s k<br />
Keskimääräinen neliövirhe (MSE) määritellään kaavan 33 mukaan<br />
MSE = 1 n ks0 ; sk (33)<br />
Kaikkien syötedatan spektrien lukumäärä on n.<br />
Väriero kahden värin välillä L a b -värikoordinaatistossa voidaan laskea kaavan<br />
34 mukaan (Wyszecki & Stiles, 1982)<br />
E L a b = p L 2 +a 2 +b 2 (34)<br />
missä L , a ja b ovat kohteen alkuperäisen värin ja rekonstruoidun värin<br />
erot L , a ja b arvoissa. Ihmissilmä ei pysty havaitsemaan värieroja (E L a b ),<br />
27
jotka ovat pienempiä kuin 0.5 (E L a b < 0.5). Värikuville on myös kehitetty<br />
spatiaalinen laajennus, jota kutsutaan nimellä S-CIELAB (Zhang & Wandell,<br />
<br />
1996). Tässä värikoordinaatistossa laskettaessa E L a b-virheessä otetaan paremmin<br />
huomioon ihmissilmän spatiaalista värinäkökykyä.<br />
28
5 Kokeellinen osa<br />
Luvussa 3 esiteltiin teoriaa PCA-, SOM-, c-means- ja PNN -menetelmistä. Ensimmäisenä<br />
tässä luvussa esitellään Matlab-ohjelmisto, jolla kirjoitetuilla ohjelmilla<br />
tuotetut värisuotimet esitellään luvuissa 5.2 – 5.5. Optiseen hahmontunnistukseen<br />
sopivien värisuotimien tulisi sisältää vain positiivisia kertoimia ja niiden tulisi virittää<br />
väriavaruus niin tarkasti kuin mahdollista (Hauta-Kasari & al., 1998). Lisäksi<br />
värisuotimien tulisi erottua toinen toisistaan ja niiden muotojen tulisi olla<br />
sileitä.<br />
Olen tutkinut kuinka hyvin em. neljä hahmojentunnistusmenetelmää pystyvät<br />
tuottamaan nämä ehdot täyttävän vektorijoukon. Tämä tuotettu vektorijoukko on<br />
sama kuin väriryhmien keskustat väriavaruudessa. Näitä tuotettuja vektoreita voidaan<br />
käyttää mm. suotimina optisessa hahmontunnistuksessa ja spektrikameroissa.<br />
Kokeissa saavutetut tulokset esitellään tässä kokeellisessa osassa. Apunani<br />
olen käyttänyt aihepiiristä julkaistuja tieteellisiä julkaisuja.<br />
5.1 Matlab<br />
Matlab on PC- ja Unix -ympäristöissä toimiva matemaattinen, tekniseen laskemiseen<br />
suunniteltu ohjelma. Se pitää sisällään laskennan, visualisoinnin sekä ohjelmoinnin.<br />
Matlab toimii ympäristössä, missä ongelmat ja ratkaisut esitetään tutuilla<br />
matemaattisilla merkinnöillä.<br />
Matlab systeemi koostuu Matlab-kielestä, työskentely-ympäristöstä, grafiikan käsittelystä,<br />
matemaattisten funktioiden kirjastoista sekä sovellusten ohjelmointikäyttöliittymästä<br />
(Application Program Interface). Matlab-kieli on korkean tason<br />
matriisi/taulukko kieli, jolla kontrolloidaan mm. funktioita ja tietorakenteita. Matlabin<br />
grafiikkasysteemi sisältää komentoja kaksi- ja kolmiulotteisen tiedon visualisointiin,<br />
animointiin ja grafiikan esitykseen. Matlabin funktiokirjastot ovat suuri<br />
kokoelma algoritmeja perusfunktioista aina monimutkaisimpiin funktioihin. API<br />
29
on kirjasto, jonka avulla voidaan kirjoittaa C- ja Fortran-ohjelmia, jotka toimivat<br />
Matlabissa.<br />
Matlabissa on erilaisia työkaluja (toolboxes), jotka ovat laajoja numeerisia rutiineja,<br />
joita voidaan käyttää omiin sovelluksiin. Näitä työkaluja voidaan käyttää<br />
ongelmanratkaisun apuna monella eri aihealueella, kuten esimerkiksi signaaliprosessoinnissa<br />
ja neuraaliverkoissa.<br />
Luvussa 5.3 käytetään Matlabin 5.3 version neuraaliverkoille suunniteltuja<br />
työkaluja. Liitteessä 9 oleva ohjelmakoodi on kirjoitettu Matlabohjelmointiympäristössä.<br />
Kirjoittamani ohjelma toimii Unix- ja PC -<br />
ympäristöissä Matlabin versioilla 5.3 ja 6.0.<br />
5.2 PCA<br />
Tilastollisiin hahmontunnistusmenetelmiin kuuluva aliavaruusmenetelmä on läheistä<br />
sukua pääkomponenttianalyysille (Parkkinen & Jaaskelainen, 1987). Aliavaruusmenetelmällä<br />
tuotettuja suotimia ei voida käyttää suoraan optisessa hahmontunnistuksessa,<br />
koska sillä tuotetut ominaisvektorit ovat ortogonaalisia ja ne<br />
sisältävät usein negatiivisia kertoimia (Hauta-Kasari & al., 1998). Aliavaruusmenetelmällä<br />
tuotettuja suotimia voidaan kuitenkin käyttää kannan määrittämiseen,<br />
jolla voidaan määrittää spektridata tarkasti ja tässä työssä muiden menetelmien<br />
tuloksia verrataan aliavaruusmenetelmän tuloksiin.<br />
Seuraavaksi esitellään aliavaruusmenetelmällä saavutetut tulokset, jotka perustuvat<br />
Hauta-Kasarin et. al (1998) tekemään tutkimukseen. Tulokset eroavat siten,<br />
että tämän tutkielman kokeellisessa osassa käytettiin Munsell- ja Macbethtietokantoja<br />
joiden aallonpituusalue oli sama 400nm – 700nm, mutta näytteitä<br />
tällä aallonpituusalueella otettiin 2nm:n välein eli yhteensä 151 kappaletta (61:n<br />
näytteen sijaan). 2nm:n valintaan vaikutti se, että Macbeth-tietokanta oli mitattu<br />
2nm:n välein. Lisäksi edellä mainitussa julkaisussa oli käytetty vain Munselltietokantaa.<br />
Munsell- ja Macbeth-tietokannat esiteltiin tarkemmin luvussa 2.3.<br />
30
Korrelaatiomatriisin R ominaisvektorit lasketaan luvussa 3.1 esitetyn kaavan 11<br />
mukaan. Munsell-tietokannasta tuotetut kahdeksan ominaisvektoria esitellään kuvassa<br />
2. Kuvassa 3 esitellään vastaavasti Macbeth-tietokannasta tuotetut kahdeksan<br />
ominaisvektoria.<br />
0.2<br />
PCA: nro.1/8<br />
0.2<br />
PCA: nro.2/8<br />
0.2<br />
PCA: nro.5/8<br />
0.2<br />
PCA: nro.6/8<br />
0.1<br />
0.1<br />
0.1<br />
0.1<br />
0<br />
0<br />
0<br />
0<br />
−0.1<br />
−0.1<br />
−0.1<br />
−0.1<br />
−0.2<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
−0.2<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
−0.2<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
−0.2<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
0.2<br />
PCA: nro.3/8<br />
0.2<br />
PCA: nro.4/8<br />
0.2<br />
PCA: nro.7/8<br />
0.2<br />
PCA: nro.8/8<br />
0.1<br />
0.1<br />
0.1<br />
0.1<br />
0<br />
0<br />
0<br />
0<br />
−0.1<br />
−0.1<br />
−0.1<br />
−0.1<br />
−0.2<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
−0.2<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
−0.2<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
−0.2<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
a) b)<br />
Kuva 2: Aliavaruusmenetelmällä tuotetut ominaisvektorit Munsell-tietokannalle:<br />
a) nro. 1 – 4, b) nro. 5 –8. Huomioi spektrien järjestys.<br />
0.2<br />
PCA: nro.1/8<br />
0.2<br />
PCA: nro.2/8<br />
0.2<br />
PCA: nro.5/8<br />
0.2<br />
PCA: nro.6/8<br />
0.1<br />
0.1<br />
0.1<br />
0.1<br />
0<br />
0<br />
0<br />
0<br />
−0.1<br />
−0.1<br />
−0.1<br />
−0.1<br />
−0.2<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
−0.2<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
−0.2<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
−0.2<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
0.2<br />
PCA: nro.3/8<br />
0.2<br />
PCA: nro.4/8<br />
0.2<br />
PCA: nro.7/8<br />
0.2<br />
PCA: nro.8/8<br />
0.1<br />
0.1<br />
0.1<br />
0.1<br />
0<br />
0<br />
0<br />
0<br />
−0.1<br />
−0.1<br />
−0.1<br />
−0.1<br />
−0.2<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
−0.2<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
−0.2<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
−0.2<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
a) b)<br />
Kuva 3: Aliavaruusmenetelmällä tuotetut ominaisvektorit Macbeth-tietokannalle:<br />
a) nro. 1 – 4, b) nro. 5 –8. Huomioi spektrien järjestys.<br />
Taulukossa 1 kuvataan informaatiosisällöt Munsell- ja Macbeth-tietokannoille. Informaatiosisältö<br />
lasketaan luvussa 3.1 esitetyn kaavan 12 mukaan. Informaatiosisältö<br />
kuvaa sitä, kuinka monta prosenttia kantavektorijoukkoon kuuluvien omi-<br />
31
naisvektorien ominaisarvot sisältävät kaikkien ominaisvektoreiden ominaisarvoista.<br />
Mitä useampi ominaisvektori otetaan mukaan kantavektorijoukkoon, sitä suurempi<br />
on informaatiosisällön arvo.<br />
Taulukosta 1 käy selville, kuinka ominaisvektoreiden määrä vaikuttaa informaatiosisällön<br />
arvoon. Parkkisen & al. (1989) mukaan 4 – 8 kantavektoria riittävät<br />
kuvaamaan Munsell-tietokannan tarkasti. Informaatiosisältö Munsell-tietokannan<br />
kahdeksalle ominaisvektorille on 99.98% Vastaavasti informaatiosisältö Macbethtietokannan<br />
kahdeksalle ensimmäiselle ominaisvektorille on 99.97%. Taulukon 1<br />
perusteella Macbeth-tietokannalle tarvitaan sama määrä ominaisvektoreita kuin<br />
Munsell-tietokannalle.<br />
Taulukko 1: Informaatiosisältö suhteessa ominaisvektoreiden lukumäärään.<br />
Lukumäärä Munsell (%) Macbeth (%)<br />
1 92.15 86.38<br />
2 97.49 95.65<br />
3 99.52 99.24<br />
4 99.77 99.70<br />
5 99.90 99.87<br />
6 99.94 99.93<br />
7 99.96 99.96<br />
8 99.98 99.97<br />
9 99.99 99.99<br />
10 99.99 99.99<br />
Virheanalyysiä varten Munsell- ja Macbeth-tietokannat täytyy ensin rekonstruoida<br />
käyttäen kuvissa 2 – 3 esitettyjä aliavaruusmenetelmällä tuotettuja suotimia.<br />
Koska nämä suotimet ovat ortogonaalisia täytyy rekonstruointiin käyttää luvussa<br />
4 esitettyä kaavaa 21. Kuvassa 4 on esitetty Munsell- ja Macbeth-tietokantojen rekonstruointivirheet,<br />
jotka on laskettu kaavalla 32. Kuvasta 4 käy selville kaikkien<br />
yksittäisten Munsell- ja Macbeth-tietokantojen spektrien rekonstruointivirheet.<br />
32
Virheprosentti<br />
Munsell rekonstruointivirheet (PCA)<br />
20<br />
15<br />
10<br />
5<br />
Heijastus<br />
Keskimääräinen rekonstruointivirhe: 887<br />
1<br />
keskiarvo: 1.9505%<br />
0.8<br />
0.6<br />
0.4<br />
0.2<br />
Virheprosentti<br />
Macbeth rekonstruointivirheet (PCA)<br />
8<br />
6<br />
4<br />
2<br />
Heijastus<br />
Keskimääräinen rekonstruointivirhe: 2<br />
1<br />
keskiarvo: 2.3225%<br />
0.8<br />
0.6<br />
0.4<br />
0.2<br />
0<br />
0 500 1000<br />
Näyteindeksi<br />
Suurin rekonstruointivirhe:853<br />
1<br />
maksimi: 19.2861%<br />
0.8<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
Pienin rekonstruointivirhe:1068<br />
1<br />
minimi: 0.39747%<br />
0.8<br />
0<br />
0 5 10 15 20<br />
Näyteindeksi<br />
Suurin rekonstruointivirhe:10<br />
1<br />
maksimi: 7.2226%<br />
0.8<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
Pienin rekonstruointivirhe:12<br />
1<br />
minimi: 0.54636%<br />
0.8<br />
Heijastus<br />
0.6<br />
0.4<br />
Heijastus<br />
0.6<br />
0.4<br />
Heijastus<br />
0.6<br />
0.4<br />
Heijastus<br />
0.6<br />
0.4<br />
0.2<br />
0.2<br />
0.2<br />
0.2<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
a) b)<br />
Kuva 4: Rekonstruointivirheet kahdeksalla suotimella käyttäen aliavaruusmenetelmää:<br />
a) Munsell-tietokanta, b) Macbeth-tietokanta.<br />
Taulukossa 2 esitellään vastaavuudet väriluokittain Munsell-tietokannan värispektreihin.<br />
Suurin rekonstruointivirhe on spektrillä 853, joka kuuluu väriluokkaan<br />
sininen (B, Blue). Spektri 853 on esimerkki huonosti rekonstruoidusta spektristä.<br />
Tämän spektrin laskettu rekonstruointivirhe 19.29% on esitetty kuvassa 4 yhdessä<br />
spektrin 1068 kanssa, jolla on pienin laskettu rekonstruointivirhe eli 0.40%.<br />
Spektri 1068 kuuluu Munsellin väriluokkaan purppura (Purple) ja se on esimerkki<br />
hyvin rekonstruoidusta spektristä. Liitteeseen 3 on koottu Munsell-tietokannan<br />
virheanalyysin tulokset kaikista käsiteltävistä menetelmistä vertailun helpottamiseksi<br />
eri menetelmien välillä.<br />
Munsell-tietokannan keskimääräinen rekonstruointivirhe kahdeksalla kantavektorilla<br />
on 1.95%, aliavaruusmenetelmää käytettäessä. Kuvan 4 a spektri 887 on lähimpänä<br />
keskimääräistä rekonstruointivirhettä ja se kuuluu Munsellin väriluokkaan<br />
purppura-sininen (PB, Purple-Blue). Keskimääräinen rekonstruointivirhe<br />
riippuu suoraan rekonstruointiin käytettävien ominaisvektoreiden määrästä.<br />
Liitteessä 3 olevasta taulukosta 16 käy ilmi kuinka keskimääräinen rekonstruointivirheprosentti<br />
alenee sitä mukaa mitä useampaa ominaisvektoria käytetään rekonstruointiin.<br />
Samasta taulukosta käy selville aliavaruusmenetelmällä saavutetut<br />
tulokset 1 – 10:lle suotimelle sekä muiden menetelmien vastaavat tulokset. Tau-<br />
33
Taulukko 2: Spektrien vastaavuudet Munsellin väriluokkiin.<br />
Spektri Munsellin väriluokka<br />
1 - 139 Red (R)<br />
140 - 261 Yellow-Red (YR)<br />
262 - 404 Yellow-Green (YG)<br />
405 - 531 Green-Yellow (GY)<br />
532 - 646 Green (G)<br />
647 - 752 Blue-Green (BG)<br />
753 - 864 Blue (B)<br />
865 - 1001 Purple-Blue (PB)<br />
1002 - 1132 Purple (P)<br />
1133 - 1269 Red-Purple (RP)<br />
lukossa 3 esitellään yhteenveto tuloksista kuudelle ja kahdeksalle suotimelle aliavaruusmenetelmää<br />
käyttäen. Rekonstruointivirheprosenteista esitellään minimija<br />
maksimirekonstruointivirheen lisäksi keskimääräinen rekonstruointivirhe. Rekonstruointivirheet<br />
on laskettu kaavalla 32. Lisäksi on esitellään keskimääräinen<br />
neliövirhe (MSE) sekä keskimääräinen värivirhe (E L a b). Kaikissa kokeellisen<br />
osan laskennoissa käytetty valonlähde oli D 65 .<br />
Taulukko 3: Aliavaruusmenetelmällä saavutetut kuuden ja kahdeksan suotimen<br />
rekonstruointivirheet Munsell-tietokannalle.<br />
Suotimien lkm Min. Keskim. Maks. MSE E L a b <br />
6 0.53 3.18 24.66 0.0113 0.77<br />
8 0.40 1.95 19.29 0.0042 0.14<br />
Macbeth-tietokannan suurin rekonstruointivirhe on spektrillä 10. Spektri 10 on<br />
esimerkki huonosti rekonstruoidusta spektristä. Tämän spektrin laskettu rekonstruointivirhe<br />
7.22% on esitetty kuvassa 4 yhdessä spektrin 12 kanssa, jolla on<br />
pienin rekonstruointivirhe eli 0.55%. Spektri 12 on esimerkki hyvin rekonstruoi-<br />
34
dusta spektristä. Liitteeseen 4 on koottu Macbeth-tietokannan virheanalyysin tulokset<br />
kaikista käsiteltävistä menetelmistä vertailun helpottamiseksi eri menetelmien<br />
välillä. Liitteestä 5 löytyy tulostettuna Macbeth-tietokannan spektrit, joita<br />
voidaan vertailla liitteessä 2 olevaan Macbeth-väritauluun.<br />
Keskimääräinen rekonstruointivirhe Macbeth-tietokannalle aliavaruusmenetelmällä<br />
käyttäen kahdeksaa kantavektoria on 2.32%. Kuvassa 4 on esitetty lähimpänä<br />
keskimääräistä rekonstruointivirhettä oleva spektri 2. Liitteessä 4 olevista taulukoista<br />
käy selville aliavaruusmenetelmällä saavutetut tulokset 1 – 10:lle suotimille.<br />
Taulukossa 4 esitellään yhteenveto tuloksista kuudelle ja kahdeksalle suotimelle<br />
aliavaruusmenetelmää käyttäen. Rekonstruointivirheprosenteista esitellään<br />
minimi- ja maksimirekonstruointivirheen lisäksi keskimääräinen rekonstruointivirhe.<br />
Lisäksi esitellään keskimääräinen neliövirhe (MSE) sekä keskimääräinen<br />
värivirhe (E L a b ).<br />
Taulukko 4: Aliavaruusmenetelmällä saavutetut kuuden ja kahdeksan suotimen<br />
rekonstruointivirheet Macbeth-tietokannalle.<br />
Suotimien lkm Min. Keskim. Maks. MSE E L a b <br />
6 1.07 3.56 9.13 0.0131 0.33<br />
8 0.55 2.32 7.22 0.0053 0.26<br />
Olen ohjelmoinut Matlab-ohjelman, jonka avulla voidaan tulostaa tässä esitetyt<br />
aliavaruusmenetelmällä tuotetut suotimet sekä muut esitetyt tulokset. Ohjelmakoodi<br />
löytyy kokonaisuudessaan liitteestä 9. Ohjelmalla voidaan tulostaa lisäksi<br />
muidenkin kokeellisessa osassa esiteltävien menetelmien (SOM, c-means, PNN)<br />
tulokset.<br />
5.3 SOM<br />
Itseorganisoiva kartta on neuraaliverkkoihin perustuva menetelmä ja sitä voidaan<br />
käyttää sellaisten suotimien löytämiseen, joilla on positiiviset kertoimet. SOM on<br />
35
menetelmä, jolla voidaan etsiä väriryhmien keskustat väriavaruudesta. Opetuksen<br />
jälkeen neuraaliverkon painovektoreita voidaan käyttää suoraan värisuotimina optisen<br />
hahmontunnistuksen sovelluksissa.<br />
Tässä kokeessa on käytetty samoja Munsell- ja Macbeth-tietokantoja kuin edellä<br />
tarkastellussa aliavaruusmenetelmän kokeellisessa osassa. Näiden tietokantojen<br />
tarkemmat kuvaukset löytyvät luvusta 2.3.<br />
Syötedatana käytettiin Munsell- ja Macbeth-tietokantoja. Itseorganisoivalla kartalla<br />
saavutetut tulokset esitetään seuraavaksi. Neuronien lukumäärä Munselltietokannan<br />
kohdalla oli kahdeksan ja Macbeth-tietokannan kohdalla myös kahdeksan.<br />
Perustelut näiden lukumäärien käyttöön käytiin läpi luvussa 5.2 aliavaruusmenetelmän<br />
yhteydessä.<br />
Itseorganisoivan kartan suoritus alkaa normeeraamalla opetusjoukko siten, että jokaisen<br />
spektrin pituus on 1. Normeerauksen jälkeen painot alustetaan syötedatan<br />
minimi- ja maksimi-arvoilla, jonka jälkeen tapahtuu itse oppiminen. Alustuksen<br />
laadulla ei Kohosen (2002) mukaan ole merkitystä. Oppiminen toteutetaan tässä<br />
tapauksessa Matlab-ohjelmasta valmiina löytyvällä yksiulotteisen itseorganisoivan<br />
kartan avulla. Voittajaneuronin valinta tapahtuu kaavan 13 mukaan ja painojen<br />
päivitys tapahtuu kaavan 14 mukaan.<br />
Opetuskerroin laskee opetuksen aikana arvosta 0.9 lähelle arvoa nolla, arvoon<br />
0.01. Arvo 0.9 on järjestelyvaiheen opetuskerroin ja arvo 0.01 on vastaavasti hienosäätövaiheen<br />
opetuskerroin. Opetusjaksojen kestoksi on valittu 20000 ja 80000<br />
kierrosta. Järjestelyvaihe kestää 20000 kierrosta, jonka aikana opetuskerroin laskee<br />
arvosta 0.9 arvoon 0.01.<br />
Järjestelyvaiheen opetuskerroin on toteutettu ns. Power Series -kaavalla, joka on<br />
esitetty tarkemmin luvun 3.2 kaavalla 16. Hienosäätövaihe kestää 80000 kierrosta,<br />
jonka aikana opetuskerroin laskee lineaarisesti arvosta 0.01 arvoon 0. Näiden<br />
kierrosten suhteiden valinta perustuu Kohosen (2002) julkaisuun, jossa kerrotaan,<br />
36
että hienosäätövaiheen tulisi olla neljä kertaa järjestelyvaiheen pituinen. Kierrosten<br />
yhteismääräksi tässä tapauksessa kertyy yhteensä 100000 kierrosta.<br />
Kuvassa 5 on tulostettuna Power Series opetuskerroin kierrosten 0 – 20000 välillä<br />
eli järjestelyvaiheen aikana. Hienosäätövaiheen (20000 – 100000) aikana opetuskerroin<br />
on lineaarinen. SOM -menetelmällä tuotetut tulokset on saatu aikaan<br />
käyttäen kuvassa 5 olevaa opetuskerrointa.<br />
1<br />
0.9<br />
0.8<br />
0.7<br />
Opetuskerroin<br />
0.6<br />
0.5<br />
0.4<br />
0.3<br />
0.2<br />
0.1<br />
0<br />
10 20 30 40 50 60 70 80 90 100<br />
Kierrosten lukumäärä (tuhansia)<br />
Kuva 5: Esimerkki opetuskertoimesta.<br />
Naapuruston koko pienenee tässä kokeessa lineaarisesti arvosta 1 kohti arvoa 0,<br />
opetuksen aikana. Suurta naapuruston kokoa käytetään vain opetuksen alussa, jolloin<br />
se pienenee sopivalle tasolle. Jos naapuruston koko olisi koko opetuksen ajan<br />
nolla, niin silloin SOM -algoritmi vastaisi c-means algoritmia (Kohonen, 2002).<br />
Tuotetut suotimet esitellään kuvissa 6 – 7. Kuvassa 6 esitellään Munselltietokannasta<br />
tuotetut suotimet ja kuvassa 7 on vastaavasti Macbeth-tietokannasta<br />
tuotetut suotimet. Aikaisemmat kokeet ovat osoittaneet, että nämä suotimet virittä-<br />
37
vät väriavaruuden hyvin samanlaisesti kuin aliavaruuden ominaisvektorit (Hauta-<br />
Kasari & al., 1998). Mm. Munsellin värispektrit voidaan esittää hyvin tarkasti<br />
saaduilla suotimilla.<br />
0.2<br />
SOM: nro.1/8<br />
0.2<br />
SOM: nro.2/8<br />
0.2<br />
SOM: nro.5/8<br />
0.2<br />
SOM: nro.6/8<br />
0.15<br />
0.15<br />
0.15<br />
0.15<br />
0.1<br />
0.1<br />
0.1<br />
0.1<br />
0.05<br />
0.05<br />
0.05<br />
0.05<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
0.2<br />
SOM: nro.3/8<br />
0.2<br />
SOM: nro.4/8<br />
0.2<br />
SOM: nro.7/8<br />
0.2<br />
SOM: nro.8/8<br />
0.15<br />
0.15<br />
0.15<br />
0.15<br />
0.1<br />
0.1<br />
0.1<br />
0.1<br />
0.05<br />
0.05<br />
0.05<br />
0.05<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
a) b)<br />
Kuva 6: SOM -menetelmällä tuotetut suotimet Munsell-tietokannalle: a) nro. 1 –<br />
4, b) nro. 5 –8. Huomioi spektrien järjestys.<br />
0.2<br />
SOM: nro.1/8<br />
0.2<br />
SOM: nro.2/8<br />
0.2<br />
SOM: nro.5/8<br />
0.2<br />
SOM: nro.6/8<br />
0.15<br />
0.15<br />
0.15<br />
0.15<br />
0.1<br />
0.1<br />
0.1<br />
0.1<br />
0.05<br />
0.05<br />
0.05<br />
0.05<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
0.2<br />
SOM: nro.3/8<br />
0.2<br />
SOM: nro.4/8<br />
0.2<br />
SOM: nro.7/8<br />
0.2<br />
SOM: nro.8/8<br />
0.15<br />
0.15<br />
0.15<br />
0.15<br />
0.1<br />
0.1<br />
0.1<br />
0.1<br />
0.05<br />
0.05<br />
0.05<br />
0.05<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
a) b)<br />
Kuva 7: SOM -menetelmällä tuotetut suotimet Macbeth-tietokannalle: a) nro. 1 –<br />
4, b) nro. 5 –8. Huomioi spektrien järjestys.<br />
Testitapauksessa suotimien tuottamiseen Munsell-tietokannasta SOM -<br />
menetelmällä kului aikaa 800Mhz:n Duron prosessorilla ja 160Mb:n keskusmuistilla<br />
varustetulla PC -tietokoneella prosessoriajalla mitattuna 560.13<br />
sekuntia. Vastaavasti suotimien tuottamiseen Macbeth-tietokannasta kului aikaa<br />
38
525.14 sekuntia. Koska kuluva aika ei ole niinkään riippuvainen syötedatan<br />
koosta vaan oppimiseen käytettävästä ajasta eli kierroksista, ei Munsell- tai<br />
Macbeth-tietokannan käyttämisen välillä ole suuria eroja. Lisäksi alustuksen<br />
laatu vaikuttaa menetelmien ajoaikoihin. Huomattavaa on se, että oppimisen<br />
kesto oli molemmilla tietokannoilla 100 000 kierrosta. Luvun 5.6 taulukossa 12<br />
on kooste eri menetelmien ajoajoista.<br />
Virheanalyysiä varten tietokannat rekonstruoidaan kuvissa 6 – 7 olevien suotimien<br />
avulla. Rekonstruointiin käytettiin Munsell-tietokannan kohdalla luvussa 4<br />
esiteltyjä Wiener estimoinnin kaavoja 23 – 31. Macbeth-tietokannan kohdalla rekonstruointiin<br />
käytettiin luvun 4 pseudoinverssimenetelmän mukaista kaavaa 22.<br />
Kuvassa 8 esitellään Munsell- ja Macbeth-tietokantojen rekonstruointivirheet. Kuvasta<br />
8 käy selville kaikkien yksittäisten Munsell- ja Macbeth-tietokantojen spektrien<br />
rekonstruointivirheet.<br />
Virheprosentti<br />
Munsell rekonstruointivirheet (SOM)<br />
WE:Munsell<br />
15<br />
10<br />
5<br />
Heijastus<br />
Keskimääräinen rekonstruointivirhe: 418<br />
1<br />
keskiarvo: 2.2033%<br />
0.8<br />
0.6<br />
0.4<br />
0.2<br />
Virheprosentti<br />
Macbeth rekonstruointivirheet (SOM)<br />
7<br />
PI<br />
6<br />
5<br />
4<br />
3<br />
2<br />
1<br />
Heijastus<br />
Keskimääräinen rekonstruointivirhe: 11<br />
1<br />
keskiarvo: 2.6468%<br />
0.8<br />
0.6<br />
0.4<br />
0.2<br />
0<br />
0 500 1000<br />
Näyteindeksi<br />
Suurin rekonstruointivirhe:853<br />
1<br />
maksimi: 17.3807%<br />
0.8<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
Pienin rekonstruointivirhe:1165<br />
1<br />
minimi: 0.39881%<br />
0.8<br />
0<br />
0 5 10 15 20<br />
Näyteindeksi<br />
Suurin rekonstruointivirhe:15<br />
1<br />
maksimi: 6.627%<br />
0.8<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
Pienin rekonstruointivirhe:5<br />
1<br />
minimi: 1.6033e−007%<br />
0.8<br />
Heijastus<br />
0.6<br />
0.4<br />
Heijastus<br />
0.6<br />
0.4<br />
Heijastus<br />
0.6<br />
0.4<br />
Heijastus<br />
0.6<br />
0.4<br />
0.2<br />
0.2<br />
0.2<br />
0.2<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
a) b)<br />
Kuva 8: Rekonstruointivirheet kahdeksalla suotimella käyttäen SOM -<br />
menetelmää: a) Munsell-tietokanta, b) Macbeth-tietokanta.<br />
SOM -menetelmällä saavutetut tulokset on kerätty vertailun helpottamiseksi<br />
yhteen taulukkoon muiden menetelmien tulosten kanssa. Munsell-tietokannan<br />
virheanalyysin tulokset SOM -menetelmälle löytyvät liitteestä 3. Macbethtietokannan<br />
vastaavat tulokset löytyvät liitteestä 4. Taulukossa 5 esitellään yhteenveto<br />
tuloksista kuudelle ja kahdeksalle suotimelle SOM -menetelmää käyttäen<br />
39
Munsell-tietokannalle. Kuvan 8 a tulokset on saavutettu käyttäen rekonstruointimenetelmänä<br />
Wiener estimointia. Apriori-datana käytettiin Munsell-tietokantaa.<br />
Taulukko 5: SOM -menetelmällä saavutetut kuuden ja kahdeksan suotimen tulokset Munselltietokannalle.<br />
LKM 1 Menetelmä Aprioridata Min. Keskim. Maks. MSE E L a b <br />
6 PI 2 - 0.55 3.83 22.18 0.0265 1.02<br />
6 WE 3 Munsell 0.56 3.49 32.80 0.0165 0.79<br />
6 WE Macbeth 1.14 4.91 42.50 0.0314 1.19<br />
8 PI - 0.43 2.28 15.65 0.0097 0.25<br />
8 WE Munsell 0.40 2.20 17.38 0.0054 0.24<br />
8 WE Macbeth 0.77 3.76 18.23 0.0186 0.53<br />
Taulukossa 6 esitellään vastaavasti yhteenveto tuloksista kuudella ja kahdeksalla<br />
suotimella Macbeth-tietokantaa käyttäen. Kuvassa 8 b Macbeth-tietokannan kohdalla<br />
on käytetty pseudoinverssimenetelmää, koska sillä saavutettu keskimääräinen<br />
rekonstruointivirhe on pienempi kuin Wiener estimoinnilla, kahdeksalle suotimelle.<br />
Taulukko 6: SOM -menetelmällä saavutetut kuuden ja kahdeksan suotimen tulokset<br />
Macbeth-tietokannalle.<br />
LKM 1 Menetelmä Aprioridata Min. Keskim. Maks. MSE E L a b <br />
6 PI 2 - 1.15 4.95 15.30 0.0472 0.60<br />
6 WE 3 Munsell 1.22 4.51 12.81 0.0347 0.56<br />
6 WE Macbeth 1.14 3.84 10.38 0.0163 0.46<br />
8 PI - 0.00 2.65 6.63 0.0201 0.32<br />
8 WE Munsell 0.73 3.78 10.19 0.0283 0.47<br />
8 WE Macbeth 0.66 2.76 7.66 0.0091 0.33<br />
1 Suotimien lukumäärä<br />
2 Pseudoinverssi<br />
3 Wiener estimointi<br />
40
5.4 C-means<br />
Seuraavaksi sovelletaan luvussa 3.3 esiteltyä c-means -algoritmia käytäntöön. Tarkoitus<br />
on tuottaa nopeasti ja tehokkaasti värisuotimia, joita voidaan käyttää suoraan<br />
optisen hahmontunnistuksen sovelluksiin. Tässä kokeessa on käytetty samoja<br />
Munsell- ja Macbeth-tietokantoja kuin aiemmin luvuissa 5.2 ja 5.3. Näiden<br />
tietokantojen tarkemmat kuvaukset löytyvät luvusta 2.3. Seuraavaksi esitellään c-<br />
means -algoritmilla saavutetut tulokset.<br />
Aluksi käytettävä tietokanta normeerataan ja sen jälkeen c-means -algoritmi valitsee<br />
mielivaltaisesti halutun määrän spektrejä tietokannasta. Tämän jälkeen algoritmia<br />
käydään läpi, kunnes ryhmien keskusvektorit eivät enää muutu tai määrättyjen<br />
maksimikierrosten raja tulee vastaan. Tässä kokeessa maksimikierrosten<br />
lukumääräksi on asetettu 50 kierrosta. Tuloksena saadaan kuvissa 9 ja 10 esitetyt<br />
suotimet.<br />
0.2<br />
c−Means: nro.1/8<br />
0.2<br />
c−Means: nro.2/8<br />
0.2<br />
c−Means: nro.5/8<br />
0.2<br />
c−Means: nro.6/8<br />
0.15<br />
0.15<br />
0.15<br />
0.15<br />
0.1<br />
0.1<br />
0.1<br />
0.1<br />
0.05<br />
0.05<br />
0.05<br />
0.05<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
0.2<br />
c−Means: nro.3/8<br />
0.2<br />
c−Means: nro.4/8<br />
0.2<br />
c−Means: nro.7/8<br />
0.2<br />
c−Means: nro.8/8<br />
0.15<br />
0.15<br />
0.15<br />
0.15<br />
0.1<br />
0.1<br />
0.1<br />
0.1<br />
0.05<br />
0.05<br />
0.05<br />
0.05<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
a) b)<br />
Kuva 9: C-means -menetelmällä tuotetut suotimet Munsell-tietokannalle: a) nro.<br />
1 – 4, b) nro. 5 –8. Huomioi spektrien järjestys.<br />
Testitapauksessa suotimet tuottava ohjelma saatiin suoritettua huomattavasti nopeammin<br />
kuin luvussa 5.3 kuvatulla SOM -menetelmällä. C-means -algoritmin<br />
suorittamiseen kuluva aikaa riippuu ryhmittelyn tarvitsemista kierrosten lukumäärästä<br />
sekä alustuksesta. Testitapauksessa suotimien tuottamiseen Munsell-<br />
41
0.2<br />
c−Means: nro.1/8<br />
0.2<br />
c−Means: nro.2/8<br />
0.2<br />
c−Means: nro.5/8<br />
0.2<br />
c−Means: nro.6/8<br />
0.15<br />
0.15<br />
0.15<br />
0.15<br />
0.1<br />
0.1<br />
0.1<br />
0.1<br />
0.05<br />
0.05<br />
0.05<br />
0.05<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
0.2<br />
c−Means: nro.3/8<br />
0.2<br />
c−Means: nro.4/8<br />
0.2<br />
c−Means: nro.7/8<br />
0.2<br />
c−Means: nro.8/8<br />
0.15<br />
0.15<br />
0.15<br />
0.15<br />
0.1<br />
0.1<br />
0.1<br />
0.1<br />
0.05<br />
0.05<br />
0.05<br />
0.05<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
a) b)<br />
Kuva 10: C-means -menetelmällä tuotetut suotimet Macbeth-tietokannalle: a) nro.<br />
1 – 4, b) nro. 5 –8. Huomioi spektrien järjestys.<br />
tietokannasta kului aikaa 800Mhz:n Duron prosessorilla ja 160Mb:n keskusmuistilla<br />
varustetulla PC -tietokoneella prosessoriajalla mitattuna 13.96 sekuntia ja<br />
kierroksia tarvittiin 34. Suotimien tuottamiseen Macbeth-tietokannasta kului aikaa<br />
0.22 sekuntia ja kierroksia tarvittiin 16. Luvun 5.6 taulukossa 12 on kooste eri<br />
menetelmien ajoajoista.<br />
Kuvassa 9 esitettyjen Munsell-tietokannasta tuotettujen suotimien tuottamiseen<br />
kului 29 kierrosta ja vastaavasti kuvassa 10 esitettyjen Macbeth-tietokannasta tuotettujen<br />
suotimien tuottamiseen kului 9 kierrosta. Keskimäärin suotimien tuottamiseen<br />
tarvittiin 3 – 50 kierrosta.<br />
Virheanalyysiä varten tietokannat rekonstruoidaan käyttäen kuvissa 9 – 10 esiteltyjä<br />
c-means -algoritmilla tuotettuja suotimia. Koska suotimet ovat SOM -<br />
menetelmällä tuotettujen suotimien tapaan ei ortogonaalisia, käytetään rekonstruointiin<br />
Munsell- ja Macbeth-tietokannan kohdalla luvussa 4 esiteltyjä Wiener<br />
estimoinnin kaavoja 23 – 31.<br />
Kuvassa 11 esitellään Munsell- ja Macbeth-tietokantojen rekonstruointivirheet.<br />
Kuvasta 11 käy selville kaikkien yksittäisten Munsell- ja Macbeth-tietokantojen<br />
spektrien rekonstruointivirheet.<br />
42
Virheprosentti<br />
Munsell rekonstruointivirheet (c−Means)<br />
WE:Munsell<br />
15<br />
10<br />
5<br />
Heijastus<br />
Keskimääräinen rekonstruointivirhe: 298<br />
1<br />
keskiarvo: 2.1707%<br />
0.8<br />
0.6<br />
0.4<br />
0.2<br />
Macbeth rekonstruointivirheet (c−Means)<br />
7<br />
WE:Macbeth<br />
6<br />
5<br />
4<br />
3<br />
2<br />
1<br />
Virheprosentti<br />
Heijastus<br />
Keskimääräinen rekonstruointivirhe: 18<br />
1<br />
keskiarvo: 2.647%<br />
0.8<br />
0.6<br />
0.4<br />
0.2<br />
0<br />
0 500 1000<br />
Näyteindeksi<br />
Suurin rekonstruointivirhe:853<br />
1<br />
maksimi: 18.0898%<br />
0.8<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
Pienin rekonstruointivirhe:1165<br />
1<br />
minimi: 0.36453%<br />
0.8<br />
0<br />
0 5 10 15 20<br />
Näyteindeksi<br />
Suurin rekonstruointivirhe:14<br />
1<br />
maksimi: 6.023%<br />
0.8<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
Pienin rekonstruointivirhe:20<br />
1<br />
minimi: 0.4336%<br />
0.8<br />
Heijastus<br />
0.6<br />
0.4<br />
Heijastus<br />
0.6<br />
0.4<br />
Heijastus<br />
0.6<br />
0.4<br />
Heijastus<br />
0.6<br />
0.4<br />
0.2<br />
0.2<br />
0.2<br />
0.2<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
a) b)<br />
Kuva 11: Rekonstruointivirheet kahdeksalla suotimella käyttäen c-means -<br />
menetelmää: a) Munsell-tietokanta, b) Macbeth-tietokanta.<br />
C-means -algoritmilla saavutetut tulokset on kerätty yhteen taulukkoon muiden<br />
menetelmien tulosten vertailun helpottamiseksi. Munsell-tietokannan virheanalyysi<br />
c-means -menetelmää käyttäen löytyy liitteestä 3 ja Macbeth-tietokannan<br />
virheanalyysi löytyy puolestaan liitteestä 4.<br />
Taulukossa 7 esitellään tulokset Munsell-tietokannalle kahdeksalla suotimella<br />
käyttäen c-means menetelmää. Huomattavaa on, että kuvassa 11 kohdassa a esitetyt<br />
tulokset on saavutettu käyttäen rekonstruointimenetelmänä Wiener estimointia<br />
ja aprioridatana on käytetty Munsell-tietokantaa.<br />
Taulukossa 8 esitellään yhteenveto tuloksista kahdeksalla suotimella Macbethtietokantaa<br />
käyttäen. Macbeth-tietokannan kohdalla on kuvassa 11 esitetty tulokset,<br />
jotka on saavutettu käyttäen Wiener estimointia, mutta aprioridatana on käytetty<br />
Munsell-tietokannan sijasta Macbeth-tietokantaa.<br />
Equitzin (1989) mukaan PNN -algoritmia voidaan käyttää alustuksena c-means<br />
-algoritmille, jolloin saavutetaan parempi tehokkuus kuin kummallakaan algoritmilla<br />
erikseen. Tällä tavalla c-means -algoritmin tulokset saadaan paranemaan,<br />
mutta tulokset eivät kuitenkaan yllä samalle tasolle kuin luvussa 5.5<br />
43
Taulukko 7: C-means -menetelmällä saavutetut kuuden ja kahdeksan suotimen tulokset<br />
Munsell-tietokannalle.<br />
LKM 1 Menetelmä Aprioridata Min. Keskim. Maks. MSE E L a b <br />
6 PI 2 - 0.54 3.11 33.06 0.0171 0.30<br />
6 WE 3 Munsell 0.54 3.19 36.29 0.0135 0.30<br />
6 WE Macbeth 1.10 4.62 36.76 0.0284 0.65<br />
8 PI - 0.44 2.39 15.76 0.0104 0.29<br />
8 WE Munsell 0.36 2.17 18.09 0.0055 0.27<br />
8 WE Macbeth 0.84 3.78 17.41 0.0207 0.58<br />
Taulukko 8: C-means -menetelmällä saavutetut kuuden ja kahdeksan suotimen tulokset<br />
Macbeth-tietokannalle.<br />
LKM 1 Menetelmä Aprioridata Min. Keskim. Maks. MSE E L a b <br />
6 PI 2 - 1.62 4.51 11.27 0.0386 1.13<br />
6 WE 3 Munsell 0.99 5.41 24.78 0.0614 1.19<br />
6 WE Macbeth 0.70 4.50 16.48 0.0244 1.05<br />
8 PI - 0.00 2.69 6.76 0.0200 0.39<br />
8 WE Munsell 0.80 3.35 8.82 0.0198 0.43<br />
8 WE Macbeth 0.43 2.65 6.02 0.0087 0.39<br />
esiteltävät PNN -algoritmilla yksinään aikaan saadut tulokset. Edellä esitellyllä<br />
Munsell-tietokannasta tuotetulla kahdeksan suotimen joukolla keskimääräinen<br />
rekonstruointivirhe alenee 2.17:sta prosentista 2.08:aan prosenttiin. Macbethtietokannan<br />
kohdalla kahdeksan suotimen joukolle keskimääräinen rekonstruointivirhe<br />
alenee 2.65:stä prosentista 2.50:een prosenttiin. Näistä tuloksista voidaan<br />
tehdä se johtopäätös, että alustuksen laatu vaikuttaa huomattavasti c-means -<br />
algoritmilla saavutettuihin tuloksiin.<br />
1 Suotimien lukumäärä<br />
2 Pseudoinverssi<br />
3 Wiener estimointi<br />
44
Tässä osassa todettiin, että c-means -algoritmia käyttävä menetelmä tuottaa nopeammin<br />
värisuotimia optisen hahmontunnistuksen sovelluksia varten kuin edellä<br />
luvussa 5.3 esitelty SOM -menetelmä. Lisäksi c-means -algoritmia varten käyttäjän<br />
tarvitsee asettaa vähemmän parametreja kuin SOM -menetelmässä.<br />
5.5 PNN<br />
Viimeisenä menetelmänä sovelletaan käytäntöön Equitzin vuonna 1989 esittelemää<br />
PNN -algoritmia. Equitz esitteli täydellisen haun -algoritmin sekä nopean<br />
haun -algoritmin, joista käsittelemme nyt täydellisen haun -algoritmia. Algoritmi<br />
3 esiteltiin luvussa 3.4. Tarkoitus on saada aikaan SOM- ja c-means -menetelmien<br />
tuottamien suotimien tasoisia tai parempi suotimia, joita voidaan käyttää suoraan<br />
optisissa sovelluksissa. Suotimet olisi tarkoitus tuottaa ohjelmallisesti nopeasti.<br />
Tässä kokeessa on käytetty samoja Munsell- ja Macbeth-tietokantoja kuin aiemmin<br />
luvuissa 5.2, 5.3 ja 5.4. Näiden tietokantojen tarkemmat kuvaukset löytyvät<br />
luvusta 2.3. Seuraavaksi esitellään PNN -algoritmilla saavutetut tulokset.<br />
Algoritmin periaate on lyhyesti se, että jokaisella kierroksella etsitään kaksi lähintä<br />
ryhmää ja korvataan ne yhdellä ryhmällä. Etäisyyksien ja uuden ryhmän<br />
laskemisessa käytetään apuna luvussa 3.4 esiteltyjä kaavoja 19 ja 20. Tuloksena<br />
saadaan kuvissa 12 ja 13 esitellyt suotimet.<br />
Suotimet tuottava PNN -algoritmi on suuremmilla syötteillä, kuten Munselltietokannalla<br />
hidas. Laskettu aikakompleksisuus on luokkaa O(N 3 ). Suotimien<br />
tuottamiseen Munsell-tietokannasta meni aikaa 800Mhz:n Duron prosessorilla ja<br />
160Mb:n keskusmuistilla varustetulla PC -tietokoneella prosessoriajalla mitattuna<br />
26772 sekuntia eli lähes 7 ja puoli tuntia. Algoritmin ensimmäiset kierrokset<br />
ovat hitaita, koska silloin läpikäytäviä värispektrejä on 1269 kappaletta. Algoritmin<br />
edetessä, värispektrien määrä tietokannassa pienenee. Tämä johtuu siitä, että<br />
uuden ryhmän tilalta poistuu kaksi yhdistettyä ryhmää, kunnes ryhmiä on jäljellä<br />
haluttu määrä. Tästä seuraa se, että algoritmin suoritus nopeutuu loppua kohti.<br />
45
0.2<br />
Pnn: nro.1/8<br />
0.2<br />
Pnn: nro.2/8<br />
0.2<br />
Pnn: nro.5/8<br />
0.2<br />
Pnn: nro.6/8<br />
0.15<br />
0.15<br />
0.15<br />
0.15<br />
0.1<br />
0.1<br />
0.1<br />
0.1<br />
0.05<br />
0.05<br />
0.05<br />
0.05<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
0.2<br />
Pnn: nro.3/8<br />
0.2<br />
Pnn: nro.4/8<br />
0.2<br />
Pnn: nro.7/8<br />
0.2<br />
Pnn: nro.8/8<br />
0.15<br />
0.15<br />
0.15<br />
0.15<br />
0.1<br />
0.1<br />
0.1<br />
0.1<br />
0.05<br />
0.05<br />
0.05<br />
0.05<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
a) b)<br />
Kuva 12: PNN -menetelmällä tuotetut suotimet Munsell-tietokannalle: a) nro. 1 –<br />
4, b) nro. 5 –8. Huomioi spektrien järjestys.<br />
Vastaavasti Macbeth-tietokannan kohdalla on kyseessä huomattavasti Munselltietokantaa<br />
pienempi syötejoukko (24 värispektriä), joten PNN -algoritmin suoritus<br />
on huomattavasti nopeampi ajallisesti. Em. laitteistolla aikaa kului kahdeksan<br />
suotimen tuottamiseen Macbeth-tietokannasta prosessoriajalla mitattuna 0.27<br />
sekuntia. Kierroksia tähän tulokseen pääsemiseksi vaadittiin 16. Luvun 5.6 taulukossa<br />
12 on kooste eri menetelmien ajoajoista.<br />
Virheanalyysiä varten tietokannat rekonstruoidaan käyttäen kuvissa 12 – 13 esiteltyjä<br />
PNN -algoritmilla tuotettuja suotimia. Rekonstruointiin käytettiin Munselltietokannan<br />
kohdalla luvussa 4 esiteltyjä Wiener estimoinnin kaavoja 23 – 31.<br />
Macbeth-tietokannan kohdalla rekonstruointiin käytettiin luvun 4 pseudoinverssimenetelmän<br />
mukaista kaavaa 22. Kuvassa 14 esitellään Munsell- ja Macbethtietokantojen<br />
rekonstruointivirheet. Kuvasta 14 käy selville kaikkien yksittäisten<br />
Munsell- ja Macbeth-tietokantojen spektrien rekonstruointivirheet.<br />
PNN -algoritmilla saavutetut tulokset on kerätty yhteen taulukkoon, jotta vertailu<br />
muiden menetelmien tuloksiin olisi helpompaa. Munsell-tietokannan virheanalyysi<br />
PNN -menetelmää käyttäen löytyy liitteestä 3 ja Macbeth-tietokannan virheanalyysi<br />
löytyy puolestaan liitteestä 4. Liitteet 3 ja 4 on suunniteltu siten, että<br />
ensin esitellään minimirekonstruointivirheet, jonka jälkeen esitellään keskimää-<br />
46
0.2<br />
Pnn: nro.1/8<br />
0.2<br />
Pnn: nro.2/8<br />
0.2<br />
Pnn: nro.5/8<br />
0.2<br />
Pnn: nro.6/8<br />
0.15<br />
0.15<br />
0.15<br />
0.15<br />
0.1<br />
0.1<br />
0.1<br />
0.1<br />
0.05<br />
0.05<br />
0.05<br />
0.05<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
0.2<br />
Pnn: nro.3/8<br />
0.2<br />
Pnn: nro.4/8<br />
0.2<br />
Pnn: nro.7/8<br />
0.2<br />
Pnn: nro.8/8<br />
0.15<br />
0.15<br />
0.15<br />
0.15<br />
0.1<br />
0.1<br />
0.1<br />
0.1<br />
0.05<br />
0.05<br />
0.05<br />
0.05<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
a) b)<br />
Kuva 13: PNN -menetelmällä tuotetut suotimet Macbeth-tietokannalle: a) nro. 1<br />
– 4, b) nro. 5 –8. Huomioi spektrien järjestys.<br />
räinen rekonstruointivirhe ja maksimirekonstruointivirhe. Lisäksi esitellään keskimääräinen<br />
neliövirhe ja keskimääräinen värivirhe.<br />
Taulukossa 9 esitellään Munsell-tietokannan tuloksien yhteenveto kuudelle ja kahdeksalle<br />
suotimelle käyttäen PNN -menetelmää. Huomattavaa on, että kuvassa 14<br />
a esitetyt tulokset on saavutettu käyttäen rekonstruointimenetelmänä Wiener estimointia<br />
ja aprioridatana on käytetty Munsell-tietokantaa.<br />
Taulukko 9: PNN -menetelmällä saavutetut kuuden ja kahdeksan suotimen tulokset Munselltietokannalle.<br />
LKM 1 Menetelmä Aprioridata Min. Keskim. Maks. MSE E L a b <br />
6 PI 2 - 0.60 4.53 38.70 0.0397 1.60<br />
6 WE 3 Munsell 0.57 4.16 22.95 0.0270 1.40<br />
6 WE Macbeth 1.09 6.48 39.54 0.0589 2.30<br />
8 PI - 0.49 2.12 15.00 0.0073 0.26<br />
8 WE Munsell 0.34 1.96 16.25 0.0048 0.25<br />
8 WE Macbeth 0.66 3.58 19.06 0.0198 0.56<br />
47
Virheprosentti<br />
Munsell rekonstruointivirheet (PNN)<br />
15 WE:Munsell<br />
10<br />
5<br />
Heijastus<br />
Keskimääräinen rekonstruointivirhe: 1239<br />
1<br />
keskiarvo: 1.9603%<br />
0.8<br />
0.6<br />
0.4<br />
0.2<br />
Virheprosentti<br />
Macbeth rekonstruointivirheet (PNN)<br />
6<br />
PI<br />
5<br />
4<br />
3<br />
2<br />
1<br />
Heijastus<br />
Keskimääräinen rekonstruointivirhe: 17<br />
1<br />
keskiarvo: 2.2609%<br />
0.8<br />
0.6<br />
0.4<br />
0.2<br />
0<br />
0 500 1000<br />
Näyteindeksi<br />
Suurin rekonstruointivirhe:1058<br />
1<br />
maksimi: 16.2489%<br />
0.8<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
Pienin rekonstruointivirhe:832<br />
1<br />
minimi: 0.33802%<br />
0.8<br />
0<br />
0 5 10 15 20<br />
Näyteindeksi<br />
Suurin rekonstruointivirhe:9<br />
1<br />
maksimi: 5.893%<br />
0.8<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
Pienin rekonstruointivirhe:10<br />
1<br />
minimi: 1.9282e−011%<br />
0.8<br />
Heijastus<br />
0.6<br />
0.4<br />
Heijastus<br />
0.6<br />
0.4<br />
Heijastus<br />
0.6<br />
0.4<br />
Heijastus<br />
0.6<br />
0.4<br />
0.2<br />
0.2<br />
0.2<br />
0.2<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
0<br />
400 500 600 700<br />
Aallonpituus (nm)<br />
a) b)<br />
Kuva 14: Rekonstruointivirheet kahdeksalla suotimella käyttäen PNN -<br />
menetelmää: a) Munsell-tietokanta, b) Macbeth-tietokanta.<br />
Taulukossa 10 esitellään vastaavasti yhteenveto tuloksista kuudelle ja kahdeksalle<br />
suotimelle Macbeth-tietokantaa käyttäen. Macbeth-tietokannan kohdalla on kuvassa<br />
14 kohdassa b on esitetty tulokset, jotka on saavutettu käyttäen pseudoinverssimenetelmää.<br />
Taulukko 10: PNN -menetelmällä saavutetut kuuden ja kahdeksan suotimen tulokset<br />
Macbeth-tietokannalle.<br />
LKM 1 Menetelmä Aprioridata Min. Keskim. Maks. MSE E L a b <br />
6 PI 2 - 0.50 4.19 15.40 0.0370 0.49<br />
6 WE 3 Munsell 0.94 4.32 13.99 0.0333 0.38<br />
6 WE Macbeth 1.09 3.78 11.40 0.0157 0.35<br />
8 PI - 0.00 2.26 5.89 0.0164 0.26<br />
8 WE Munsell 0.73 3.08 8.22 0.0169 0.32<br />
8 WE Macbeth 0.51 2.60 5.31 0.0079 0.29<br />
1 Suotimien lukumäärä<br />
2 Pseudoinverssi<br />
3 Wiener estimointi<br />
48
Tässä osassa todettiin, että PNN -algoritmia käyttävä menetelmä tuottaa suuremmilla<br />
syötejoukoilla (Munsell) hitaammin värisuotimia optisen hahmontunnistuksen<br />
sovelluksia varten kuin edellä luvuissa 5.3 ja 5.4 esitellyt menetelmät. Pienemmillä<br />
syötejoukoilla, kuten Macbeth-tietokannalla, PNN -menetelmä on nopea<br />
suoritukseltaan. Lisäksi PNN -menetelmällä saadaan aikaiseksi toisistaan eroavia<br />
ja muodoiltaan sileitä värisuotimia.<br />
5.6 Tulosten vertailua<br />
Tässä luvussa esitellään tiivistettynä luvuissa 5.2 – 5.5 esitetyt tulokset ja vertaillaan<br />
niitä muihin vastaaviin tuloksiin. Vertailukohteita kirjallisuudesta kokeellisen<br />
osan tuloksille on vähän. Tämä johtuu siitä, että useimmissa kokeissa on käytetty<br />
erilaisia värispektritietokantoja kuin tämän tutkielman kokeellisessa osassa. Tieteellinen<br />
julkaisu, jossa on tehty kokeita vastaavilla värispektritietokannoilla kuin<br />
tämän tutkielman kokeellisessa osassa on mm. Murakami & al. vuonna 2001 tekemä.<br />
Murakami & al. ovat käyttäneet Macbeth-tietokantaa, jossa on 18 värispektriä.<br />
Tämä tietokanta poikkeaa luvussa 2.3 esitellystä Macbeth-tietokannasta siten, että<br />
siitä on jätetty pois kuusi viimeistä spektriä, jotka ovat valkoinen, harmaan eri<br />
värisävyt ja musta. Liitteessä 5 on kuvattu kaikki 24 spektriä, joista 18 ensimmäistä<br />
on otettu mukaan Murakami & al. tekemään kokeeseen.<br />
Vertailua varten taulukossa 11 esitellään kokeellisessa osassa esiteltyjen menetelmien<br />
tulokset vastaavalla 18 spektrin Macbeth-tietokannalla kuin Murakamin &<br />
al. saavuttamat tulokset. Kaikki tulokset ovat värieron (E L a b) arvoja. Kaikissa<br />
kokeellisen osan laskennoissa käytetty valonlähde oli D 65 , mutta taulukossa 11<br />
esitetyt tulokset on kaikki laskettu valonlähteen A alla. Rekonstruointimenetelmänä<br />
Murakami & al. olivat käyttäneet kokeissaan Wiener estimointia.<br />
Taulukossa 11 on kuvattu tulokset kolmella, kuudella ja yhdeksällä suotimella.<br />
Toisessa sarakkeessa on Murakami & al. saavuttamat tulokset ja sarakkeissa 3<br />
49
Taulukko 11: Tulosten vertailua värieron (E L a b) avulla Murakami & al.<br />
(2001) tuloksiin. Tietokantana kaikissa on 18 värispektrin Macbeth-tietokanta.<br />
Suotimien LKM Murakami SOM C-means PNN<br />
3 5.836 5.714 8.336 5.749<br />
6 1.553 0.407 0.638 0.555<br />
9 1.002 0.081 0.101 0.108<br />
– 5 on kokeellisessa osassa esitellyillä menetelmillä saavutetut tulokset. Tuloksista<br />
voidaan päätellä, että kolmella suotimella menetelmissä ei ole vielä suuria<br />
eroja, mutta kuudella suotimella väriero (E L a b) on tässä tutkielmassa esitellyillä<br />
menetelmillä kolmasosa siitä mitä Murakami & al. saavuttamat tulokset ja<br />
yhdeksällä suotimella väriero (E L a b) on enää kymmenesosa Murakami & al.<br />
saavuttamista tuloksista.<br />
Taulukossa 12 esitellään eri menetelmillä kuluvat ajat kahdeksan suotimen tuottamiseen<br />
prosessoriajalla mitattuna. Taulukkoon on otettu mukaan myös PCA -<br />
menetelmä vertailun vuoksi.<br />
Taulukko 12: Prosessoriajalla mitatut ajoajat eri menetelmille kahdeksaa suodinta<br />
tuotettaessa. Ajat ovat ilmoitettu sekunneissa.<br />
Tietokanta PCA SOM C-means PNN<br />
Munsell 0.77 560.13 13.96 26772<br />
Macbeth 0.17 525.14 0.22 0.27<br />
Lopuksi taulukkoihin 13 – 14 on kerätty yhteenvetona kaikki tulokset kuudelle<br />
ja kahdeksalle suotimelle. Taulukossa 13 on yhteenvetona tulokset Munselltietokannalle<br />
ja taulukossa 14 on yhteenvetona tulokset 24:n spektrin Macbethtietokannalle.<br />
Molemmissa taulukoissa esitellään keskimääräinen virheprosentti.<br />
50
Liitteissä 6 ja 7 esitellään Munsell- ja Macbeth-tietokantojen spektrien sijoittuminen<br />
a b - ja xy-koordinaatistoon. Lisäksi liitteissä 6 ja 7 esitellään edellä käsitellyillä<br />
menetelmillä tulokseksi saatujen kahdeksan värisuotimen joukkojen sijoittuminen<br />
a b - ja xy -koordinaatistoihin. Liitteessä 8 esitellään spektrien sijoittuminen<br />
kuuteen ja kahdeksaan ryhmään Munsell- ja Macbeth-tietokannoilla.<br />
Taulukko 13: Yhteenveto kaikkien menetelmien tuloksista kuudella ja kahdeksalla<br />
suotimella Munsell-tietokannalle. Rekonstruointiin on käytetty SOM-, c-means-,<br />
ja PNN -menetelmien kohdalla Wiener estimointia. Aprioridatana oli Munselltietokanta.<br />
Suotimien LKM PCA SOM C-means PNN<br />
Virhe (%) - - - -<br />
6 suodinta 3.18 3.49 3.11 4.16<br />
8 suodinta 1.95 2.20 2.17 1.96<br />
E L a b - - - -<br />
6 suodinta 0.77 0.79 0.30 1.40<br />
8 suodinta 0.14 0.24 0.27 0.25<br />
MSE - - - -<br />
6 suodinta 0.0113 0.0165 0.0135 0.0270<br />
8 suodinta 0.0042 0.0054 0.0055 0.0048<br />
PNN -menetelmällä päästään Munsell- ja Macbeth tietokantojen kohdalla keskimääräisessä<br />
rekonstruointivirheessä, kahdeksalla suotimella, lähimmäksi PCA<br />
-menetelmällä saavutettua tulosta. Munsell-tietokannalla tulos PCA- ja PNN -<br />
menetelmän välillä on lähes sama (1.95 vs. 1.96) ja Macbeth-tietokannan kohdalla<br />
PNN -menetelmän tulos on jopa PCA -menetelmää parempi.<br />
Keskimääräisen värieron (E L a b) kohdalta kahdeksaa suodinta tarkasteltaessa<br />
huomataan, että Munsell-tietokannan kohdalla SOM-, c-means-, ja PNN -<br />
menetelmillä saavutetut tulokset ovat lähes samoja. Vertailukohteena olevassa<br />
PCA -menetelmässä keskimääräinen väriero (E L a b) on pienin. Macbeth-<br />
51
Taulukko 14: Yhteenveto kaikkien menetelmien tuloksista kuudella ja kahdeksalla<br />
suotimella Macbeth-tietokannalle. Rekonstruointiin c-means -menetelmän kohdalla<br />
on käytetty Wiener estimointia, jossa aprioridata oli Macbeth-tietokanta.<br />
SOM- ja PNN -menetelmien kohdalla rekonstruointiin on käytetty pseudoinverssimenetelmää.<br />
Suotimien LKM PCA SOM C-means PNN<br />
Virhe (%) - - - -<br />
6 suodinta 3.56 3.84 4.50 3.78<br />
8 suodinta 2.32 2.65 2.65 2.26<br />
E L a b - - - -<br />
6 suodinta 0.33 0.46 1.05 0.35<br />
8 suodinta 0.26 0.32 0.39 0.26<br />
MSE - - - -<br />
6 suodinta 0.0131 0.0163 0.0244 0.0157<br />
8 suodinta 0.0053 0.0091 0.0087 0.0079<br />
tietokannan kohdalla PNN -menetelmällä saavutetaan sama keskimääräinen väriero<br />
(E L a b) kuin PCA -menetelmällä.<br />
Keskimääräistä neliövirhettä kahdeksan suotimen kohdalta tarkasteltaessa huomataan,<br />
että Munsell-tietokannan kohdalla PNN -menetelmällä saavutetaan PCA<br />
-menetelmää lähin tulos. Macbeth-tietokannankin kohdalla lähimmäksi PCA -<br />
menetelmän tulosta päästään PNN -menetelmällä.<br />
52
6 Menetelmien ja tulosten pohdinta<br />
Tässä tutkielmassa tutkittiin värispektritietokannoille tapahtuvaa värisuodinten<br />
suunnittelua. Kolmiulotteiset värinäkömallit perustuvat ihmisen värinäköjärjestelmään<br />
ja siksi ne ovat hallinneet väritutkimusta ja sen sovelluksia pitkään. Kolmiulotteisissa<br />
värinäkömalleissa on kuitenkin haittana esimerkiksi metamerismi.<br />
Spektriin perustuvan värien esityksen etuna on se, että se välttää metamerismin ja<br />
spektrejä voidaan mitata myös ultravioletti- tai infrapuna-alueella.<br />
Väriaistimuksen aiheuttaja eli elektromagneettinen spektri voidaan mitata fysikaalisesti.<br />
Värien mittauslaitteistot voidaan jakaa kolmeen ryhmään: spektrivärimittareihin,<br />
kolmisuotimisiin värimittareihin ja monisuotimisiin värimittareihin.<br />
Useiden tutkimusryhmien mielenkiinnon aiheena ovat viime aikoina olleet värispektrikamerat,<br />
jotka käyttävät useampaa kuin kolmea, mutta kuitenkin vähempää<br />
kuin kymmentä värisuodinta spektritiedon tallentamiseen.<br />
Värisuotimen suunnittelussa on tarkoituksena tuottaa optiseen hahmontunnistukseen<br />
soveltuvia värisuotimia. Värisuotimien tulisi sisältää vain positiivisia kertoimia<br />
ja niiden tulisi virittää väriavaruus niin tarkasti kuin mahdollista. Värisuotimien<br />
tuli myös erottua toinen toisistaan ja niiden tulisi olla muodoiltaan sileitä, ei<br />
piikikkäitä.<br />
Tässä tutkielmassa esiteltiin neljä eri menetelmää, joiden avulla värispektritietokantoja<br />
voidaan ryhmitellä. Nämä menetelmät ovat: PCA, SOM, c-means ja PNN.<br />
Tilastollisiin hahmontunnistusmenetelmiin kuuluva aliavaruusmenetelmä on samantapainen<br />
menetelmä kuin PCA. Aliavaruusmenetelmällä tuotettuja suotimia<br />
ei voida kuitenkaan käyttää suoraan optisessa hahmontunnistuksessa, koska sillä<br />
tuotetut ominaisvektorit ovat ortogonaalisia ja ne sisältävät negatiivisia kertoimia.<br />
Lisäksi ominaisvektorit 5 – 8 sisältävät jo monimutkaisia muotoja ja ovat optisesti<br />
vaikeampia toteuttaa. Aliavaruusmenetelmällä tuotettuja suotimia voidaan kuitenkin<br />
käyttää kannan määrittämiseen, jolla spektridata voidaan määrittää tarkasti.<br />
Aliavaruusmenetelmän tuloksia voidaan verrata muiden menetelmien tuloksiin.<br />
53
SOM -menetelmä perustuu ohjaamattomaan oppimiseen. SOM -menetelmässä on<br />
useita asetettavia parametreja, jotka riippuvat toinen toisistaan ja varsinkin syötedatasta.<br />
Kierrosten lukumäärä on parametreistä helpoin asetettava ja siihen tulisi<br />
käyttää aikaa niin paljon kuin sitä on mahdollista käyttää. Opetuskertoimen<br />
ja alustavan naapuruston koon asettaminen onkin sitten hankalampaa. Yleisimmin<br />
käytettyjä opetuskerroin muotoja ovat lineaarinen funktio ja käänteisesti aikaan<br />
verrannollinen funktio. Naapuruston koon pitäisi olla lähempänä arvoa yksi<br />
kuin ryhmien lukumäärä, koska muutoin neuronien liikkumavapaus alenee. Jos<br />
naapuston koko on nolla, vastaa SOM -algoritmi c-means -menetelmää. SOM -<br />
menetelmän haittoja on useat asetettavat parametrit. Lisäksi SOM -menetelmä ei<br />
ole suoritukseltaan kovin nopea algoritmi.<br />
C-means -algoritmi tunnetaan useammalla eri nimellä, mutta periaate kaikissa<br />
on kuitenkin sama. C-means kuuluu ohjaamattoman oppimisen algoritmeihin. C-<br />
means -algoritmin suoritus alkaa alustavalla ratkaisulla, jota parannetaan kunnes<br />
edistystä ei enää saavuteta. Kierrosten lukumäärä riippuu alustuksen laadusta ja<br />
syötedatasta. Yleensä tarvitaan noin 10 – 50 kierrosta hyvään tulokseen, kun aloitetaan<br />
satunnaisesta alustuksesta. Etuna c-means -algoritmissa on se, että se on<br />
laskennallisesti yksinkertainen ja se on suoritukseltaan nopea isoillakin syötejoukoilla.<br />
C-means -algoritmin suorituksen aikana voi tulla tilanne, jossa syntyy tyhjiä<br />
ryhmiä. Tämä tilanne saadaan kuitenkin korjattua valitsemalla satunnaisesti<br />
syötedatasta uusi tunnusvektori tyhjän ryhmän tilalle ja suoritusta voidaan siten<br />
jatkaa.<br />
PNN -algoritmista esiteltiin ns. täydellisen haun versio, josta on olemassa nopeutettujakin<br />
versioita. Näissä nopeutetuissa versioissa pidetään yllä lähempien naapureiden<br />
taulua ja vältetään tarpeetonta etäisyyksien uudelleen laskemista. PNN<br />
-algoritmi on aikakompleksisuudeltaan luokkaa O(N 3 ). PNN -algoritmi on hidas<br />
suurilla syötejoukoilla, mutta pienemmillä syötejoukoilla kuten esimerkiksi<br />
Macbeth-tietokannalla nopeus on c-means -algoritmin luokkaa.<br />
Kaikilla kolmella käsitellyllä menetelmällä saadaan aikaiseksi varsin samanlaisia<br />
värisuotimia, eivätkä erot ole kovin suuria. Keskimääräisiä rekonstruointivir-<br />
54
heprosentteja vertailemalla eri menetelmien erot tulevat parhaiten esille. Tutkielmassa<br />
esiteltiin rekonstruointivirheiden lisäksi keskimääräinen neliövirhe ja keskimääräinen<br />
värivirhe (E L a b) eri menetelmien tulosten vertailemiseksi. Näidenkään<br />
virhemittojen perusteella eri menetelmillä saavutetuissa tuloksissa ei ollut<br />
suuria eroja. Menetelmien suoritusnopeudessa erot vastaavasti ovat suuria.<br />
SOM -menetelmä häviää suorituksen nopeudessa c-means -menetelmälle sekä<br />
suuremmilla, että pienemmillä syötejoukoilla. Koska tuotetut suotimet ovat hyvin<br />
samanlaisia ja SOM -menetelmässä on c-means menetelmään verrattuna useita<br />
asetettavia parametrejä, osuu valinta näiden kahden menetelmän välillä c-means<br />
-menetelmään.<br />
PNN -algoritmilla saa tuotettua pienillä syötejoukoilla kuten Macbethtietokannalla<br />
nopeasti värisuotimia. PNN -algoritmi on nopeudeltaan pienillä syötejoukoilla<br />
c-means -algoritmin tasoa. Suurimmilla syötejoukoilla kuten Munselltietokannalla<br />
erot kuitenkin tulevat esiin. Siinä missä c-means -algoritmi suoriutuu<br />
sekunneilla laskien, kuluu PNN -algoritmilla aikaa useita tunteja. Valinta PNN<br />
-algoritmin ja c-means -algoritmin välillä on selvä, varsinkin kun molemmilla menetelmillä<br />
tuotetut suotimet ovat hyvin samanlaisia. Näistä kolmesta menetelmästä:<br />
SOM, c-means ja PNN, on c-means suositeltavin menetelmä värisuotimien<br />
tuottamiseen.<br />
55
Viitteet<br />
Baronti, S., Casini, A., Lotti, F., Porcinai, S. (1998) Multispectral imaging system<br />
for the mapping of pigments in works of art by use of principal-component<br />
analysis. Applied Optics 37 (8), 1299 – 1309.<br />
Delport, V., Liesch, D. (1994) Fuzzy-c-means algorithm for codebook design in<br />
vector quantization. Electronics Letters 30 (13), 1025 – 1026.<br />
Drew, M.S., Funt, B.V. (1992) Natural Metamers. CVGIP: Image Understanding<br />
56 (2), 139 – 151.<br />
Equitz, W.H. (1989) A New Vector Quantization Clustering Algorithm. IEEE<br />
Transactions on Acoustics, Speech and Signal Processing 37 (10), 1568 – 1575.<br />
Fränti, P. (1999) On the usefulness of self-organizing maps for the clustering<br />
problem in vector quantization. Proceedings of the 11th Scandinavian Conference<br />
on Image Analysis (SCIA’99), Kangerlussuaq, Greenland, 415-422.<br />
Fränti, P., Kaukoranta, T. (1999) Fast Implementation of the Exact PNN Algorithm.<br />
TUCS Technical Report No 295, Turku Centre for Computer Science.<br />
Haneishi, H., Hasegawa, H., Tsumura, N., Miyake, Y. (1997) Design of Color<br />
Filters for Recording Artworks. Proceedings of the 50th Annual Conference of<br />
Imaging Science and Technology, Cambridge, Mass, 369 – 372.<br />
Haneishi, H., Hasegawa, T., Hosoi, A., Yokoyama, Y., Tsumura, N., Miyake, Y.<br />
(2000) System design for accurately estimating the spectral reflectance of art paintings.<br />
Applied Optics 39 (35), 6621 – 6632.<br />
Hardeberg, J.Y. (1999) Acquisition and reproduction of color images: colorimetric<br />
and multispectral approaches. Väitöskirja, Ecole Nationale Superieure des Telecommunications.<br />
56
Hauta-Kasari, M. (1999) Computational Techniques for Spectral Image Analysis.<br />
Väitöskirja, Lappeenrannan teknillinen korkeakoulu.<br />
Hauta-Kasari, M., Wang, W., Toyooka, S., Parkkinen, J., Lenz, R. (1998) Unsupervised<br />
Filtering of Munsell Spectra. Proceedings of the 3rd Asian Conference<br />
on Computer Vision (ACCV’98), Hong Kong, 248 – 255.<br />
Hauta-Kasari, M., Miyazawa, K., Toyooka, S., Parkkinen, J. (1999) Spectral vision<br />
system for measuring color images. Journal of the Optical Society of America<br />
A 16 (10), 2352 – 2362.<br />
Hauta-Kasari, M., <strong>Karttunen</strong>, P. (2002) Broad-band Color Filter Design for Spectral<br />
Camera. International Congress of Imaging Science (ICIS’02), Tokyo, Japan,<br />
486 – 487.<br />
Hyvönen, E., Karanta, I., Syrjänen, M. (1993) Tekoälyn ensyklopedia. Oy Gaudeamus<br />
Ab, Hämeenlinna.<br />
Jaaskelainen, T., Parkkinen, J., Toyooka, S. (1990) Vector-subspace model for<br />
color representation. Journal of the Optical Society of America A 7 (4), 725 –<br />
730.<br />
Jaaskelainen, T., Toyooka, S., Izawa, S., Kadono, H. (1992) Color classification by<br />
vector subspace method and its optical implementation using liquid crystal spatial<br />
light modulator. Optics Communications 89 (1), 23 – 29.<br />
Jain, A.K., Dubes, R.C. (1988) Algorithms for Clustering Data. Prentice Hall,<br />
New Jersey.<br />
Kaiser, P.K., Boynton, R.M. (1996) Human Color Vision, 2nd ed. Optical Society<br />
of America, Washington DC.<br />
57
Kaukoranta, T., Fränti, P., Nevalainen, O. (1998) Fast and space efficient PNN<br />
algorithm with delayed distance calculations. Proceedings of the 8th International<br />
Conference on Computer Graphics and Visualization (GraphiCon’98), Moscow,<br />
Russia, 239-244.<br />
Kohonen, T. (1982) Self-organized formation of topologically correct feature<br />
maps. Biological Cybernetics 43, 59 – 69.<br />
Kohonen, T. (1990) The Self-Organizing Map. Proceedings of the IEEE 78 (9),<br />
1464 – 1480.<br />
Kohonen, T. (1993a) Physiological Interpretation of the Self-Organizing Map Algorithm.<br />
Neural Networks 6 (8), 895 – 905.<br />
Kohonen, T. (1993b) Things You Haven’t Heard about the Self-Organizing Map.<br />
Proceedings of International Conference on Neural Networks (ICNN’93), Piscataway,<br />
NJ, 1147 – 1156.<br />
Kohonen, T. (1997) Self-Organizing Maps. Springer-Verlag, Berlin Heidelberg.<br />
Kohonen, T. (1998) The self-organizing map. Neurocomputing 21 (1-3), 1–6.<br />
Kohonen, T. (2002) SOM Implementation in SOM Toolbox.<br />
http://www.cis.hut.fi/projects/somtoolbox/ (15.3.2002).<br />
Koikkalainen, P. (1994) Progress with the tree-structured self-organizing<br />
map. Proceedings of the 11th European Conference on Artificial Intelligence<br />
(ECAI’94), Wiley & Sons, 211 – 215.<br />
Koikkalainen, P. (2002) Tilastollisen hahmontunnistuksen perusteet.<br />
http://erin.mit.jyu.fi/pako/kurssit/th2000/ (10.3.2002).<br />
Lenz, R., Österberg, M., Hiltunen, J., Jaaskelainen, T., Parkkinen, J. (1996) Unsupervised<br />
filtering of color spectra. Journal of the Optical Society of America A 13<br />
(7), 1315 – 1324.<br />
58
Linde, Y., Buzo, A., Gray, R.M. (1980) An Algorithm for Vector Quantizer Design.<br />
IEEE Transactions on Communications 28 (1), 84 – 95.<br />
McCamy, C.S., Marcus, H., Davidson, J.G. (1976) A Color rendition chart. Journal<br />
of Applied Photographic Engineering 2, 95 – 99.<br />
McQueen, J. (1967) Some methods of classification and analysis of multivariate<br />
observations. Proceedings of the Fifth Berkeley Symposium on Mathemtical Statistics<br />
and Probability, 281 – 297.<br />
Miyazawa, K., Hauta-Kasari, M., Toyooka, S. (2001) Rewritable Broad-Band Color<br />
Filters for Spectral Image Analysis. Optical Review 8 (2), 112 – 119.<br />
Munsell (1976) Munsell Book of Color, Matte Finish Collection. Munsell Color,<br />
Baltimore.<br />
Murakami, Y., Takashi, O., Yamaguchi, M., Ohyama, N., Komiya, Y. (2001)<br />
Spectral reflectance estimation from multi-band image using color chart. Optics<br />
Communications 188,47–54.<br />
Parkkinen, J., Jaaskelainen, T. (1987) Color representation using statistical pattern<br />
recognition. Applied Optics 26 (19), 4240 – 4245.<br />
Parkkinen, J.P.S., Hallikainen, J., Jaaskelainen, T. (1989) Characteristic spectra of<br />
Munsell colors. Journal of the Optical Society of America A 6 (2), 318 – 322.<br />
Schalkoff, R. (1992 ) Pattern Recognition: Statistical, Structural and Neural Approaches.<br />
John Wiley & Sons, New York.<br />
Sharma, G., Trussell, H.J., Vrhel, M.J. (1998) Optimal Nonnegative Color Scanning<br />
Filters. IEEE Transactions on Image Processing 7 (1), 129 – 133.<br />
Theodoridis, S., Koutroumbas, K. (1998) Pattern Recognition. Academic Press,<br />
San Diego.<br />
59
Tominaga, S. (1996) Multichannel vision system for estimating surface and illumination<br />
functions. Journal of the Optical Society of America A 13 (11), 2163 –<br />
2173.<br />
Tsumura, N., Sato, H., Hasegawa, T., Haneishi, H., Miyake, Y. (1999) Limitation<br />
of Color Samples for Spectral Estimation from Sensor Responses in Fine Art<br />
Painting. Optical Review 6 (1), 57 – 61.<br />
Vora, P.L., Trussell, H.J. (1993) Measure of goodness of a set of color-scanning<br />
filters. Journal of the Optical Society of America A 10 (7), 1499 – 1508.<br />
Vora, P.L., Trussell, H.J. (1997a) Mathematical Methods for the Design of Color<br />
Scanning Filters. IEEE Transactions on Image Processing 6 (2), 312 – 320.<br />
Vora, P.L., Trussell, H.J. (1997b) Mathematical Methods for the Analysis of Color<br />
Scanning Filters. IEEE Transactions on Image Processing 6 (2), 321 – 327.<br />
Vrhel, M.J., Trussell, H.J. (1992) Color correction using principal components.<br />
Color Research and applications 17 (5), 328 – 338.<br />
Vrhel, M.J., Trussell, H.J. (1994) Filter Considerations in Color Correction. IEEE<br />
Transactions on Image Processing 3 (2), 147 – 161.<br />
Vrhel, M.J., Trussell, H.J. (1995) Optimal Color Filters in the Presence of Noise.<br />
IEEE Transactions on Image Processing 4 (6), 814 – 823.<br />
Vrhel, M.J., Trussell, H.J., Bosch, J. (1995) Design and realization of optimal<br />
color filters for multi-illuminant color correction. Journal of Electronic Imaging 4<br />
(1), 6 – 14.<br />
Wyszecki, G., Stiles, W.S. (1982) Color Science: Concepts and Methods, Quantitative<br />
Data and Formulae, 2nd ed. John Wiley & Sons, New York.<br />
Zhang, X., Wandell, B.A. (1996) A Spatial Extension of CIELAB for Digital Color<br />
Image Reproduction. Proceedings, Society for Information Display Symposium<br />
Tecnical Digest 27, 731 – 734.<br />
60
Liite 1: Esimerkki Munsell-värikirjan sivusta<br />
Kuva 15: Munsell-värikirjan sivu, 5G.<br />
61
Liite 2: Macbeth-väritaulu<br />
Kuva 16: GretagMacbeth ColorChecker -väriesitystaulu.<br />
62
Liite 3: Munsell-tietokannan virheanalyysi<br />
Taulukko 15: Munsell-tietokannan pienimmät rekonstruointivirheet.<br />
63
Taulukko 16: Munsell-tietokannan keskimääräiset rekonstruointivirheet.<br />
64
Taulukko 17: Munsell-tietokannan suurimmat rekonstruointivirheet.<br />
65
Taulukko 18: Munsell-tietokannan keskimääräiset neliövirheet.<br />
66
Taulukko 19: Munsell-tietokannan värivirheet.<br />
67
Liite 4: Macbeth-tietokannan virheanalyysi<br />
Taulukko 20: Macbeth-tietokannan pienimmät rekonstruointivirheet.<br />
68
Taulukko 21: Macbeth-tietokannan keskimääräiset rekonstruointivirheet.<br />
69
Taulukko 22: Macbeth-tietokannan suurimmat rekonstruointivirheet.<br />
70
Taulukko 23: Macbeth-tietokannan keskimääräiset neliövirheet.<br />
71
Taulukko 24: Macbeth-tietokannan värivirheet.<br />
72
Liite 5: Macbeth-tietokannan spektrit<br />
1<br />
1<br />
1<br />
1<br />
1<br />
1<br />
1 2 3 4 5 6<br />
0.5<br />
0.5<br />
0.5<br />
0.5<br />
0.5<br />
0.5<br />
0<br />
0<br />
0<br />
0<br />
0<br />
0<br />
400 500 600 700 400 500 600 700 400 500 600 700 400 500 600 700 400 500 600 700 400 500 600 700<br />
1<br />
1<br />
1<br />
1<br />
1<br />
1<br />
7 8 9 10 11 12<br />
0.5<br />
0.5<br />
0.5<br />
0.5<br />
0.5<br />
0.5<br />
0<br />
0<br />
0<br />
0<br />
0<br />
0<br />
400 500 600 700 400 500 600 700 400 500 600 700 400 500 600 700 400 500 600 700 400 500 600 700<br />
1<br />
1<br />
1<br />
1<br />
1<br />
1<br />
13 14 15 16 17 18<br />
0.5<br />
0.5<br />
0.5<br />
0.5<br />
0.5<br />
0.5<br />
0<br />
0<br />
0<br />
0<br />
0<br />
0<br />
400 500 600 700 400 500 600 700 400 500 600 700 400 500 600 700 400 500 600 700 400 500 600 700<br />
1<br />
1<br />
1<br />
1<br />
1<br />
1<br />
20 21 22 23 24<br />
0.5<br />
0.5<br />
0.5<br />
0.5<br />
0.5<br />
0.5<br />
19<br />
0<br />
0<br />
0<br />
0<br />
0<br />
0<br />
400 500 600 700 400 500 600 700 400 500 600 700 400 500 600 700 400 500 600 700 400 500 600 700<br />
Kuva 17: Macbeth-tietokannan spektrit Macbeth-väritaulun mukaisessa järjestyksessä.<br />
73
Liite 6: Ryhmien keskustat a b -koordinaatistossa<br />
80<br />
80<br />
60<br />
60<br />
40<br />
40<br />
20<br />
20<br />
b*<br />
b*<br />
0<br />
0<br />
−20<br />
−20<br />
−40<br />
−40<br />
−60<br />
−60 −40 −20 0 20 40 60<br />
a*<br />
−60<br />
−60 −40 −20 0 20 40 60<br />
a) b)<br />
Kuva 18: a) Munsell-tietokanta, b) SOM -menetelmällä tuotetut väriryhmien keskustat.<br />
80<br />
80<br />
a*<br />
60<br />
60<br />
40<br />
40<br />
20<br />
20<br />
b*<br />
b*<br />
0<br />
0<br />
−20<br />
−20<br />
−40<br />
−40<br />
−60<br />
−60 −40 −20 0 20 40 60<br />
a*<br />
−60<br />
−60 −40 −20 0 20 40 60<br />
a) b)<br />
Kuva 19: a) C-means -menetelmällä tuotetut väriryhmien keskustat, b) PNN -<br />
menetelmällä tuotetut väriryhmien keskustat.<br />
a*<br />
74
80<br />
80<br />
60<br />
60<br />
40<br />
40<br />
20<br />
20<br />
b*<br />
b*<br />
0<br />
0<br />
−20<br />
−20<br />
−40<br />
−40<br />
−60<br />
−60 −40 −20 0 20 40 60<br />
a*<br />
−60<br />
−60 −40 −20 0 20 40 60<br />
a) b)<br />
Kuva 20: a) Macbeth-tietokanta, b) SOM -menetelmällä tuotetut väriryhmien keskustat.<br />
80<br />
80<br />
a*<br />
60<br />
60<br />
40<br />
40<br />
20<br />
20<br />
b*<br />
b*<br />
0<br />
0<br />
−20<br />
−20<br />
−40<br />
−40<br />
−60<br />
−60 −40 −20 0 20 40 60<br />
a*<br />
−60<br />
−60 −40 −20 0 20 40 60<br />
a) b)<br />
Kuva 21: a) C-means -menetelmällä tuotetut väriryhmien keskustat, b) PNN -<br />
menetelmällä tuotetut väriryhmien keskustat.<br />
a*<br />
75
Liite 7: Ryhmien keskustat xy -koordinaatistossa<br />
1<br />
1<br />
0.9<br />
0.9<br />
0.8<br />
0.8<br />
0.7<br />
0.7<br />
0.6<br />
0.6<br />
y<br />
0.5<br />
y<br />
0.5<br />
0.4<br />
0.4<br />
0.3<br />
0.3<br />
0.2<br />
0.2<br />
0.1<br />
0.1<br />
0<br />
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1<br />
x<br />
0<br />
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1<br />
a) b)<br />
Kuva 22: a) Munsell-tietokanta, b) SOM -menetelmällä tuotetut väriryhmien keskustat.<br />
1<br />
1<br />
x<br />
0.9<br />
0.9<br />
0.8<br />
0.8<br />
0.7<br />
0.7<br />
0.6<br />
0.6<br />
y<br />
0.5<br />
y<br />
0.5<br />
0.4<br />
0.4<br />
0.3<br />
0.3<br />
0.2<br />
0.2<br />
0.1<br />
0.1<br />
0<br />
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1<br />
x<br />
0<br />
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1<br />
a) b)<br />
Kuva 23: a) C-means -menetelmällä tuotetut väriryhmien keskustat, b) PNN -<br />
menetelmällä tuotetut väriryhmien keskustat.<br />
x<br />
76
1<br />
1<br />
0.9<br />
0.9<br />
0.8<br />
0.8<br />
0.7<br />
0.7<br />
0.6<br />
0.6<br />
y<br />
0.5<br />
y<br />
0.5<br />
0.4<br />
0.4<br />
0.3<br />
0.3<br />
0.2<br />
0.2<br />
0.1<br />
0.1<br />
0<br />
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1<br />
x<br />
0<br />
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1<br />
a) b)<br />
Kuva 24: a) Macbeth-tietokanta, b) SOM -menetelmällä tuotetut väriryhmien keskustat.<br />
1<br />
1<br />
x<br />
0.9<br />
0.9<br />
0.8<br />
0.8<br />
0.7<br />
0.7<br />
0.6<br />
0.6<br />
y<br />
0.5<br />
y<br />
0.5<br />
0.4<br />
0.4<br />
0.3<br />
0.3<br />
0.2<br />
0.2<br />
0.1<br />
0.1<br />
0<br />
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1<br />
x<br />
0<br />
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1<br />
a) b)<br />
Kuva 25: a) C-means -menetelmällä tuotetut väriryhmien keskustat, b) PNN -<br />
menetelmällä tuotetut väriryhmien keskustat.<br />
x<br />
77
Liite 8: Spektrien sijoittuminen ryhmiin<br />
Munsell-tietokanta sisältää 1269 värispektriä ja Macbeth-tietokanta sisältää 24 värispektriä.<br />
Näiden spektrien sijoittumista kuuteen ja kahdeksaan ryhmään SOM,<br />
c-means ja PNN -menetelmillä kuvataan taulukoissa 25 – 28. Taulukot vastaavat<br />
luvuissa 5.3 – 5.5 esiteltyjä tuloksia.<br />
Taulukko 25: Spektrien sijoittuminen kuuteen ryhmään Munsell-tietokannan kohdalla,<br />
käytettäessä SOM-, c-means-, ja PNN- menetelmiä.<br />
Menetelmä 1 2 3 4 5 6<br />
SOM 131 174 175 454 210 125<br />
c-means 131 126 342 311 200 159<br />
PNN 129 107 322 349 164 198<br />
Taulukko 26: Spektrien sijoittuminen kahdeksaan ryhmään Munsell-tietokannan<br />
kohdalla, käytettäessä SOM-, c-means-, ja PNN- menetelmiä.<br />
Menetelmä 1 2 3 4 5 6 7 8<br />
SOM 88 131 135 298 287 95 119 116<br />
c-means 74 134 139 294 285 109 119 115<br />
PNN 89 125 131 335 272 82 106 129<br />
Taulukko 27: Spektrien sijoittuminen kuuteen ryhmään Macbeth-tietokannan kohdalla,<br />
käytettäessä SOM-, c-means-, ja PNN- menetelmiä.<br />
Menetelmä 1 2 3 4 5 6<br />
SOM 4 8 3 3 2 4<br />
c-means 4 7 2 6 2 3<br />
PNN 2 6 3 5 4 4<br />
78
Taulukko 28: Spektrien sijoittuminen kahdeksaan ryhmään Macbeth-tietokannan<br />
kohdalla, käytettäessä SOM-, c-means-, ja PNN- menetelmiä.<br />
Menetelmä 1 2 3 4 5 6 7 8<br />
SOM 3 1 3 6 2 2 4 3<br />
c-means 4 1 2 7 2 2 3 3<br />
PNN 2 2 3 6 2 1 3 5<br />
79
Liite 9: Ohjelmakoodi<br />
80
Printed by <strong>Pasi</strong> <strong>Karttunen</strong><br />
May 28, 02 10:35 koodit.txt<br />
Page 1/10<br />
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−<br />
% Spektri, <strong>Pasi</strong> T. <strong>Karttunen</strong>, 8.8.2001 − 4.3.2002.<br />
May 28, 02 10:35 koodit.txt<br />
Page 2/10<br />
end<br />
end<br />
% Valitaan käytettävä menetelmä.<br />
menetelma = input(’Valitse menetelmä: (1) PCA, (2) SOM, (3) C−means,<br />
(4) PNN ’);<br />
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−<br />
% C−means −algoritmi.<br />
function [B] = Fcmeans(menetelma, tietokanta, data, lukumaara)<br />
% Valitaan käytettävä tietokanta.<br />
tietokanta = input(’Valitse tietokanta: (1) Munsell, (2) Macbeth ’);<br />
if tietokanta == 1<br />
load munsell400_700_2;<br />
data = munsell;<br />
elseif tietokanta == 2<br />
load macbeth400_700_2;<br />
data = macbeth;<br />
end<br />
% Valitaan tuotettavien suotimien lukumäärä.<br />
lukumaara = input(’Valitse suotimien lukumäärä (1 − 151): ’);<br />
% Ladataan mahdolliset talletetut suotimet.<br />
lataus = input(’Ladataanko talletetut suotimet (1) Ei, (2) Kyllä: ’);<br />
if lataus == 1<br />
if menetelma == 1<br />
[B] = Fpca(menetelma, tietokanta, data, lukumaara);<br />
elseif menetelma == 2<br />
[B] = Fsom(menetelma, tietokanta, data, lukumaara);<br />
elseif menetelma == 3<br />
[B] = Fcmeans(menetelma, tietokanta, data, lukumaara);<br />
elseif menetelma == 4<br />
[B] = Fpnn(menetelma, tietokanta, data, lukumaara);<br />
end<br />
Ftalletus(menetelma, tietokanta, lukumaara, B);<br />
elseif lataus == 2<br />
lopetus = 0;<br />
jatko = 0;<br />
while lopetus == 0<br />
tiedosto = num2str(input(’Anna ladattavan tiedoston nimi, ilman<br />
.mat −päätettä (esim. pcamu5): ’,’s’));<br />
nimi = ([tiedosto,’.mat’]);<br />
if exist(nimi) == 2<br />
(load(nimi));<br />
B = B;<br />
lopetus = 1;<br />
else<br />
disp(’Ei löydy annetun nimistä tiedostoa.’);<br />
jatko = input(’(1) Yritetään uudella nimellä, (2) Lopetaan: ’);<br />
if jatko == 2<br />
lopetus = 1;<br />
end<br />
end<br />
end<br />
if jatko == 2<br />
disp(’Käynnistä ohjelma uudestaan!’);<br />
break;<br />
else<br />
% Tulostetaan kantavektorijoukko B.<br />
Ftulostus(menetelma, tietokanta, data, lukumaara, B);<br />
% Rekonstruointivirheiden laskeminen ja tulostus.<br />
Frekonstruktio(menetelma, tietokanta, data, B);<br />
% Informaatiosisällön laskeminen ja tulostus.<br />
Finformaatiosisalto(data, lukumaara);<br />
lkm = lukumaara;<br />
alkm = lukumaara;<br />
[x, y] = size(data);<br />
datanorm = normc(data);<br />
[temp] = Funify(data, lukumaara);<br />
mu = datanorm(:,temp(1:lkm));<br />
D = zeros(lkm,y);<br />
kierros = 0;<br />
old2 = 0;<br />
ditera = 50;<br />
% Kysytään c−means −algoritmin maksimikierroksia.<br />
itera = input([’Anna maksimikierrosten lukumäärä (enter = ’,<br />
int2str(ditera), ’): ’]);<br />
if isempty(itera)<br />
itera = ditera;<br />
end;<br />
% C−means −algoritmi.<br />
for ii = 1:itera<br />
if lkm < alkm<br />
apuA = floor(rand*(y−1));<br />
randomillaLisattavanIndeksi = apuA + 1;<br />
muUusiIndeksi = lkm + 1;<br />
mu(:,muUusiIndeksi) = datanorm(:,randomillaLisattavanIndeksi);<br />
end<br />
old = mu;<br />
kierros = kierros + 1<br />
% Laskee etäisyydet tunnusvektoreihin.<br />
for i = 1:lkm,<br />
D(i,:) = sum((repmat(mu(:,i),1,y) − datanorm).^2);<br />
end;<br />
% Siirtää piirrevektorin siihen ryhmään, johon sen etäisyys on pienin.<br />
if lkm == 1<br />
classes = ones(1,y);<br />
else<br />
[foo, classes] = min(D);<br />
end;<br />
% Laskee ryhmien keskiarvot.<br />
for i = 1:lkm,<br />
mu(:,i) = mean(datanorm(:,find(classes == i))’)’;<br />
end;<br />
mu = mu(:,isnan(sum(mu))==0);<br />
old = old(:,isnan(sum(mu))==0);<br />
% Jos ryhmät ovat samat, lopetetaan.<br />
sum(sum(abs(mu − old)));<br />
if (old2 == sum(sum(abs(mu − old))))<br />
break;<br />
end;<br />
old2 = sum(sum(abs(mu − old)));<br />
if sum(sum(abs(mu − old))) < 0.1;<br />
end;<br />
end;<br />
B = mu;<br />
break;<br />
Tuesday May 28, 2002 koodit.txt<br />
1/5
Printed by <strong>Pasi</strong> <strong>Karttunen</strong><br />
May 28, 02 10:35 koodit.txt<br />
Page 3/10<br />
lukumaara = lkm;<br />
May 28, 02 10:35 koodit.txt<br />
Page 4/10<br />
function [B] = Fpca(menetelma, tietokanta, data, lukumaara)<br />
% Tulostetaan kantavektorijoukko B.<br />
Ftulostus(menetelma, tietokanta, data, lukumaara, B);<br />
% Rekonstruointivirheiden laskeminen ja tulostus.<br />
Frekonstruktio(menetelma, tietokanta, data, B);<br />
[x,y] = size(data);<br />
% Korrelaatiomatriisin R ominaisvektorit.<br />
R = (data*data’)/y;<br />
[evectors, evalues] = eig(R);<br />
% Informaatiosisällön laskeminen ja tulostus.<br />
Finformaatiosisalto(data, lukumaara);<br />
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−<br />
% Informaatiosisällön laskeminen ja tulostus.<br />
function Finformaatiosisalto(data, lukumaara)<br />
[x, y] = size(data);<br />
% Korrelaatiomatriisi R.<br />
R = (data * data’)/y;<br />
[evectors, evalues] = eig(R);<br />
% Lajitellaan ominaisvektorit ominaisarvojen mukaan.<br />
[evsort, evind] = sort(diag(evalues));<br />
B = evectors(:,evind(x:−1:1));<br />
evals = evsort(evind(x:−1:(x−lukumaara+1)));<br />
B = B(:,1:lukumaara);<br />
% Tulostetaan kantavektorijoukko B.<br />
Ftulostus(menetelma, tietokanta, data, lukumaara, B);<br />
% Rekonstruointivirheiden laskeminen ja tulostus.<br />
Frekonstruktio(menetelma, tietokanta, data, B);<br />
% Kaikkien ominaisvektoreiden yhteenlaskettu ominaisarvo.<br />
N = 0;<br />
for j = 1:x;<br />
N = N + sum(evalues(:,j));<br />
end;<br />
if lukumaara == 1<br />
% Ensimmäisten (n) ominaisvektorin ominaisarvot.<br />
n = 0;<br />
for i = (x − (1 − 1)):x<br />
n = n + sum(evalues(:,i));<br />
k = n/N;<br />
end<br />
IS(:,1) = k;<br />
else<br />
% Ensimmäisten (n) ominaisvektorin ominaisarvot.<br />
end<br />
for kierros = 1:lukumaara<br />
n = 0;<br />
for i = (x − (kierros − 1)):x<br />
n = n + sum(evalues(:,i));<br />
k = n/N;<br />
end<br />
IS(:,kierros) = k;<br />
end<br />
% Informaatiosisältö.<br />
[minimi, spektri] = min(IS);<br />
apu = floor(minimi * 10);<br />
pohja = apu/10;<br />
if lukumaara == 1<br />
figure;bar(IS);<br />
else<br />
figure;bar(IS);axis([1 lukumaara pohja 1]);<br />
end<br />
xlabel(’Ominaisvektoreiden määrä’);<br />
ylabel(’*100 (%)’);<br />
% Tulostaa informaatiosisällön.<br />
IS<br />
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−<br />
% PCA −menetelmä.<br />
% Informaatiosisällön laskeminen ja tulostus.<br />
Finformaatiosisalto(data, lukumaara);<br />
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−<br />
% PNN −algoritmi. Hauta−Kasari, M., <strong>Karttunen</strong>, P. (2002).<br />
function [B] = Fpnn(menetelma, tietokanta, data, lukumaara)<br />
lkm = lukumaara;<br />
[x, y] = size(data);<br />
spektrit = normc(data);<br />
S = spektrit;<br />
[x,y] = size(S);<br />
clear spektrit;<br />
vos = 1; % Vuorossa oleva spektri.<br />
loa = y; % Ensimmäisen while−lauseen lopetusarvo.<br />
lob = y; % Toisen while−lauseen lopetusarvo.<br />
kierros = 0; % Alustetaan kierros−muuttuja.<br />
freq = ones(1,y); % Frekvenssit<br />
% PNN −algoritmi<br />
while loa ~= lkm % KUNNES saavutetaan haluttu LKM.<br />
kierros = kierros + 1<br />
for iii = 1:lob<br />
vS = repmat(S(:,iii), [1 lob]);<br />
em = S − vS;<br />
apu = sum(em.^2);<br />
apu = (freq.*freq(iii))./(freq+freq(iii)).*apu;<br />
[arvo, ind] = sort(apu);<br />
arvot(iii) = arvo(2);<br />
indeksit(iii) = ind(2);<br />
end;<br />
[minetaisyys,ind] = min(arvot);<br />
va = ind;<br />
vb = indeksit(ind);<br />
% Luodaan va:n ja vb:n korvaava vektori vuusi.<br />
A(:,1) = S(:,va);<br />
A(:,2) = S(:,vb);<br />
AA = ((freq(va)*A(:,1) + freq(vb)*A(:,2))/(freq(va) + freq(vb)))’;<br />
vuusi = (AA)’;<br />
% Poistetaan va ja vb. Poistetaan ensin indeksiltään suurempi vektori.<br />
S(:,vb) = [];<br />
S(:,va) = vuusi;<br />
Tuesday May 28, 2002 koodit.txt<br />
2/5
Printed by <strong>Pasi</strong> <strong>Karttunen</strong><br />
May 28, 02 10:35 koodit.txt<br />
Page 5/10<br />
end<br />
freq(va) = freq(vb) + freq(va);<br />
freq(vb) = [];<br />
% Talletetaan vuusi matriisiin S. Vähennetään sarakkeiden määrää.<br />
arvot = zeros(1,loa−1);<br />
indeksit = zeros(1,loa−1);<br />
[arvo, uusikoko] = size(S);<br />
% Whihe−lauseiden uudet lopetusehdot.<br />
[apuarvo, lob] = size(S);<br />
loa = loa − 1;<br />
vos = 1;<br />
% Alustetaan matriisi vS ja etaisyys seuraavalle kierrokselle.<br />
vS = zeros(apuarvo,lob);<br />
% Tulostetaan frekvenssi.<br />
freq<br />
B = S;<br />
% Tulostetaan kantavektorijoukko B.<br />
Ftulostus(menetelma, tietokanta, data, lukumaara, B);<br />
% Rekonstruointivirheiden laskeminen ja tulostus.<br />
Frekonstruktio(menetelma, tietokanta, data, B);<br />
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−<br />
% Rekonstruointivirheiden laskeminen ja niiden tulostus.<br />
function Frekonstruktio(menetelma, tietokanta, data, B)<br />
%Rekonstruointi<br />
if menetelma == 1<br />
rdata = B * B’ * data;<br />
else<br />
pw = input(’Valitse käytettävä rekonstruointimenetelmä: (1) pi,<br />
(2) we: ’);<br />
if pw == 1<br />
rdata= B * inv(B’ * B) * B’ * data;<br />
else<br />
ap = input(’Valitse aprioiridata (1) Munsell, (2) Macbeth: ’);<br />
if ap == 1<br />
load munsell400_700_2;<br />
aprioridata = munsell;<br />
elseif ap == 2<br />
load macbeth400_700_2;<br />
aprioridata = macbeth;<br />
end<br />
r = aprioridata;<br />
v = (B’*r);<br />
vt = v’;<br />
Rrv = (r * vt);<br />
Rvv = (v * vt);<br />
G = (Rrv * (inv(Rvv)));<br />
v = (B’ * data);<br />
rdata = (G * v);<br />
end<br />
end<br />
%Rekonstruointivirheet<br />
[x, y] = size(data);<br />
for i = 1:y;<br />
error = 100 * (norm(rdata(:,i) − data(:,i)) / norm(data(:,i)));<br />
rvirheet(:,i) = error;<br />
end;<br />
May 28, 02 10:35 koodit.txt<br />
Page 6/10<br />
[maxvirhe, spektrinro] = max(rvirheet);<br />
katto = ceil(maxvirhe);<br />
figure(10);subplot(2,2,1);bar(rvirheet);axis([0 y 0 katto]);<br />
xlabel(’Näytemäärä’);<br />
ylabel(’Virheprosentti’);<br />
if tietokanta == 1<br />
ttietokanta= (’Munsell’);<br />
et = 100;<br />
elseif tietokanta == 2<br />
ttietokanta= (’Macbeth’);<br />
et = 1;<br />
end<br />
if menetelma == 1<br />
tmenetelma = (’PCA’);<br />
elseif menetelma == 2<br />
tmenetelma = (’SOM’);<br />
elseif menetelma == 3<br />
tmenetelma = (’c−Means’);<br />
elseif menetelma == 4<br />
tmenetelma = (’PNN’);<br />
end<br />
if menetelma == 1<br />
title([ttietokanta, ’ rekonstruointivirheet ’, ’(’,tmenetelma ’)’]);<br />
else<br />
if pw == 1<br />
rme = (’PI’);<br />
title([ttietokanta, ’ rekonstruointivirheet ’, ’(’,tmenetelma ’)’]);<br />
text(et, (katto − (0.1 * katto)), [rme]);<br />
end<br />
elseif pw == 2<br />
end<br />
rme = (’WE’);<br />
if ap == 1<br />
api = (’Munsell’);<br />
elseif ap == 2<br />
api = (’Macbeth’);<br />
end<br />
title([ttietokanta, ’ rekonstruointivirheet ’, ’(’,tmenetelma ’)’]);<br />
text(et, (katto − (0.1 * katto)), [rme, ’:’, api]);<br />
%Keskimääräinen Rekonstruointivirhe<br />
h = 0;<br />
for j = 1:y;<br />
h = h + rvirheet(:,j);<br />
end;<br />
are = h/j;<br />
for k = 1:y;<br />
E(:,k) = abs(are − rvirheet(:,k));<br />
end;<br />
[erotus,lkos] = min(E);<br />
figure(10);subplot(2,2,2);plot([400:2:700], data(:,lkos));<br />
axis([400 700 0 1]);hold on;<br />
subplot(2,2,2);plot([400:2:700], rdata(:,lkos),’−−’);<br />
axis([400 700 0 1]);hold off;<br />
xlabel(’Aallonpituus (nm)’);<br />
ylabel(’Heijastus’);<br />
title([’Keskimääräinen rekonstruointivirhe: ’,int2str(lkos)]);<br />
text(410, 0.9, [’keskiarvo: ’, num2str(are),’%’]);<br />
%Suurin Rekonstruointivirhe<br />
[maximi, maspektri] = max(rvirheet);<br />
figure(10);subplot(2,2,3);plot([400:2:700], data(:,maspektri));<br />
Tuesday May 28, 2002 koodit.txt<br />
3/5
Printed by <strong>Pasi</strong> <strong>Karttunen</strong><br />
May 28, 02 10:35 koodit.txt<br />
Page 7/10<br />
axis([400 700 0 1]);hold on;<br />
subplot(2,2,3);plot([400:2:700], rdata(:,maspektri),’−−’);<br />
axis([400 700 0 1]);hold off;<br />
xlabel(’Aallonpituus (nm)’);<br />
ylabel(’Heijastus’);<br />
title([’Suurin rekonstruointivirhe:’, int2str(maspektri)]);<br />
text(410, 0.9, [’maksimi: ’, num2str(maximi),’%’]);<br />
%Pienin Rekonstruointivirhe<br />
[minimi, mispektri] = min(rvirheet);<br />
figure(10);subplot(2,2,4);plot([400:2:700], data(:,mispektri));<br />
axis([400 700 0 1]);hold on;<br />
subplot(2,2,4);plot([400:2:700], rdata(:,mispektri),’−−’);<br />
axis([400 700 0 1]);hold off;<br />
xlabel(’Aallonpituus (nm)’);<br />
ylabel(’Heijastus’);<br />
title([’Pienin rekonstruointivirhe:’, int2str(mispektri)]);<br />
text(410, 0.9, [’minimi: ’, num2str(minimi),’%’]);<br />
May 28, 02 10:35 koodit.txt<br />
Page 8/10<br />
if alustus == 1<br />
net=newsom([zeros(x,1) ones(x,1)],[lukumaara],[’hextop’],[’linkdist’],<br />
[alku],[kesto],[loppu],[1]);<br />
elseif alustus == 2<br />
net=newsom([min(datanorm’)’ max(datanorm’)’],[lukumaara],[’hextop’],<br />
[’linkdist’],[alku],[kesto],[loppu],[1]);<br />
elseif alustus == 3<br />
net=newsom([zeros(x,1) ones(x,1)],[lukumaara],[’hextop’],[’linkdist’],<br />
[alku],[kesto],[loppu],[1]);<br />
load sp.mat<br />
net.IW{1,1}(1,:) = normc(sp(:,1))’;<br />
net.IW{1,1}(lukumaara,:) = normc(sp(:,2))’;<br />
end<br />
% Suoritetaan oppiminen<br />
net.trainParam.epochs = kierrokset;<br />
net=train(net, datanorm);<br />
B = (net.IW{1,1})’;<br />
%Keskimääräinen neliövirhe, MSE<br />
MSE = 1/y*(sum(sum((data − rdata).^2)))<br />
% Tulostetaan kantavektorijoukko B.<br />
Ftulostus(menetelma, tietokanta, data, lukumaara, B);<br />
%Keskimääräisen neliövirheen neliöjuuri, RMSE<br />
RMSE = sqrt(1/y*(sum(sum((data − rdata).^2))))<br />
% Rekonstruointivirheiden laskeminen ja tulostus.<br />
Frekonstruktio(menetelma, tietokanta, data, B);<br />
Ftulostuslab(tietokanta, data, rdata, B);<br />
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−<br />
% SOM −algoritmi.<br />
function [B] = Fsom(menetelma, tietokanta, data, lukumaara)<br />
[x,y] = size(data);<br />
datanorm = normc(data);<br />
% Oletukset.<br />
dalku = 0.9;<br />
dloppu = 0.01;<br />
dkesto = 20000;<br />
dkierrokset = 100000;<br />
% Valitaan opetuskertoimen alkuarvo.<br />
alku = input(’Anna opetuskertoimen alkuarvo: ’);<br />
% Valitaan opetuskertoimen loppuarvo.<br />
loppu= input(’Anna opetuskertoimen loppuarvo: ’);<br />
% Valitaan opetuksen kesto.<br />
kesto = input([’Anna järjestelyvaiheen kesto kierroksissa<br />
(’, num2str(dkesto), ’): ’]);<br />
if isempty(kesto)<br />
kesto = dkesto;<br />
end;<br />
% Valitaan kierroksien määrä.<br />
kierrokset = input([’Anna kaikkien kierrosten lukumäärä<br />
(’, num2str(dkierrokset), ’): ’]);<br />
if isempty(kierrokset)<br />
kierrokset = dkierrokset;<br />
end;<br />
% Valitaan tietokannan alustustapa.<br />
alustus = input(’(1) 0/1, (2) min/max, (3) Reuna−arvot: ’);<br />
% Informaatiosisällön laskeminen ja tulostus.<br />
Finformaatiosisalto(data, lukumaara);<br />
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−<br />
% Suotimien talletus.<br />
function Ftalletus (menetelma, tietokanta, lukumaara, B)<br />
talletus = input(’Talletetaanko tuotetut värisuotimet (1) Kyllä, (2) Ei: ’);<br />
if talletus == 1<br />
lopetus = 0;<br />
while lopetus == 0<br />
tiedosto = input(’Anna talletettavan tiedoston nimi, ilman<br />
.mat päätettä: ’,’s’);<br />
nimi = ([tiedosto,’.mat’])<br />
if exist(nimi) == 2<br />
huom = input(’Talletetaanko entisen päälle (1) Ei, (2) Kyllä: ’);<br />
if huom == 1<br />
lopetus = 0;<br />
elseif huom == 2<br />
save(nimi,’B’)<br />
lopetus = 1;<br />
end<br />
else<br />
save(nimi,’B’)<br />
end<br />
end<br />
end<br />
lopetus = 1;<br />
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−<br />
% Suotimien tulostus.<br />
function Ftulostus(menetelma, tietokanta, data, lukumaara, B)<br />
% Määritellään tulostuksessa käytettävät asteikot ja otsikot.<br />
if menetelma == 1<br />
xx = −0.2;<br />
yy = 0.2;<br />
Tuesday May 28, 2002 koodit.txt<br />
4/5
Printed by <strong>Pasi</strong> <strong>Karttunen</strong><br />
May 28, 02 10:35 koodit.txt<br />
Page 9/10<br />
elseif menetelma == 4<br />
xx = 0;<br />
yy = 0.2;<br />
else<br />
xx = 0;<br />
yy = 0.2;<br />
end<br />
if menetelma == 1<br />
nimi = (’PCA’);<br />
elseif menetelma == 2<br />
nimi = (’SOM’);<br />
elseif menetelma == 3<br />
nimi = (’c−Means’);<br />
elseif menetelma == 4<br />
nimi = (’Pnn’);<br />
end<br />
nop = 4; % Yhteen kuvaan tulostettavien suotimien oletusmäärä.<br />
numero = 1;<br />
apu = 1;<br />
% Suotimien lukumäärä 1.<br />
if lukumaara == 1<br />
figure(1);subplot(2,2,1);plot([400:2:700], B(:,apu));<br />
axis([400 700 xx yy]);apu = apu + 1;<br />
title([nimi,’: nro.’,int2str(numero),’/’, num2str(lukumaara)]);<br />
xlabel(’Aallonpituus (nm)’);<br />
% Suotimien lukumäärä välillä 2 − 4.<br />
elseif lukumaara < (nop + 1)<br />
for h = 1:lukumaara<br />
figure(1);subplot(2,2,h);plot([400:2:700], B(:,apu));<br />
axis([400 700 xx yy]);apu = apu + 1;<br />
title([nimi,’: nro.’,int2str(numero),’/’, num2str(lukumaara)]);<br />
xlabel(’Aallonpituus (nm)’);<br />
numero = numero + 1;<br />
end<br />
% Suotimien lukumäärä välillä 5 −>.<br />
elseif lukumaara > nop<br />
for k = 1:(floor(lukumaara/nop))<br />
for i = 1:nop<br />
figure(k);subplot(2,2,i);plot([400:2:700], B(:,apu));<br />
axis([400 700 xx yy]);apu = apu + 1;<br />
title([nimi,’: nro.’,int2str(numero),’/’, num2str(lukumaara)]);<br />
xlabel(’Aallonpituus (nm)’);<br />
numero = numero+1;<br />
end<br />
end<br />
lisa = (lukumaara−(floor(lukumaara/nop))*nop);<br />
for l = 1:lisa<br />
figure(k+1);subplot(2,2,l);plot([400:2:700], B(:,apu));<br />
axis([400 700 xx yy]);apu = apu+1;<br />
title([nimi,’: nro.’,int2str(numero),’/’, num2str(lukumaara)]);<br />
xlabel(’Aallonpituus (nm)’);<br />
numero = numero+1;<br />
end<br />
end<br />
May 28, 02 10:35 koodit.txt<br />
Page 10/10<br />
specset = munsell;<br />
elseif tietokanta == 2<br />
load macbeth400_700_2.mat;<br />
specset = macbeth;<br />
end<br />
wrang = [400:2:700];<br />
filters = B;<br />
c11=colors([wrang’ specset]);<br />
c22=colors([wrang’ filters]);<br />
figure,cspace(’xyY’,0,c11,1);<br />
figure,cspace(’xyY’,0,c22,1);<br />
c11=colors([wrang’ data]);<br />
c22=colors([wrang’ rdata]);<br />
deltaL = c11(10,:) − c22(10,:);<br />
deltaa = c11(11,:) − c22(11,:);<br />
deltab = c11(12,:) − c22(12,:);<br />
deltaE = sqrt(deltaL.^2 + deltaa.^2 + deltab.^2);<br />
deltaE_avg = mean(deltaE)<br />
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−<br />
% Satunnaisten valintojen tekeminen opetusjoukosta.<br />
function [temp] = Funify(data, lukumaara)<br />
lkm = lukumaara;<br />
temp = zeros(1,lkm);<br />
for i=1:lkm;<br />
temp1 = round(rand*size(data,2));<br />
while(isempty(find(temp == temp1)) == 0)<br />
temp1 = round(rand*size(data,2));<br />
end;<br />
temp(i) = temp1;<br />
end;<br />
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−<br />
% Naapurusto ja opetuskerroin (muokkaus learnsom.m −tiedostoon).<br />
...<br />
if (ls.step < lp.order_steps)<br />
nd = 1.00001;<br />
ao = lp.order_lr; % Järjestelyvaiheen opetuskerroin.<br />
at = lp.tune_lr; % Hienosäätövaiheen opetuskerroin.<br />
t = ls.step;<br />
T = lp.order_steps;<br />
lr = ao * (at/ao)^(t/T); %Power series opetuskerroin.<br />
else<br />
lp.tune_nd = 0;<br />
nd = lp.tune_nd + 0.00001;<br />
lr = lp.tune_lr * lp.order_steps/ls.step;<br />
end<br />
if (mod(ls.step,1000) == 0)<br />
lr<br />
nd<br />
olr((ls.step/1000) + 1) = lr;<br />
end<br />
figure(50);plot(olr);axis([1 100 0 1]);<br />
...<br />
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−<br />
% Suotimien tulostus Lab −koordinaatistoon.<br />
function Ftulostuslab(tietokanta, data, rdata, B)<br />
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−<br />
if tietokanta == 1<br />
load munsell400_700_2.mat;<br />
Tuesday May 28, 2002 koodit.txt<br />
5/5