Ville Nenonen 49533A

Samankaltaiset tiedostot
Teknillinen Korkeakoulu Tietoliikenneohjelmistojen ja multimedian laboratorio T Tietokonegrafiikan seminaari. Ville Nenonen 49533A

Graph cut - tekstuurisynteesitekniikka

TEKNILLINEN KORKEAKOULU Tietoliikenneohjelmistojen ja multimedian laboratorio T Tietokonegrafiikan seminaari Kevät 2004

Luku 8. Aluekyselyt. 8.1 Summataulukko

Kuva-analogiat. Juha Uotila 50468E

Tekstuurien syntetisointi pinnoille

Kombinatorinen optimointi

Johdatus verkkoteoriaan 4. luento

Kenguru 2015 Mini-Ecolier (2. ja 3. luokka) RATKAISUT

Datatähti 2019 loppu

Tietorakenteet, laskuharjoitus 7, ratkaisuja

Graafit ja verkot. Joukko solmuja ja joukko järjestämättömiä solmupareja. eli haaroja. Joukko solmuja ja joukko järjestettyjä solmupareja eli kaaria

Algoritmit 2. Luento 11 Ti Timo Männikkö

Algoritmit 2. Luento 13 Ti Timo Männikkö

T : Max-flow / min-cut -ongelmat

Kenguru 2019 Student lukio

10. Painotetut graafit

Scratch ohjeita. Perusteet

Algoritmit 1. Luento 8 Ke Timo Männikkö

A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä.

Yhtälöryhmät 1/6 Sisältö ESITIEDOT: yhtälöt

V. V. Vazirani: Approximation Algorithms, luvut 3-4 Matti Kääriäinen

Graafin 3-värittyvyyden tutkinta T Graafiteoria, projektityö (eksakti algoritmi), kevät 2005

Kenguru 2011 Cadet (8. ja 9. luokka)

Matematiikan tukikurssi

58131 Tietorakenteet (kevät 2009) Harjoitus 11, ratkaisuja (Topi Musto)

Impedanssitomografia-peli

Matematiikan tukikurssi

Johdatus graafiteoriaan

1. (a) Seuraava algoritmi tutkii, onko jokin luku taulukossa monta kertaa:

Toinen harjoitustyö. ASCII-grafiikkaa

PARITUS KAKSIJAKOISESSA

Johdatus graafiteoriaan

Algoritmit 2. Luento 6 To Timo Männikkö

S Laskennallinen Neurotiede

Algoritmit 2. Luento 13 Ti Timo Männikkö

Kenguru 2012 Cadet (8. ja 9. luokka)

Harjoitus 6 ( )

2 Pistejoukko koordinaatistossa

MAB3 - Harjoitustehtävien ratkaisut:

Department of Mathematics, Hypermedia Laboratory Tampere University of Technology. Roolit Verkostoissa: HITS. Idea.

Ongelma 1: Onko datassa tai informaatiossa päällekkäisyyttä?

Kenguru 2016 Student lukiosarja

Turun seitsemäsluokkalaisten matematiikkakilpailu Tehtävät ja ratkaisut

4. Varastossa on 24, 23, 17 ja 16 kg:n säkkejä. Miten voidaan toimittaa täsmälleen 100 kg:n tilaus avaamatta yhtään säkkiä?

Cadets Sivu 1 RATKAISUT

Algoritmit 1. Luento 13 Ti Timo Männikkö

Monikulmiot 1/5 Sisältö ESITIEDOT: kolmio

Luku 7. Verkkoalgoritmit. 7.1 Määritelmiä

Cadets Sivu 1

JOHDATUS TEKOÄLYYN TEEMU ROOS

MATEMATIIKKA JA TAIDE II

Kaksintaistelun approksimatiivinen mallintaminen (valmiin työn esittely)

Kenguru 2017 Student lukio

Kenguru 2013 Cadet (8. ja 9. luokka)

Relevanttien sivujen etsintä verkosta: satunnaiskulut verkossa Linkkikeskukset ja auktoriteetit (hubs and authorities) -algoritmi

1. STEREOKUVAPARIN OTTAMINEN ANAGLYFIKUVIA VARTEN. Hyvien stereokuvien ottaminen edellyttää kahden perusasian ymmärtämistä.

Kenguru 2013 Student sivu 1 / 7 (lukion 2. ja 3. vuosi)

Etsintä verkosta (Searching from the Web) T Datasta tietoon Heikki Mannila, Jouni Seppänen

Kenguru 2012 Student sivu 1 / 8 (lukion 2. ja 3. vuosi)

Kenguru 2012 Junior sivu 1 / 8 (lukion 1. vuosi)

2. Seuraavassa kuvassa on verkon solmujen topologinen järjestys: x t v q z u s y w r. Kuva 1: Tehtävän 2 solmut järjestettynä topologisesti.

Kenguru 2017 Ecolier: Ratkaisut (4. ja 5. luokka)

T Syksy 2004 Logiikka tietotekniikassa: perusteet Laskuharjoitus 7 (opetusmoniste, kappaleet )

Kenguru 2015 Ecolier (4. ja 5. luokka)

Matematiikan tukikurssi

Pong-peli, vaihe Aliohjelman tekeminen. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 3/7. Tämän vaiheen aikana

Teknillinen korkeakoulu Tietoliikenneohjelmistojen ja multimedian laboratorio T Tietokonegrafiikan seminaari.

13 Lyhimmät painotetut polut

Algoritmit 2. Luento 6 Ke Timo Männikkö

Demo 1: Simplex-menetelmä

ELOKUVATYÖKALUN KÄYTTÖ ANIMAATION LEIKKAAMISESSA. Kun aloitetaan uusi projekti, on se ensimmäisenä syytä tallentaa.

Puhesynteesin perusteet Luento 5: unit selection -synteesi

Verkon värittämistä hajautetuilla algoritmeilla

Kortinhaltijat joilla on maksukeskeytys Maksuryhmään liitettyjen kortinhaltijoiden lukumäärä, joiden maksut ovat tilapäisesti keskeytetty.

Sinulle on annettu bittijono, ja tehtäväsi on muuttaa jonoa niin, että jokainen bitti on 0.

Kenguru 2010 Cadet (8. ja 9. luokka) sivu 1 / 5

HB-Harkko-kirjasto asennetaan oletusarvoisesti ArchiCADin kirjastohakemiston alle (C:\Program Files\Graphisoft\ArchiCAD 13\Kirjasto 13).

Tekijä MAA2 Polynomifunktiot ja -yhtälöt = Vastaus a)

Ohjelmoinnin peruskurssi Y1

Algoritmit 2. Luento 12 Ke Timo Männikkö

Kohdissa 2 ja 3 jos lukujen valintaan on useita vaihtoehtoja, valitaan sellaiset luvut, jotka ovat mahdollisimman lähellä listan alkua.

Helsingin seitsemäsluokkalaisten matematiikkakilpailu Ratkaisuita

Harjoitus 6 ( )

Keskeiset ladonta-algoritmit verkostoanalyysityössä

Yhtälönratkaisusta. Johanna Rämö, Helsingin yliopisto. 22. syyskuuta 2014

Kenguru 2015 Cadet (8. ja 9. luokka)

Laskennallinen menetelmä puun biomassan ja oksien kokojakauman määrittämiseen laserkeilausdatasta

Verkko-optimointiin perustuva torjuntatasan laskenta mellakkapoliisin resurssien kohdentamisessa (valmiin työn esittely) Paavo Kivistö

14. Luennon sisältö. Kuljetustehtävä. Verkkoteoria ja optimointi. esimerkki. verkkoteorian optimointitehtäviä verkon virittävä puu lyhimmät polut

etunimi, sukunimi ja opiskelijanumero ja näillä

Harjoitus 3 ( )

MATEMATIIKKA JA TAIDE I

MAB3 - Harjoitustehtävien ratkaisut:

Tietotekniikan valintakoe

Avaruuslävistäjää etsimässä

Kaikkiin tehtäviin laskuja, kuvia tai muita perusteluja näkyviin.

Kenguru 2017 Cadet (8. ja 9. luokka)

N S. ta tai m ä. BLÄUER versio 1.0

Transkriptio:

Teknillinen Korkeakoulu 26.4.2004 Tietoliikenneohjelmistojen ja multimedian laboratorio T-111.500 Tietokonegrafiikan seminaari Kevät 2004: Kuvapohjaiset menetelmät 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 samankaltaisia 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 helposti näkyviin jääviä saumoja ei synny niin helposti kuin aiemmilla menetelmillä. Menetelmä toimii sekä kahdessa että kolmessa ulottuvuudessa, joten sitä voidaan käyttää sekä kuva että 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 vaikka kameran avulla. Tästä kuvasta voidaan tekstuurisynteesin avulla saada tarkka mutta silti luonnollisen näköinen suuri pinta, esimerkiksi sopivat rapattu seinä tai ruohokenttä. Tekstuurisynteesimenetelmillä on myös muita sovellusmahdollisuuksia kuten kuvasynteesi ja videotekstuurisynteesi. Syntetisoituja tekstuureja tarvitaan esimerkiksi tarkoissa kolmiulotteisissa malleissa kuten arkkitehtien rakennusmallit. Arvioin että tulevaisuuden sovelluskohteista todennäköisimmät ovat pelit ja kolmiulotteinen mallinnus. 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 2. Tämä paperi esittelee Siggraph-konfrenssissa vuonna 2003 julkaistun Graph Cut -menetelmän (Kwatra et al., 2003), jolla on saatu parempia tuloksia tekstuurisynteesissä kuin aiemmilla 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 taustaa 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 tekstuurisynteesissä. Kappale 5 keskittyy menetelmän käyttöön pysäytys- ja videokuvan syntetisoinnissa. Kappale 6 sisältää dokumentin yhteenvedon. Kuva 1: Lammas lähdekuva Kuva 2: Syntetisoituja lampaita kuuden iterointikierroksen jälkeen. 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. Kolmannessa luokassa, johon uusimmat menetelmät yleensä kuuluvat, kopioidaan lähdekuvista kokonaisia tilkkuja tai palasia, 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äksi värien histogrammeja, jotka sen jälkeen yhdistetään syntetisoitavaan 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 tässä paperissa esitellyt tekniikat mutta niiden lähdekuvan analysointimenetelmät ovat erinomai- 2

sia. 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. Ensimmäinen (De Bonet, 1997) tämän luokan menetelmä 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äälimmäisenä on yhden pikselin kokoinen kuva. Näin voidaan päätellä mitkä pikselit täytyy tulla vierekkä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. Näitä eroavaisuuksia pyritään tietenkin välttämään. Pikseli kerrallaan syntetisoivia tekniikoita on muitakin kuin edellä mainittu (Efros & Leung, 1999 ja Wei & Levoy, 2000). Saadut tulokset ovat usein hyviä ja soveltuvat myös spatiaalista informaatiota sisältäville tekstuureille kuten tiiliseinä tai puun syykuvio. Kolmannen luokan metodit, johon kuuluu myös tässä paperissa käsiteltävä Graph Cut -tekniikka, kopioivat lähdetekstuurista sopivia palasia tai tilkkuja syntetisoitavaan kuvaan. Tämä on myös luontevaa, koska 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äisen tämän tyypin algoritmin esitti Ashikhmin (Ashikhmin, 2001). Tässä algoritmissa lähdekuvaa käydään läpi pikseli kerrallaan syntetisoitavaa kuvaa varten siten että lähdekuvasta etsitään paras mahdollinen vieruspikseli nykyiselle pikselille. Parhaalla tarkoitetaan tässä tapauksessa sellaista pikseliä joka muistuttaa eniten valittua pikseliä. Käytännössä algoritmi löytää lähdetekstuurista melko suuria tilkkuja jotka kopioituvat suoraan, koska paras mahdollinen pikseli on usein alkuperäisessä kuvassa tarkkailtavan pikselin vieressä. Tilkkujen kopiontitekniikat sopivat parhaiten erityyppisille kuville ja sillä saadaan keskimäärin vähintään hyvä 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 Graph Cut -tekstuurisynteesi voidaan jakaa kahteen vaiheeseen eli tekstuurin leikkaukseen sekä sen liittämiseen syntetisoitavaan kuvaan. Nämä kaksi asiaa toimivat iteratiivisesti yhdessä jatkuvasti vuorotellen. Ensimmäisessä kappaleessa 3.1 käydään läpi sopivan palan valinta lähdekuvasta teksturoitavaan kuvaan ja toisessa kappaleessa 3.2 tämän palan liimausoperaatiosta syntetisoitavaan kuvaan. 3

3.1 Tekstuurien leikkausalgoritmi Graph Cut -menetelmässä tekstuurit leikataan ja sovitetaan syntetisoitavaan kuvaan kolmella eri menetelmällä. Menetelmät ovat 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 satunnaiseen kohtaan syntetisoitavaa kuvaa. Leikkausvaiheen iteraation seuraavat toimenpiteet riippuvat valitusta tavasta suorittaa leikkaus ja 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 tilkku nykyiseen kuvaan. Vertailuluku saadaan laskemalla yhteisestä kuva-alasta pikselien erotuksen toisen potenssin summa. Eli mitä enemmän leikkaussaumoilla on samankaltaisia pikseleitä tai mitä pienempi yhteinen pinta-ala on sitä parempi vertailuluvusta tulee. Saaduista vertailuluvuista voidaan halutessa arpoa satunnaisesti minkälaisen palan algoritmi valitsee. Näin kuvaan saadaan enemmän vaihtelua. 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äytyneillä tai lähes järjestäytyneillä tekstuureilla. Osatilkun sovittamisessa valitaan lähdekuvasta sellaisia palasia, jotka peittävät mahdollisimman hyvin syntetisoitavaan kuvaan syntyneitä ongelma-alueita. Tätä ongelmaaluetta syntetisoidussa kuvassa nimetään osatilkuksi. Lähdetekstuurista valitut kuvan palaset ovat aina joko ongelma-alueen kokoisia tai hieman suurempia. Jotta osattaisiin valita mahdollisimman hyvä pala lähdekuvasta osatilkun sovittamisessa lasketaan vastaava kustannuslaskelma kopioimisille kuin koko tilkun sovittamisessa. Tämän vertailuluvun avulla saadaan tietää miten kukin valittavissa oleva leikkaus sopii haluttuun sijoituskohtaan (ongelma-alueeseen). Vain sellaisia palasia otetaan huomioon jotka peit- 4

tä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. 3.2 Tekstuurien liimausalgoritmi Tekstuurien liimausalgoritmit voidaan jakaa kolmeen tapaukseen, joista jokainen on uusi tilanne johon algoritmi sopeutuu. Ensimmäinen tapaus on liimata kaksi uutta saumaa toisiinsa. 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 kuva-alan koko olla 8x32 pikseliä. Tälle yhteiselle kuva-alalle muodostetaan suorakulmion muotoinen graafi, jossa jokainen pikseli on yksi graafin solmuista. Tämän jälkeen asetetaan yksi solmu graafin molemmin puolin merkkamaan niitä pikseleitä tilkuista jotka eivät ole päällekkäin toistensa kanssa. Tässä esimerkki tapauksessa syntyy siis solmuinen graafi. Tämän jälkeen graafin 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 kaarille lasketaan pituus laskemalla kaaren molemmissa päissä päällekkäin olevien pikselien värien erotus, jonka jälkeen nämä erotukset lasketaan yhteen joka merkataan kyseessä olevan kaaren pituudeksi. Kun kaikkien solmujen väliin on laskettu kaari lasketaan leikkaus ylhäältä alas leikaten aina siitä kohdasta missä kaari on lyhin. Tämä leikkaus on yleisesti tunnettu graafi ongelma ja sen ratkaisu on helppo implementoida. Ratkaisu muistuttaa hyvin paljon tunnettuja graafin kahden solmun lyhimmän polun laskemiseen käytettyjä algoritmeja. Tätä ratkaisua on kutsuttu joko nimellä min-cut (Ford & Fulkerson, 1962) tai max-flow (Sedgewick, 2001). Kuva 3: Esimerkki kahden uuden sauman leikkauksesta ja siitä syntyneestä graafista. 5

Tätä kahden uuden kuvatilkun sauman muodostumista esitetään kuvassa 3. Kuvassa vasemmalla on tilkut A ja B joiden väliin jäänyt alue esitetään vaaleansinisellä värillä. Kuvien välinen leikkaus näkyy kuvassa punaisena viivana. Kuvan oikealla puolella näkyy pieni esimerkki miltä graafi näyttää ja miten siihen on syntynyt leikkaus. Kuvassa esimerkiksi lyhin kaari on ollut solmujen 1 ja 2 välillä. 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 palasien 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 tilkkua 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älisten kaarien pituus laskea uudelleen. Pituudeksi merkataan edelliseen tapaan olemassa olevien ja uusien pikselien värien erotusten summa. 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 laskettava 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. Kuva 4: Esimerkki uuden sauman liimauksesta vanhaan saumaan ja siitä syntyneestä graafista. Kuvassa 4 esitetään uuden sauman liimauksesta saumaan missä on jo vanha sau- 6

ma ennestään. Vanha sauma on merkattu punaisella ja uusi sauma sinisellä. Graafissa näkyvät pallot ovat saumasolmuja ja vihreät kaaret ovat kaaret näistä uuteen tilkkuun. 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ä vanhaan saumaan. Nyt algoritmi suoritetaan koko liimattavan kappaleen reunalle. Uuden tilkun keskelle jäänyt alue peittää alle jäävän mahdollisen ongelmakohdan. Graafin parhaan leikkauksen etsiminen -solmuiselle graafille on luokkaa (Sedgewick, 2001). Tekstuurisynteesissä käytetyissä graafeissa vaativuus on ollut enemmän luokkaa (Kwatra et al., 2003). 3.3 Tehokkuutta parantavat lisäykset On esitetty (Kwatra et al., 2003) kolme erilaista parannusta ja tehokkuutta lisäävä seikkaa Graph Cut -tekstuurisynteesimenetelmään. Ensimmäinen esitetty on parempi funktio kahden pikselin välisen eron laskemiseksi, kuin 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ä silti ole 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. On mainittu että yleensä jompikumpi saumakohtien näkyvyyttä estävä menetelmä toimii paremmin riippuen syntetisoitavasta kuvasta (Kwatra et al., 2003). Kolmas tapa parantaa Graph Cut -menetelmän tehokkuutta on muuttaa parasta saumaa etsivien algoritmien muoto sellaiseksi että voidaan käyttää hyväksi nopeita Fourier-muunnoksia. Tämä nopeuttaa saumoja etsivää algoritmia moninkymmenkertaisesti. 4 Tekstuurisynteesin tuloksia Tässä kappaleessa esitellään syntetisoituja tekstuureja sekä kommentoidaan synteesin onnistumista. Kuvat 5 ja 6 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. 7

Kuva 5: Näppäimistön lähdekuva. Kuva 6: Syntetisoitu näppäimistö kuuden iterointikierroksen jälkeen. Kuva 8 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 tilkun peilausta ja pyöritystä. Tämän voi nähdä myös vertaamalla syntetisoitua kuvaa lähdekuvaan (kuva numero 7). 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 7: Oliivi lähdekuva. Kuva 8: Syntetisoitu oliivitekstuuri, jossa on käytetty hyväksi myös tilkun rotaatioita ja peilausta. Kuvassa 2 nähdään syntetisoituja lampaita lähdekuvasta 1. 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 esiteltyä osatilkun sovittamista. 8

Graph Cut -menetelmällä saadaan aikaan parempia tuloksia kuin aiemmilla tekstuurisyntetisointimenetelmillä. Graph Cut-menetelmää on verrattu(kwatra et al., 2003) Efrosin ja Freemanin menetelmään (Efros & Freeman, 2001). 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 videotekstuurisynteesissä 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 syntetisoitavaan 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 11 nähdään miten on yhdistetty kuva 9 mökistä ja kuva 10 jokimaisemasta, jossa paras leikkaus on löytynyt vedestä. Myös silmämääräisesti arvioiden vesi näyttää olevan lähes saman väristä molemmissa kuvissa. Kuva 9: Kuva, josta leikataan mökki syntetisoitavaan kuvaan 11. Kuva 10: Kuva, josta leikataan metsämaisema syntetisoitavaan kuvaan 11. 9

Kuva 11: 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 erilaisille videomateriaaleille. 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. On esitetty (Kwatra et al., 2003), että 60 ruudun syntetisointi kahden olemassa olevan ruudun väliin toimii hyvin ja antaa hyviä tuloksia monilla videmateriaaleilla. 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 liikuttaa pikseleitä synteti- 10

soidessa uusia ruutuja olemassa olevien ruutujen väliin. Tälläisiin videoihin paras leikkausalgoritmi on osa-tilkun sovittaminen. Kun muutokset tapahtuvat sekä paikan että ajan mukaan on videon ikuinen toistaminen vaikeampaa kuin pelkän ajan suhteen syntetisoidessa. Tämä voidaan ratkaista pakottamalla syntetisoitavan videon kymmenen ensimmäistä ja kymmenen viimeistä ruutua samoiksi ja syntetisoinnin jälkeen poistamalla kymmenen ensimmäistä ruutua syntetisoidusta videosta. Epäonnistumisena on esitetty (Kwatra et al., 2003) meren rantaan lyövät aallot, 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 suurentaa kuten kaksiulotteisten kuvienkin tapauksessa. Tällöin suurempaan ruutuun syntetisoidaan alkuperäisen kaltaista kuvaa kuten kaksiulotteisissakin kuvissa. Videotekstuurisynteesi on Graph Cut -menetelmällä melko raskasta ja lyhyidenkin videoiden synteesin voi mennä tunteja nykyaikaisella tietokoneella. Esimerkkejä Graph Cut -menetelmällä syntetisoiduista videoista löytyy sivulta URL:<http://www.cc.gatech.edu/cpl/projects/graphcuttextures/>. Myös tässä paperissa esitetyt kuvat on saatu tältä sivulta lukuunottamatta kuvia 3 ja 4. 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 luotaessa 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, lampaiden tapauksessa vaikka kaksi silmää ja yksi pää, voisi tekstuurisynteesin laatu parantua nykyisestä. 11

VIITTEET Ashikhmin Michael. 2001. Synthesizing natural textures. Pages 217 226 of: Proceedings of the 2001 symposium on Interactive 3D graphics. ACM Press. 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. 12