Teknillinen Korkeakoulu 27. huhtikuuta 2004 Tietoliikenneohjelmistojen ja multimedian laboratorio Tik-111.500 Tietokonegrafiikan seminaari Kevät 2004 Kuvapohjaiset menetelmät Tekstuurien syntetisointi pinnoille Karl-Elis Raita 51126U
Tekstuurien syntetisointi pinnoille Karl-Elis Raita TKK, Tietoliikenneohjelmistojen ja multimedian laboratorio kraita@cc.hut.fi Tiivistelmä Tekstuurien syntetisoinnilla pinnoille voidaan luoda valitulle kolmiulotteiselle mallille annetun kaltainen, luonnollisen näköinen kaksiulotteinen tekstuuri yksityiskohtien lisäämiseksi. Menetelmää ohjataan antamalla syötteenä esimerkkikuva tekstuurista ja antamalla toivottu tekstuurin asento joissakin pisteissä mallin pinnalla. Menetelmän taustalla on useamman tutkijan työ yleisen tekstuurien syntetisointimenetelmän luomiseksi. Tässä paperissa esitellään pinnalla tapahtuvan syntetisoinnin lisäksi pintapuolisesti esimerkkikuvien pohjalta toimivia aikaisempia menetelmiä. 1 JOHDANTO Tekstuurit ovat tehokas tapa lisätä yksityiskohtia kolmiulotteiseen tietokonegrafiikkaan. Kolmioidun mallin teksturoinnissa on kuitenkin muutamia ongelmia. Ensinnäkin kolmiulotteisen kappaleen pinnalle on vaikea muodostaa kaksiulotteista säännöllistä parametrisaatiota, jota ilman tekstuurikoordinaattien valinta aiheuttaa väkisinkin virheitä eli artifakteja. Ihminen havaitsee artifaktit esimerkiksi tekstuurin venymisenä tai luonnottomina rajoina. Toiseksi uskottavan tekstuurin hankkiminen ei ole helppoa. Esimerkiksi mallien kokoerot vaikuttavat siihen, millainen tekstuuri on katsojan mielestä uskottava. Tekstuurin voi määritellä väriarvojen todennäköisyysjakaumaksi, joka riippuu vain lähellä olevista muista arvoista eikä pisteen sijainnista tai kaukana olevien pisteiden arvoista (Simoncelli & Portilla, 1998). Tämän hypoteesin varassa voidaan luoda menetelmiä arvata väriarvoja ja näin tuottaa keinotekoisesti tekstuuria. Tuotettua tekstuuria voidaan käyttää esimerkiksi viottuneiden kuvien täydentämiseen tai kokonaisten uusien tekstuurien luomiseen. Kokonaisten tekstuurien syntetisoinnissa tavoitteena on, että katsoja tunnistaa halutun stokastisen prosessin, kuten esimerkiksi puun syyt, mutta toistuvat synteesit antavat toisistaan selvästi eroavia kuvia (De Bonet, 1997). 1
Kuva 1: Tarkemman tason pikselin (i, j) karkeamman tason vastinpikseli, ( i, j ), sisältää yhdistetyn informaation pikselin ympäristöstä. (De Bonet, 2 2 1997) Turk (2001) esittää menetelmän tekstuurien syntetisoimiseksi kolmiulotteisen mallin pinnalle esimerkkikuvan pohjalta. Menetelmä vähentää tekstuurin venymistä, välttää räikeät epäjatkuvuudet sekä luo mallin kokoon nähden juuri sopivan tekstuurin. 2 TAUSTAA Tekstuurin syntetisointiin voi ottaa kaksi lähestymistapaa: Joko käyttäjä kertoo, miten haluaa tekstuuria valmistettavan, tai pelkästään millaista tekstuuria hän haluaa lopputuloksena. Turkin (2001) menetelmä, kuten muutkin kuvapohjaiset syntetisointimenetelmät, perustuu jälkimmäiseen ideaan. Kumpikin lähestymistapa pystyy välttämään tekstuurikoordinaattien valinnan virheet, mutta niiden haitat ja hyödyt ovat erilaiset. Tässä kappaleessa käsitellään kuvapyramidien perusteita, tekstuurikoordinaattien valintaa ja pikaisesti ohjelmoitua synteesiä, jossa käyttäjä valitsee syntetisointimenetelmän. Kuvapohjaista tekstuurisynteesiä käsitellään seuraavassa kappaleessa. 2.1 Kuvapyramidit Kuvapyramidi muodostetaan kaksiulotteisesta kuvasta tuottamalla siitä versioita eri tarkkuuksilla. Tällä tavalla pystytään erittelemään tekstuurin mikro- ja makrotason rakenne. Resoluution pudotessa yksi pikseli sisältää tietoa yhä useammasta alkuperäisen kuvan pikselistä (Kuva 1). Yksinkertaisin kuvapyramidi on Gauss-pyramidi. Sen tarkimman tason muodostaa kuva itse. Karkeamman resoluution kuvat muodostetaan Gauss-suodatuksella edeltävän tason tarkemmasta kuvasta (Burt & Adelson, 1983). Gauss-suodatuksessa pikselin arvo korvataan Gauss-käyrän mukaan painotetulla keskiarvolla tarkasteltavan pikselin naapuripikseleistä. 2
Laplace-pyramidin jokainen taso koostuu kahdesta osasta. Ensimmäinen saadaan alipäästösuodattamalla tarkemman tason kuva ja alinäytteistämällä suodatettu kuva suhteessa 1:2. Toinen osa saadaan vähentämällä edellisen tason kuvasta ensimmäisen osan kuvan arvoista interpoloitu kuva. Ensimmäisen osan kuvan mitat ovat siis puolet alkuperäisen kuvan mitoista ja toisen osan mitat ovat samat. Seuraavan tason lähtökohtana käytetään ensimmäistä, pienempiresoluutioista osaa. (Heeger & Bergen, 1995) Gauss-pyramidissa ei tarvita erikseen menetelmää kuvan palauttamiseksi, koska tarkin taso on alkuperäinen kuva. Laplace-pyramidi ei sisällä lähtökuvaa, mutta palauttaminen voidaan tehdä helposti lisäämällä ensimmäisen tason tarkempaan kuvaan alipäästösuodatetusta kuvasta interpoloitu versio eli kääntämällä operaatio, jolla toinen osa on tuotettu (Heeger & Bergen, 1995). Suunnattava pyramidi ottaa huomioon myös muotojen suunnat. Pyramidin jokaisella tasolla on useita suodatettuja kuvia, joista esimerkiksi yksi voi esittää vertikaalisia ja toinen horisontaaleja muotoja. Jos käsiteltävä kuva sisältää esimerkiksi vertikaalisia viivoja, horisontaaleihin muotoihin kohdennetut suotimet tuottavat mustan kuvan. Psykofysiologiset testit ovat antaneet viitteitä, että tällainen malli vastaa hyvin aivojen visuaalisen informaation jäsentämistä. (Heeger & Bergen, 1995) 2.2 Tekstuurikoordinaattien valinta Tekstuurikoordinaattien valinnassa voi tehdä kaksiulotteisilla tekstuureilla kahdenlaisia virheitä. Tekstuurina oleva kuva voi näyttää venyneeltä, jos pisteiden kolmiulotteinen etäisyys ei vastaa pisteiden etäisyyttä tekstuuriavaruudessa. Lisäksi koordinaattien valinta voi aiheuttaa epäjatkuvuuskohtia eli pikselinaapurustot mallin pinnalla eivät vastaa naapurustoja tekstuuriavaruudessa. Ongelmien perimmäinen syy on se, että yleisen kolmiulotteisen mallin pinnalle ei ole olemassa kaksiulotteista tasaista parametrisaatiota. Viimeisen kymmenen vuoden aikana on esitelty menetelmiä koordinaattien valitsemiseksi siten, että vältetään vääristymiä ja epäjatkuvuuksia. Eräissä menetelmissä on kehitetty vääristymien mittaamiseen metriikoita, joiden arvoja pyritään valintaprosessissa minimoimaan (Levy & Mallet, 1998 ja Maillot et al., 1993). Piponi ja Borshukov (2000) lähestyivät ongelmaa eläinten nylkemisen kautta. Malli avataan vatsasta ja levitetään pyöreään kehikkoon. Praun et al. (2000) paloittelevat tekstuurin epäsäännöllisiin paloihin ja asettelee palat pinnalle osittain päällekäin siten, että vääristymät minimoituvat. Khodavsky et al. (2003) keksimällä menetelmällä pystytään luomaan mallin pinnalle kaikkialla tasainen kaksiuloitteiden parametrisaatio, joka minimoi virheet varsin hyvin. 2.3 Ohjelmoitu synteesi Ohjelmoidussa tekstuurien syntetisoinnissa tekstuurin luontia varten kehitetään funktio, joka palauttaa väriarvon, kun syötteenä on joko piste tekstuuriavaruudessa tai kol- 3
Kuva 2: Äärimmäisenä vasemmalla syötekuva. Tulokset vasemmalta lukien: a) Heeger ja Bergen, b) De Bonet, c) Efros ja Leung ja d) Wei ja Levoy. (Wei ja Levoy, 2000) miulotteisessa avaruudessa (Perlin, 1985 ja Peachey, 1985). Ohjelmoidun synteesin heikko puoli on menetelmän suhteellinen työläys. Jokaista tekstuurityyppiä kuten puu tai kivi, joudutaan luomaan uusi funktio. Lisäksi tekstuurin ominaisuuksia, kuten puun syiden tiheys, säätelevien parametrien intuitiivisuus riippuu täysin mallista. Toisaalta, jos tekstuurifunktion syötteenä on kolmiulotteisen avaruuden piste, voidaan annetun mallin pinnalle luoda helposti väriarvot ilman vääristymiä ja rajoja. Ohjelmoidut menetelmät voidaan jakaa kahteen luokkaan. Toiset pyrkivät matkimaan tekstuurin taustalla olevia ilmiöitä (Turk, 1991 ja Walter et al., 2001). Toiset ottavat vastakkaisen lähestymistavan, erityisesti käyttäen sopivasti parametrisoituja todennäköisyysjakaumia (Esimerkiksi Worley, 1996), joilla ei ole juurikaan tekemistä alkuperäisen ilmiön kanssa. 3 KUVAPOHJAINEN SYNTEESI Kuvapohjaisessa synteesissä luodaan käyttäjän antaman esimerkkikuvan tapaista tekstuuria. Menelmät ovat usein varsin yleiskäyttöisiä, koska mikä tahansa tarpeeksi laaja näyte kappaleessa 1 mainitun tekstuurin määritelmän täyttävästä ilmiöstä kelpaa syötteeksi. Toisaalta näillä menetelmillä on harvoin parametreja, joilla voisi intuitiivisesti vaikuttaa tulokseen. Tässä kappaleessa esitellään kuvapohjaisia menetelmiä jaoteltuna kahteen luokkaan: tilastolliseen sovitukseen ja lokaalin virheen minimointiin. Ensimmäisessä pyritään mallintamaan alkuperäistä todennäköisyysjakaumaa ja jälkimmäisessä etsitään syötteestä parhaiten kontekstiin sopivaa väriarvoa. Turkin (2001) menetelmä ammentaa vahvimmin jälkimmäisestä luokasta. Kuvassa 2 on vertailtu neljän tässä kappaleessa esitetyn menetelmän tuloksista. 3.1 Tilastollinen sovitus Tilastollisessa sovituksessa on pyrkimyksenä approksimoida tekstuurin väriarvojen todennäköisyysjakaumaa ja syntetisoida tekstuuri jakauman mukaiseen satunnaisuuteen 4
perustuen. Todennäköisyysjakauman luomista varten annetun näytteen tulisi olla varsin kattava. Satunnaisuuden on ilmettävä sellaisessa kokoluokassa, että se vastaa tekstuurin elementtien kokoa, jotta ihminen tunnistaisi tekstuurin. Satunnaisuus voi myös aiheuttaa ongelmia tulosten toistettavuuden suhteen. De Bonet n (1997) menetelmässä käytetään kahta Laplace-pyramidia. Toisen avulla analysoidaan syötettä ja toisen avulla rakennetaan uutta tekstuuria. Tekstuuri syntetisoidaan pyramidin karkeimmalta tasolta alaspäin. Pikselin (i, j) arvon valitsemiseksi tarkastellaan synteesipyramidissa ylemmän tason pikseliä ( i, j ), sitä ylemmän tason 2 2 pikseliä ( i, j ) ja niin edelleen aina pyramidin huipulle saakka. Tarkastelussa käytetään 4 4 näköaistia matkivia suotimia, joiden vasteista saadaan vektori, joka vuorostaan kuvaa syntetisoitavan pikselin ympäristöä. Nyt vastaava prosessi toistetaan jokaiselle pikselille analyysipyramidin tasolla, joka vastaa syntetisoitavaa tasoa. Näin saatuja vektoreita verrataan syntetisoitavan pikselin vektoriin. Analyysipyramidin pikseleiden, joiden vektorit poikkeavat tarpeeksi vähän, joukosta valitaan satunnaisesti pikseli, jonka väriarvo kopioidaan syntetisoitavaan pikseliin. Menetelmän taustalla on De Bonet n hypoteesi, että tekstuuri koostuu alueista, jotka voidaan vaihtaa keskenään, jos niiden ero on sopivilla mittareilla pienempi kuin annettu raja-arvo. Simoncelli ja Portilla (1998) ovat kehittäneet menetelmän, jonka ideana on sovittaa syntetisoitavan tekstuurin tilastolliset ominaisuudet syötekuvan vastaaviin. Syöte analysoidaan muodostamalla suunnattu pyramidi, josta lasketaan yli tuhat tilastollista tunnuslukua. Syntetisointi aloitetaan kuvasta, joka sisältää Gauss-kohinaa ja se etenee toistamalla tekstuurin tunnuslukuja muokkaavia operaatiota. Esimerkkeinä annetuista kuvista noin puolet epäonnistuvat samankaltaisuuden illuusion luomisessa. Heeger ja Bergen (1995) käyttävät myös suunnattavaa pyramidia ja synteesin lähtökohtana on kuva, joka muodostuu pelkästä kohinasta. Menetelmä on kuitenkin idealtaan yksinkertaisempi kuin Simoncellin ja Portillan. Syntetisointi etenee iteratiivisesti ja jokainen iteraatio jakaantuu kahteen vaiheeseen. Ensimmäisessä vaiheessa tuloskuvan pikseleiden väriarvojen histogrammit pakotetaan vastaamaan syötekuvan histogrammeja. Toisessa vaiheessa ensimmäisen vaiheen tuloksesta rakennetaan pyramidiesitys, jonka jokaisen tason komponenteille on tehtävä sama histogrammien yhtenäistäminen syötekuvan pyramidin histogrammien kanssa. Toinen vaihe muuttaa myös pelkkien väriarvojen histogrammeja, joten tehdään seuraava iteraatiokierros histogrammien yhtenäistämiseksi. Heeger ja Bergen kuvaavat myös, miten heidän menetelmänsä voidaan yleistää kolmiulotteisten tekstuurien syntetisointiin. Jos esimerkkikuva on melko homogeeninen ja satunnainen, niin tulokset ovat hyviä: Stokastinen prosessi näyttää samalta, mutta tekstuurit ovat myös selvästi erilaisia. Kuvista, jotka sisältävät teräviä rajoja tai selkeitä makrokaavan muotoja, menetelmä suoriutuu huomattavasti huonommin. 5
3.2 Lokaalin virheen minimointi Lokaalin virheen minimoinnissa etsitään esimerkkikuvasta pikseliä, joka sopii parhaiten syntetisoitavan pisteen lähiympäristöön. Menetelmät toistavat tarkasti yksityiskohdat, mutta antavat enemmän liikkumavaraa makrotasolla. Makro- ja mikrotason erottelu riippuu sovitukseen käytetyn ympäristön, sovitusikkunan, koosta ja se on menetelmien lähestulkoon ainoa parametri. Jos ikkunan koko on liian suuri, tulos muistuttaa liikaa syötteenä annettua kuvaa, eikä syntetisoinnin tavoite, tekstuurien erottuminen toisistaan, toteudu. Satunnaisuuden puuttuessa tulokset ovat paremmin toistettavissa ja ennakoitavissa kuin tilastollisissa menetelmissä. Efros ja Leung (1999) ovat kehittäneet menetelmän, joka on hybridi tilastollisen sovituksen ja virheen minimoinnin välillä. Yhden pikselin syntetisointi tehdään niin, että pikselin ympäristöä verrataan esimerkkikuvaan. Kuvasta etsitään alue, joka parhaiten sopii ympäristöön. Seuraavaksi kuvasta etsitään kaikki ympäristöt, joiden ero parhaaseen sovitukseen alittaa annetun rajan. Tämän jälkeen syntetisoitavan pikselin väriarvo valitaan edellä mainittujen alueiden keskipikseleiden joukosta satunnaisesti. Kun tuntemattomia pikseleitä on enemmän kuin yksi, sovituksessa käytetään vain tunnettujen pikseleiden arvoja. Esimerkkien perusteella menetelmä soveltuu mainiosti kuvien täydentämiseen. Tällöin syntetisointi etenee tunnetun alueen reunoilta eteenpäin. Jos tarkoituksena on luoda kokonaan uusi tekstuuri, syntetisointi aloitetaan kopiomalla satunnainen 3 3 pikselin pala syötekuvasta uuden tekstuurin keskelle. Perättäisinä vuosina julkaistut Wein ja Levoyn paperit (2000 ja 2001) esittelevät kaksiulotteisten tekstuurien syntetisointimenetelmän ja sen laajennuksen tekstuurien syntetisointiin mallin pinnalla. Kaksiulotteinen menetelmä (Wei & Levoy, 2000) lähtee liikkeelle satunnaisesta kuvasta, jonka histogrammi on sovitettu syötekuvan histogrammiin. Yksinkertaisimmillaan syntetisointi voidaan tehdä ilman Gausspyramideja. Menetelmän ideana on käyttää syntetisoinnissa vain jo valittuja pikseleitä. Kokonaisen tekstuurin syntetisoinnissa pikselit valitaan järjestyksessä vasemmalta oikealle ja ylhäältä alas, jolloin voidaan käyttää koko ajan puolikkaan neliön muotoista sovitusnaapurustoa, joka kattaa vain jo käsitellyt pikselit. Menetelmästä saadaan hierarkinen etenemällä kullakin Gauss-pyramidin tasolla siten, että sovituksessa käytetään käsiteltävän tason syntetisoituja pikseleitä kuten edellä sekä lisäksi karkeammalla tasolla neliön muotoista, pienempää ympäristöä. Hierarkisuus nopeuttaa syntetisointia, koska tekstuurille ominaisten muotojen löytämiseksi vaadittu sovitusikkuna on huomattavasti pienempi kuin ilman hierarkisuutta. Lisäksi menetelmää voidaan nopeuttaa noin kymmenkertaisesti rakentamalla kvantisoitu hakupuu naapurustojen muodostamille vektoreille. Tulokset huononevat hieman, koska kaikkia naapurustoja ei testata, mutta laatua voidaan säädellä liukuvasti lisäämällä hakupuusta tutkittavien haarojen määrää. Menetelmä voidaan laajentaa kolmanteen ulottuvuuteen, esimerkiksi kaksiulotteisten animaatioiden tuottamiseksi. Kolmiulotteisten mallien pinnoille sijoitettu synteesi (Wei & Levoy, 2001) perustuu edellä esiteltyyn kaksiulotteiseen menetelmään. Ennen syntetisoinnin aloittamista luodaan mallille Gauss-pyramidia muistuttava esitys. Kolmioidusta mallista saadaan 6
karkeampia versioita poistamalla siitä pisteitä. Koska pisteet eivät välttämättä luonnostaan jakaudu tasaisesti mallin pinnalle, jokainen taso lisäksi kolmioidaan uudelleen jakauman tasoittamiseksi. Lisäksi, jos syötekuvassa on suunnattuja muotoja, kuten viivoja, mallin pisteisiin täytyy luoda synteesin suuntaamiseksi koordinaatistot, jotka ovat linjassa toistensa kanssa. Wei ja Levoy ovat päätelleet, että kaksiulotteisessa menetelmässä käytetty syntetisointijärjestys voidaan hylätä tuloksen merkittävästi kärsimättä, jos synteesi on hierarkinen. Naapurustot mallin pinnalla muunnetaan kaksiulotteisiksi projisoimalla pinnan kolmioita tangenttitasolle kunnes vertailtava pikselinaapurusto on peitetty. Yksittäisen pikselin väriarvo saadaan interpoloimalla pikselin peittävän kolmion kärkipisteiden väriarvoja. 4 MENETELMÄ Turkin (2001) menetelmä tekstuurin syntetisoimiseksi kolmiulotteisen kolmioidun mallin pinnalla toimii varsin yleisten oletusten pohjalta. Tekstuurin pisteen väriarvojen tulisi riippua vain pistettä lähellä olevien muiden pisteiden väriarvoista, ei esimerkiksi kaukana olevien pisteiden tai pisteen paikasta avaruudessa. Esimerkkikuvan, jota käytetään tekstuurin syntetisoinnin pohjana, on oltava kattava otos tekstuurista. Toisin sanoen siihen on sisällyttävä kaikki kyseistä tekstuuria luovan stokastisen prosessin piirteet. Turk on kehittänyt tavan luoda Gauss-pyramidiesitys mallin pinnalle ja verrata sitä esimerkkikuvan Gauss-pyramidiesitykseen parhaiten sopivan naapuruston etsimiseksi. Mallin Gauss-pyramidin tasot ovat pisteverkkoja eli joukkoja mallin pinnalle sijoitettuja pisteitä ja niitä yhdistäviä särmiä. Menetelmän päävaiheet ovat: 1. Luodaan mallille Gauss-pyramidi, G m, sijoittamalla tasaisesti pisteitä mallin pinnalle ja ja muodostamalla niistä eritiheyksisiä pisteverkkoja. 2. Luodaan käyttäjän antamien vektorien pohjalta mallin Gauss-pyramidin G m pisteisiin jatkuva suuntakenttä, joka kuvaa tekstuurin asentoa pisteessä. 3. Lasketaan pisteiden etäisyydet vektorikenttää pitkin satunnaisesti valitusta aloituspisteestä ja järjestetään ne etäisyyden mukaan. 4. Luodaan esimerkkikuvalle Gauss-pyramidi, G k, joka on yhtä syvä kuin G m. 5. Jokaisella G m :n resoluutiotasolla: (a) Ekstrapoloidaan karkeamman resoluution väriarvojen avulla pisteiden väriarvot. Karkeimmalla tasolla väritetään satunnaisesti kuvan väreillä. (b) Parannetaan tulosta käyttämällä sekä nykyisen tason että karkeamman tason arvoja. 7
6. Luodaan lopullinen tekstuuri G m :n tarkimman resoluution väriarvojen pohjalta ja valitaan tekstuurikoordinaatit. Tässä kappaleessa esitellään ensiksi pisteverkossa tehtävät operaatiot, jotka ovat menetelmän peruspalikat. Perusteiden jälkeen esitellään jokainen menetelmän päävaiheista tarkemmin. 4.1 Perusoperaatiot pisteverkossa Menetelmän vaiheet perustuvat neljään mallin Gauss-pyramidiin kohdistettuun perusoperaatioon. Ensimmäinen perusoperaatio on interpolaatio. Tarkoituksena on laskea funktion arvo valitussa avaruuden pisteessä v läheisten pisteiden arvojen painotettuna keskiarvona. Olkoon läheiset pisteet v 1,...,v t, jotka ovat enintään etäisyydellä r pisteestä v ja olkoon interpoloitava funktio F ( ) ja painofunktio w( ). Silloin: F (v) = ti=1 w( v v i /r)f (v i ) ti=1. (1) w( v v i /r) Turk käyttää painofunktiota w(x) = 2x 3 3x 2 +1, jonka arvo laskee tasaisesti yhdestä nollaan, kun argumentti kasvaa nollasta yhteen. Alipäästösuodatuksella lasketaan funktion, F ( ), painotettu keskiarvo verkon pisteen v ympäristössä. Olkoon v i :t verkon pisteet, joihin pääsee pisteestä v yhtä verkon särmää pitkin. Tällöin keskiarvo voidaan laskea kaavalla: (1 σ)f (v) + σ t i=1 1 l i D F (v i), (2) missä l i on särmän pituus, σ pieniarvoinen skaalausvakio ja D = t i=1 li 1 painojen summa. Kaksi seuraavaa operaatiota vastaavat kuvan Gauss-pyramidin tasojen välillä tapahtuvia operaatioita. Näytteiden vähennys suoritetaan kuvan Gauss-pyramidissa vähentämällä terävyyttä (englanniksi blurring ) ja sen jälkeen valitsemalla joka toinen näyte vertikaalisesti ja horisontaalisesti. Pisteverkossa tämä toteutetaan laskemalla alipäästösuodatetut arvot karkeamman verkon pisteille tarkemmassa verkossa. Näytteiden lisääminen eli resoluution nostaminen tehdään interpoloimalla tarkemman tason pisteen arvo karkeamman tason pisteiden arvoista. 4.2 Mallin Gauss-pyramidi Mallin pinnalle muodostetaan pisteverkkoja eri määrillä pisteitä, jotta saadaan aikaan Gauss-pyramidia muistuttava hierarkinen tietorakenne mallin pinnalle. Tietorakenne sisältää pisteiden paikkojen ja verkon särmien lisäksi tiedot jokaisen pisteen suuntavektorista, etäisyydestä ja väristä. Suuntavektori ja etäisyys ovat samat jokaisella 8
Kuva 3: Piste siirretään tasolle etsimällä kolmion, joka sisältää pisteen v, lähin särmä ja pyörittämällä piste särmän ympäri tasolle. Kuva 4: Suuntakenttä pisteverkon pisteissä. Käyttäjä on antanut punaiset nuolet syötteenä. (Turk, 2001) hierarkian tasolla, mutta pisteen väri määritellään erikseen jokaiselle tasolle. Pisteverkkojen muodostaman Gauss-pyramidin avulla voidaan vertailla mallin pinnalla olevien pistenaapuruston Gauss-pyramidin ominaisuuksia esimerkkikuvan pisteen Gausspyramidin ominaisuuksiin. Ensiksi luodaan karkeimman tason pisteverkko sijoittamalla valittu määrä pisteitä suunnilleen tasajakautuneesti mallin pinnalle. Tämän jälkeen jakauman tasaisuutta parannetaan liikuttelemalla pisteitä hylkimisvoimilla. Turk käyttää aikaisemmassa paperissaan (Turk, 1991) esiteltyä menetelmää pisteeseen v kohdistuvan hylkimisvoiman laskemiseen ja se koostuu kolmesta vaiheesta: 1. Etsitään pisteet etäisyydellä r pisteestä v. 2. Siirretään valitut pisteet tasolle, joka sisältää kolmion, jolla v sijaitsee (Kuva 3). 3. lasketaan S, hylkimisvoimien summa. Turk (1991) käyttää r:lle arvoa 2 A/n, missä A on mallin pinta-ala ja n pinnalle levitettyjen pisteiden kokonaismäärä. Turk ei puutu yksittäisten hylkimisvoimien laskemiseen, muutoin kuin mainitsemalla, että voimat pienenevät lineaarisesti etäisyyden mukana. Ehdon täyttää esimerkiksi (1 v v i ) v v i r v v i. (3) Kun hylkimisvoimien summa on laskettu jokaiselle pisteelle, pisteitä siirretään mallin pintaa pitkin vektorin k S verran, missä k on pieniarvoinen skaalausvakio. Pisteen siirto mallin pintaa pitkin tapahtuu samalla tavoin kuin pisteiden siirto tasolle. Jos vektori k S siirtää pisteen nykyisen kolmion ulkopuolelle, ulkopuolelle menevä osa 9
kierretään särmän ympäri naapurikolmion tasoon. Sama toistetaan kunnes uusi paikka on kolmion sisäpuolella. Jos kolmiolla ei ole naapuria kyseisessä suunnassa, piste jätetään kolmion rajalle. Lopuksi on etsittävä alipäästösuodatusta varten pisteitä yhdistävä verkko. Tämä tehdään projisoimalla pisteen lähellä sijaitsevat muut pisteet mallin tangenttitasolle ja suorittamalla Delaunay-kolmiointi (Turk, 2001). Kaikki pisteet, jotka kolmiointi yhdistää särmällä käsiteltävään pisteeseen, yhdistetään myös pisteverkossa siihen. Yhdistäminen ratkaistaan yksipuoleisesti: Jos pisteen A kolmiointi yhdistää sen B:hen, A ja B yhdistetään verkossa riippumatta B:n kolmioinnin tuloksesta. Nyt ensimmäinen pisteverkko on valmis. Seuraavan tason luomiseksi lisätään kolminkertainen määrä pisteitä, jotta tarkemmalle tasolle siirryttäessä pisteiden määrä nelinkertaistuu kuten kuvien Gauss-pyramideissa. Edellisen tason pisteiden paikat pidetään kiinnitettyinä ja uudet pisteet levitetään mallin pinnalle hylkimisvoimia käyttäen. Pisteverkon särmien laskemisen jälkeen voidaan taas siirtyä seuraavan, tarkemman tason kimppuun. 4.3 Suuntakenttä Suuntakenttä määrää sekä tekstuurin asettelun pinnalla että syntetisoinnin etenemissuunnan. Koska kenttä määrää tekstuurin orientaation, on järkevää antaa käyttäjälle mahdollisuus vaikuttaa sen luontiin (Kuva 4). Suuntakentän luonnissa käyttäjän syöte viedään ensin mallin Gauss-pyramidin läpi ylös karkeimmalle tasolle. Seuraavaksi kenttää pehmennetään karkeimmalla tasolla kunnes kaikki vektorit poikkeavat nollavektorista. Lopuksi jokainen taso täytetään interpoloimalla edeltävän, karkeamman tason arvoista. Aluksi käyttäjä antaa syötteenä joukon mallin pinnalla olevia vektoreita. Vektorin arvo liitetään lähimpään tiheimmän pisteverkon pisteeseen ja muiden pisteiden suuntavektori asetetaan nollavektoriksi. Turk käytti noin kymmentä syötevektoria omissa esimerkeissään. Seuraavaksi suoritetaan näytteiden vähennysoperaatioita taso tasolta, jotta saadaan karkeimmalle tasolle alkuarvot. Arvoja tasoitetaan karkeimmalla tasolla käyttäen kaavaa 2, kunnes kaikki vektorit poikkeavat nollasta. Lopuksi vektorit projisoidaan mallin pinnalle ja normalisoidaan. Viimeiseksi Gauss-pyramidi käydään toiseen suuntaan läpi. Näytteiden lisäämisellä täytetään tarkemmat tasot edeten karkeimmasta tarkimpaan. Jokaisen tason vektorit normalisoidaan arvojen laskemisen jälkeen. 4.4 Etäisyyden mittaus Kun vektorikenttä on luotu, voidaan pisteet järjestää läpikäyntiä varten. Pisteiden järjestäminen luo kuvitteelliset pyyhkäisyviivat mallin pinnalle, jolloin on mahdollista helposti tarkastella erikseen pisteitä jotka on jo syntetisoitu ja joita ei vielä ole syntetisointu, kuten Wein ja Levoyn (2000) menetelmässä. 10
Etäisyyden mittaus aloitetaan valitsemalla mallin Gauss-pyramidin karkeimmalta tasolta mielivaltainen verkon piste aloituspisteeksi. Aloituspisteen valinta ei vaikuta syntetisoinnin tuloksiin merkittävästi. Aluksi ainoastaan aloituspisteellä on etäisyysarvo, 0. Verkon pisteen etäisyyttä laskettaessa huomioidaan vain pisteet, joiden etäisyys on jo laskettu, ja pisteen etäisyys voidaan laskea vasta, kun vähintään yhdellä sen naapureista on etäisyysarvo. Etäisyys pisteessä v lasketaan alipäästösuodattamalla (kaava 2) funktiota S( v) + S( x) F ( x) = d( x) + ( v x) S( v) + S( x), (4) missä S( x) on suuntakentän arvo pisteessä x ja d( x) on etäisyys pisteessä x. Funktio F ( x) laskee keskiarvon vektoreista S( x) ja S( v) ja projisoi pisteiden x ja v erotusvektorin keskiarvovektorille mitatakseen etäisyyden muutoksen, kun siirrytään pisteestä x pisteeseen v. Pisteen etäisyys voi olla myös negatiivinen, koska laskenta ei välttämättä etene kentän suuntaisesti. Kun karkeimman tason kaikille pisteille on laskettu etäisyys, siirrytään seuraavalle, tarkemmalle tasolle. Niiden pisteiden, jotka ovat myös osa karkeampaa pisteverkkoa, etäisyysarvo on jo määritelty, joten muiden pisteiden etäisyydet saadaan laskettua niiden pohjalta. Näin edetään hierarkiassa taso kerrallaan, kunnes tarkimman tason kaikille pisteille on saatu arvot. Lopuksi pisteet järjestetään kussakin pisteverkossa etäisyysarvojensa mukaisesti kasvavaan järjestykseen. Pisteiden väriarvot syntetisoidaan tässä järjestyksessä esimerkkikuvan pohjalta. 4.5 Syntetisointi pisteverkossa Väriarvojen syntetisoinnissa käytetään lokaalin virheen minimointia. Jos esimerkkikuva ei ole periodinen, kuvasta analysoidaan vain ne pikselit, joiden ympäristöt mahtuvat kokonaan kuvaan. Synteesin tuloksiin vaikuttaa sovitusikkunan koko: Suurella ikkunalla saadan sovitukseen mukaan suurempi alue, mutta parhaan sovituksen etsimisessä kestää kauemmin. Lisäksi tuloksiin vaikuttaa sovitusikkunan muoto. Wei ja Levoy (2000) esittelivät ikkunan, joka ottaa huomioon vain ne pisteet, joiden värit on jo syntetisoitu. Kahden tasotekstuurin kanssa toimittaessa tämän järjestäminen on helpompaa kuin mallin pinnalla olevassa epäsäännöllisessä pisteverkossa. Turk (2001) käyttää menetelmässään neliön lisäksi puolikkaan neliön muotoista ikkunaa, joka voidaan suuntakentän avulla asettaa siten, että sen sisään jäävien pisteiden väriarvot on pääosin syntetisoitu. Näin tulokset parantuvat samalla tavalla kuin Wein ja Levoyn menetelmässä. Tarkistettaessa pikselin ympäristön sopivuutta mallin pinnalla oleviin väriarvoihin, kaikkia värin komponentteja käsitellään samanarvoisina. Metriikkana sopivuudelle Turk käyttää arvojen erotusten neliöiden summaa. Pisteverkon pisteen naapurusto täytyy näytteistää, jotta sitä voidaan verrata esimerkkikuvan pikseleihin. Näytteistystä varten on ensin laadittava paikallinen kaksiu- 11
Kuva 5: Vasemmalla syntetisoitavan pisteen koordinaatisto ja oikealla vastaavat vektorit esimerkkikuvan koordinaatistossa. Vektori S on suuntakentän arvo syntetisoitavassa pisteessä ja N on mallin pinnan normaali. Vektori O saadaan pyörittämällä S:ää 90 vastapäivään N:n ympäri. Kuva 6: Kolmioiden sijoittelu tekstuuriavaruudessa. lotteinen koordinaatisto, jonka avulla näytteistyspisteet määritellään (kuva 5). Siirtyminen yhden pikselin verran esimerkkikuvan Gauss-pyramidin tasolla vastaa saman tason pisteverkon pisteiden keskietäisyyden, r k, suuruista siirtymää vastaavaan suuntaan mallin pinnalla. Siirtyminen mallin pinnalla tapahtuu samoin kuin pisteiden liikuttelu hylkimisvoimien mukana: Polku taivutetaan kolmioiden särmien kohdalla naapurikolmion tasolle. Kun koordinaatistojen välille on luotu vastaavuudet, voidaan naapuruston pikselin (i, j) arvo mallin pinnalla laskea siirtymällä syntetisoitavasta pisteestä mallin pintaa pitkin vektorin r k (i O + j S) (kuva 5) verran ja interpoloimalla (kaava 1) läheisten pisteverkon pisteiden arvojen perusteella väri tässä kohdassa. Väriarvojen syntetisointi aloitetaan mallin Gauss-pyramidin karkeimmalta tasolta. Ensimmäiseksi jokaiselle pisteverkon pisteelle valitaan väri satunnaisesti esimerkkikuvan Gauss-pyramidin karkeimman tason väreistä. Seuraavaksi etsitään paras sovitus jokaiselle pisteelle etäisyyskentän määräämässä järjestyksessä käyttämällä puolineliön muotoista sovitusikkunaa. Sovituskierros siirtää muodot esimerkkikuvan Gausspyramidin karkeimmalta tasolta mallin Gauss-pyramidin karkeimmalle tasolle. Seuraavilla, tarkemmilla tasoilla, toimitaan kaksivaiheisesti. Ensiksi taso alustetaan siten, että jokaisen sovituksen neliön muotoisen naapuruston väriarvot lasketaan edellisen, karkeamman, tason väriarvojen pohjalta. Seuraavaksi tulosta parannetaan käyttämällä täysikokoista neliön muotoista ikkunaa nykyisellä tasolla ja pienempää neliön mallista edellisellä, karkeammalla, tasolla. Sovitus tehdään siis kahden tason naapurustojen yhdistelmänä. Pienemmän neliön on hyvä olla sivultaan puolet isomman neliön sivusta, pyöristettynä alaspäin. Tällöin kummatkin naapurustot peittävät saman pinta-alan alkuperäisestä esimerkkikuvasta. 12
4.6 Lopullinen tekstuuri Jotta syntetisoinnin tuloksia voisi käyttää tekstuurina, on luotava kaksiulotteinen kuva mallin pinnalle saaduista väriarvoista. Jotta tässä vaiheessa ei törmätä kaksiulotteisen parametrisaation ongelmiin, tekstuurina käytettävä kuva ja tekstuurikoordinaatit valitaan Soucyn et al. (1996) menetelmällä. Jokaista mallin kolmiota vastaava kolmio tekstuuriavaruudessa asemoidaan siten, että jokainen kolmio koskettaa eri tekseleitä eli tekstuurin pikseleitä. Tällöin tekseleiden väriarvot voidaan valita vapaasti. Yksinkertaisuuden ja tilan säästön takia tämä tehdään niin, että jokainen tekstuuriavaruuden kolmio on suorakuolmainen ja tasasivuinen kolmio, jonka yhtä pitkät sivut sijaitsevat tekseleiden rajoilla (kuva 6). Yhtä pitkien sivujen pituudet tekstuuriavaruudessa saadaan pyöristämällä kolmiulotteisen kolmion pisimmän sivun pituuden ja pisteverkon pisteiden keskietäisyyden osamäärä ylöspäin lähimpään kahden potenssiin. Näin kolmiot voidaan sijoittaa siten, että tekstuurin leveys on kahden potenssi. Tekselien lopullisessa värittämisessä on noudatettava yhtä rajoitetta: Jos kaksi kolmiota jakavat sivun mallin pinnalla, vastaavien sivujen väriarvojen pitää olla yhteneviä tekstuuriavaruudessa eli niillä on oltava samat väriarvot samalla kohtaa ottaen huomioon myös sen, että kolmiot voivat olla eri kokoiset tekstuuriavaruudessa. Kun kolmioiden tekstuurikoordinaatit on valittu edellä esitellyllä tavalla, voidaan tekselit värittää. Tarkimman pisteverkon pisteet siirretään tekstuuriavaruuteen painopistekoordinaattien avulla. Jos yhden tekselin alueelle sattuu vain yksi piste, tekseli saa värinsä suoraan pisteeltä. Jos tekselin alueelle sattuu useampi piste, tekselin väriksi tulee pisteiden värien keskiarvo. On myös mahdollista, että tekselin alueelle ei tule yhtään pistettä. Tällöin voidaan siirtää tekselin keskipiste painopistekoordinaattien avulla mallin pinnalle ja laskea interpolaatiolla (kaava 1) tekselin väriarvo. On huomattava, että tällä tavoin tuotettua tekstuuria ei voi käsitellä kuten tavallisia tekstuureja esimerkiksi eri resoluutioisten tekstuurien tuottamiseksi. Erityisesti tekstuurin koon rajoittamista varten Soucy et al. (1996) antaa menetelmän, jossa tekstuuriavaruuden kolmioita pienennetään niin, että se huonontaa vähiten resoluutiota mallin pinnalla. 5 TULOKSET JA SOVELTUVUUS Turk (2001) käyttänyt esimerkeissään (Kuva 7) kolmea tai neljää Gauss-pyramidin tasoa, joista tarkimmalla mallin pyramidissa on ollut 256 000 pistettä. Esimerkkikuvat ovat olleet kooltaan 64 64 tai 128 128 pikseliä. Parhaan sovituksen etsimisessä suuremman neliön sivun koko on ollut seitsemän tekseliä. Näillä asetuksilla ja 360 MHz SGI Octane2:lla syntetisointi on vaatinut 20 100 minuuttia, joten tekniikka ei ole vielä interaktiivinen. Turk on edeltävässä paperissaan (1991) tutkinut erityisesti eläinten teksturointia. Tätäkin menetelmää kuvaavan paperin esimerkkien mallit ovat kaikki eläimiä ja jotkut 13
Kuva 7: Esimerkkejä menetelmän tuloksista. Oikealla on syötteenä olleet kuvat (Turk, 2001) tekstuureistakin ovat eläimille tyypillisiä. Eläinten osalta tulokset ovat erittäin vakuuttavia. Esimerkit eivät kuitenkaan juurikaan näytä, miten menetelmä selviää keinotekoisempien tekstuurien kanssa, varsinkin jos niitä yhdistellään kulmikkaisiin muotoihin. On tosin huomattava, että palapelikuvion siirto elefanttimallin pinnalle on onnistunut säilyttäämään palapelin luonteen hämmentävän hyvin. Turk ei juurikaan käsittele eri parametrien vaikutusta. Efros ja Leung (1999) esittelevät paperissaan kaksiulotteisessa tapauksessa sovitusikkunan koon merkitystä tuloksen satunnaisuudelle. Menetelmän kaupallisen soveltamisen kannalta on tärkeää, että menetelmän tuloksiin vaikuttavien parametrien toiminta tunnetaan ja käyttäjä voi helposti ymmärtää niiden vaikutuksen. 6 YHTEENVETO Tekstuurien syntetisointi mallin pinnalla automatisoi tekstuurikoordinaattien valinnan ja ennen kaikkea malliin sopivan, yksilöllisen tekstuurin luomisen. Menetelmä hyödyntää kuvapohjaisten tekstuurien syntetisointimenetelmien vakiotyökalua, kuvapyramidia, ja laajentaa sen toimimaan myös kolmiulotteisen mallin pinnalla. Laajennuksen perustana on mallin pinnalle viritettyjen tasajakautuneiden pisteverkkojen hierarkia, joka vastaa kuvapyramidia. Tulokset ovat hyviä erityisesti orgaanisten muotojen kanssa eivätkä selvästi erottuvia muotoja sisältävät tekstuurit aiheuta ongelmia. Tekstuurin kokoa voidaan säädellä pisteverkon tiheydellä ja suuntaa syötevektoreiden avulla, joten käyttäjä voi vaikuttaa tulokseen merkittäviltä osin. 14
Menetelmän huono puoli on pitkä laskenta-aika. Graafikon tarvinnee kokeilla useita parametrien yhdistelmiä oikean löytämiseksi, jolloin useamman minuutin odotus tuloksen saamiseksi on turhan pitkä. VIITTEET Burt Peter J. & Adelson Edward H. 1983. The Laplacian Pyramid as a Compact Image Code. IEEE Transactions on Communications, COM-31(4), 532 540. De Bonet Jeremy S. 1997. Multiresolution sampling procedure for analysis and synthesis of texture images. Pages 361 368 of: Proceedings of the 24th annual conference on Computer graphics and interactive techniques. ACM Press/Addison- Wesley Publishing Co. Efros Alexei & Leung Thomas. 1999. Texture Synthesis by Non-parametric Sampling. Pages 1033 1038 of: International Conference on Computer Vision. IEEE. Heeger David J. & Bergen James R. 1995. Pyramid-based texture analysis/synthesis. Pages 229 238 of: Proceedings of the 22nd annual conference on Computer graphics and interactive techniques. ACM Press. Khodakovsky Andrei, Litke Nathan & Schröder Peter. 2003. Globally smooth parameterizations with low distortion. ACM Trans. Graph., 22(3), 350 357. Levy Bruno & Mallet Jean-Laurent. 1998. Non-Distortion Texture Mapping For Sheared Triangulated Meshes. Pages 343 352 of: Proceedings of the 25th annual conference on Computer graphics and interactive techniques. ACM Press. Maillot Jerome, Yahia Hussein & Verroust Anne. 1993. Interactive Texture Mapping. Pages 27 34 of: Proceedings of the 20th annual conference on Computer graphics and interactive techniques. ACM Press. Peachey Darwyn. 1985. Solid Texturing of Complex Surfaces. Pages 287 296 of: Proceedings of the 12th annual conference on Computer graphics and interactive techniques. ACM Press. Perlin Ken. 1985. An image synthesizer. Pages 287 296 of: Proceedings of the 12th annual conference on Computer graphics and interactive techniques. ACM Press. Piponi Dan & Borshukov George. 2000. Seamless Texture Mapping of Subdivision Surfaces by Model Pelting and Texture Blending. Pages 471 478 of: Proceedings of the 27th annual conference on Computer graphics and interactive techniques. ACM Press. 15
Praun Emil, Finkelstein Adam & Hoppe Hugues. 2000. Lapped textures. Pages 465 470 of: Proceedings of the 27th annual conference on Computer graphics and interactive techniques. ACM Press/Addison-Wesley Publishing Co. Simoncelli Eero P. & Portilla Javier. 1998. Texture Characterization via Joint Statistics of Wavelet Coefficient Magnitudes. Pages 62 66 of: Proceedings of Fifth International Conference on Image Processing, vol. 1. Soucy Marc, Godin Guy & Rioux Marc. 1996. A Texture-Mapping Approach for the Compression of Colored 3D Triangulations. The Visual Computer, 12(10), 503 514. Turk Greg. 1991. Generating textures on arbitrary surfaces using reaction-diffusion. Pages 289 298 of: Proceedings of the 18th annual conference on Computer graphics and interactive techniques. ACM Press. Turk Greg. 2001. Texture synthesis on surfaces. Pages 347 354 of: Proceedings of the 28th annual conference on Computer graphics and interactive techniques. ACM Press. Walter Marcelo, Fournier Alain & Menevaux Daniel. 2001. Integrating shape and pattern in mammalian models. Pages 317 326 of: Proceedings of the 28th annual conference on Computer graphics and interactive techniques. ACM Press. Wei Li-Yi & Levoy Marc. 2000. Fast texture synthesis using tree-structured vector quantization. Pages 479 488 of: Proceedings of the 27th annual conference on Computer graphics and interactive techniques. ACM Press/Addison-Wesley Publishing Co. Wei Li-Yi & Levoy Marc. 2001. Texture synthesis over arbitrary manifold surfaces. Pages 355 360 of: Proceedings of the 28th annual conference on Computer graphics and interactive techniques. ACM Press. Worley Steven. 1996. A cellular texture basis function. Pages 291 294 of: Proceedings of the 23rd annual conference on Computer graphics and interactive techniques. ACM Press. 16