04.01.2015 Views

Pasi Karttunen - Joensuu

Pasi Karttunen - Joensuu

Pasi Karttunen - Joensuu

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!