Teknillinen Korkeakoulu 31.3.2004 Tietoliikenneohjelmistojen ja multimedian laboratorio T-111.500 Tietokonegrafiikan seminaari Kevät 2004 Ville Nenonen 49533A
Graph Cut tekstuurisynteesimenetelmä Ville Nenonen TKK, Tietoliikenneohjelmistojen ja multimedian laboratorio Ville.Nenonen@hut.fi Tiivistelmä Tämä paperi esittelee Graph Cut -tekstuurisynteesimenetelmän jonka avulla voidaan syntetisoida pienestä tekstuurinäytteestä suurempia samankalaisia tekstuureja. Menetelmä esittää uuden tavan sekä kuvapalasten leikkaukseen että liimaukseen uudeksi kuvaksi. Graph Cut -menetelmässä leikkaus- ja liimausoperaatiot lasketaan ottaen huomioon myös edelliset operaatiot jolloin aiemmilla menetelmillä helposti näkyviin jääneitä saumoja ei jää. Menetelmä toimii sekä kahdessa että kolmessa ulottuvuudessa joten sitä voidaan käyttää sekä kuva- ja videokuvasynteesissä jossa aika-akseli on kolmas ulottuvuus. 1 Johdanto tekstuurisynteesiin Tekstuurisynteesissä käsitellään pääsääntöisesti kaksiulotteisia kuvia siten että annetusta mallitekstuurista leikkaamalla ja liimaamalla saadaan vastaavat stokastiset ominaisuudet omaava (yleensä isompi) kuvatekstuuri. Tekstuureja halutaan syntetisoida koska suuria luonnollisen näköisiä tekstuureja on vaikea kopioida riittävän tarkasti suoraan luonnosta, kun taas pienten alueiden kuvaaminen on helppoa vaikkapa kameran avulla. Tästä kuvasta voidaan tekstuurisynteesin avulla saada tarkka mutta silti luonnollinen suuri pinta, esimerkiksi sopivat rapattu seinä tai ruohokenttä. Tekstuurisynteesimenetelmillä on myös muita sovellusmahdollisuuksia. Syntetisoituja tekstuureja tarvitaan pääasiassa tarkoissa kolmiulotteisissa malleissa kuten esimerkiksi arkkitehtien rakennusmallit. Arvioin että tulevaisuuden sovelluskohteista todennäköisin on pelit, mutta tällä hetkellä syntetisoitujen tekstuurien suuri koko ja tämän vuoksi suuri muistinkulutus rajoittaa niiden käyttöä. Tekstuurisynteesimenetelmien suurimmat ongelmat liittyvät tekstuurien leikkausja liimausoperaatioihin. Molemmat vaikuttavat siihen miten luonnollinen syntetisoidusta kuvasta saadaan. Epätoivottuja piirteitä ovat muun muassa näkyvät saumat sekä kuvan tai sen osien toistuminen samanlaisena pitkin kuvaa jolloin ihminen erottaa ne helposti kopioiduksi samasta kuvasta. Tekstuurisynteesi ei sovi kaikenlaisille kuville, 1
koska menetelmät perustuvat pääasiassa samankaltaisuuksien etsimiseen lähdekuvan eri osista. Tämän vuoksi menetelmät eivät osaa ottaa huomioon kuvan sisällön merkitystä luodessaan syntetisoitua kuvaa. Tämä voi aiheuttaa tahattomasti humoristisia tuloksia kuten yksikätisiä ihmisiä tai päättömiä lampaita kuten kuvassa 6. Tämä paperi esittelee Siggraph-konfrenssissa vuonna 2003 julkaistun Graph Cut -menetelmän (Kwatra et al., 2003), jolla on saatu parempia tuloksia tekstuurisynteesissä kuin vanhemmilla menetelmillä. Lisäksi menetelmä sopii myös muun muassa peräkkäisten pysäytyskuvien synteesiin aika-tasossa joten menetelmää voidaan käyttää myös videokuvan syntetisoimiseen. Kappaleessa 2 esitellään tekstuurisynteesin taustoja ja aiempia tuloksia. Kappale 3 käsittelee tarkasti Graph Cut -tekstuurisynteesiä. Menetelmä käydään läpi vaihe vaiheelta. Kappaleessa 4 esitellään menetelmän tuloksia tesktuurisynteesissä. Kappale 5 keskittyy menetelmän käyttöön pysäytys- ja videokuvan syntetisoinnissa. Viimeinen kappale 6 on yhteenveto tästä dokumentista. 2 Tausta Tekstuurisynteesitekniikat voidaan karkeasti jaotella kolmeen luokkaan. Ensimmäinen luokka on erilaiset parametrisointitekniikat, toinen luokka on menetelmät joissa mallikuvasta lasketaan erilaisia todennäköisyyksiä seuraavaksi pikseliksi joiden perusteella synteesikuva muodostetaan. Kolmas luokka johon uusimmat menetelmät yleensä kuuluvat kopioivat kokonaisia tilkkuja tai palasia lähdekuvista joista syntetisoitu kuva rakennetaan. Graph Cut -menetelmä kuuluu tähän kolmanteen luokkaan. Luokkarakenne on kuitenkin varsin karkea ja menetelmien välillä voi olla runsaasti yhteneväisyyksiä. Ensimmäisen luokan tekniikat käyttävät hyväkseen erilaisia parametreja joiden avulla lähdekuvaa voidaan tulkita ja joiden avulla saadaan aikaan syntetisoitu tulostekstuuri. Yksinkertaisin parametriesitys on käyttää hyväkseen värien histogrammeja jotka sen jälkeen yhdistetään syntetisoivaan kuvaan luotuun pohjakohinaan jonka avulla saadaan sopivaa satunnaisuutta. Menetelmä tuottaa hyviä tuloksia stokastisilla (satunnaisilla) tekstuureilla kuten hiekka (Heeger & Bergen, 1995). Toinen parametrisointitekniikka on esimerkiksi waveletien lisäys parametriksi (Portilla & Simoncelli, 2000). Parametrisoivat tekniikat eivät ole niin yleiskäyttöisiä kuin muut esitellyt tekniikat mutta niiden lähdekuvan analysointimenetelmät ovat erinomaisia. Tätä tietoa voidaan käyttää hyväksi erilaisissa hahmontunnistussovelluksissa. Parametrisointimenetelmien muunnelmia on tehty myös videokuvalle. Toisen luokan tekniikoissa kuvat muodostetaan kopioimalla yksi pikseli kerrallaan lähdekuvasta. De Bonet, 1997 esitti ensimmäisen tämän tekniikan menetelmän joka on kaksivaiheinen. Ensimmäisessä vaiheessa lähdekuvasta analysoidaan spatiaaliset (tilaa koskevat) todennäköisyydet kuvan eri osista vähentämällä kuvan resoluutiota kunnes päädytään yhden pikselin kokoiseen kuvaan. Nämä eri resoluution kuvat muodostavat liitoksia toistensa välillä ikään kuin pyramidin muotoon jossa päällimmäisenä on yhden pikselin kokoinen kuva. Näin voidaan päätellä mitkä pikselit täytyy tulla vierek- 2
käin jotta alkuperäisen kuvan tekstuurin muoto säilyisi. Toisessa vaiheessa rakennetaan edellisessä vaiheessa rakennetusta pyramidista syntetisoitava kuva analysoimalla todennäköisyyksiä mikä pikseli tulee jo kuvaan valitun pikselin viereen. Analysoinnissa käytetään hyväksi tietoa minkälaisia eroavaisuuksia ihmissilmä erottaa helpoiten. Näitä eroavaisuuksia pyritään tietenkin välttämään. Pikseli kerrallaan syntetisoivia tekniikoita on muitakin kuin edellä mainittu kuten Efros & Leung, 1999 ja Wei & Levoy, 2000. Saadut tulokset ovat usein hyviä ja soveltuvat myös spatiaalista informaatiota sisältäville tesktuureille kuten tiiliseinä tai puun syykuvio. Kolmannen luokan metodit joihin kuuluu myös tässä paperissa käsiteltävä Graph Cut -tekniikka kopioivat lähdetekstuurista sopivia palasia tai tilkkuja syntetisoituun tekstuuriin. Tämä on myös järkevää sillä useissa tekstuureissa on tiettyjä osia jotka toistuvat jatkuvasti. Tämän kolmannen ryhmän algoritmit keskittyvät ratkaisemaan ongelmia jotka johtuvat alkuperäisen kuvan leikkaamisesta ja saatujen palasten liimaamisesta tuloskuvaan. Ensimmäinen tämän tyypin algoritmi esiteltiin paperissa Ashikhmin, 2001 jossa lähdekuvaa käydään läpi pikseli kerrallaan syntetisoitavaa kuvaa varten siten että lähdekuvasta etsitään paras mahdollinen vieruspikseli nykyiselle pikselille. Käytännössä algoritmi löytää lähdetekstuurista melko suuria palasia jotka kopioituvat suoraan koska paras mahdollinen pikseli on usein tarkkailtavan pikselin vieressä alkuperäisessä kuvassa. Tilkkujen kopiontitekniikat sopivat parhaiten erityyppisille kuville ja sillä saadaan keskimäärin parhaan näköinen tulos jos algoritmia ei saa valita kuvaa varten erikseen. Nämä tekniikat eivät ole kuitenkaan erityisen hyödyllisiä hahmontunnistuksessa mutta sopivat usein videosynteesiin. 3 Graph Cut -menetelmän kuvaus Karkeasti ottaen Graph Cut -tekstuurisynteesi voidaan jakaa kahteen osioon eli tekstuurin leikkaukseen sekä sen liittämiseen syntetisoitavaan kuvaan. Kuitenkin nämä kaksi asiaa toimivat iteratiivisesti yhdessä jatkuvasti vuorotellen. Asia voidaan kuitenkin käsitellä melko hyvin kahdessa osassa jolloin se on myös helpompi ymmärtää. Ensimmäisessä osassa 3.1 käydään läpi sopivan palan valinta lähdekuvasta teksturoitavaan kuvaan ja toisessa osassa 3.2 tämän palan liimausoperaatiosta syntetisoitavaan kuvaan. 3.1 Tekstuurien leikkausalgoritmi Graph Cut -menetelmässä tekstuurit leikataan ja sovitetaan syntetisoitavaan kuvaan kolmella eri menetelmällä. Menetelmätovat täysin satunnainen leikkaus, koko tilkun sovittaminen ja osatilkun sovittaminen. Eri menetelmät sopivat erilaisille kuville. Jokaisessa menetelmässä pidetään huoli ettei koskaan kopioida samanlaista tilkkua uudelleen. Oli menetelmistä mikä tahansa käytössä niin ensimmäinen vaihe on kopioida koko kuva tai satunnaisesti osa siitä suorakulmion muotoisena joka sitten sijoitetaan 3
satunnaiseen kohtaan syntetisoitavaa kuvaa. Leikkausvaiheen iteraation seuraavat toimenpiteet riippuvat valitusta tavasta suorittaa leikkaus ja leikatun palan sijoitus. Täysin satunnaisessa leikkauksessa koko lähdekuva valitaan uudeksi tilkuksi jota sitten leikataan Graph Cut -algoritmin liimaustekniikan avulla sopivammaksi satunnaisesti valittuun sijoituskohtaan. Tätä toistetaan kunnes kuva on valmis. Mitä enemmän iteraatioita sitä enemmän tilkkuja kuvassa ja useimmiten myös parempi tulos. Tämä menetelmä on nopein leikkausalgoritmeista ja antaa hyviä tuloksia satunnaisilla tekstuureilla. Molemmissa sovitusmenetelmissä käytetään hyväksi Graph Cut -algoritmin laskemaa tietoa nykyisten saumojen kustannuksesta. Mitä suurempi kustannus saumalla on sitä suurempi todennäköisyys on että tämä sauma on näkyvä ihmissilmälle. Uusia tilkkuja pyritään sovittamaan näihin ongelma-alueisiin. Jos koko syntetisoitava kuva ei ole jo täysin lähdetekstuurin peitossa katsotaan että jokainen uusi liimattava tilkku peittää alleen myös jonkin verran peittämätöntä aluetta, jota analogisesti pidetään edellisen kaltaisena ongelma-alueena. Koko tilkun sovittamisessa etsitään lähdetekstuurista tilkku joka sopii mahdollisimman hyvin tämän hetkiseen tilanteeseen syntetisoitavassa kuvassa. Jokaiselle potentiaaliselle tilkulle lasketaan vertailuluku joita vertailemalla valitaan sopiva palanen nykyiseen kuvaan. Tätä tarkoitusta varten on kaava jossa lasketaan yhteisestä kuvaalasta pikseli kerrallaan peittävän ja vanhan pikselien toisen potenssin summa jaettuna vanhan kuvan peittyvällä alalla. Eli mitä enemmän leikkaussaumoilla on samankaltaisia pikseleitä tai mitä pienempi yhteinen pinta-ala on sitä parempi vertailuluvusta tulee. Saaduista vertailuluvuista voidaan haluttessa arpoa satunnaisesti minkälaisen palan algoritmi valitsee jotta saataisiin enemmän vaihtelua kuvaan. Vaihtoehdot vaihtelevat mahdollisimman sopivasta eli sellaisesta missä on mahdollisimman vähän leikkaavuuksia nykyisten palasten kanssa sellaiseen missä leikkaavuuksia on hieman enemmän. Tällä metodilla saadaan parhaita tuloksia järjestäytyneille tai lähes järjestäytyneillä tekstuureilla. Osatilkun sovittamisessa valitaan palasia lähdekuvasta jotka peittävät mahdollisimman hyvin syntetisoitavaan kuvaan syntyneitä ongelma-alueita. Tätä ongelma-aluetta syntetisoidussa kuvassa nimetään osatilkuksi. Valitut kuvan palaset ovat joko ongelmaalueen kokoisia tai hieman suurempia. Jotta osattaisiin valita mahdollisimman hyvä pala lähdekuvasta osatilkun sovittamisessa lasketaan vastaava kustannuslaskelma kopioimisille kuin koko tilkun sovittamamisessa. Tämän vertailuluvun avulla saadaan tietää miten kukin valittavissa oleva leikkaus sopii haluttuun sijoituskohtaan (ongelmaalueeseen). Vain sellaisia palasia otetaan huomioon jotka peittävät kokonaan syntetisoitavasta kuvasta valitun osatilkun. Myös tässä menetelmässä voidaan satunnaistaa miten täydellisesti sopivan palan algoritmi valitsee. Tämä menetelmä sopii parhaiten videokuvalle ja stokastisille tekstuureille. 4
3.2 Tekstuurien liimausalgoritmi Tekstuurien liimausalgorimit voidaan jakaa jakaa kolmeen osaan joista jokainen on oikeastaan uusi tilanne johon algoritmi sopeutuu. Ensimmäinen tapaus on liimata kaksi uutta saumaa toisisiinsa. Toinen tapaus on liittää yhteen kaksi kuvaa joissa toisessa tai molemmissa on jo vanhoja leikkauksia edellisten palasien kanssa. Kolmas tapaus on liimata uusi tilkku jo täysin täytettyyn kohtaan syntetisoitavassa kuvassa. Tälläinen tilanne tulee vastaan kun tahdotaan peittää saumakohtia uusilla tilkuilla. Kun kyseessä on kahden tilkun uusi sauma on ratkaistavana leikkaus näiden kahden tilkun välillä. Kuvat asetetaan osittain päällekkäin esimerkiksi 8 pikselin leveydeltä ja koko kuvan pituudelta. Esimerkiksi 32x32 pikselin tilkuilla voisi yhteisen kuvaalan koko olla 8x32 pikseliä. Tälle yhteiselle kuva-alalle muodostetaan suorakulmion muotoinen graafi jossa jokainen pikseli on yksi graafin solmu. Tämän jälkeen asetetaan yksi solmu merkkamaan molempia tilkun osia jotka eivät ole päällekkäin. Tämän jälkeen saadun graafien solmujen välille lasketaan kaaret. Kaaret graafin reunoilta lopputilkkua merkitseviin solmuihin merkataan äärettömän pituiksi. Tämä merkitsee sitä että nämä pikselit tulevat aina valituksi lopulliseen leikkaukseen. Lopuille solmuille lasketaan pituus laskemalla päällekkäin olevien pikselien värien erotus. Kun kaikkien solmujen väliin on laskettu kaari lasketaan leikkaus ylhäältä alas alkaen leikaten aina siitä kohdasta missä kaari on lyhin. Tämä leikkaus on yleisesti tunnettu graafiongelma ja sen ratkaisu on helppo implementoida. Tätä ratkaisua on kutsuttu joko nimellä min-cut (Ford & Fulkerson, 1962) tai max-flow (Sedgewick, 2001). Seuraava tilanne on ottaa huomioon tilkkua liitettäessä jo liitoskohtaan aiemmin liitettyjen tilkkujen saumat. Tässä kohtaa Graph Cut -menetelmä eroaa aiemmin käytetyistä algoritmeista sillä se muistaa aiemmat saumat toisin kuin vanhemmat ratkaisut. Uuden ja vanhojen palojen yhteyteen muodostetaan jälleen graafi kuten edellisessä kappaleessa kerrottiin mutta sillä erotuksella että vanhat leikkaukset merkataan tähän graafiin omina saumasolmuinaan. Jokainen saumasolmu liitetään kaarella uutta palaa merkitsevään solmuun. Tämän kaaren pituudeksi merkataan sitä merkitsevän vanhan sauman pituus. Koska saumasolmu tuli kahden äsken liitettynä olleen solmun väliin, täytyy näiden ja saumasolmujen välinen pituus laskea uudelleen. Pituudeksi merkataan edelliseen tapaan olemassa olevien ja uusien pikselien värien erotus. Samaan tapaan toimitaan jokaisen vanhan solmun kohdalla kunnes on jälleen luotu graafi, joka ei kuitenkaan enää ole suorakulmion muotoinen saumasolmujen vuoksi. Tämän jälkeen graafista ratkaistaan jälleen leikkaus. Jos saumasolmun ja uuden kuvan välinen kaari leikataan tarkoittaa tämä sitä että vanha sauma jää myös uuteen kuvaan. Jos sitä taas ei leikata, sauma peittyy uusilla pikseleillä eikä vanhaa kaaren pituutta lasketa mukaan tämän kaaren (sauman) pituuteen. Jos taas jompi kumpi kaarista saumasolmun ja pikselien välillä leikataan merkitsee tämä sitä että edellisen sauman kohtaan tulee myös uusi sauma jota esittävän kaaren pituuteen on laskettavan vanhaa saumaa esittävän kaaren pituus. On tärkeä huomata että korkeintaan yksi kolmesta jokaisesta saumasolmusta lähtevästä kaaresta voidaan leikata jotta min-cut algoritmi toimisi oikein. 5
Kolmas tilanne johon voidaan törmätä etenkin peitettäessä todennäköisesti näkyviä saumoja on sellainen missä uusi tilkku liitetään alueeseen joka on jo täytetty kokonaan aiemmilla tilkuilla. Tilanne ei eroa varsinaisesti mitenkään edellisessä kappaleessa selostetusta tilkkujen liittämisestä. Nyt algoritmi suoritetaan koko liimattavan kappaleen reunalle. Uuden tilkun keskelle jäänyt alue peittää alle jäävän mahdollisen ongelmakohdan. Graafin parhaan leikkauksen etsiminen n solmuiselle graafille on Sedgewick, 2001 mukaan luokkaa. Tekstuurisynteesissä käytetyissä graafeissa vaativuus on Kwatra et al., 2003 mukaan ollut enemmän luokkaa. 3.3 Tehokkuutta parantavat lisäykset Kwatra et al., 2003 esittävät kolme erilaista parannusta ja tehokkuutta lisäävä seikkaa Graph Cut -tekstuurisynteesimenetelmään. Ensimmäinen esitetty on parempi funktio kahden pikselin välisen eron laskemiseksikuin on pelkkä värien eron laskeminen joka on esitetty kappaleessa 3.2. Uudessa funktiossa otetaan huomioon myös se seikka että tasaisessa värialueessa algoritmin aiheuttamat epämuodostumat näkyvät helpommin. Niinpä värien erotuksen lisäksi otetaan huomioon myös värien muutoksen nopeus ympärillä olevissa pikseleissä (värien jyrkkyys). Toinen parannus Graph Cut-menetelmään on lisätä huntuisuutta saumakohtiin koska vaikka paras mahdollinen sauma löydetään aina ei se välttämättä ole silti näkymätön. Huntuisuus lasketaan jokaiselle pikselille sopivalta etäisyydeltä saumoista. Pikselien väriarvojen dynamiikkaa vähennetään joten mahdolliset näkyvät ongelmakohdat näkyvät huonommin. Toinen tapa vähentää saumojen näkyvyyttä on laskea kuvan resoluutiota saumojen kohdalta. Tämä vähentää kuvan kontrastia jos ongelmasaumoja on useita. Kwatra et al., 2003 mainitaan että yleensä jompikumpi saumakohtien näkyvyyttä estävä menetelmä toimii paremmin riippuen syntetisoitavasta kuvasta. Kolmas tapa parantaa Graph Cut -algoritmin tehokkuutta on muuttaa parasta saumaa etsivien algoritmien muoto sellaiseksi että voidaan käyttää hyväksi nopeita Fouriermuunnoksia. Tämä nopeuttaa saumoja etsivää algoritmia moninkymmenkertaisesti. 4 Tekstuurisynteesin tuloksia Tässä kappaleessa esitellään syntetisoituja tekstuureja sekä kommentoidaan synteesin onnistumista. Kuvat 1 ja 2 esittää näppäimistöstä syntetisoidun kuvan jossa vasemmalla on näyte ja oikealla suurempi syntetisoitu kuva. Tekstuurisynteesi on onnistunut hyvin koska näytekuvassa esiintyy toistuvia rakenteita jotka algoritmi kopioi kokonaisina syntetisoitavaan kuvaan. Tähän kuvaan on käytetty kappaleessa 3.1 selostettua koko tilkun sovittamista. 6
Kuva 1: Näppäimistön lähdekuva. Kuva 2: Syntetisoitu näppäimistö kuuden iterointikierroksen jälkeen. Kuva 4 esittää syntetisoitua kuvaa oliiveista jotka syntetisoituvat hyvin. Kuvaan on saatu lisää monipuolisuutta käyttämällä hyväksi myös muita muunnoksia kuin pelkkää kopiointia ja leikkausta. Tähän kuvaan on käytetty myös kuvan peilausta ja pyöritystä, tämän voi nähdä myös vertaamalla syntetisoitua kuvaa lähdekuvaan 3. Nämä muunnokset ovat hyödyllisiä kun syntetisoidaan sellaista tekstuuria jossa syntetisoitavien kappaleiden asennolla ei ole merkitystä kuten kuvan oliiveilla. Esimerkiksi ihmisjoukkoa syntetisoidessa ei pyöritys tuottaisi luonnollisen näköisiä tuloksia. Kuva 3: Oliivi lähdekuva. Kuva 4: Syntetisoitu oliivitekstuuri jossa on käytetty hyväksi myös rotaatioita. Kuvassa 6 nähdään syntetisoituja lampaita lähdekuvasta 5. Syntetisointi toimii muuten mainiosti mutta algoritmi ei osaa tulkita kuvan sisältöä joten lampailla saattaa olla kaksi häntää tai kaksi päätä. Tämän havaitseminen on helppoa. Tässä kuvassa on käytetty kappaleessa 3.1 käytettyä osatilkun sovittamista. 7
Kuva 5: Lammas lähdekuva Kuva 6: Syntetisoituja lampaita kuuden iterointikierroksen jälkeen. Graph Cut -menetelmällä saadaan aikaan parempia tuloksia kuin aiemmilla tekstuurisyntetisointimenetelmillä. Kwatra et al., 2003 vertaavat Graph Cut-menetelmää paperissa Efros & Freeman, 2001 esitetyn menetelmän kanssa. Kuvat ovat parempia Graph Cut -menetelmällä, koska kuvissa näkyy vähemmän selviä epämuodostumia joka johtuu Graph Cut -menetelmän tavasta etsiä aina parhaat mahdolliset leikkaukset kuvatilkuille. 5 Muita sovelluksia Graph Cut -menetelmälle Tekstuurisynteesin lisäksi Graph Cut -menetelmällä voidaan tehdä myös kuva- ja videotekstuurisynteesiä. Kuvasynteesissä useita kuvia yhdistetään yhdeksi kuvaksi kun taas videosynteesissä lyhyestä videosta syntetisoidaan pidempi ilman että video näyttäisi siltä että sitä vain toistetaan useita kertoja peräkkäin. 5.1 Kuvasynteesi Kuvasynteesi tapahtuu Graph Cut -algoritmilla merkkaamalla lähdekuviin mitkä pikselit tai pikselialueet on valittava mistäkin kuvasta. Tämän jälkeen algoritmi etsii parhaat mahdolliset saumakohdat leikattavaksi ja liimattavaksi yhteen kuvaan. Parhaita saumakohtia ovat joko sellaiset värialueet joita esiintyy sekä liimattavassa että leikattavassa kuvassa tai ne kohdat kuvissa joissa esiintyy jyrkkiä värimuunnoksia. Kuvasynteesi esimerkissä kuvassa 9 nähdään miten on yhdistetty kuva 7 mökistä ja kuva 8 jokimaisemasta jossa paras leikkaus on löytynyt vedestä joka myös silmämääräisesti arvioiden näyttää olevan lähes samanväristä molemmissa kuvissa. Kuva 7: Kuva josta leikataan mökki syntetisoitavaan kuvaan. Kuva 8: Kuva josta leikataan metsämaisema syntetisoitavaan kuvaan. 8
Kuva 9: Yhdistetty kuva jossa paras leikkaus kuvien välillä löytyi lähes samanvärisestä vedestä jota esiintyy molemmissa kuvissa. 5.2 Videotekstuurisynteesi Graph Cut -tekstuurisynteesitekniikka sopii hyvin myös videokuvan syntetisoimiseen. Videokuvan syntetisoiminen on haasteellisempi tehtävä kuin kaksiulotteisen kuvan syntetisoiminen koska siinä on myös temporaalinen ulottuvuus, eli aika. Myös videokuvaa syntetisoidessa on tärkeää valita sopiva tilkun leikkausmenetelmä, koska eri menetelmät toimivat eri tavoin erilaisilla videoilla. Videomateriaalissa voi muutokset tapahtua spatiaalisesti ja temporaalisesti. Jos muutoksia tapahtuu näissä molemmissa tasoissa on leikkauskin etsittävä näissä tasoissa. Jos videossa esiintyy vain temporaalisia muutoksia voidaan keskittyä etsimään leikkausta vain aikatasossa. Yksi sovellus videotekstuurisynteesille on tehdä lyhyistä videoista pidempiä niin että niitä voidaan toistaa ikuisesti ilman että niissä näkyy selviä merkkejä toistosta. Jos videossa esiintyy vain temporaalista muutosta voidaan videosta tehdä loppumaton etsimällä riittävän samanlaisia kuvia ja syntetisoimalla niiden väliin jäävät ruudut Graph Cut -menetelmällä. Tällöin leikkaukseksi syntyy aina taso eikä viiva kuten kaksiulotteisissa sovelluksissa. Kwatra et al., 2003 esittää että 60 ruudun syntetisointi kahden olemassa olevan ruudun väliin toimii hyvin ja antaa hyviä tuloksia monilla videoilla. Tyypillisiä videoita joissa muutokset ovat lähinnä temporaalisia ja edellä mainittu synteesi toimii hyvin ovat esimerkiksi tuulessa huojuva pelto ja suihkulähde. Jos videossa on temporaalisen muutoksen lisäksi huomattavaa spatiaalista muutosta on videosynteesi vaikeampaa. Tälläisiä videoita ovat esimerkiksi savu joka liikkuu jatkuvasti tiettyyn suuntaan ja aallot jotka lyövät meren rantaan. Tälläisiä videoita syntetisoidessa täytyy ottaa huomioon myös liikkeen suunta ja myös liikuttaa pikseleitä syntetisoidessa uusia ruutuja olemassa olevien ruutujen väliin. Tälläisiin videoihin paras leikkausalgoritmi on osa-tilkun sovittaminen. Kun muutokset tapahtuvat sekä pai- 9
kan että ajan mukaan on videon ikuinen toistaminen paljon vaikeampaa kuin pelkän ajan suhteen syntetisoidessa. Tämä voidaan ratkaista pakottamalla syntetisoitavan videon 10 ensimmäistä ja viimeistä ruutua samoiksi ja syntetisoinnin jälkeen poistamalla 10 ensimmäistä ruutua syntetisoidusta videosta. Kwatra et al., 2003 esittää meren rantaan lyövät aallot sellaisena materiaalina jota he eivät onnistuneet syntetisoimaan koska algoritmi hävittää aallot alhaalta ylös eikä onnistu syntetisoimaan niiden katoamista rantahietikkoon. Jos syntetisoitava video on hyvin lyhyt voi sen syntetisointi onnistua jos videossa näkyvä ilmiö on luonnossakin tarpeeksi satunnainen. Tälläinen ilmiö on esimerkiksi tuli jota voidaan syntetisoida onnistuneesti lyhyestäkin näytteestä lisäämällä spatiaalisiin siirtymiin sattumanvaraisuutta. Tämä lisää entisestään syntetisoidun videon monipuolisuutta. Myös videon kokoa voidaan suurenta kuten kaksiulotteisten kuvienkin tapauksessa. Tällöin suurempaan ruutuun syntetisoidaan alkuperäisen kaltaista kuvaa kuten kaksiulotteisissakin kuvissa. Esimerkkejä Graph Cut -menetelmällä syntetisoiduista videoista löytyy sivulta URL:<http://www.cc.gatech.edu/cpl/projects/graphcuttextures/>. 6 Yhteenveto Tässä paperissa esiteltiin Graph Cut -tekstuurisynteesimenetelmä jonka avulla syntetisoituihin tekstuureihin löydetään aina parhaat mahdolliset leikkaus- ja liimauskohdat. Sekä leikkaukseen että liimaukseen esitettiin useita ratkaisumalleja jotka sopivat erilaisiin tilanteisiin. Tämä tekee algoritmista mukautuvan. Menetelmällä on useita sovelluksia kuten tekstuurisynteesi, kuvasynteesi ja videotekstuurisynteesi. Mielestäni Graph Cut -menetelmä on melko vakuuttava ja vertailutulokset aiemmin käytettyihin menetelmiin ovat selvästi paremmat joskin ongelmatapauksia ja niiden mahdollisia ratkaisukeinoja olisi voinut esitellä enemmän. Kaksiulotteisille tekstuureille algoritmi toimii kuitenkin hienosti ja algoritmia voisi käyttää jo nyt hyväksi luodessa suuria tekstuureja tarkkoihin kolmiuloitteisiin malleihin. Graph Cut -menetelmä jättää kuitenkin useita jatkotutkimuksen kohteita monimutkaisempien tekstuurien syntetisointia varten. Yksi näistä olisi kehittää jokin älykäs järjestelmä joka tunnistaisi kuvasta minkälaiset muodot ovat toivottuja jotta päättömiä lampaita ei syntyisi syntetisoinnissa. Universaalin ratkaisun kehittäminen olisi todennäköisesti lähes mahdotonta mutta jos algoritmi osaisi etsiä ominaisuudet jotka toistuvat tietynmuotoisissa kappaleissa on, lampaiden tapauksessa vaikkapa kaksi silmää ja yksi pää, voisi tekstuurisynteesin laatu parantua vielä nykyisestä. VIITTEET Ashikhmin Michael. 2001. Synthesizing natural textures. Pages 217 226 of: Proceedings of the 2001 symposium on Interactive 3D graphics. ACM Press. 10
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 A. & Freeman William T. 2001. Image quilting for texture synthesis and transfer. Pages 341 346 of: Proceedings of the 28th annual conference on Computer graphics and interactive techniques. ACM Press. Efros Alexei A. & Leung Thomas K. 1999. Texture Synthesis by Non-Parametric Sampling. Page 1033 of: Proceedings of the International Conference on Computer Vision-Volume 2. IEEE Computer Society. Ford L. & Fulkerson. 1962. Flows in Networks. Princeton University Press. 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. Kwatra Vivek, Schödl Arno, Essa Irfan, Turk Greg & Bobick Aaron. 2003. Graphcut Textures: Image and Video Synthesis Using Graph Cuts. ACM Transactions on Graphics, SIGGRAPH 2003, 22(3), 277 286. Portilla Javier & Simoncelli Eero P. 2000. A Parametric Texture Model Based on Joint Statistics of Complex Wavelet Coefficients. Int. J. Comput. Vision, 40(1), 49 70. Sedgewick. 2001. Algorithms in C. Addison-Wesley. Chap. Part 5: Graph Algorithms. 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. 11