Julkisivutekstuurin liittäminen 3D-malliin
Transcription
Julkisivutekstuurin liittäminen 3D-malliin
HELSINKI UNIVERSITY OF TECHNOLOGY Laboratory of Photogrammetry and Remote Sensing Department of Surveying Julkisivutekstuurin liittäminen 3D-malliin Anna Erving 2007 Julkisivutekstuurin liittäminen 3D-malliin Teknillisen korkeakoulun Maanmittausosastolla tehty Diplomityö Espoo, tammikuu 2007 Anna Erving Tekniikan ylioppilas Valvoja: Prof. Henrik Haggrén Ohjaaja: Petteri Pöntinen ii TEKNILLINEN KORKEAKOULU DIPLOMITYÖN TIIVISTELMÄ Tekijä: Anna Erving Työn nimi: Julkisivutekstuurin liittäminen 3D-malliin Päivämäärä: 16.1.2007 Osasto: Maanmittausosasto Professuuri: Maa-57. Fotogrammetria ja kaukokartoitus Pääaine: Fotogrammetria Sivumäärä: 98 Työn valvoja: Professori Henrik Haggrén Työn ohjaaja: Tekniikan lisensiaatti Petteri Pöntinen Teksturointi tarkoittaa pintakuvioinnin liittämistä 3D-mallin pintaan. Pintakuviointi eli tekstuuri voi koostua yhdestä väristä, keinotekoisesta kuviosta tai oikeasta valokuvasta. Teksturointi lisää kohdemallin realistisuutta ja tietosisältöä, ja sitä käytetäänkin nykyään paljon 3D-mallien yhteydessä. Tämän diplomityön tavoitteena on selvittää rakennusten tasomaisten julkisivupintojen teksturointiprosessi, sen mahdollisuudet ja ongelmakohdat. Pääpaino on teksturointiprosessin eri vaiheiden kuvaamisessa. Lisäksi huomioitavia seikkoja ovat prosessin eri vaiheiden automatisointi ja sen soveltuvuus laajoille aineistoille. Tekstissä käydään läpi perusteoria tekstuurin liittämiseksi 3D-mallin pintaan. Lisäksi tutkitaan eri menetelmiä tehtävän kehittämiseksi mahdollisimman automaattiseksi ja suurelle aineistolle sopivaksi. Työssä kartoitetaan myös erilaisia ongelmatilanteita ja niiden ratkaisuvaihtoehtoja. Ongelmia tuottavat muun muassa näkymäesteet ja puutteelliset lähtötiedot. Tutkimuksen tueksi on tehty kaksi koetyötä. Toisessa teksturoitu julkisivumalli on muodostettu maakuvista PhotoModeler Pro -ohjelmalla. Toisessa vastaava malli on tehty maalaserkeilauksen avulla. Työ sisältää esimerkkejä teksturointimenetelmistä erilaisissa tapauksissa. Jopa viimeisimpiä tutkimustuloksia hyväksi käyttäen teksturointi on edelleen haastava tehtävä. Erityisesti näkymäesteiden huomioiminen ja automatisointi tuovat ongelmia prosessin onnistumiseen. Teksturoinnissa tulisi löytää kompromissi tarkkuuden, visuaalisen ulkoasun ja käytettävissä olevien resurssien välille. Työ on osa VTT:n (Valtion tieteellinen tutkimuskeskus) 3D Maasto –projektia, ja tuloksia hyödynnetään projektissa käytettävän 3D-mallin julkisivujen teksturoinnissa. Avainsanat: teksturointi, 3D-malli, projektiivinen Kieli: Suomi, tiivistelmä muunnos, automaattinen, näkymäeste englanniksi iii HELSINKI UNIVERSITY OF ABSTRACT OF THE TECHNOLOGY MASTER’S THESIS Author: Anna Erving Thesis title: Façade texturing of a 3D-model Date: 16.1.2007 Department: Department of Surveying Professorship: Maa-57. Photogrammetry and remote rensing Major: Photogrammetry Supervisor: Henrik Haggrén, Professor Instructor: Petteri Pöntinen, Lic.Sc. Number of pages: 98 Texture mapping means adding of a surface texture to the face of a 3D-model. Surface texture can be made up of single color, artificial pattern, or real photograph. Texture mapping increases the realism and the data content of the object model and nowadays it is often used with 3D-models. The aim of this master thesis is to define the texture mapping process of planar façade surfaces and explore its possibilities and problems. The main objective is to describe the phases of the texture mapping process. In addition, automation of different phases in this process and its suitability for extensive datasets are discussed. The thesis includes the basic theory of texture mapping. Additionally, different methods for developing the task as automatic as possible and compatibility for extensive datasets are studied. Various problematic situations and their solution options are surveyed as well. Problem sources are, for example, occlusions and insufficient source information. To support this research, two experimental tasks have been done. In the first experiment, a textured façade model has been created with terrestrial photographs and PhotoModeler Pro –software. In the second case, the corresponding model has been constructed through terrestrial laser scanning. The work includes a wide range of examples concerning texture mapping methods in various cases. Texture mapping is a challenging task, even when using the state of the art research findings. Particularly, taking into account the occluding objects and automation produces problems for solving the process successfully. Furthermore, a compromise should be found between accuracy, visual appearance and available resources. The work is part of the 3D Maasto –project at VTT (Technical Research Centre of Finland). The results will be utilized in the façade texture mapping of 3D-models used in the project. Keywords: texture mapping, 3D-model, projec- Language: Finnish, English abtive transformation, automatic, occlusion stract iv Alkusanat Tämä diplomityö on tehty vuoden 2006 aikana osana VTT:n 3D Maasto –projektia Teknillisen korkeakoulun Fotogrammetrian ja kaukokartoituksen laboratoriossa. Haluaisin kiittää 3D Maasto –projektin projektinjohtaja Eija Parmesta mielenkiintoisesta aiheesta, tuesta ja kommenteista työn eri vaiheissa. Kiitokset myös työn valvojalle professori Henrik Haggrénille ja ohjaajalle Petteri Pöntiselle avustuksesta ja neuvoista sekä laboratorion muulle henkilökunnalle, joka on ylläpitänyt mukavaa työympäristöä ja opastanut tarvittaessa. Erityiskiitoksen ansaitsevat lisäksi Tauno sekä kaikki kaverit, jotka ovat tehneet opiskeluajasta ikimuistoisen. Espoo, tammikuu 2007 Anna Erving v SISÄLLYSLUETTELO 1 JOHDANTO ........................................................................................................... 1 1.1 Nykyhetken tutkimusta ................................................................................ 4 1.2 Työn rakenne ............................................................................................... 6 2 TEOREETTISET PERUSTEET.......................................................................... 7 2.1 Tausta........................................................................................................... 7 2.2 Muunnokset ............................................................................................... 11 2.2.1 Affiininen muunnos ........................................................................... 11 2.2.2 Bilineaarinen muunnos....................................................................... 12 2.2.3 Projektiivinen muunnos ..................................................................... 13 2.2.4 Menetelmien vertailua........................................................................ 16 2.3 Projektiot.................................................................................................... 18 2.3.1 Ortografinen projektio........................................................................ 20 2.3.2 Perspektiivinen projektio ................................................................... 21 2.4 Yhdistelmämuunnos .................................................................................. 24 2.5 Muita toimenpiteitä.................................................................................... 25 2.5.1 Suodatus ............................................................................................. 26 2.5.2 Interpolointi........................................................................................ 27 2.5.3 Kuvanmuodostus................................................................................ 32 3 TEKSTUROINTI KÄYTÄNNÖSSÄ ................................................................. 34 3.1 Teksturointiprosessin kulku....................................................................... 34 3.2 Kuvaus ....................................................................................................... 36 3.3 Muunnosparametrien ratkaisu.................................................................... 39 3.3.1 Tuntemattomat orientointitiedot......................................................... 39 3.3.2 Likimääräiset orientointitiedot ........................................................... 40 3.3.3 Kalibroimaton kamera........................................................................ 40 3.4 Vastinpiirteiden määritys........................................................................... 40 3.4.1 Piirreirrotus ........................................................................................ 41 3.4.2 Yhteensovitus..................................................................................... 45 3.5 Näkymäesteiden huomioiminen ................................................................ 47 3.5.1 Liikkuvat näkymäesteet ..................................................................... 48 3.5.2 Paikallaan olevat näkymäesteet.......................................................... 52 vi 3.5.3 Mallinnetut näkymäesteet .................................................................. 53 3.5.4 Näkymäesteiden poisto laajoissa aineistoissa .................................... 54 3.6 Kuvan ehostus............................................................................................ 55 4 LAAJOJEN AINEISTOJEN TEKSTUROINTI............................................... 57 4.1 Laajan aineiston haasteita .......................................................................... 57 4.2 Hierarkisen tietorakenteen hyödyntäminen ............................................... 58 4.2.1 Nelipuu............................................................................................... 59 4.2.2 Kuvapyramidi..................................................................................... 60 4.2.3 Level of detail .................................................................................... 61 4.2.4 CityGML ............................................................................................ 62 4.3 Kuvattavan alueen määritys....................................................................... 63 4.4 Kuvien tallennus ja pakkaus ...................................................................... 64 5 KOETYÖT............................................................................................................ 65 5.1 Teksturointi laatikkomallin pinnalle .......................................................... 65 5.1.1 Lähtötiedot ja työn vaiheet................................................................. 65 5.1.2 Mallinnuksen tulokset ........................................................................ 67 5.2 Teksturointi pistepilvistä muodostetun mallin pinnalle............................. 74 5.2.1 Lähtötiedot ja työn vaiheet................................................................. 74 5.2.2 Mallinnuksen tulokset ........................................................................ 76 6 YHTEENVETO.................................................................................................... 80 LÄHDELUETTELO LIITTEET vii KUVAT: Kuva 1: Pintatekstuuri tuo lisäarvoa 3D-mallille.................................................................... 1 Kuva 2: Tekstuuri valokuvalta: vasemmalla valokuva, oikealla malli, johon kyseinen tekstuuri on liitetty (Blinn et al., 1976) .......................................................................... 2 Kuva 3: (a), (b) ja (c) alkuperäisiä kuvia, (d) saatu alkuperäisiä yhdistelemällä (Ortin et al., 2005) .............................................................................................................................. 5 Kuva 4: 1D-tekstuuri, 2D-tekstuuri ja 3D-tekstuuri (Anon 3)................................................ 7 Taulukko 1: Perinteisen ja fotogrammetrisen teksturoinnin eroja (mukailtu lähteestä Weinhaus et al., 1997).................................................................................................... 8 Kuva 5: Teksturoinnin geometria (Weinhaus et al., 1997). .................................................... 9 Kuva 6: Affiinisesti muunneltuja kuvia, alkuperäinen kuva vasemmalla (Heckbert, 1989). 12 Kuva 7: Vasemmalla alkuperäinen kuva, oikealla alkuperäisestä bilineaarisesti muunneltu kuva (Heckbert, 1989).................................................................................................. 13 Kuva 8: Bilineaarisesti muunnettuja nelikulmioita: (a) Ruudukko lähtöavaruudessa. (b) ja (c) Lähtöruudukko muunnettuna erimuotoisiksi nelikulmioiksi (Heckbert, 1989)...... 14 Kuva 9: Projektiivisesti muunnettuja kuvia, jotka ovat samanmuotoisia kohtien 8 (b) ja (c) kanssa. Lähtökuvana toimii sama ruudukko kuin kuvassa 8 kohta (a). (Heckbert, 1989) ...................................................................................................................................... 16 Kuva 10: Vasemmalla ruututekstuuri, oikealla teksturointi lineaarisen muunnoksen avulla (Heckbert, 1989). ......................................................................................................... 17 Kuva 11: Teksturointi projektiivisen muunnoksen avulla (Heckbert, 1989)........................ 18 Kuva 12: (a) Alkuperäinen kuva. (b) Teksturointi lineaarisella muunnoksella. (c) Teksturointi bilineaarisella muunnoksella. (d) Teksturointi projektiivisella muunnoksella. (Weinhaus et al., 1997)........................................................................ 19 Kuva 13: Vasemmalla perspektiivinen ja oikealla ortografinen projektio (Farmer, 2002). . 19 Kuva 14: Ortografinen projektio (Anon 4). .......................................................................... 20 Kuva 15: Ortografinen projektio tekstuurin ja kohteen välillä (Weinhaus et al., 1999). ...... 21 Kuva 16: Perspektiiviprojektion geometria, kun kuva- ja kohdetasot ovat yhdensuuntaiset (Inkilä, 2005)................................................................................................................ 21 Kuva 17: Perspektiiviprojektio tekstuurin ja kohteen välillä (Weinhaus et al., 1999).......... 24 Kuva 18: Tekstuurikuva (vasemmalla) ja näyttökuva (oikealla) ovat usein erikokoisia ja muotoisia...................................................................................................................... 26 Kuva 19: Vasemmalla: Tekstuurialue on pienempi kuin vastaava alue näytöllä. Oikealla: Tekstuurialue on suurempi kuin vastaava alue näytöllä. (Neider et al.) ...................... 27 Kuva 20: Ruutukuvion teksturointi lähimmän naapurin interpoloinnilla (Heckbert, 1989). 28 viii Kuva 21: Bilineaarisen interpoloinnin periaate (Peltonen, 2006)......................................... 28 Kuva 22: Kuutiokonvoluutiossa painojen jakautuminen naapuripisteille. Vaaka-akselilla on pisteen etäisyys naapuripisteeseen ja pystyakselilla painotuksen suuruus. Interpoloitava piste sijaitsee vaaka-akselin kohdassa nolla, eli lähimpiä naapuripisteitä painotetaan enemmän. (Anon 5) .................................................................................. 29 Kuva 23: Alkuperäinen kuva (Bockaert). ............................................................................. 30 Kuva 24: Lähimmän naapurin interpolointi (Bockaert)........................................................ 30 Kuva 25: Bilineaarinen interpolointi (Bockaert). ................................................................. 30 Kuva 26: Kuutiokonvoluutio (Bockaert). ............................................................................. 30 Kuva 27: Interpolointi eteenpäinmuunnoksen tapauksessa. ................................................. 31 Kuva 28: Interpolointi taaksepäinmuunnoksen tapauksessa................................................. 32 Kuva 29: Renderöinti scanline-algoritmilla (vasemmalla) ja säteenjäljitysalgoritmilla (oikealla) (Hormann, 2006).......................................................................................... 33 Kuva 30: Teksturointiprosessin kulku eri tapauksissa.......................................................... 36 Kuva 31: Julkisivutekstuuri koottu maakuvasta (alaosa) ja ilmakuvasta (yläosa) (Früh et al., 2004). ........................................................................................................................... 37 Kuva 32: Etualalla olevien tekstuurien resoluutio on parempi kuin taka-alalla olevien (Früh et al., 2004)................................................................................................................... 38 Kuva 33: 3D-mallin sisältämät viivat vasemmalla vihreällä, kuvalta löydetyt viivat oikealla punaisella (Früh et al., 2004)........................................................................................ 42 Kuva 34: Hough-muunnoksen avulla erotettu rakennuksen reunaviiva kuvalta (Böhm et al., 2002). ........................................................................................................................... 43 Kuva 35: Rakennuksesta löydettyjä viivoja. Kaikki saman seinätason vaakasuuntaiset viivat risteävät samassa pisteessä eli pakopisteessä. Vastaava toteutuu myös pystyviivojen tapauksessa. (Lee et al., 2002a).................................................................................... 44 Kuva 36: Vasemmalta oikealle: kuvalta havaitut viivat, mallin sisältämät viivat ja yhteensovitus (David et al., 2003)................................................................................ 46 Kuva 37: Rakennuksesta muodostettu yksinkertainen näkökulmagraafi (Böhm et al., 2002). ...................................................................................................................................... 46 Kuva 38: Vastinpiirteisiin perustuva taaksepäinleikkaus (Klinec, 2004). ............................ 47 Kuva 39: Vasemmalla tunnettu karkea orientointi, oikealla korjaus taaksepäinleikkauksen avulla (Böhm et al., 2002)............................................................................................ 47 Kuva 40: Neljä kuvaa rakennuksesta, jonka edessä kulkevat liikenne ja jalankulkijat peittävät osittain julkisivun alaosaa. Kameran paikka ja kuvaussuunta on sama jokaisena kuvanottohetkenä. (Böhm, 2004)................................................................. 48 Kuva 41: Kuva muodostettu niistä pikseliarvoista, joita esiintyi eniten vastinpikseleiden vertailussa (Böhm, 2004). ............................................................................................ 49 ix Kuva 42: Mediaanisuodatus (Metherall, 2000). ................................................................... 50 Kuva 43: Mediaanisuodatus näkymäesteiden poistamisessa (mukailtu lähteestä Bornik et al., 2001). ........................................................................................................................... 50 Kuva 44: Vasemmalla joukko kuvia pinossa, oikealla vastinpikselien väriarvot taulukossa. Yksi väriarvo poikkeaa selvästi kolmesta muusta arvosta, joten se on luultavasti liikkuvasta näkymäesteestä. (Böhm, 2004).................................................................. 51 Kuva 45: Ylärivissä kolme eri suunnista otettua kuvaa julkisivusta. Julkisivun näkyvyyttä haittaa liikkuvien ihmisten lisäksi keskellä oleva patsas. Alarivissä julkisivuosa on muunnettu tasomaisen julkisivun suuntaiseksi ortokuvaksi. (Böhm, 2004) ................ 52 Kuva 46: Julkisivu ortokuvana, josta näkymäesteitä on poistettu (Böhm, 2004)................. 52 Kuva 47: Tekstuurikartasto (texture atlas) koostuu nelipuurakenteesta (Buckholz et al., 2005) ............................................................................................................................ 53 Kuva 48: Peittävän kohteen vaikutus tekstuuripintaan (Bornik et al., 2001)........................ 54 Kuva 49: (a) Julkisivusta otettu useita eri kuvia. (b) Seinätekstuuri koottu yhdistämällä eri kuvia, jolloin sävyerot näkyvät kuvien rajakohdissa. (Varshosaz, 2004) .................... 55 Kuva 50: Teksturoitu 3D-malli Stuttgartista (Kada, 2004)................................................... 58 Kuva 51: Yllä kaksi tekstuurikuvaa ja alla niitä vastaavat nelipuuesitykset. Kuvien perspektiivistä johtuen resoluutio vaihtelee kuvan eri osissa. Siksi kuvat on jaettu nelipuussa kolmeen eri osaan. (Bornik et al., 2001) .................................................... 59 Kuva 52: Tekstuuri yhdistettynä kahdelta eri kuvalta. Vasemmanpuoleinen osa on otettu toiselta kuvalta ja oikeanpuoleinen ja keskiosa toiselta kuvalta siten, että parhaat alueet molemmilta kuvilta tulee käytettyä. (Bornik et al., 2001) ........................................... 60 Kuva 53: Kuvapyramidi (Ofek et al., 1997). ........................................................................ 60 Kuva 54: Eri yksityiskohtatasoja kanimallien tapauksessa. Vasemmalta oikealle mallit koostuvat 69451, 8680, 1085 ja 135 monikulmiosta. (Erikson, 2000) ........................ 61 Kuva 55: Tarkinta mallia käytetään lähitarkastelussa, karkeinta mallia kaukaa katsottuna. Vasemmalta oikealle mallit sisältävät 17361, 8680, 4340, 2169 ja 1085 pintaa. (Erikson, 2000)............................................................................................................. 62 Kuva 56: CityGML:n määrittelemät viisi yksityiskohtatasoa (Gröger et al., 2006). ............ 63 Kuva 57: Kuvauspaikat ja niistä otetut tekstuurikuvat. ........................................................ 66 Kuva 58: M-osaston julkisivun teksturointi eri suunnista otetuilta kuvilta. Kuva (a) on vasemmanpuoleisimmasta kuvauspaikasta, (h) oikeanpuoleisimmasta asemasta........ 69 Kuva 59: Pää-aulan julkisivun teksturointi eri kuvilta. Kuva (a) on vasemmanpuoleisimmasta kuvauspaikasta, (e) oikeanpuoleisimmasta asemasta........ 72 Kuva 60: Koko malli parhailla tekstuureilla. ........................................................................ 73 Kuva 61: Ruukkujen sijainnit julkisivujen suhteen. ............................................................. 73 x Kuva 62: FARO-laserkeilain sekä muuta mittauksessa tarvittavaa kalustoa (Kuva: Hyyppä, 2006) ............................................................................................................................ 74 Kuva 63: Maalaserkeilaimella skannattu alue. ..................................................................... 75 Kuva 64: Teksturoitu 3D-malli laserkeilausaineistosta. ....................................................... 76 Kuva 65: Pikselit eivät ole kiinni toisissaan. ........................................................................ 77 Kuva 66: Mallin visuaalisia puutteita. .................................................................................. 78 xi TAULUKOT: Taulukko 1: Perinteisen ja fotogrammetrisen teksturoinnin eroja (mukailtu lähteestä Weinhaus et al., 1997).................................................................................................... 8 xii Luku 1 Johdanto Tämä työ käsittelee tekstuurikuvien liittämistä 3D-malleihin. Pääpaino on sen työprosessin vaiheiden kuvaamisessa, jonka lopputuloksena kolmiulotteisen kohdemallin pintaan on lisätty tekstuuri-informaatiota. Tekstuuri tarkoittaa pikseleistä koostuvaa taulukkoa, jossa jokainen pikseli sisältää jonkin väriarvon. Teksturointi lisää kohdemallin realistisuutta ja tietosisältöä, ja siksi useissa mallinnusprojekteissa mallien pinnoille määritellään jokin väri, keinotekoinen kuvio tai kuva oikealta valokuvalta (Kuva 1). Erityisesti silloin, kun tekstuuri tulee suoraan valokuvalta, on kohdemallista mahdollista tehdä erittäin todenmukaisen näköinen. Kuva 1: Pintatekstuuri tuo lisäarvoa 3D-mallille. Teksturoinnin sovelluskohteita on nykyään lukemattomia. Entistä tehokkaammat menetelmät tuottavat yhä realistisemman näköisiä pintakuvioita. Tekstuureja voidaan käyttää minkä tahansa 3D-mallin yhteydessä. 3D-malleja tehdään paljon arvokkaista arkkitehtuurisista kohteista, arkeologisista löydöistä sekä laajoista kaupunkialueista. Näihin on mahdollista lisätä tekstuuri oikealta valokuvalta. Lisäksi mallinnusta käytetään esimerkiksi teollisuuden simulointisovelluksissa ja kaupunki- 1 suunnittelussa. Näissä tapauksissa aitoa valokuvatekstuuria ei ole saatavilla, joten on turvauduttava tekstuurikirjastoihin, keinotekoisiin kuvioihin tai yksittäisiin väreihin. Teksturoinnin historia ulottuu 1920-luvulle saakka. Ensimmäisenä tekstuuripintojen geometrisia muunnoksia sovellettiin ilmakuvien orto-oikaisussa. Siinä kuvamosaiikki oikaistaan karttaprojektioon tavallisimmin projektiivisen muunnoksen avulla. Julkisivujen teksturoinnissa kuva oikaistaan yleensä tasomaiselle pinnalle, ja se on näin ollen verrattavissa orto-oikaisuun. Alun perin idean ilmakuvien oikaisuun esitti Th. Scheimpflug vuonna 1897. Kesti kuitenkin yli kolmekymmentä vuotta, ennen kuin O. Lacmann vuonna 1929 toteutti orto-oikaisun käytännössä. 1900-luvun puolen välin jälkeen orto-oikaisuun oli saatavilla jo käyttökelpoisia kojeita, ja ortokuvia alettiin tuottaa yhä enemmän ja enemmän. Nykyään ortokuvia käytetään monissa sovelluksissa, esimerkiksi maastokartoituksen digitointipohjana. (Schwidefsky et al., 1976) Teksturoinnin uranuurtajana pidetään Edwin Catmullia, joka ensimmäisenä esitti tiilikuvion liittämistä mielivaltaiselle tasomaiselle ja sylinterimuotoiselle pinnalle vuonna 1974 (Weinhaus et al., 1997). Kaksi vuotta myöhemmin oikea valokuva liitettiin tekstuuriksi teekannun muotoiselle pinnalle (Kuva 2) (Blinn et al., 1976). Kuva 2: Tekstuuri valokuvalta: vasemmalla valokuva, oikealla malli, johon kyseinen tekstuuri on liitetty (Blinn et al., 1976) Teksturointiprosessin vaiheita ovat kuvaus, yhden tai useamman kuvan sisäinen ja ulkoinen orientointi, teksturoitavan alueen määritys sekä kuvalla että kohdemallissa, kuvan ja kohdemallin välisten muunnosparametrien ratkaisu ja tekstuurin liittäminen kuvalta mallille. Lopuksi tulos voidaan esittää esimerkiksi tietokoneen näytöllä tai tallentaa tietokantaan myöhempää käyttöä varten. Jos kuvia on useampia ja käytettävä kohdemalli muodostetaan näiden avulla, tehdään kuville sisäisen ja ulkoisen orientoinnin lisäksi keskinäinen orientointi. Prosessin edetessä mallin visuaaliseen esitykseen näyttökuvalla tarvitaan tekstuurikuvan suodatusta ja interpolointia. Prosessin eri vaiheissa on myös mahdollista tehdä kuvien ehostusta ja huomioida mah2 dollisia näkymäesteitä. Seuraavassa teksturoinnin vaiheita käsitellään hieman tarkemmin. Teksturointiprosessi vaatii lähtöaineistoksi tietoa kohdemallin geometriasta, jotta pintakuvio osataan liittää oikealle paikalle. Jos tekstuuri otetaan valokuvalta, tarvitaan lisäksi yksi tai useampi kuva kohteesta. Suurempi määrä kuvia antaa enemmän vaihtoehtoja, jolloin tekstuurin visuaalista laatua voidaan tarvittaessa parantaa. Jo kuvaustilanteessa on hyvä huomioida mahdolliset näkymäesteet, kuvanottogeometria sekä kuvan radiometriset ominaisuudet. Kuvan sisäisen orientoinnin avulla selvitetään 2D-kuvakoordinaattien ja 3Dkamerakoordinaattien välinen yhteys. Muunnosparametrit ratkaistaan kamerakalibroinnilla. Kalibroinnin tuloksena saadaan selville kameran tarkat pääpisteen koordinaatit, kameravakio sekä optiikan piirtovirheet. 3D-malli koostuu yleensä monikulmioista, joiden kulmapisteiden koordinaatit ovat tunnettuja. Malli muodostetaan esimerkiksi kuvilta mallintamalla tai laserkeilauksen avulla. Jos malli luodaan kuvien perusteella, tehdään kuville keskinäinen orientointi, jossa ne muunnetaan yhteiseen koordinaatistoon. Kuvien sijainti ja orientointi 3D-mallin suhteen on myös tunnettava työn onnistumiseksi. Ulkoisen orientoinnin parametrit voi selvittää ennen kuvausta tai kuvauksen jälkeen. Myös likimääräinen orientointi on riittävä, jos käytettävissä on menetelmiä sen tarkentamiseksi. Jos tekstuurina toimii keinotekoinen kuvio tai yksittäinen väri, ei geometrisiä muunnoksia juurikaan tarvita. Halutut pinnat 3D-mallilla väritetään ja tekstuuri on valmis. Valokuvien tapauksessa prosessi on monimutkaisempi ja haastavampi. Teksturoitavia pintoja vastaavat alueet on selvitettävä kuvilta. Tämä vaihe on suoraviivainen, jos kuvien ja kohdemallin tarkka keskinäinen orientointi on tunnettu. Muissa tapauksissa käytetään esimerkiksi manuaalista alueen määritystä tai piirreirrotusta kuvan tulkitsemisessa. Kun tekstuurialueet kuvilla ovat selvillä, projisoidaan ne mallin pintaan. Lisäksi teksturoitu 3D-malli voidaan projisoida näyttökuvalle tai tallentaa tietokantaan. Koska tekstuurikuvan, mallin ja näyttökuvan tekstuuriosat ovat usein erimuotoisia ja kokoisia, pelkkä projisointi ei riitä, vaan tarvitaan tekstuurikuvan oikaisua ja siihen liittyvää kuvan suodatusta ja interpolointia. Teksturointiprosessi voi olla joko manuaalinen, puoliautomaattinen, tai täysin automaattinen. Manuaalisessa tapauksessa tekstuurialue kuvalla ja kohdemallilla mitataan ja merkitään käsin. Puoliautomaattisessa teksturoinnissa osa tehtävistä on au- 3 tomatisoitu ja osa tapahtuu manuaalisesti. Esimerkiksi osa kuvalla olevasta tekstuurialueesta sekä sitä vastaava kohta mallilla mitataan käsin, mutta loput havaitaan automaattisesti. Automaattinen menetelmä ei vaadi lainkaan käsityötä. Mitä automaattisempi menetelmä on, sitä nopeammin työ tapahtuu ja sitä paremmin menetelmä sopii myös laajoille aineistoille. Lisähaasteita työlle tuottavat erilaiset näkymäesteet kuvilla. Niiden huomioiminen ja mahdollinen eliminointi voi tapahtua prosessin eri vaiheissa, kuten jo kuvaustilanteessa tai ennen kuvien liittämistä mallin pintaan. Näkymäesteiden poistamiseksi on kehitetty monenlaisia menetelmiä. Täysin automaattista menetelmää, joka toimisi kaikissa tilanteissa, ei kuitenkaan vielä ole. Käytettävät menetelmät on myös valikoitava sen mukaan, minkälaisesta aineistosta kyse. Laajoille aineistoille käytetään erilaisia metodeja kuin pienille aineistoille. 1.1 Nykyhetken tutkimusta Tietokoneiden tehokkuuden parantuminen mahdollistaa nykyään yhä vaativampien teksturointitehtävien suorittamisen (Remondino et al., 2006). On olemassa valmiita ohjelmia, joiden avulla 3D-mallia voi helposti täydentää pintakuvioinnilla. Tekstuurina käytetään useita eri lähteitä, kuten maakuvia, ilmakuvia ja satelliittikuvia keinotekoisten väri- ja tekstuuripintojen lisäksi. Viimeaikaisissa tutkimuksissa on keskitytty muun muassa teksturoinnin automatisointiin, reaaliaikaisuuteen, näkymäesteiden poistamiseen ja realistisuuden lisäämiseen. Osaa näistä aihealueista tullaan käsittelemään myös tässä työssä. Seuraavassa käydään lyhyesti läpi muutamia tutkimusaiheita. Tarkoituksena on antaa lukijalle yleiskuva eri aihealueista, ongelmista ja huomionarvoisista asioista, joita teksturointitekniikka sisältää. Teksturoitavat kohteen voivat olla sekä pieniä että isoja. Erikokoisiin kohteisiin tarvitaan luonnollisesti erilaisia menettelytapoja. Pienissä kohteissa, kuten patsaissa ja sitä pienemmissä objekteissa, tarkkuus ja visuaalinen yksityiskohtaisuus ovat tärkeitä (Rocchini et al., 1999). Kontrolloitu mittausympäristö edesauttaa hyviä tuloksia. Yksityiskohtaisia malleja on luotu myös kokonaisista rakennuksista laserkeilainaineiston ja kuvien avulla (Allen et al., 2003; Liu et al., 2006). Tällaisia menetelmiä on käytetty erityisesti merkittävien arkkitehtuuristen rakennusten mallintamiseen ja teksturointiin. Laajoilla aineistoilla käsitetään yleensä kokonaisia kaupunkialueita. Näissä tapauksissa julkisivujen oletetaan yleensä olevan tasomaisia. Davis et al. (1999) tuovat artikkelissaan esiin laajojen aineistojen vaatimia menetelmiä, kuten hierarkiaan perustuvan tietorakenteen ja monien erilaisten aineistojen hyödyntämisen, ilman vaativia tiedonkäsittelyresursseja. 4 Edellä kuvatuissa menetelmissä tekstuurikuvina käytetään maakuvia, mutta teksturointia tehdään myös ilmakuvilta, kuten Zebedin et al. (2006) kuvaavat artikkelissaan. Julkisivutekstuureja on vaikeampi saada ilmakuvilta, sillä kuvat otetaan yleensä kohtisuoraan alaspäin. Kuvien hankinnassa onkin käytettävä erilaisia periaatteita kuin maakuvien tapauksessa. Monissa tapauksissa kolmiulotteinen kohdemalli muodostetaan samoista kuvista, joita käytetään myös teksturointiin. Näin on menetelty esimerkiksi artikkelissa (Dick et al., 2000). Tämä nopeuttaa työn etenemistä, kun kuvien sijainti kohdemallin suhteen on jo etukäteen tunnettu. Myös mahdollisuuksien mukainen automatisointi lisää prosessin tehokkuutta. Täysin automaattisen menetelmän toteuttaminen on kuitenkin erittäin haastavaa tai jopa mahdotonta tapauksissa, joissa tarvittavat lähtötiedot ovat puutteelliset, tekstuurikuvat sisältävät näkymäesteitä tai prosessissa on muita ongelmatilanteita. Näkymäesteiden poistamiseksi on kehitelty useita teksturointiprosessin eri vaiheisiin soveltuvia menetelmiä. Kuvaus voidaan tehdä siten, että kuvassa esiintyy mahdollisimman pieni määrä näkymäesteitä. Toisaalta myös usean samaa kohdetta esittävän kuvan yhdistäminen poistaa näkymäesteitä. Kuvassa 3 kohtien (a), (b) ja (c) vastinpikseleiden sävyarvoista on laskettu mediaani, joka määrittää tuloskuvan vastaavan tekselin, eli tekstuurilla olevan pikselin, arvon (Ortin et al. 2005). Kuva 3: (a), (b) ja (c) alkuperäisiä kuvia, (d) saatu alkuperäisiä yhdistelemällä (Ortin et al., 2005) Tekstuurikuvien hankinta on usein hitain työvaihe erityisesti silloin, kun kuvat otetaan maanpinnalta. Yhdellä kuvalla näkyy suhteellisen pieni alue. Siksi kuvauspaik5 koja tarvitaan paljon laajalle alueelle, ja siirtymät paikasta toiseen vievät aikaa. Työtä on koetettu nopeuttaa ja automatisoida ajoneuvoista tehtävillä kuvauksilla ja mittauksilla (Früh et al., 2001). Mallinnuksessa ja teksturoinnissa käytettävät laitteet on asennettu auton lavalle, ja tietoa kerätään ajamalla normaalin liikenteen seassa kortteleita ympäri. Projekteja, joissa kohteiden teksturointi on vahvasti mukana, on käynnissä ympäri maailmaa. Esimerkkeinä mainittakoon NEXUS (Anon 1) ja AVENUE (Georgiev et al., 2005). 1.2 Työn rakenne Tämä diplomityö on osa VTT:n 3D Maasto -projektia, ja sen tavoitteena on tutkia tekstuurin liittämistä 3D-mallin pintaan ja erityisesti rakennuksen tasomaiseen julkisivuun. Projektissa käytetään malliaineistona Terrasolid Oy:n tekemää 3D-mallia Otaniemestä, joka sisältää alueen rakennukset. Diplomityön ensisijaisena tehtävänä on selvittää teksturointiprosessin vaiheet. Lukuun 2 on koottu perusteoriaa erilaisista geometrisista muunnoksista, joita käytetään hyväksi teksturointitehtävissä. Tämän jälkeen luvussa 3 käsitellään teksturointiprosessiin liittyvät vaiheet, sisältäen kuvien hankinnan, piirreirrotuksen, muunnosparametrien ratkaisun, yhteensovituksen ja näkymäesteiden huomioimisen. Yleisesti tekstissä pohditaan automaattisuuden sisällyttämisestä prosessin eri vaiheisiin. Luku 4 sisältää tietoa laajan aineiston teksturoinnista. Lisäksi osana diplomityötä on tehty kaksi koetyötä, joissa toisessa teksturoitu malli muodostetaan valokuvien avulla ja toisessa maalaserkeilaamalla. Luku 5 sisältää tietoa ja tuloksia näistä kahdesta koetyöstä. 6 Luku 2 Teoreettiset perusteet 2.1 Tausta Teksturointi tarkoittaa pintakuvioinnin liittämistä 3D-mallin pintaan. Tekstuuri voi olla joko yksi-, kaksi- tai kolmiulotteinen (Kuva 4). Yksiulotteisen tekstuurin värin määrittää vain yksi koordinaattiakseli. Siinä väriarvo muuttuu lineaarisesti kahden värin välillä x-akselin suunnassa. Jos halutaan kuvata korkeusvaihteluita, onnistuu se hyvin 1D-tekstuurilla, jolloin eri korkeudet kuvautuvat eri värisävyillä kun korkeus muuttuu x-akselin suunnassa. Kaksiulotteinen tekstuuri voidaan kuvata kahden koordinaattiarvon avulla. 2D-tekstuuri voi olla mikä tahansa kuva, joka on tasossa, esimerkiksi valokuva. Kolmiulotteisen tekstuurin määrää kolme koordinaattia. Tällöin 3D-tekstuuri sisältää väriarvoja myös kohteen muissa osissa kuin vain sen tasomaisessa pinnassa. Kuva 4: 1D-tekstuuri, 2D-tekstuuri ja 3D-tekstuuri (Anon 3). Tekstuuri voidaan esittää joko diskreetteinä arvoina taulukkona tai matemaattisena funktiona. Näiden sisältämät arvot muodostavat tekstuurikuvan. Tässä työssä käsitellään 2D-tekstuurin liittämistä 3D-malliin. 7 Kun tarkoitetaan 2D-kuvien liittämistä tasomaisille kohteille, puhutaan 2Dteksturoinnista (2D-mapping). Yksinkertaisimmat kaksiulotteiset teksturointimenetelmät perustuvat affiiniseen, bilineaariseen ja projektiiviseen muunnokseen. Teksturointimenetelmät voidaan jakaa ns. perinteiseen ja fotogrammetriseen menetelmään. Fotogrammetrinen teksturointi perustuu tässä perspektiivimuunnokseen, ja 3D-mallin muodostaminen, kuvien projisointi kohdemallin pinnalle, vääristymien huomioiminen ja tehtävän automatisointi tehdään nimenomaan fotogrammetrisia menetelmiä hyväksi käyttäen. Perinteisessä teksturoinnissa kuvat ovat yleensä keinotekoisia, kun taas fotogrammetrisessa teksturoinnissa ne on otettu oikeilta valokuvilta. Perinteisen menetelmän tekstuurikuvat otetaan yleensä kohtisuoraan kohdetasoa vasten ja ne liitetään tason pintaan ilman tekstuurin vääristymien huomioimista. Fotogrammetrisessa tapauksessa kuvat voivat olla viistokuvia ja teksturointivaiheessa erilaiset vääristymät otetaan huomioon. Lisää tietoa löytyy taulukosta 1, johon on listattu tärkeimpiä eroja menetelmien välillä. Tässä työssä käsitellään fotogrammetrista teksturointia. Taulukko 1: Perinteisen ja fotogrammetrisen teksturoinnin eroja (mukailtu lähteestä Weinhaus et al., 1997). Perinteinen teksturointi - Tekstuurit usein keinotekoisia - Käytössä suhteellisen vähän erilaisia pieniä tekstuureja - Samaa tekstuuria kopioidaan useisiin paikkoihin mallille - Tekstuurit yleensä ortokuvia - Vääristymiä ei huomioida prosessin aikana - Tekstuurin sijainnin määritys kohdemalliin nähden manuaalisesti Fotogrammetrinen teksturointi - Tekstuurit oikeita valokuvia - Käytössä useita isoja tekstuurikuvia - Tekstuurit ovat uniikkeja kohdepintojen kanssa - Tekstuurit yleensä viistokuvia - Vääristymät otetaan huomioon prosessin aikana - Tekstuurin sijainnin määritys kohdemalliin nähden automaattisesti Teksturoinnin geometria on esitetty kuvassa 5. Se sisältää kaksi muunnosta, toinen 3D-kohde- ja 2D-tekstuuriavaruuden välillä ja toinen 3D-kohde- ja 2Dnäyttöavaruuden välillä. 8 Kuva 5: Teksturoinnin geometria (Weinhaus et al., 1997). Kohdeavaruus sisältää 3D-mallissa olevien pintojen yhtälöt. Muunnos kohteen ja tekstuurin välillä voi olla esimerkiksi affiininen, bilineaarinen tai projektiivinen. Kohteen ja näytön välillä oleva projektio on yleensä ortografinen tai perspektiivinen. Jos muunnos on projektiivinen, on se geometrialtaan yleensä perspektiiviprojektion kaltainen. Nykyään teksturointiprosessissa käytetään yleisimmin projektiivista muunnosta. Projektiivisen muunnoksen yksi erikoistapaus on perspektiiviprojektio, jota useiden muiden sovelluskohteiden tapaan käytetään tässäkin työssä kuvautumisgeometrian perustana. Perspektiiviprojektiota voidaan siis käyttää sekä tekstuurin ja kohteen, että kohteen ja näytön välisessä muunnoksessa. Tekstuurin ja kohteen välissä voitaisiin käyttää myös esimerkiksi affiinista muunnosta. Jos kuitenkin tekstuurikuvat on otettu viistosti julkisivuun nähden, on projektiivinen muunnos parempi vaihtoehto. Tekstuurin ja kohteen välistä muunnoksen määritystä kutsutaan myös pinnan parametrisoinniksi, kun tekstuuri muunnetaan kohteen koordinaatistoon. Muunnosta kohdeavaruudesta näyttöavaruuteen taas kutsutaan kuvausmuunnokseksi tai projektioksi. (Heckbert, 1989) Usein muunnokset kohteen, tekstuurin ja näytön välillä yhdistetään, jolloin käytössä on yhdistelmämuunnos. Yhdistelmämuunnosta tekstuuriavaruudesta näyttöavaruuteen käytetään silloin, kun teksturoitu malli halutaan esittää esimerkiksi näytöllä. Jos tekstuurin, kohteen ja näytön välillä kuvautuminen tapahtuu keskusprojektion eli perspektiiviprojektion avulla, on yhdistelmämuunnos 2D-tekstuuriavaruuden ja 2Dnäyttöavaruuden välillä projektiivinen muunnos. Myös silloin, kun parametrisointiin käytetään affiinista muunnosta ja projisoinnissa perspektiivigeometriaa, on yhdistelmämuunnos projektiivinen. Yhdistelmämuunnoksen avulla saadaan minimoitua 9 laskentatyön määrä. Se voi olla joko suora muunnos tekstuurilta näytölle tai käänteinen muunnos näytöltä tekstuuriin. (Weinhaus et al., 1997) Suorassa menetelmässä 2D-tekstuurikoordinaatit muunnetaan ensin 3Dkamerakoordinaateiksi. Kamerakoordinaatisto on sama kuin 2Dtekstuurikoordinaatisto, mutta lisänä kolmantena komponenttina on kameravakio c . Vastaava ulottuvuus näytön kamerakoordinaatistolle on polttoväli f . Kamerakoordinaatit muunnetaan keskusprojektiogeometrian avulla 3D-kohdekoordinaateiksi. Samaa perspektiiviprojektiota käyttäen siirrytään kohdeavaruudesta näytön 3Dkamerakoordinaatistoon ja jättämällä syvyyssuure pois edelleen 2Dnäyttökoordinaatistoon. Muunnokset 2D-kuva- ja 3D-kamera-avaruuden välillä tapahtuvat yhdensuuntaisprojektiolla, joka on ortografinen projektio. (Heckbert, 1989) Vaikka suora menetelmä tuntuu yksinkertaiselta, voi ongelmaksi muodostua näyttökuvaan jäävät reiät ja päällekkäisyydet tekstuurissa, sillä pintakuvion matka tekstuurikuvalta näytölle kulkee muunnosten kautta ja erilaiset vääristymät voivat haitata loppukuvan visuaalista tarkkuutta. Yleisemmin käytetäänkin käänteistä menetelmää, ja edellä kuvattu prosessi kuljetaan päinvastaisessa järjestyksessä. Siinä siis lähdetään liikkeelle näyttökuvasta, ja kohteen kautta haetaan halutut väriarvot tekstuurikuvalta. Teksturoinnin vaiheet käänteisessä fotogrammetrisessa tapauksessa ovat tarkemmin seuraavat (Weinhaus et al., 1999): 1. Valitaan pikseli 2D-näyttökuvalta ( x, y ) ja muunnetaan sen koordinaatit näytön 3D-kamerakoordinaateiksi ( x, y, f ) (kolmantena koordinaattina polttoväli f ). 2. Projisoidaan säde projektiokeskuksesta näytön 3D-kamerakoordinaattien läpi käyttäen kollineaarisuusehtoa (kameran sijainti ja orientointi tunnettu). 3. Säde leikkaa kohteen pinnan ja saadaan selville kuvalta valitun pikselin vastaava sijainti kohteessa ( X , Y , Z ) . 4. Käytetään tekstuurikuvan kollineaarisuusehtoa säteen projisoimiseksi kohteen leikkauskohdasta ( X , Y , Z ) kohti tekstuurikuvan projektiokeskusta, jotta löydettäisiin tekstuurille 3D-kamerakoordinaatit kuvatasossa (u, v, c) . 10 5. Muunnetaan tekstuurin 3D-kamerakoordinaatit (u, v, c) 2Dtekstuurikoordinaateiksi (u , v) . 6. Interpoloidaan tekstuuriarvo osoittamaan 2D-näyttökoordinaattia. Suora ja käänteinen menetelmä toimivat samoin myös tekstuurikuvan ja kohdemallin välillä. Kohdemallin ja näyttökuvan välillä tapahtuvat vaiheet vain jäävät pois prosessista. Myös tällöin käytetään projektiivista muunnosta. Suoran ja käänteisen menetelmän etuja ja haittoja käsitellään tarkemmin kuvaarvojen interpoloinnin yhteydessä kohdassa 2.5.2. Seuraavilla sivuilla käsitellään yksityiskohtaisemmin muunnoksia ja projektioita. Niiden yhteydessä esitetyt kaavat sisältävät seuraavia parametreja: (x, y, c ) = kuvapiste ( X , Y , Z ) = kohdepiste ( X C , YC , Z C ) = kameran sijainti eli projektiokeskuksen paikka R = M T = 3D-kiertomatriisi μ ja λ = mittakaavalukuja c = kameravakio f = kameran polttoväli Kuvapiste voi sijaita joko tekstuurikuvalla tai näytöllä. Kameran sijainnilla tarkoitetaan joko tekstuurikuvan tai näytön kamerakoordinaatiston projektiokeskusta. Kameravakio on sama kuin kameran polttoväli silloin, kun objektiivi on tarkennettu äärettömyyteen. 2.2 Muunnokset Yhteys tekstuurin, kohteen ja näytön välillä kuvataan yleisimmin joko affiinisen, bilineaarisen tai projektiivisen muunnoksen avulla. Teksturoinnissa käytetään 2Dmuunnoksia, kun lähtö- ja tulokohteet ovat tasomaisia. Muunnoksissa dimensio n säilyy, eli n → n . 2.2.1 Affiininen muunnos Affiininen muunnos on yleisin käytetty menetelmä silloin, kun tekstuurikuva on otettu kohtisuoraan (face-on) kohdemallin tasoa vasten. Muunnos toteuttaa siirrot, kierrot, skaalauksen sekä vinomuunnoksen (shear) tekstuurille, kun se liitetään koh11 teen pintaan. Muunnos säilyttää yhdensuuntaiset viivat yhdensuuntaisina, suorat viivat suorina ja viivalla olevat pisteet yhtä kaukana toisistaan lähtö- ja loppukuvassa. Viistokuvien oikaisussa muunnos ei kuitenkaan ota huomioon perspektiiviä. Viistosta otettujen kuvien tekstuurit ovat oikaisunkin jälkeen samannäköisiä, kuin mitä ne olivat viistosta katsottuna (Kuva 6). Menetelmä on lineaarinen, ja toteutukseltaan lähellä ortografista projektiota. Ortografista projektiota käsitellään kohdassa 2.3.1. Kuva 6: Affiinisesti muunneltuja kuvia, alkuperäinen kuva vasemmalla (Heckbert, 1989). Affiininen muunnos on 2D-tapauksessa 6-parametrinen ja 3D-tapauksessa 12parametrinen. 2D-tapauksessa muunnos tekstuurin ja näytön välillä voidaan ratkaista kolmen vastinpisteen avulla, kunhan pisteet eivät sijaitse kaikki samalla suoralla. 2D-Affiininen muunnos on muotoa: ⎡ X ⎤ ⎡ X C ⎤ ⎡a1 ⎢Y ⎥ = ⎢Y ⎥ + ⎢ b ⎣ ⎦ ⎣ C ⎦ ⎣ 1 a2 ⎤ ⎡ x ⎤ , b2 ⎥⎦ ⎢⎣ y ⎥⎦ (1) missä tuntemattomia parametreja ovat a1 , a 2 , b1 , b2 , X C ja YC . 3D-Affiininen muunnos on vastaavasti muotoa: ⎡ X ⎤ ⎡ X C ⎤ ⎡a1 ⎢Y ⎥ = ⎢Y ⎥ + ⎢ b ⎢ ⎥ ⎢ C ⎥ ⎢ 1 ⎢⎣ Z ⎥⎦ ⎢⎣ Z C ⎥⎦ ⎢⎣ c1 a2 b2 c2 a3 ⎤ ⎡ x ⎤ b3 ⎥⎥ ⎢⎢ y ⎥⎥ . c3 ⎥⎦ ⎢⎣ z ⎥⎦ (2) 2.2.2 Bilineaarinen muunnos Bilineaarinen muunnos esiintyy yleensä teksturoinnissa silloin, kun neliömäinen tekstuurialue liitetään nelikulmion muotoiseen pintaan. Toisin kuin affiinisessa muunnoksessa, neliön sisältämä tekstuuri ”venyy” loppukuvan vaatimaan muotoon (Kuva 7). Muunnos on 8-parametrinen, joten vastinpisteitä sekä lähtö- että kohdeavaruudessa on määritettävä neljä kappaletta. 12 Kuva 7: Vasemmalla alkuperäinen kuva, oikealla alkuperäisestä bilineaarisesti muunneltu kuva (Heckbert, 1989). 2D bilineaarinen muunnos on muotoa: ⎧ X = a 0 + a1 x + a 2 y + a3 xy . ⎨ ⎩Y = b0 + b1 x + b2 y + b3 xy (3) Eteenpäinmuunnos lähtökuvalta loppukuvaan säilyttää ne viivat suorina, jotka ovat lähtöavaruudessa pysty- ja vaakasuunnassa. Myös oikeat etäisyydet näillä viivoilla sijaitsevilla pisteillä suhteessa toisiinsa säilyvät samoina. Muut suorat viivat kuitenkin kaareutuvat tuloskuvassa, jos kohde ei enää muunnoksen jälkeen olekaan neliö (Kuva 8). Taaksepäinmuunnos ei ole enää bilineaarinen, ja se on paljon vaikeampi laskea kuin eteenpäinmuunnos. 2.2.3 Projektiivinen muunnos Kameran kuvataso ei ole julkisivun kanssa välttämättä samansuuntainen. Tämä kuva- ja kohdetasojen välinen yhdensuuntaispoikkeama aiheuttaa kuvaan projektiivista vääristymää. Projektiivisen muunnoksen avulla kuva- ja kohdetason välinen vääristymä saadaan poistettua. 13 Kuva 8: Bilineaarisesti muunnettuja nelikulmioita: (a) Ruudukko lähtöavaruudessa. (b) ja (c) Lähtöruudukko muunnettuna erimuotoisiksi nelikulmioiksi (Heckbert, 1989) Projektiivinen muunnos on yleiskäsite, ja esimerkiksi perspektiiviprojektio on tämän erikoistapaus. Perspektiiviprojektiota käsitellään kohdassa 2.3.2. Projektiivisen muunnoksen kuvasäteet eivät välttämättä kulje projektiokeskuksen kautta. Esimerkkinä voisi kuvitella seuraavan tapauksen. Muunnetaan pisteen koordinaatit perspektiiviprojektion avulla kohteesta kuvalle ja kuvalta vielä toiselle kuvalle. Kohteesta kauemmalle kuvalle katsottuna geometria voidaan selittää projektiivisen muunnoksen avulla. Tämä on tällöin myös yhdistelmämuunnos. 14 Projektiivisen muunnoksen parametrit eivät vastaa yksittäisiä fysikaalisia suureita, joita esimerkiksi perspektiiviprojektiossa ovat kameravakio ja projektiokeskuksen paikka. Ne voivat olla esimerkiksi useamman suureen yhdistelmiä. Myös käänteinen muunnos on projektiivinen muunnos. 2D projektiivinen muunnos on muotoa: a 0 + a1 x + a 2 y ⎧ ⎪X = c + c x + c y ⎪ 0 1 2 . ⎨ b b x b y + + 0 1 2 ⎪Y = ⎪⎩ c 0 + c1 x + c 2 y (4) Yleinen tapa on antaa parametrille c 0 arvo 1, jolloin muunnos on 8-parametrinen eli ratkaisuun tarvitaan neljä vastinpistettä lähtö- ja tuloavaruudessa. 8-parametriseen muotoon päästään myös muilla keinoilla, esimerkiksi asettamalla c0 + c1 + c 2 = 1 . 2 2 2 Jos neljä vastinpistettä sekä kuvalla että kohteessa ovat kaikki samassa tasossa, ei kameran sijainnista tai muista parametreista tarvitse tietää mitään. Jos kohdepisteet eivät olekaan tasossa, vaan monikulmio muodostuu kahdesta tai useammasta kolmiosta, tarvitaan tieto kameran sijainnista, kuvaussuunnasta ja sen sisäisistä parametreista. Käänteinen projektiivinen muunnos on muotoa: A0 + A1 X + A2Y ⎧ ⎪x = C + C X + C Y ⎪ 0 1 2 . ⎨ B B X B Y + + 0 1 2 ⎪y = ⎪⎩ C 0 + C1 X + C 2Y (5) 3D projektiivinen muunnos on muotoa: ⎧ a 0 + a1 x + a 2 y + a3 z ⎪X = d 0 + d1 x + d 2 y + d 3 z ⎪ b0 + b1 x + b2 y + b3 z ⎪⎪ . ⎨Y = d 0 + d1 x + d 2 y + d 3 z ⎪ ⎪ c + c x + c 2 y + c3 z ⎪Z = 0 1 ⎪⎩ d 0 + d1 x + d 2 y + d 3 z (6) 3D-muunnos on 15-parametrinen, joten ratkaisuun tarvitaan viisi vastinpistettä. 15 Muunnos ei säilytä pisteiden välisiä etäisyyksiä viivalla samoina lähtö- ja loppukuvassa, vaan ne siirtyvät perspektiivin mukaan. Affiinisen muunnoksen tapaan viivat kaikissa suunnissa pysyvät suorina muunnoksen aikana (Kuva 9). Kuva 9: Projektiivisesti muunnettuja kuvia, jotka ovat samanmuotoisia kohtien 8 (b) ja (c) kanssa. Lähtökuvana toimii sama ruudukko kuin kuvassa 8 kohta (a). (Heckbert, 1989) 2.2.4 Menetelmien vertailua Lineaarinen muunnos (esimerkiksi affiininen muunnos) on yksinkertaisin ja helpoin tapa tekstuurin liittämiseksi näyttökuvaan. Menetelmä ei kuitenkaan sovi kaikkiin tilanteisiin. Väärin käytettynä tuloskuvaan jää epäkohtia, jotka heikentävät sen ulkoasua (Kuva 10 ja 12 (b)). Lineaarinen muunnos ei tuo tuloskuvaan perspektiivistä vääristymää eli sitä, että mittakaava muuttuu etualan ja taaempien alueiden välillä. Teksturoitu kuva sisältää myös epäjatkuvuuskohtia niiden vaakasuuntaisten viivojen kohdalla, jotka kulkevat monikulmion nurkkapisteiden kautta. Epäjatkuvuuskohdat johtuvat siitä, että muunnos venyttää kuvaa haluttuun muotoon. Samalla se pitää yhdensuuntaiset viivat yhdensuuntaisina, suorat viivat suorina ja viivalla olevat pisteet yhtä kaukana toisistaan lähtö- ja tuloskuvassa. Lineaarinen muunnos toimii vain silloin, kun kohteesta toiseen voidaan siirtyä ilman perspektiivin muutosta. Kuvatasojen tulisi keskenään olla sellaisessa asennossa, jotta affiininen muunnos olisi riittävä kaikkien kuvalla tapahtuvien muutosten kuvaamiseen. Tällöin tekstuurikuvan, kohdemallin ja näyttökuvan perspektiivi pitäisi pysyä samana eli tasojen tulisi olla keskenään samansuuntaisia. 16 Jos lineaarista muunnosta kuitenkin halutaan käyttää perspektiivin välillä muuttuessa, kannattaa teksturoitava monikulmio jakaa pienempiin osiin. Tällöin lopputulos saattaa olla tasaisempi. (Heckbert, 1989) Kuva 10: Vasemmalla ruututekstuuri, oikealla teksturointi lineaarisen muunnoksen avulla (Heckbert, 1989). Jotta vältyttäisiin epäjatkuvuuskohdilta, voidaan tekstuurikoordinaattien interpoloimiseen käyttää lineaarisen eli affiinisen muunnoksen sijaan bilineaarista muunnosta (Kuva 12 (c)). Bilineaarinen muunnos säilyttää viivat suorina kuitenkin vain niissä tapauksissa, joissa viivat ovat koordinaattiakselien suuntaisia alkuperäisessä tekstuurikuvassa. Diagonaaliset viivat eli kuvan lävistäjät näkyvät kaarevina viivoina tuloskuvassa. Projektiivinen muunnos ottaa huomioon perspektiivin muutoksen kuvausten välillä. Tällöin esimerkiksi tasaväliset etäisyydet projisoidulla viivalla eivät ole tasavälisiä vastaavalla viivalla 3D-kohteessa. Kuvassa 11 ja 12 (d) viivavälit tihenevät kauemmas mentäessä, kun taas lineaarisen (Kuva 12 (b)) ja bilineaarisen (Kuva 12 (c)) muunnoksen tapauksessa viivojen väliset etäisyyden pysyvät vakiona joka suunnassa. Projektiivinen muunnos säilyttää kaikki suorat viivat suorina ja tuloskuvaan tulee näkyviin mittakaavaero etu- ja taka-alan välillä. 17 Kuva 11: Teksturointi projektiivisen muunnoksen avulla (Heckbert, 1989). Teksturoinnissa käytetään yleisimmin edellä esiteltyjä muunnoksia. On kuitenkin olemassa myös muita muunnoksia, joita voidaan käyttää hyväksi esimerkiksi silloin, kun ei ole kyse tasomaisista kohteista. Toisen asteen muunnos (quadratic transformation) muuntaa suorat viivat toisen asteen käyriksi. Kolmannen asteen muunnos (cubic transformation) muuntaa suorat viivat kolmannen asteen käyriksi. (Weinhaus et al., 1997) 2.3 Projektiot Muunnoksena on käsitelty tähän saakka tekstuuriavaruuden ja kohdeavaruuden välistä tapahtumaa (Kuva 5). Muunnoksena voidaan käsittää myös koko systeemiä, jossa tekstuuriarvo saadaan selville ja esitetään lopulta näyttökuvalla. Muunnos on siis ikään kuin yleiskäsite. Tarkemmin eri vaiheissa käytetään joko ortografista tai perspektiiviprojektiota (Kuva 13). Projektioissa dimensio n muuttuu, eli n → n − 1 , tässä tapauksessa kolmiulotteisesta avaruudesta kaksiulotteiseen. 18 Kuva 12: (a) Alkuperäinen kuva. (b) Teksturointi lineaarisella muunnoksella. (c) Teksturointi bilineaarisella muunnoksella. (d) Teksturointi projektiivisella muunnoksella. (Weinhaus et al., 1997) Kuva 13: Vasemmalla perspektiivinen ja oikealla ortografinen projektio (Farmer, 2002). 19 2.3.1 Ortografinen projektio Yhdensuuntaisprojektio eli paralleeliprojektio sisältää ortografisen projektion ja vinoprojektion. Ortografisessa projektiossa säteiden suunta on kohtisuorassa kuvatasoa vastaan, kun taas vinoprojektiossa säteet ovat vinossa tasoon nähden. Ortografisessa projektiossa kuvautuminen tapahtuu yhdensuuntaisten säteiden avulla, eikä mittakaava muutu kuvan eri osissa (Kuva 14). Käytännössä kohdekoordinaatit saadaan tiputtamalla vain haluttu koordinaatti pois, esim. asettamalla kamerakoordinaatistossa z-arvo nollaksi. Projektio on muodoltaan seuraavanlainen: ⎧x = X . (7) ⎨ ⎩y = Y Kuva 14: Ortografinen projektio (Anon 4). Kuvassa 15 muunnos tekstuurin ja kohteen välillä on tehty ortografisen projektion, ja muunnos näytön ja kohteen välillä perspektiiviprojektion mukaisesti. Yhdessä ne muodostavat projektiivisen muunnoksen. 20 Kuva 15: Ortografinen projektio tekstuurin ja kohteen välillä (Weinhaus et al., 1999). 2.3.2 Perspektiivinen projektio Perspektiiviprojektiossa eli keskusprojektiossa kuvautuminen toteutuu säteillä, jotka risteävät projektiokeskuksessa (Kuva 16). Projektiokeskus ei saa olla kuvatasossa. Jos projektiokeskus sijaitsisi äärettömän kaukana, olisi kyseessä ortografinen projektio. Erona ortografiseen projektioon säteiden kulkusuunnan lisäksi on se, että mittakaava muuttuu etualan ja taustan välillä. Tätä kutsutaan perspektiiviseksi vääristymäksi (perspective foreshortening). Kuva 16: Perspektiiviprojektion geometria, kun kuva- ja kohdetasot ovat yhdensuuntaiset (Inkilä, 2005). 21 Perspektiivimuunnos perustuu fotogrammetrisiin kollineaarisuusyhtälöihin. Kollineaarisuusehdon mukaan kohdepiste, sitä vastaava kuvapiste ja projektiokeskus ovat kaikki samalla suoralla. Seuraavassa tapauksessa käytetään oikeakätistä koordinaatistoa. Projektiokeskus voi sijaita myös kuva- ja kohdetason välissä. Kuvan 16 yhdenmuotoisten kolmioiden avulla saadaan seuraavat yhtälöt: x c y c = ja = . X −Z Y −Z (8a) Kun kohdan (8a) yhtälöistä ratkaistaan x ja y (ks. kaava 8b), muuntuvat ne kaavan (9) muotoon (kollineaarisuusyhtälöt). Kuvakoordinaatit voidaan ratkaista tunnettujen XYZ -kohdekoordinaattien avulla. Muunnosta kohteesta kuvalle kutsutaan suoraksi perspektiivimuunnokseksi. − cX ⎧ ⎪⎪ x = Z ⎨ ⎪ y = − cY ⎪⎩ Z (8b) Käänteinen perspektiivimuunnos on muotoa: ⎧ X = kx ⎪ ⎨Y = ky ⎪Z = − kc ⎩ (9a) eli ⎡X ⎤ ⎡x ⎤ ⎢Y ⎥ = k ⎢ y ⎥ , missä k = Z . ⎢ ⎥ ⎢ ⎥ −c ⎢⎣ Z ⎥⎦ ⎢⎣− c ⎥⎦ Parametri k skaalaa vektorin [x (9b) y − c ] vektorin [X T Y Z ] pituiseksi. T Todellisuudessa on otettava huomioon kuva- ja kohdekoordinaatiston välinen skaalaero, kierrot ja siirrot. Edellä johdetut yhtälöt eivät siis riitä koordinaattiarvojen projisoimiseen. Kun edellä mainitut parametrit otetaan huomioon, voidaan kollineaarisuusehto esittää eteenpäinmuunnoksena seuraavasti: 22 ⎛ X − XC ⎞ ⎛x ⎞ ⎛ r11 ⎜ ⎟ ⎜ ⎟ ⎜ −1 −1 ⎜ y ⎟ = μ R⎜ Y − YC ⎟ = μ ⎜ r21 ⎜Z − Z ⎟ ⎜ − c⎟ ⎜r ⎝ ⎠ ⎝ 31 C ⎠ ⎝ r12 r22 r32 r13 ⎞ ⎛ X − X C ⎞ ⎟ ⎟ ⎜ r23 ⎟ * ⎜ Y − YC ⎟ r33 ⎟⎠ ⎜⎝ Z − Z C ⎟⎠ (10a) eli x = μ −1 [r11 ( X − X C ) + r12 (Y − YC ) + r13 ( Z − Z C )] y = μ −1 [r21 ( X − X C ) + r22 (Y − YC ) + r23 ( Z − Z C )] (10b) − c = μ −1 [r31 ( X − X C ) + r32 (Y − YC ) + r33 ( Z − Z C )]. Mittakaavaluku μ saadaan selville kolmannesta yhtälöstä ja on seuraavanlainen: μ =− 1 [r31 ( X − X C ) + r32 (Y − YC ) + r33 ( Z − Z C )] . c (11) Kun mittakaavaluku sijoitetaan kahteen ensimmäiseen yhtälöön, saadaan kollineaarisuusyhtälöt: − c[r11 ( X − X C ) + r12 (Y − YC ) + r13 ( Z − Z C )] (12) x= [r31 ( X − X C ) + r32 (Y − YC ) + r33 ( Z − Z C )] y= − c[r21 ( X − X C ) + r22 (Y − YC ) + r23 ( Z − Z C )] . [r31 ( X − X C ) + r32 (Y − YC ) + r33 ( Z − Z C )] (13) Toinen vaihtoehto on taaksepäinmuunnos: ⎛ X ⎞ ⎛ XC ⎞ ⎛x ⎞ ⎛ XC ⎞ ⎛ r11 ⎟ ⎟ ⎜ ⎟ ⎜ ⎜ ⎟ ⎜ ⎜ ⎜ Y ⎟ = ⎜ YC ⎟ + μM ⎜ y ⎟ = ⎜ YC ⎟ + μ ⎜ r12 ⎜Z ⎟ ⎜Z ⎟ ⎜ − c⎟ ⎜ Z ⎟ ⎜r ⎝ ⎠ ⎝ C ⎠ ⎝ ⎠ ⎝ C ⎠ ⎝ 13 r21 r22 r23 r31 ⎞⎛ x ⎞ ⎟⎜ ⎟ r32 ⎟⎜ y ⎟ r33 ⎟⎠⎜⎝ − c ⎟⎠ (14a) eli X = X C + λ (r11 x + r21 y − r31c) Y = YC + λ (r12 x + r22 y − r32 c) (14b) Z = Z C + λ (r13 x + r23 y − r33 c) . Mittakaavaluku saadaan samoin kuin eteenpäinmuunnoksen tapauksessa kolmannesta yhtälöstä: Z − ZC λ= . (15) (r13 x + r23 y − r33 c) Kun λ sijoitetaan kahteen ensimmäiseen yhtälöön, saadaan yhtälöt seuraavaan muotoon: 23 ( Z − Z C )(r11 x + r21 y − r31c) (r13 x + r23 y − r33 c) (16) ( Z − Z C )(r12 x + r22 y − r32 c) . (r13 x + r23 y − r33 c) (17) X = XC + Y = YC + Kuvassa 17 sekä muunnos tekstuurin ja kohteen välillä että näytön ja kohteen välillä on tehty perspektiiviprojektion mukaisesti. Yhdessä myös nämä muodostavat projektiivisen muunnoksen. Kuva 17: Perspektiiviprojektio tekstuurin ja kohteen välillä (Weinhaus et al., 1999). 2.4 Yhdistelmämuunnos Yhdistelmämuunnos sisältää 2D-tekstuurin liittämisen suoraan 2D-näytölle tai saman käänteisessä järjestyksessä. 3D-avaruutta välillä ei tällöin tarvitse huomioida lainkaan. Yhdistelmämuunnos, joka sisältää projektiivisen muunnoksen tekstuurin ja kohteen välillä ja perspektiiviprojektion kohteen ja näytön välillä on projektiivinen muunnos. Jos tekstuurin ja kohteen välillä on projektiivisen muunnoksen sijaan affiininen muunnos, on yhdistelmämuunnos silti projektiivinen muunnos. Seuraavassa kuvataan teksturointiprosessin kulku suorana menetelmänä, eli suunta on tekstuurilta näytölle. Toteutuksessa käytetään yhdistelmämuunnosta, joka rajoittuu tasomaisten kohteiden teksturointiin. Tässä yhdistelmämuunnoksessa 2Dtekstuurikoordinaatit muunnetaan 2D-näyttökoordinaateiksi. Yhdistelmämuunnos on 3*3 matriisi ja muotoa (Heckbert, 1989): 24 M ts = M dropz × M os × M to × M addz , missä M addz on matriisi, joka (18) muuntaa 2D-tekstuurikoordinaatit 3D- tekstuurikoordinaateiksi lisäämällä mukaan syvyyden. M to on matriisi, joka liittää tekstuurin tasomaiselle pinnalle muuntamalla 3Dtekstuurikoordinaatit 3D-kohdekoordinaatteiksi. Prosessia kutsutaan pinnan parametrisoinniksi. M os on kuvausmatriisi, joka tyypillisesti sisältää perspektiivin. Se muuntaa 3Dkohdekoordinaatit 3D-näyttökoordinaateiksi. M dropz on matriisi, joka poistaa syvyyden 3D-näyttökoordinaateista ja tuloksena saadaan 2D-näyttökoordinaatit. Käänteinen yhdistelmämuunnos lasketaan päinvastaisessa järjestyksessä. Yhdistelmämuunnos voidaan kuvata myös kaavojen (19) ja (20) avulla: Suora yhdistelmämuunnos tekstuurilta näytölle: Au + Bv + C Du + Ev + F x= , y= . Gu + Hv + I Gu + Hv + I Käänteinen yhdistelmämuunnos näytöltä tekstuurille: ax + by + c dx + ey + f u= , v= . gx + hy + i gx + hy + i (19) (20) Yllä olevat yhdistelmämuunnokset kaavat eivät eroa muodoltaan aiemmin esitetyistä projektiivisen muunnoksen kaavoista. Kuten jo aiemmin on todettu, voi projektiivinen muunnos olla myös useamman muunnoksen yhdistelmä. 2.5 Muita toimenpiteitä Geometristen muunnosten lisäksi teksturointiin liittyy muitakin tärkeitä työvaiheita, jotka on otettava huomioon esitettäessä mallia näyttöavaruudessa. Näitä ovat tekstuurikuvan suodatus, tekstuuriarvojen interpolointi ja kuvanmuodostus eli interpoloitujen arvojen siirtäminen näyttökuvalle. Seuraavassa näitä vaiheita käsitellään tarkemmin. 25 2.5.1 Suodatus Tekstuurikuvan, mallin ja näyttökuvan tekstuuriosat ovat usein erimuotoisia ja kokoisia (Kuva 18). Tekstuuriarvoa ei siis voida suoraan siirtää pelkän muunnoksen avulla tekstuurilta näytölle, sillä tällöin kohdekuva saisi vääriä tekstuuriarvoja joihinkin osiinsa. Sitä varten tekstuurikuva on suodatettava ennen sen näytteistystä. Kuva 18: Tekstuurikuva (vasemmalla) ja näyttökuva (oikealla) ovat usein erikokoisia ja muotoisia. Suodin on eräänlainen maski tai ikkuna, jota kuljetetaan kuvan yli ja jokaiselle pikselille lasketaan uusi arvo sen naapureiden tai muun määritelmän perusteella. Ikkunan koko määrää sen, miten laajalti pikselin naapuruustietoja käytetään hyväksi uuden arvon laskennassa. Lisäksi ikkunan sisältämät arvot määrittävät pikselien painotuksen. Yksinkertaisin tapa on käyttää suodinta, joka on samanlainen kuvan jokaisessa kohdassa (space invariant filter). Tällöin kaikkia suotimen vaikutuspiirissä olevia pikseleitä painotetaan yhtä paljon. Jos muunnos kohteesta näytölle tapahtuisi yhdensuuntaisten säteiden avulla, kuten affiinisessa muunnoksessa esimerkiksi ortografisen projektion avulla, olisi tämä myös toimiva ratkaisu. (Heckbert, 1989) Yleensä kuitenkin muunnos kohteen ja näytön välillä on perspektiivinen, joten pikselit ovat eri kohdissa kuvaa erikokoisia ja muotoisia. Tällöin tilanne voi olla sellainen, että osaa tekstuurikuvasta suurennetaan (magnification) ja osaa pienennetään (minification) näyttökuvausta varten (Kuva 19). Kuvaa pienennettäessä voi helposti syntyä laskostumista. Tämä johtuu siitä, että kuvaa näytteistetään liian harvasti. Osa tiedosta jää näytteistämättä ja sen puute näkyy tuloskuvassa. Laskostumista voidaan ehkäistä alipäästösuodattamalla, joka pehmentää kuvaa ennen sen pienentämistä. (Peltonen, 2006) 26 Kuva 19: Vasemmalla: Tekstuurialue on pienempi kuin vastaava alue näytöllä. Oikealla: Tekstuurialue on suurempi kuin vastaava alue näytöllä. (Neider et al.) On olemassa myös suotimia, joiden muoto vaihtelee kuvan eri osissa eli näytteistys tapahtuu suotimen läpi eri kohdissa eri painotuksilla (space variant filter). Tällaisia suotimia käytetään yleensä projektiivisen muunnoksen yhteydessä. (Heckbert, 1989) 2.5.2 Interpolointi Interpolointi tarkoittaa kuvan pikselien sävyarvojen uudelleenlaskentaa. Näytteistys taas on interpoloinnin tuloksena saatujen pikseliarvojen digitoimista lähtökuvalta. Yhdessä näytteistystä ja interpolointia voitaisiin kutsua uudelleennäytteistykseksi (resampling). Tässä tekstissä näytteistys oletetaan sisältyväksi interpolointiin. Suotimen koko määrää sen, miten laajalta alueelta naapuripikseleitä otetaan mukaan interpoloitavan pikselin arvon uudelleenlaskentaan. Myös suotimen muoto eli maskin painotus vaikuttaa interpolointiin. Interpolointi on tarpeen silloin, kun kuvan pikselimäärää halutaan suurentaa tai pienentää (Kuva 19). Myös silloin, kun kuvaa kierretään tai sen muotoa muutetaan, tarvitaan pikselien arvojen uudelleenlaskentaa. Lähimmän naapurin interpolointi eli pistenäytteistys (point sampling) on yksinkertaisin interpolointimenetelmä. Siinä tulospikseli saa arvokseen sitä lähimpänä sijaitsevan pisteen arvon. Menetelmä on laskennallisesti erittäin kevyt ja se sopiikin hyvin suurille aineistoille. Lähimmän naapurin interpolointi ei muuta kuvan alkuperäisiä arvoja, mutta voi aiheuttaa joidenkin pikselien tuplaantumista ja joidenkin häviämistä. Jos tekstuurikuvaa vaikkapa näytteistetään liian harvasti, saattaa osa pikseleistä jäädä pois laskuista. Tämän vuoksi tuloskuvassa voikin esiintyä epäjatkuvuuskohtia ja sahalaitaisia reunoja (Kuva 20). 27 Kuva 20: Ruutukuvion teksturointi lähimmän naapurin interpoloinnilla (Heckbert, 1989). Lähimmän naapurin interpolointi aiheuttaa tuloskuvaan helposti vääristymiä, ja usein käytetäänkin hieman monimutkaisempaa bilineaarista interpolointia. Siinä pikselin arvo määritetään neljän sitä ympäröivän pisteen arvon mukaan niiden etäisyydellä painotettuna (Kuva 21). Lähtöpisteiden koordinaattiarvot ovat v( x1 , y1 ), v( x 2 , y1 ), v( x1 , y 2 ) ja v( x 2 , y 2 ) . Ensin interpoloidaan lineaarisesti vaakasuuntaan, jolloin päästään arvoihin v( x ′, y1 ) ja v( x ′, y 2 ) . Kun vielä näiden kahden pisteen välille määritetään lineaarinen interpolointi pystysuunnassa, saadaan halutun pisteen arvoksi v( x ′, y ′) . Interpoloinnit voidaan tehdä ensin myös pystysuuntaan ja sitten vaakasuuntaan. Kuva 21: Bilineaarisen interpoloinnin periaate (Peltonen, 2006). 28 Bilineaarisella interpoloinnilla saadaan visuaalisesti paremman näköisiä tuloksia kuin lähimmän naapurin interpoloinnilla. Prosessin aikana syntyy uusia harmaasävyjä, kun eri pikseliarvoja yhdistellään. Se yleensä pehmentää kuvaa sekä vähentää kontrastia. (Rönnholm, 2001) Jos halutaan päästä bilineaarista interpolointia vieläkin parempiin tuloksiin, voidaan laskennassa käyttää suurempaa määrää naapuripisteitä. Esimerkiksi kuutiokonvoluutio (bicubic) käyttää laskennassa yleensä 16 lähintä naapuripistettä eli 4*4naapurustoa. Pisteen sävyarvo saadaan naapuripisteiden arvojen ja niille määritettyjen painojen avulla (Kuva 22). Yleensä lähimpiä naapuripisteitä painotetaan eniten. Lopputuloksena saadaan terävämpi kuva kuin lähimmän naapurin tai bilineaarisella interpoloinnilla, mutta myös laskentatyön määrä kasvaa. Lisäksi myös tämän prosessin aikana kuvaan syntyy uusia harmaasävyjä. Kuva 22: Kuutiokonvoluutiossa painojen jakautuminen naapuripisteille. Vaaka-akselilla on pisteen etäisyys naapuripisteeseen ja pystyakselilla painotuksen suuruus. Interpoloitava piste sijaitsee vaaka-akselin kohdassa nolla, eli lähimpiä naapuripisteitä painotetaan enemmän. (Anon 5) Kuvat 23 - 26 havainnollistavat edellä selostettujen interpolointimenetelmien eroja. Rakeisin lopputulos syntyy lähimmän naapurin interpoloinnilla, kun taas bilineaarinen interpolointi ja kuutiokonvoluutio tuottavat selvästi paremman tuloksen. 29 Kuva 23: Alkuperäinen kuva (Bockaert). Kuva 24: Lähimmän naapurin interpolointi (Bockaert). Kuva 25: Bilineaarinen interpolointi (Bockaert). Kuva 26: Kuutiokonvoluutio (Bockaert). 30 Eteenpäinmuunnoksessa tekstuurikuvalta siirrettävät pikseliarvot eivät osu säännöllisen ruudukon muotoon näyttökuvalle (Kuva 27). Osa näyttökuvan pikseleistä saattaa jäädä ilman tekstuuriarvoa ja osaan saattaa kohdistua useampi arvo tekstuurikuvalta. Niiden pikselien kohdalla, joihin on osunut useampi arvo, voidaan esimerkiksi sopia, että viimeisin arvo otetaan käyttöön. Arvo voidaan valita myös z-puskurin avulla silloin, kun kohdemalli on mukana käsittelyssä. Tällöin ei käytetä yhdistelmämuunnosta. Useampia arvoja osuu samaan pikseliin mallin kolmiulotteisuuden vuoksi. Pikselin arvoksi valitaan näkymässä lähimpänä sijaitsevan pikselin arvo (Cheng et al., 1993). Z-puskuria käsitellään kohdassa 2.5.3. Nyt osalla pikseleistä on jokin arvo, osalla ei. Tyhjiksi jääneiden pikselien arvot interpoloidaan naapuripikselien arvojen perusteella. Kuva 27: Interpolointi eteenpäinmuunnoksen tapauksessa. Taaksepäinmuunnoksessa tekstuurikuvalta haettava arvo selvitetään interpoloimalla, sillä muunnoksen takia tekstuurikuvan arvoja ei yleensä haeta säännöllisesti jokaisesta pikselistä (Kuva 28). Aluksi näyttökuvan pikselit ovat tyhjiä, eli ne eivät sisällä mitään tekstuuritietoa. Pikseleille haetaan arvot tekstuurikuvalta siten, että arvo otetaan siitä kohden, mihin haku muunnoksen perusteella osuu. Koska haku ei yleensä osu keskelle pikseliä, määrittyy näyttökuvaan siirrettävä tekstuuriarvo tekstuurikuvalla tehtävän interpoloinnin mukaisesti. Taaksepäinmuunnos on interpoloinnin kannalta laskennallisesti edullisempi. 31 Kuva 28: Interpolointi taaksepäinmuunnoksen tapauksessa. 2.5.3 Kuvanmuodostus Kuvanmuodostus eli renderöinti käsittää tekstuurin liittämisen näytölle. Se voidaan tehdä kahdella tavalla, joko scanline- tai säteenjäljitysalgoritmilla. (Kuva 29). Kuvanmuodostusalgoritmeihin liittyy myös läheisesti z-puskuri (z-buffer), jolla kuvasta poistetaan piiloon jäävät geometristen primitiivien osat. Z-puskuri sisältää etäisyystiedon katselupisteestä jokaiseen näkyvissä olevaan kohdepinnan pikseliin. (Anon 2) Scanline-algoritmi toimii seuraavalla tavalla. Ensin kuvan geometriset primitiivit, esimerkiksi viivat, projisoidaan kuvatasolle. Projektion perusteella määritetään, mitkä pikselit näytöllä ovat osa tätä primitiiviä. Seuraavaksi pikseleille osuvista primitiiveistä päätellään, mikä niistä on lähinnä katselupistettä ja tämän perusteella lasketaan pikselin saama arvo. Tietoa katselupisteen ja primitiivin välisestä etäisyydestä säilytetään z-puskurissa. Kuvanmuodostus tapahtuu yleensä vaakarivi kerrallaan. Kohdemallin monikulmioiden nurkkapisteiden koordinaatit on oltava etukäteen tiedossa. Näiden avulla oikeat kohdepinnat käydään läpi ja pikseleille saadaan oikeat väriarvot tekstuurikuvalta. Koordinaattiarvoja on käytävä läpi tietyllä tiheydellä, jotta vältettäisiin laskostumisongelma. Algoritmi toimii sekä suorana tekstuurilta näytölle että käänteisenä näytöltä tekstuurille. (Anon 2) Säteenjäljityksessä (ray tracing) seurataan säteen kulkua kuvan ja kohteen välillä. Säde kulkee projektiokeskuksen ja kuvatason läpi näytöltä kohteeseen. Kun tunnetaan säteen kulkusuunta, saadaan selville säteen ja kohteen leikkauskohta. Vastaava sijainti määritetään myös tekstuurikuvalta, ja tekselin väri siirretään näytölle. Yksi säde vastaa aina yhtä pikseliä. Säde heijastetaan jokaisen kuvatason pikselin läpi, ja nämä yhdessä määräävät tekstuurin. Myös tässä menetelmässä voi syntyä laskostumista. Menetelmä on aina käänteinen. (Anon 2) Scanline-algoritmi on nopea, sillä menetelmä käyttää hyväkseen tietoa kohdemallin sisältämistä nurkkapisteistä. Tällöin kohdemallin ulkopuolisia pikseleitä ei tarvitse 32 huomioida lainkaan, vaikka ne näkyisivätkin kuvalla. Myös tarkastelupistettä lähimpien pintojen taakse jäävät pinnat voidaan poistaa tarkastelusta Scanline-algoritmilla ja z-puskurilla. Tämä keventää aineiston käsittelyä. Säteenjäljitys käy läpi kaikki näkymän pikselit, ja se on laskennallisesti raskaampi kuin scanline-algoritmi. Nykyään säteenjäljitys on lisännyt suosiotaan, sillä uudet kohdemallit koostuvat yhä useammista ja pienemmistä monikulmioista. Tällöin scanline-algoritmilla toteutettu renderöinti ei ole enää huomattavasti nopeampi, ja yleensä kannattaakin käyttää säteenjäljitystä. Joissain tapauksissa säteenjäljitys voi olla jopa nopeampi menetelmä. Säteenjäljityksen etuna on lisäksi se, että teksturoinnissa voidaan huomioida myös läpinäkyvät ja peilimäiset pinnat. Lisäksi normaaleihin pintoihin saadaan näkyviin kuvitteellisen valonlähteen heijastuminen. Sen avulla saadaan parempilaatuisia pintoja muun muassa metalli-, lasi- ja vesipinnoille. Kuva 29: Renderöinti scanline-algoritmilla (vasemmalla) ja säteenjäljitysalgoritmilla (oikealla) (Hormann, 2006). 33 Luku 3 Teksturointi käytännössä 3.1 Teksturointiprosessin kulku Oletetaan, että kohdemalli on tunnettu ja että se koostuu tasomaisista pinnoista. Tällöin tiedetään esimerkiksi sen sisältämien pinta-alueiden nurkkapisteiden koordinaatit. Lisäksi tunnetaan tekstuurikuvauksissa käytetyn kameran kalibrointiparametrit sekä kameran tarkka sijainti ja kuvaussuunta kohdemalliin nähden. Kamerakalibroinnissa määritetään kameran sisäinen orientointi, eli kuva- ja kamerakoordinaatiston välinen yhteys, sekä optiikan piirtovirheet. Kalibrointi voidaan tehdä etukäteen testikentän avulla tai samanaikaisesti kohdetta kuvattaessa (itsekalibrointi). On myös tapauksia, joissa kameran kalibrointi tai kuvien ulkoinen orientointi ei ole tunnettu. Lisäksi tiedossa saattaa olla vain likimääräisiä arvoja näille suureille. Kappaleessa 3.3 käydään läpi eri vaihtoehtoja ja mahdollisia ratkaisuja. Kohdemalli voidaan muodostaa myös kuvien perusteella. Tällöin kuville tehdään keskinäinen orientointi. Kohdemalli muodostuu kuvilta mitatuille vastinpisteille saatujen 3D-koordinaattien avulla. Luonnollisesti tässä tapauksessa kuvien ja kohdemallin välinen orientointi selviää mallinnuksen yhteydessä. Kun kuvan sisäiset ja ulkoiset orientointitiedot ovat tunnettuja, voidaan tekstuurikuvalta määrittää teksturoitava alue tasopinta kerrallaan. Määritys voi tapahtua esimerkiksi manuaalisesti mittaamalla alueen nurkkapisteet tai automaattisemmin piirreirrotuksen avulla. Kuvalta on määritelty alue, jonka vastaava sijainti tunnetaan myös kohdemallilla. Kuvausgeometria tekstuurin ja kohteen välille saadaan selville alueiden vastinpiir- 34 teiden avulla. Oikea tekstuuri liitetään sitä vastaavalle paikalle 3D-mallin pinnalle. Kuvan ja kohteen välinen geometria selvitetään jokaiselle mallipinnalle erikseen. Tekstuurin liittäminen kohdepintaan ja kohdemallin kuvaaminen tekstuureineen näytölle tapahtuu projektiokaavojen avulla, kuten luvussa 2 on selitetty. Jos kuvautuminen tapahtuu affiinisella muunnoksella, tarvitaan ratkaisun saamiseksi kolme vastinpistettä kuvalla ja kohteessa, projektiivisen muunnoksen tapauksessa vastinpisteitä tarvitaan neljä kappaletta. Kuvassa 30 on esitetty teksturointiprosessin eri vaiheet. Yhtenäisellä viivalla on kuvattu vaiheita, jotka sisältyvät yleensä aina teksturointiprosessiin. Nämä vaiheet kuuluvat prosessiin myös silloin, kun kuvien ja kohdemallin tarkka ulkoinen orientointi on tunnettu. Katkoviivalla taas on merkitty sellaisia toimintoja, joita toteutetaan muissa mahdollisissa tilanteissa. Kun tarkat orientointitiedot ovat tunnettuja, tehdään kuvauksen jälkeen yhdelle tai useammalle kuvalle sisäinen orientointi. Kuvien ja 3D-mallin tarkat ulkoisen orientoinnin parametrit ovat tiedossa esimerkiksi geodeettisen tai fotogrammetrisen mittauksen tuloksena. Koska ulkoinen orientointi on molemmissa aineistoissa tunnettu, voidaan tiedot yhdistää ja tekstuuri liittää mallin pintaan. Lopuksi tulos joko tallennetaan tietokantaan tai esitetään näytöllä. Keskinäinen orientointi tehdään silloin, kun mallinnus suoritetaan kuvien avulla. Vastinpiirteiden määritystä käytetään, kun ulkoisen orientoinnin parametrit ovat vain likimääräisiä tai niitä ei ole ollenkaan. Toiminto sisältää ainoastaan piirreirrotuksen. Piirteiden yhteensovitus tapahtuu vasta ulkoisen orientoinnin muunnosparametrien ratkaisuvaiheessa ja tekstuurin liittämisessä 3D-mallin pintaan. Näkymäesteet otetaan yleensä huomioon jo kuvaustilanteessa, kun suunnitellaan mahdollisia kuvauspaikkoja. Lisäksi näkymäesteitä voidaan poistaa kuvilta ennen kuvien liittämistä mallin pintaan. Kuvan ehostusta tehdään heti alkuperäisille kuville sekä tekstuurin liittämisen jälkeen, jolloin esimerkiksi kuvien radiometrisiä ominaisuuksia voidaan parantaa visuaalisen ulkoasun kannalta oikeaksi. Periaatteessa teksturointi voidaan toteuttaa täysin automaattisesti, jos kuvien ja kohdemallin välinen orientointi on tarkasti tiedossa ja jos kuvilla ei ole mallintamattomia näkymäesteitä. Useissa tapauksissa kuvien ja kohdemallin välinen geometria tunnetaankin valmiiksi, sillä kohdemallin muodostus ja teksturointi tapahtuvat samojen kuvien avulla. Tekstuuri voidaan liittää suoraviivaisesti mallin pinnalle, mutta huomioitavaksi jäävät muun muassa näkymäesteiden poistamiset ja muut tekstuurin ulkoasuun vaikuttavat tekijät. Automaattinen teksturointi on tehty esimerkiksi Stuttgartin kaupungista (Kuva 49) (Kada et al., 2005). 35 Kuva 30: Teksturointiprosessin kulku eri tapauksissa. 3.2 Kuvaus Edellä esitetyissä menetelmissä kohteiden visualisointiin voidaan käyttää sekä maaettä ilmakuvia. Ilmakuvat ovat kuitenkin melko sopimattomia pystysuuntaisten julkisivujen teksturointiin. Normaalisti kattotekstuurit otetaan ilmakuvilta ja seinätekstuurit maakuvilta. Lisäksi julkisivutekstuurien resoluutio ilmakuvilla on heikompi kuin maakuvilla (Lee et al., 2002a). Ilmakuva otetaan yleensä lähes kohtisuoraan ylhäältä alas, joten vain kattotekstuurit tulevat kunnolla näkyviin. Jos ilmakuvilta kuitenkin halutaan seinätekstuureja, on kuvia otettava tiheästi kohdealueen yläpuolelta, jotta jokainen julkisivu olisi näkyvissä. Lisäksi vain kuvan reunoilla olevia julkisivutekstuureja voidaan käyttää, sillä suoraan alapuolella sijaitsevista seinistä ei tekstuuria ole näkyvissä. (Zebedin et al., 2006) 36 Myös viistoilmakuvia voidaan käyttää teksturointiin, jolloin koko kuva-aluetta voidaan hyödyntää tekstuurin hankinnassa. Kuvia pitää kuitenkin ottaa viistosti eri puolilta rakennusta, jotta jokainen sivu saadaan näkyviin. (Früh et al., 2004) Ilmakuvilta teksturoitaessa on vielä otettava huomioon lentokorkeus, lentonopeus, kameravakio ja kuvien peittoalueet, jotta tekstuuritietoja olisi riittävästi. (Zebedin et al., 2006) Ilmakuvia käytettäessä työ nopeutuu. Kuvalla näkyy yleensä laaja alue, kun taas maakuva saattaa kuvata vain yhtä rakennusta kerrallaan. Lisäksi ilmakuvien tapauksessa näkymäesteiden määrä vähenee, kun maan pinnalla olevat ihmiset, ajoneuvot ja kasvillisuus eivät peitä julkisivuja samalla tavalla ilmasta katsottuna. (Ulm, 2005) Jos teksturoitava kohde on jokin korkea rakennus, ei maakuvillakaan välttämättä onnistuta saamaan tarkkaa kuvaa julkisivun yläosista. Tällöin parempi vaihtoehto saattaa olla ilmakuvien käyttö seinän yläosissa ja maakuvien käyttö seinän alaosissa (Kuva 31). Halutusta tarkkuudesta riippuu, mikä on suurin sallittu kuvauskulma tason normaaliin verrattuna. Kuva 31: Julkisivutekstuuri koottu maakuvasta (alaosa) ja ilmakuvasta (yläosa) (Früh et al., 2004). Jos kohde näkyy useammalla kuin yhdellä kuvalla, valitaan niistä paras tiettyjen parametrien perusteella. Näitä ovat kuvan resoluutio, näkymäesteiden määrä kuvalla, kuvaussuunta pinnan normaaliin verrattuna ja kuvan yhteensopivuus naapurialueiden kanssa. Useita kuvia kannattaa ottaa sen takaamiseksi, että haluttu tekstuuri löytyy varmasti joltain kuvalta. 37 Tässä yhteydessä resoluutio tarkoittaa kuva-alalla olevien pikselien määrää. Mitä enemmän pikseleitä kuvalla on, sitä parempi on resoluutio. Yksi kuva voi sisältää useita tekstuurikuvia, joilla on keskenään eri resoluutio. Näin on esimerkiksi silloin, kun jotkin kuvalla näkyvät rakennukset sijaitsevat lähempänä kameraa kuin toiset (Kuva 32). Lisäksi yksittäisen julkisivutekstuurin sisäinen resoluutio voi vaihdella sen eri osissa perspektiivistä johtuen. (Früh et al., 2004) Kuva 32: Etualalla olevien tekstuurien resoluutio on parempi kuin taka-alalla olevien (Früh et al., 2004). Näkymäesteiden osuus kuvalla voidaan laskea kuvapinta-alasta esimerkiksi zpuskurilla. Mitä vähemmän kuva sisältää näkymäesteitä, sitä paremmin se soveltuu pinnan tekstuuriksi. Paras tapa olisi ottaa kuva kohtisuoraan julkisivuun nähden. Tällöin kuvaresoluutio on mahdollisimman tasainen koko tekstuurin alueella ja perspektiivistä johtuvat vääristymät minimoituvat. Koherenssi naapurialueiden kanssa on paras silloin, kun 3Dmallin ja tekstuurikuvien peittämät alat ovat yhteneviä ja kaikkien tekstuurikuvien resoluutio, valoisuus- ja sävyarvot ovat samat. Tehtäväkohtaisesti paras kuva voidaan valita painottaen juuri siinä tärkeäksi luokiteltuja parametreja. (Früh et al., 2004) Kuvien automaattinen hankinta on vaikeaa, ja kuvanottopaikkojen valinta vaatiikin yleensä ihmisen harkintakykyä. Ympäristö sisältää paljon sellaista, minkä sijainnista ei ole mitään tietoa. Tällöin niitä ei myöskään voida huomioida automatisoidussa kuvauspaikan määrityksessä. Tiedon keruuseen on tosin kehitelty erilaisia tehtävää nopeuttavia menetelmiä. Kuvia on otettu esimerkiksi liikkuvan auton lavalta, jolloin tekstuurikuvat saadaan nopeasti laajaltakin alueelta (Früh et al., 2001). 38 3.3 Muunnosparametrien ratkaisu Ideaalisessa tapauksessa kamera on kalibroitu, kuvien tarkka sijainti mallin suhteen tunnetaan, kuvia on riittävä määrä jne. Usein tilanne on kuitenkin sellainen, että kaikkia tarvittavia tietoja ei olekaan saatavilla. Tällöin on tehtävä normaalista poikkeavia toimenpiteitä ja pyrittävä mahdollisimman hyvään tulokseen käytettävissä olevien tietojen avulla. 3.3.1 Tuntemattomat orientointitiedot Normaalisti lähtötietona vaaditaan kameran tarkka orientointi kohdemallin suhteen, jotta kuvia voitaisiin käyttää teksturoinnissa. Orientointiparametreja ovat kuvauspaikka ja -suunta. Nämä parametrit selviävät yleensä kuvilta mitattaessa epälineaarisella pienimmän neliösumman menetelmällä joko jokaiselle kuvalle erikseen tai kerralla suuremmalle joukolle toisiaan peittäviä kuvia. Ensimmäistä tapaa kutsutaan taaksepäinleikkaukseksi avaruudessa, ja siihen tarvitaan kiintopisteitä, joiden sekä kuva- että kohdekoordinaatit ovat tunnettuja. Jälkimmäinen tapa on sädekimpputasoitus, jossa kiintopisteiden lisäksi käytetään tihennyspisteistöä toisiaan peittävien kuvien alueilla. Kameran sijainti ja orientointi voidaan selvittää myös mittaamalla tiedot geodeettisesti maastossa, esimerkiksi takymetrillä. Kameran projektiokeskusta ei voida tällöin kuitenkaan tarkasti mitata, joten se tuo mukanaan tiettyä epätarkkuutta. Sekä geodeettinen että fotogrammetrinen tapa sisältävät omia hyviä ja huonoja puoliaan. Fotogrammetrisesti kameran paikkaa mitattaessa tarkkuuteen vaikuttavat kameran kalibrointi, kuvalta mitattavien pisteiden etäisyys kuvanottopaikkaan sekä pisteiden sijainti kuvilla. Kameran sijainnin voi määrittää myös reunantunnistusmenetelmällä. Kuvilta etsitään kohdemallia vastaavia reunoja. Kuvien ja kohteen väliset muunnosparametrit saadaan selville, kun vastinpiirteet yhdistetään manuaalisesti toisiinsa. Reunanetsinnän avulla kameran sijaintitietojen tarkkuutta voidaan myös parantaa, jos alun perin on tiedossa vain likimääräinen sijainti (Kappale 3.4.1). Eräs vaihtoehto kuvanottopaikkojen selvittämiseksi on käyttää hyväksi julkisivupintoja ja niihin liittyviä pakopisteitä. Lee et al. (2002b) mukaan kolmea vastinviivaa sekä kahta tai kolmea pakopistettä voidaan käyttää kameran sijainnin ja orientoinnin määrittämiseen. Pakopisteet määrittävät automaattisesti kameran ulkoiset parametrit eli X-, Y- ja Z-koordinaatit sekä kolme kiertokulmaa. Kun nämä tiedot ovat tunnet- 39 tuna, voidaan kameran tarkempi sijainti selvittää automaattisesti. Sekä kuvalta että kohteesta etsitään vastinviivakandidaatit ja oikeat parit haetaan iteraatioiden avulla. Edellä mainituista tavoista poikkeava menetelmä kuvien ja kohteen välisen suhteen määrittämiseksi on rakennusten identifiointi. Jokainen teksturoitava rakennus merkitään yksilöitävällä tunnuksella ennen kuvausta. Tunnusten avulla kuvat ja kohdemalli pystytään liittämään yhteen ja oikeat tekstuurikuvat liitetään oikeisiin kohtiin mallilla. Yksi seinään liimattu lappu ei kuitenkaan riitä sekä rakennuksen sijaintitiedon että orientaation selvittämiseen. Kohteeseen on liitettävä enemmän kuin yksi tunnus. Vaihtoehtoisesti tunnuksen on oltava esimerkiksi sellainen kolmiulotteinen kappale, josta orientointi on mahdollista selvittää yhden tunnuksen avulla. 3.3.2 Likimääräiset orientointitiedot Kuvanottopaikkojen ja -suuntien likimääräinen tunteminen helpottaa teksturointia huomattavasti. Likimääräinen kameran projektiokeskuksen paikka saadaan ilmakuvien tapauksessa GPS:n (Global Positioning System) avulla ja kuvaussuunnan kiertokulmat muiden sensorien, kuten inertiaalimittausjärjestelmän (IMU), kompassin ja kallistusanturien avulla. Jos näitä tietoja ei ole saatavilla, voidaan vastaava sijainti laskea kuvien yhteisten koordinaateiltaan tunnettujen vastinpisteiden avulla. Maakuvien tapauksessa sijainti määritetään esimerkiksi GPS:n ja kompassin avulla. GPS-vastaanottimen paikannustarkkuudeksi riittää monissa tapauksissa kymmenen metrin tarkkuus kaikkien kolmen koordinaattiakselin suunnassa. 3.3.3 Kalibroimaton kamera Jos kamerasta ei ole tiedossa sisäisen orientoinnin parametreja, eikä testikenttäkalibrointia ole mahdollista tehdä ennen kuvausta, voidaan kalibrointi tehdä itse kuvauspaikalla. Tätä sanotaan itsekalibroinniksi. Etuna on se, että kuvausolosuhteet tulee huomioiduksi kalibroinnissa. Kohteesta on tunnettava joitakin likimääräisiä koordinaattipisteitä, jotta kameroiden karkeat sijainnit voidaan määrittää. Likimääräisiä koordinaatteja ja kamera-asemia tarkennetaan iteroinnin avulla. Kameran kalibrointiparametrit ratkaistaan yhtä aikaa kohdepisteiden laskennan kanssa (Pöntinen, 2006). Samalla selviävät myös kuvauspaikkojen sijainnit ja kuvaussuunnat. 3.4 Vastinpiirteiden määritys Perinteisesti teksturointimenetelmä on manuaalinen, jolloin teksturoitava alue osoitetaan kuvalta esimerkiksi alueen nurkkapisteiden avulla. Nämä pisteet yhdistetään vastaaviin kohdemallin pisteisiin ja tekstuurin siirtogeometria kuvalta kohdepinnalle 40 voidaan selvittää. Manuaalinen menetelmä on työläs ja vaatii toimiakseen käyttäjän ohjausta. Toki se on tällöin myös erittäin luotettava. Uudet teksturointisovellukset pyrkivät lisäämään menetelmien automaattisuutta, sillä käsiteltävänä on yhä suurempia aineistoja ja työprosessia halutaan nopeuttaa. Automaattisuutta on hyödynnetty erityisesti vastinpiirteiden määrityksessä, joka sisältää piirteiden etsimisen sekä vastinpiirteiden yhdistämisen. Automaattisissa toteutuksissa täytyy olla selvästi määriteltynä eri etenemisvaiheet ja se, miten toimitaan ongelmatilanteissa ja erikoistapauksissa. 3.4.1 Piirreirrotus Automaattisessa menetelmässä kuvalla ja kohteessa sijaitsevat vastinpiirteet, kuten pisteet ja viivat, etsitään usein piirreirrotuksen avulla. Kun tavoitteena on vastinpiirteiden yhteensovitus mahdollisimman hyvin, ovat tarkkuus ja luotettavuus tärkeitä asioita jo piirreirrotuksessa. Monissa sovelluksissa käytetään viivojen etsintää pisteiden haun sijaan. Viivalöydöt ovat luotettavampia kuin pistelöydöt, sillä kohina vaikeuttaa enemmän pisteiden kuin viivojen löytymistä. Lisäksi viivat ovat parempi ratkaisu silloin, kun kohde ei ole kokonaan näkyvissä kuvalla. Menetelmä sisältää kuitenkin paljon epävarmuutta. Kuvalta saatetaan löytää sellaisiakin viivoja, jotka ovat erittäin vahvoja ja selkeitä, mutta eivät kuitenkaan ole tärkeitä 3D-mallin kannalta eivätkä siksi sisälly malliin. Eräs paljon käytetty piirreirrotusmenetelmä on reunanetsintä (edge detection). Reuna tunnistetaan kuvalla sinne, missä pikseleiden välinen kirkkaus muuttuu nopeasti. Löydetyistä reunoista voidaan edelleen muodostaa suoria viivoja. Rakennukset voidaan yleensä kuvata suorien viivojen avulla, joten reunanetsintä on siksi todettu käyttökelpoiseksi juuri rakennusmalleja käsiteltäessä. Kuvalta etsitään reunanirrotuksen avulla tarpeelliset viivat, joita hyväksi käyttäen kuva ja malli asetetaan kohdakkain. Monissa tapauksissa mallin sisältämät viivat ovat jo etukäteen tunnettuja. Kuville tehtävä reunanetsintä voidaan toteuttaa esimerkiksi Canny-reunanetsinoperaattorilla. Löydetyt reunat voidaan muuntaa viivoiksi useallakin menetelmällä, tässä tekstissä käsitellään Hough-muunnosta. Pienimmät viivat poistetaan kynnystyksellä, sillä ne ovat yleisimmin vääriä viivoja eivätkä siten sisällä mitään tärkeää tietoa kohteesta. Yleisesti kuvalta löytyy enemmän viivoja kuin mitä malli sisältää (Kuva 33). 41 Kuva 33: 3D-mallin sisältämät viivat vasemmalla vihreällä, kuvalta löydetyt viivat oikealla punaisella (Früh et al., 2004). Erilaisia reunanetsintämenetelmiä teksturointitehtävissä ovat käyttäneet myös Klinec (2004) ja Zlatanova et al. (2002). Hough-muunnos vaatii lähtöaineistoksi binäärikuvan, joka voidaan tehdä esimerkiksi Canny-operaattorilla. Binäärikuva käydään läpi pikseli kerrallaan. Jokaisen pikselin x - ja y -koordinaatin avulla piirretään suoria ab -koordinaatistoon, missä a on viivan kulmakerroin ja b y -akselin leikkauskohta kaavan y = ax + b mukaisesti. Suoria piirretään eri suuntiin eli a ja b saavat eri arvoja sen verran, että ympärillä oleva alue tulee katetuksi riittävän hyvin. Tiedot suorien leikkauskohdista kerätään erilliseen taulukkoon, josta valitaan sellaiset pisteet, joissa toisensa leikkaa kynnysarvoa useampi suora. Valittujen pisteiden a - ja b -arvojen perusteella xy koordinaatistoon piirretään suora, joka vastaa kuvassa näkyvää reunaviivaa. Hough-muunnos on todettu erityisen käyttökelpoiseksi rakennusten julkisivujen löytämiseksi kuvilta. Menetelmä tunnistaa viivoja kuvilta sopivan karkeasti sen sijaan, että yrittäisi tunnistaa yksittäisiä piirteitä. Jos esimerkiksi kohdemallin ja kuvan yksityiskohtaisuus poikkeaa paljon toisistaan, ei pienipiirteinen reunanirrotus ole välttämättä toimiva menetelmä. Hough-muunnos ei myöskään ole kovin herkkä näkymäesteille ja muille haittatekijöille. Hough-muunnoksella viivoja voidaan etsiä erilaisilla kynnysehdoilla. Kuvalta voidaan etsiä jokaisen seinätason viivat erikseen tai vain karkeasti kokonaisen raken- 42 nuksen reunaviiva. Kuvassa 34 rakennuksesta on haettu vain koko kohteen ääriviivat. Kuva 34: Hough-muunnoksen avulla erotettu rakennuksen reunaviiva kuvalta (Böhm et al., 2002). Kun Hough-muunnoksella erotetaan kokonaisen rakennuksen ääriviivat, saattaa se sisältää useita seinätasoja. Tekstuuri liitetään koko rakennuksen pintaan kerralla, jolloin seinässä olevat syvennykset ja ulkonemat jäävät huomiotta. Tekstuuri kuvaa vain niitä kohteen osia, jotka näkyvät käytetystä kuvaussuunnasta. Osa sisäseinistä saattaa jäädä kokonaan ilman tekstuuria. Parhaiten menetelmä toimii kohteille, joiden seinät koostuvat kullakin sivulla vain yhdestä tasosta. Monimutkaisemmilla kohteilla tekstuurikuvan kuvauspaikalla on suuri merkitys teksturoidun mallin ulkoasuun. Hough-muunnosta voidaan käyttää myös pakopisteiden löytämiseen. Pakopisteitä taas voidaan käyttää tekstuuriosien tunnistamiseen kuvalta (Kuva 35). Pakopiste saadaan selville joukosta viivoja, jotka todellisuudessa ovat yhdensuuntaisia, mutta näyttävät kuvalla perspektiivin vuoksi erisuuntaisilta ja risteävät näin ollen pakopisteessä. Lee et al. (2002a) esittelee artikkelissaan automaattisen menetelmän pakopisteiden löytämiseksi. Liebowitz et al. (1998) käsittelevät tekstissään myös menetelmää pakopisteiden havaitsemiseksi. 43 Kuva 35: Rakennuksesta löydettyjä viivoja. Kaikki saman seinätason vaakasuuntaiset viivat risteävät samassa pisteessä eli pakopisteessä. Vastaava toteutuu myös pystyviivojen tapauksessa. (Lee et al., 2002a) Jokainen julkisivu määrittää kaksi pakopistettä, yhden vaakasuuntaisille ja yhden pystysuuntaisille viivoille. Kuvilta löydetyt viivat ryhmitellään sen mukaan, mikä niiden pakopiste on. Saman pakopisteen kautta kulkevat viivat kuuluvat samaan ryhmään. Julkisivualueet erotetaan kuvilta käyttämällä vaaka- ja pystysuuntaisten viivaryhmien sijaintitietoa. Lopputuloksena kuvilta on tunnettuna sekä pakopisteet että julkisivualueet. Näiden tietojen perusteella voidaan edelleen automaattisesti määrittää kuvien ja 3D-mallin välinen geometria. Lisätietoja löytyy artikkelista (Lee et al., 2002a). Yllä esitelty menetelmä toimii myös tapauksissa, joissa koko julkisivu ei ole yhdellä kuvalla näkyvissä. Tämä on erityisen tärkeää tiheästi rakennetuilla alueilla. Vain osan rakennuksen näkyminen saattaa estää kameran ulkoisen orientoinnin määrittämisen normaalilla vastinpistemenetelmällä (Kappale 3.3.1), jos riittävää määrää vastinpisteitä ei ole saatavilla. Edellä kuvattu menetelmä käyttää sen sijaan viivapohjaista menetelmää. Vastaavaa ideaa on käytetty myös artikkelissa (Debevec et al., 1996), mutta tässä menetelmä on käyttökelpoinen vain muutamalle rakennukselle suuren manuaalisen työmääränsä vuoksi. (Lee et al., 2002a) Julkisivuteksturointi vaatii normaalisti neljä vastinviivaa tai -pistettä kuvalla ja kohteessa. Näitä ovat julkisivun reunaviivat tai kulmapisteet. Monissa tapauksissa kaikki neljä kulmapistettä eivät kuitenkaan ole näkyvissä kuvalla. Tällöin on turvauduttava viivojen käyttöön. Usein on myös niin, ettei esimerkiksi julkisivun alareuna näy kuvalla eikä tällöin kaikkia viivojakaan ole mahdollista löytää perinteisellä reunanir- 44 rotuksella. Laycock et al. (2006) käyttää puuttuvan viivan etsinnässä hyväksi julkisivun alareunan kohdalla kulkevaa pakoviivaa. Sen avulla teksturointi on mahdollista suorittaa automaattisesti tasomaiselle julkisivulle. Tarkempaa tietoa pakoviivan käytöstä ja muusta menetelmään liittyvästä löytyy artikkelista (Laycock et al., 2006). 3.4.2 Yhteensovitus Automatisointia voidaan käyttää piirreirrotuksen lisäksi kohdemallin ja tekstuurikuvan yhteensovittamisessa. Yhteensovituksessa on kaksi eri vaihtoehtoa. Ensimmäisessä vaihtoehdossa kohdemalli on kolmiulotteinen ja sitä sovitetaan yhteen kaksiulotteisen kuvan kanssa. Toinen vaihtoehto on, että kolmiulotteinen kohdemalli jaetaan kaksiulotteisiin osiin, joista sitten etsitään vastaavuuksia niin ikään kaksiulotteisten kuvien kanssa. Ensimmäisessä vaihtoehdossa ongelmaksi muodostuvat lukuisat eri yhteensovitusvaihtoehdot. Kohdemallin pitäisi olla sellaisessa asennossa katsojaan nähden, jotta sen sisältämät monikulmiot voitaisiin tunnistaa suoraan vastaavasti kuvalta. Jos mitään etukäteistietoa kuvan ja kohdemallin välisestä orientaatiosta ei ole, täytyy sovitus tehdä useissa eri asennoissa. Kuvaa tai mallia kierretään ja siirretään kolmen koordinaattiakselin suhteen. Lisäksi tekstuurin kokoa saatetaan muuttaa. Laskennassa määritetään samanaikaisesti mallin orientointi ja sijainti suhteessa kuvaan sekä mallin ja kuvan väliset vastinviivat. Prosessi voi käydä turhan raskaaksi, jos eri vaihtoehtoja löytyy liian paljon. Eri kokeilujen jälkeen parhaiten sopivat vastinpiirteet yhdistetään keskenään. Vastaavuus voidaan etsiä ensin pienelle joukolle viivoja ja tarkentaa tulosta lisäämällä enemmän viivoja sovitukseen. Tulos voidaan siis saavuttaa myös iteroimalla. Varmuutta ei kuitenkaan aina ole siitä, yhdistetäänkö oikeat vastinpiirteet toisiinsa. Potentiaalisia vaihtoehtoja voi löytyä useita. Kuvassa 36 ensimmäinen kuva vasemmalla sisältää kuvalta havaitut viivat. Seuraavassa kuvan päälle on projisoitu mallin sisältämät viivat. Viimeisessä kuvassa kuvan ja mallin viivat on sovitettu yhteen. Mallin ja kuvan välisestä orientoinnista on ensin tehty hypoteesi. Hypoteesin perusteella mallin piirteet projisoidaan kuvalle. Jos projisoidut piirteet ja alkuperäinen kuva ovat riittävän samanlaisia, hypoteesi hyväksytään. Muussa tapauksessa tehdään uusi hypoteesi, kunnes riittävä vastaavuus löytyy. Hyväksytty hypoteesi antaa suuntaviivoja mallin ja kuvan väliselle orientoinnille, jota sitten parannetaan iteroimalla. (David et al., 2003) 45 Kuva 36: Vasemmalta oikealle: kuvalta havaitut viivat, mallin sisältämät viivat ja yhteensovitus (David et al., 2003). Kuvan ja kaksiulotteisen kohdemallin yhdistämisessä on myös omia heikkouksiaan. Jokainen 2D-osa näyttää erilaiselta, kun sitä katsotaan eri suunnista. Niinpä ne on esitettävä useana näkymänä. Eri näkymät sijoitetaan näkökulmagraafiin (aspect graph) (Kuva 37). Näkymiä sovitetaan yhteen kuvilta tunnistettujen piirteiden kanssa. Lopulta parhaiten yhteensopivat piirteet kuvalla ja kohteessa yhdistetään, kun kaikki mahdollisuudet on käyty läpi. Kuva 37: Rakennuksesta muodostettu yksinkertainen näkökulmagraafi (Böhm et al., 2002). Tehtävää helpottaa huomattavasti se, jos tunnetaan kuvien karkea orientointi. Tällöin vastinpiirrevaihtoehdot mallin ja kuvan välillä vähenevät reilusti. Työ etenee nopeammin ja kevyemmin. Ensin kuva ja kohde asetetaan karkeiden orientointitietojen avulla päällekkäin. Kuvalta valitaan pisteitä, jotka näkyvät myös mallilla. Kun näiden vastinpisteiden ja projektiokeskuksen kautta muodostetaan suorat, tarkentaa niiden leikkauskohta kameran sijaintia (Kuva 38). Tämän taaksepäinleikkauksen avulla kuvan orientointitietoja voidaan tarkentaa iteroimalla useammankin kerran (Kuva 39). Kuvalta on valittava vähintään kolme pistettä kameran sijainnin tarkentamiseksi. Mitä useampi piste hyödynnetään, sitä tarkempi tulos saadaan. Pisteet kannattaa valita selkeistä kohteista ja eri puolilta kuvaa, jotta tulos olisi paras mahdollinen. Yleisesti mitä tarkemmat orientointitiedot ovat saatavilla, sitä nopeammin ja luotettavammin yhteensovitus tapahtuu. 46 Kuva 38: Vastinpiirteisiin perustuva taaksepäinleikkaus (Klinec, 2004). Kuva 39: Vasemmalla tunnettu karkea orientointi, oikealla korjaus taaksepäinleikkauksen avulla (Böhm et al., 2002). 3.5 Näkymäesteiden huomioiminen Näkymäesteet ovat asioita, jotka peittävät teksturoitavia kohteita kuten julkisivuja. Ne voivat olla joko mallinnettuja tai mallintamattomia. Mallinnettuja näkymäesteitä ovat kaikki kohdemalliin kuuluvat osat, jotka jollain lailla peittävät teksturoitavaa kohdetta kuvilla. Esimerkiksi kaupunkimallissa toiset rakennukset tai rakennus itsessään voi peittää julkisivua. Mallintamattomia näkymäesteitä ovat ne kohteet, joista ei ole olemassa mitään geometria- tai sijaintitietoa. Näitä ovat yleensä ihmiset, ajoneuvot ja ympäristön kasvillisuus. (Bornik et al., 2001) 47 Näkymäesteet voidaan jakaa myös sen perusteella, ovatko ne liikkuvia vai paikallaan olevia kohteita. Liikkuvia näkymäesteitä ovat muun muassa ihmiset ja autot rakennusten edessä. Liikkumattomia taas ovat esimerkiksi liikennemerkit ja ympäristön kasvillisuus, joka haittaa tarkasteltavan kohteen näkymistä. (Böhm, 2004) Näkymäesteitä on lähes mahdoton välttää erityisesti kaupunkialueilla kuvattaessa, sillä kuvauspaikkoja on rajallisesti. Seuraavissa kappaleissa on selostettu erilaisia menetelmiä näkymäesteiden poistamiseksi tekstuurikuvilta. Menetelmät toimivat tapauksissa, joissa esteitä häivytetään tasomaisten kohteiden edestä. Ensin käsitellään liikkuvia ja liikkumattomia näkymäesteitä. Molemmissa tapauksissa esteiden oletetaan olevan mallintamattomia. Näiden jälkeen käsitellään erikseen mallinnettuja näkymäesteitä. 3.5.1 Liikkuvat näkymäesteet Paljon käytetty menetelmä liikkuvien näkymäesteiden poistamiseksi on taustan arviointi (background estimation). Taustaksi kutsutaan kaikkea sitä, mikä ei liiku kuvausten aikana. Tässä tapauksessa juuri tausta on se kohde, joka halutaan teksturoida. Taustan arvioinnissa kohteesta otetaan tavallisesti useita ajallisesti peräkkäisiä kuvia (Kuva 40). Kaikki kuvat otetaan täysin samasta paikasta ja samaan suuntaan. Kuvien oton aikana liikkuvat näkymäesteet vaihtavat paikkaa taustaan verrattuna. Näin ollen liikkuvat kappaleet sijaitsevat eri ajan hetkillä otetuilla kuvilla eri kohdissa. Kuvia verrattaessa vastinpikselit saavat eri sävyarvoja niihin kohtiin, joissa liikettä on tapahtunut. Oletetaan, että vastinpikselit saavat suurimmassa osassa kuvia saman arvon, sillä vain pienessä määrässä kuvia näkymäeste on peittänyt kohdetta. Tällöin voidaan antaa pikselille useimmilla kuvilla ollut arvo, jonka siis ajatellaan kuvaavan kohdetta. Vastaava pikselin arvon määritys tehdään kuva-alan kaikille pikseleille, jotka sitten muodostavat kuvan kohteesta ilman liikkuvia näkymäesteitä (Kuva 41). (Böhm, 2004) Kuva 40: Neljä kuvaa rakennuksesta, jonka edessä kulkevat liikenne ja jalankulkijat peittävät osittain julkisivun alaosaa. Kameran paikka ja kuvaussuunta on sama jokaisena kuvanottohetkenä. (Böhm, 2004) 48 Kuva 41: Kuva muodostettu niistä pikseliarvoista, joita esiintyi eniten vastinpikseleiden vertailussa (Böhm, 2004). Seuraavaksi esitellään tarkemmin erilaisia menetelmiä tekstuurikuvan pikselien arvon määritykseen. Oletetaan niin ikään, että käytettävissä on joukko vastinpikseleitä useilta eri kuvilta. Kuten jo edellä mainittiin, liikkuvat näkymäesteet voidaan eliminoida parhaiten käsittelemällä samasta paikasta ja samaan suuntaan otettuja kuvia. Yksinkertaisimmillaan lasketaan vastinpikseleiden arvojen keskiarvo, joka sitten määrittää sävyarvon tuloskuvalle. Tällöin kuvia tarvitaan melko paljon, lähes sata kappaletta, jotta väärän väriarvon sisältämät pikselit eivät pääse liiaksi vaikuttamaan tuloskuvaan. (Böhm, 2004) Tekseleiden arvot voidaan määrittää myös mediaanisuodatuksen avulla. Mediaanisuodatus on yksinkertainen tapa näkymäesteiden poistamiseen. Yleensä sitä käytetään kohinan poistoon, mutta se sopii myös näkymäesteiden häivyttämiseen. Suodatuksessa käytetään maskia, jonka koko voidaan määritellä tarkoitukseen sopivaksi. Esimerkiksi 3*3-kokoisen maskin tapauksessa tarkasteltavana on kohdepikseli ja sen kahdeksan naapuria (Kuva 42). Näiden sävyarvot järjestetään jonoon suuruusjärjestykseen, ja keskimmäinen arvo eli mediaani valitaan kohdepikselin sävyarvoksi. Menetelmässä pakotetaan huomattavasti poikkeavat sävyarvot ympäristönsä kaltaisiksi. 49 Kuva 42: Mediaanisuodatus (Metherall, 2000). Näkymäesteiden poistamisessa mediaanisuodatuksen sävyarvoja kerätään yleensä useilta eri kuvilta, joissa kaikissa sama kohde on näkyvissä (Kuva 43). Ei siis niinkään käytetä tietyn kokoista maskia yhdelle kuvalle, vaan eri kuvien vastinpikseleiden sävyarvot järjestetään jonoon ja niistä valitaan keskimmäinen arvo (mediaani) kyseisen pikselin arvoksi tuloskuvaan. Kun suurimmassa osassa kuvia näkyy teksturoitava julkisivu, ja vain osassa sävyarvo tulee näkymäesteestä, voidaan esteet poistaa melko tehokkaasti. Kuvia on oltava riittävä määrä, jotta näkymäesteet eivät dominoi sävyarvoissa. Mediaanisuodatus poistaa myös kuvan valoisimmat ja korostuvimmat kohdat (highlights). (Bornik et al., 2001) Kuva 43: Mediaanisuodatus näkymäesteiden poistamisessa (mukailtu lähteestä Bornik et al., 2001). Samantapainen menetelmä mediaanisuodatuksen kanssa on pikseleiden arvon määritys sen mukaan, miten ne sijoittuvat värisävytaulukkoon. Myös tässä joukko kuvia asetetaan pinoon, jolloin kuvien vastinpikselit sijaitsevat täysin päällekkäin. Kerrallaan yhden pinon vastinpikseleiden arvot sijoitetaan värisävytaulukkoon. Eri vä- 50 risävyt sijoittuvat eri osiin taulukkoa. Tarkoituksena on löytää joukko pikseleitä, jotka kaikki sisältävät lähellä toisiaan olevan sävyarvon. Ulkopuoliset pikselit jätetään kokonaan pois käsittelystä. Menetelmä toimii jopa alle kymmenellä kuvalla, joten kaikki pikselit voidaan tutkia eikä siihen kulu liiaksi resursseja. (Böhm, 2004) Kuva 44 esittää neljä kuvaa pinossa ja niistä valitun yhden vastinpisteen sävyarvojen jakaumaa väriavaruudessa. Kolme pikseliä oikeassa yläkulmassa muodostavat ryhmän, kun taas vasemmassa alanurkassa yksi pikseli jää ulkopuoliseksi. Väriavaruudessa tarpeeksi lähellä olevia pikseleitä käytetään tuloskuvan laskentaan. Jos useamman pikselin ryhmiä on monta, valitaan niistä se, jossa lähekkäisiä pikseleitä on eniten. Lopullisen pikselin väriarvo voidaan määrittää esimerkiksi ryhmän pikseleiden arvojen keskiarvosta. Jos selvästi erottuvaa pikselirykelmää ei löydy tai pikselin arvoa ei muuten voida johdonmukaisesti selvittää, valitaan pikselin arvoksi esimerkiksi ensimmäisen kuvan sävyarvo. (Böhm, 2004) Kuva 44: Vasemmalla joukko kuvia pinossa, oikealla vastinpikselien väriarvot taulukossa. Yksi väriarvo poikkeaa selvästi kolmesta muusta arvosta, joten se on luultavasti liikkuvasta näkymäesteestä. (Böhm, 2004) Kun kaikki kuvat otetaan samoilla orientoinneilla, ei liikkumattomia näkymäesteitä ole mahdollista poistaa, sillä ne näkyvät kaikilla kuvilla samassa paikassa. Edellä esitetyt menetelmät toimivat vain maakuville, koska kaikki kuvat on otettava samasta paikasta ja samaan suuntaan. Ilmakuvat otetaan yleensä liikkuvasta lentokoneesta, jolloin kuvauspaikka vaihtuu koko ajan. Ilmakuvilta voidaan kuitenkin poistaa liikkuvia näkymäesteitä samaan tapaan kuin kappaleessa 3.5.2. poistetaan paikallaan pysyviä näkymäesteitä. Varjot ja muut valoisuusvaihtelut taustassa heikentävät edellä kuvattujen menetelmien toimivuutta. 51 3.5.2 Paikallaan olevat näkymäesteet Paikallaan olevien näkymäesteiden poistamiseksi kohteesta on otettava kuvia useasta paikasta (Kuva 45). Eri paikoista otetut kuvat voidaan perspektiivimuunnoksen avulla muuntaa julkisivun suuntaiseksi ortokuvaksi, kun ollaan kiinnostuneita erityisesti tasomaisesta rakennuksen seinästä. Kun kaikki kuvat on muunnettu samaan projektioon, näyttää paikallaan oleva näkymäeste liikkuvan julkisivun editse. Tällä tavoin paikallaan olevat näkymäesteet voidaan muuttaa liikkuviksi näkymäesteiksi, ja tästä eteenpäin voidaan soveltaa edellä esitettyjä ratkaisuja (Kappale 3.5.1) liikkuvien esteiden poistamiseksi. (Böhm, 2004) Yleisesti ottaen mitä lähempänä julkisivua näkymäesteet sijaitsevat, sitä vaikeampi niitä on poistaa. Kuvia on otettava reilusti eri suunnista, jotta este saadaan ”liikkumaan” tason editse. Kuva 46 esittää lopputuloksen paikallaan olevien näkymäesteiden poistamisesta. Kuvaan on jäänyt joitakin osia esteistä. Parempi tulos olisi saatu, jos prosessissa olisi käytetty useampaa kuin kolmea kuvaa. Toisaalta myös osa liikkuvista näkymäesteistä on poistunut, sillä myös ne näkyvät eri paikoissa eri kuvilla. Kuva 45: Ylärivissä kolme eri suunnista otettua kuvaa julkisivusta. Julkisivun näkyvyyttä haittaa liikkuvien ihmisten lisäksi keskellä oleva patsas. Alarivissä julkisivuosa on muunnettu tasomaisen julkisivun suuntaiseksi ortokuvaksi. (Böhm, 2004) Kuva 46: Julkisivu ortokuvana, josta näkymäesteitä on poistettu (Böhm, 2004). 52 3.5.3 Mallinnetut näkymäesteet Kohteiden näkyvyyttä ja mallinnettujen näkymäesteiden sijaintia kuvalla voidaan laskea nelipuiden avulla. Nelipuita käytetään erityisesti moniresoluutioisten tekstuurien tuottamiseen, mutta ne ovat myös yksi vaihtoehto näkymäesteiden tunnistamiseen ja poistamiseen. Nelipuun juuri kuvaa koko teksturoitavan monikulmion alueen. Tekstuurin laatua parannetaan jakamalla juuri neljään osaan. Nämä osat taas jaetaan edelleen pienempiin osiin aina laatua parantamalla niin kauan kuin tarkempaa tietoa on saatavilla. Lopulta puun lehdet kuvaavat tekstuurin suurinta resoluutiota. Puun eri tasot sisältävät siis kuvan eri osia eri resoluutioisina (Kuva 47). Jokaisesta kuvasta muodostetaan oma nelipuu. (Bornik et al., 2001) Kuva 47: Tekstuurikartasto (texture atlas) koostuu nelipuurakenteesta (Buckholz et al., 2005) Projektiokeskuksesta määritetään säteet nelipuun solmujen jokaiseen kulmaan eli tekstuurialueen vastaaviin kulmiin (Kuva 48). Kuvan jako pienempiin osiin tehdään niin kauan, kunnes jokin estää säteen kulkemista tai suurin resoluutio on saavutettu. Tämän avulla voidaan valita teksturoinnissa käytettävät kuvat siten, että ne eivät sisällä mallinnettuja näkymäesteitä tai kohteen omia peittäviä osia. (Bornik et al., 2001) 53 Kuva 48: Peittävän kohteen vaikutus tekstuuripintaan (Bornik et al., 2001). Nelipuu-menetelmässä voidaan käyttää myös mediaanisuodatusta mallintamattomien näkymäesteiden poistamiseen. Mediaanisuodatus on selitetty kappaleessa 3.5.1. Kun kaikista kuvista on muodostettu nelipuita, lasketaan vastinpikseleiden sävyarvoista mediaani kaikilla resoluutiotasoilla, joita kuvista löytyy. Mediaani ja vastaava resoluutio kuvaavat siten nelipuun solmua. Laskennassa on kuitenkin aina oltava mukana vähintään kolme kuvaa. Parhaista resoluutioista ja vastaavista mediaaneista koostetaan edelleen lopullinen tekstuuripinta. (Bornik et al., 2001) Mallinnettuja näkymäesteitä poistuu myös kappaleessa 3.5.2. esitetyllä menetelmällä, sillä ne vastaavat liikkumattomia näkymäesteitä. Aiheeseen liittyvässä kirjallisuudessa en ole törmännyt mallinnettuihin näkymäesteisiin, jotka liikkuisivat. 3.5.4 Näkymäesteiden poisto laajoissa aineistoissa Suuria aineistoja käsiteltäessä teksturointiin saattaa olla käytettävissä vain yksi kuva yhtä pintaa kohden. Tällöin näkymäesteiden poistamisessa ei voi turvautua usean kuvan hyödyntämiseen ja tehtävä vaikeutuu huomattavasti. Helposti voi syntyä tilanteita, että käytettävissä olevan kuva-aineiston avulla kaikkia näkymäesteitä ei ole mahdollista eliminoida. Jos teksturoitava pinta koostuu toistuvasta mallista, kuten tiilikuviosta, voi puuttuvan tekstuurin kopioida jostain muusta paikasta, samalta tai eri kuvalta ja liittää sopivaan kohtaan näkymäesteen päälle. Yksi vaihtoehto esteen peittämiseen on myös värittää sen päälle mahdollisimman sopivalla värillä. Tällöin ei enää ole kyse valokuvalta saatavasta tekstuurista. On myös mahdollista käyttää tekstuurikirjastoja, jotka sisältävät erilaisia tekstuureja eri materiaaleille. Tekstuurikirjastot voivat sisältää sekä valokuvia että keinotekoisia kuvia. 54 3.6 Kuvan ehostus Kuvien radiometriset ominaisuudet eroavat toisistaan, kun niitä otetaan eri kameroilla, eri valoisuusolosuhteissa ja eri paikoista (Ortin et al., 2005). Radiometrisillä ominaisuuksilla tarkoitetaan tässä kuvien valoisuuksien voimakkuuksia ja sävyjä. Radiometriset vääristymät näkyvät kuvilla erilaisina valoisuus-, kontrasti- ja sävyarvoina. Kun kohteen teksturointiin käytetään useita erilaisia kuvia, syntyy tekstuuriin muun muassa epäjatkuvuuskohtia kahden kuvan rajalle (Kuva 49). Näiden välttämiseksi luotettavin tekniikka on säätää kuvien radiometriset ominaisuudet manuaalisesti yhteensopiviksi ennen niiden liittämistä mallin pintaan. Myös automaattisia menetelmiä on kehitetty toimenpiteen nopeuttamiseksi. Esimerkki tällaisesta on sekoitusmenetelmä (blending method), jota Debevec et al. (1996) on käyttänyt erilaisilla painotusfunktioilla. Kuva 49: (a) Julkisivusta otettu useita eri kuvia. (b) Seinätekstuuri koottu yhdistämällä eri kuvia, jolloin sävyerot näkyvät kuvien rajakohdissa. (Varshosaz, 2004) Kuvien radiometrisiin ominaisuuksiin voi vaikuttaa muillakin tavoilla kuin kuvankäsittelyllä. Kuvanottohetki vaikuttaa paljon kuvan ominaisuuksiin. Pilvisellä säällä kaikki kuvat ovat lähes saman sävyisiä, niiden valoisuus on samaa luokkaa eikä varjojakaan kuviin synny. Jos kuviin kuitenkin tulee varjoja, voi niitä käsitellä samoin kuin näkymäesteitä. On otettava huomioon, että myös varjot voivat liikkua. Kuvat kannattaa ottaa lyhyellä aikavälillä, jotta valoisuus olisi kaikilla kuvilla samanlainen. Lisäksi jokin oleellinen asia kohteessa voi muuttua, jos samasta kohteesta tehdään kuvauksia vaikkapa eri päivinä. 55 Moniresoluutioisten tekstuurien muodostaminen (Kappale 4.2) vähentää myös mahdollisia valoisuusvaihteluita tekstuurikuvilta. 56 Luku 4 Laajojen aineistojen teksturointi 4.1 Laajan aineiston haasteita Laajalla aineistolla tarkoitetaan suurta tietomäärää, joka voi käsittää jopa useita kaupunkeja kattavia tietokantoja. Rakennusten lisäksi se saattaa sisältää paljon myös muuta kohde- ja sijaintitietoa, kuten metsiä ja peltoja. Aineisto voi olla yhdistelmä useita erilaisia tiedostoja, jotka saattavat olla jopa täysin eri formaateissa keskenään. Suuren alueen teksturointi vaatii siis erilaisten tietokantojen ja aineistojen yhdistämistä. Jo nämä asiat tuottavat erityishaasteita teksturointityölle. Lisäksi teksturointimahdollisuudet ovat usein jollain lailla rajallisia laajojen aineistojen tapauksessa, sillä jokaista rakennusta ei voida käsitellä yksitellen. Algoritmien automaattisuus helpottaa prosessin kulkua huomattavasti. Laajan aineistomäärän tapauksessa tekstuurikuvia ei voi olla rajattomasti, vaan pääsääntöisesti on rajoituttava muutamaan tai jopa vain yhteen kuvaan per tekstuuripinta. Rakennuksen kokonainen julkisivu tai katto muodostuu laajojen aineistojen tapauksessa yleensä yhdestä tasosta, joka voidaan kuvata yhtenä monikulmiona. Usein laajojen aineistojen tapauksessa jo kohdemallia on yksinkertaistettu sen verran, että teksturoitavat monikulmiot ovat sopivan yleistettyjä. Laajoille aineistoille sopivat menetelmät toimivat usein juuri karkeille 3D-malleille, joissa rakennukset koostuvat mahdollisimman yksinkertaisista tasoista. Manuaalisuus pyritään vähentämään minimiin, jotta työmäärä ei kasvaisi liian suureksi. Vastaavasti manuaalista työtä voidaan keskittää yksilöllisiin ja vaativampiin kohteisiin, kuten kirkkoihin ja muihin merkittäviin rakennuksiin. 57 Kuva 50: Teksturoitu 3D-malli Stuttgartista (Kada, 2004). Kun teksturoitavana on kokonainen julkisivu kerrallaan, on kuvakin otettava sellaiselta etäisyydeltä, että koko seinä on siinä näkyvissä. Jos tekstuuri on koottava usealta kuvalta, lisää se tehtävän monimutkaisuutta. Yhden kuvan käyttäminen koko seinän alueelle tarkoittaa sitä, että kuvan täytyy olla riittävän tarkka pinnan kuvioiden esittämiseen. Lisähaastetta tuovat rajalliset kuvauspaikat ja näkymäesteet, joita ei aina ole mahdollista välttää. 4.2 Hierarkisen tietorakenteen hyödyntäminen Laajan aineiston käytössä voidaan hyödyntää hierarkiaperiaatetta, jossa tietokanta sisältää tekstuureja, malleja tai molempia eri resoluutioisina. Näistä voidaan valita tarkoitukseen sopivat mallit ja tekstuurit tapauskohtaisesti. Jos halutaan tuottaa mahdollisimman tarkka kuvaus, valitaan tarkimmat olemassa olevat aineistot. Jos taas karkeampi malli on riittävä, on turha kuluttaa resursseja liian yksityiskohtaiseen kuvaukseen. Toki hierarkiaperiaatetta voidaan käyttää muussakin kuin laajojen aineistojen yhteydessä, mutta tämä on yksi esimerkki sen hyödyllisyydestä. Hierarkiaan perustuvia tietorakenteita ovat muun muassa nelipuut ja kuvapyramidit. 58 4.2.1 Nelipuu Keräämällä tietoa useasta nelipuusta eli yhdistämällä tekstuuriosia usealta kuvalta syntyy moniresoluutioinen tekstuuri (Kuvat 51 ja 52). Nelipuuhun tallennetaan tekstuurin resoluutio ja pikseleiden sävyarvot. Moniresoluutioesityksen avulla voidaan poistaa näkymäesteitä (Kappale 3.5.3) ja samalla luoda mahdollisimman tarkka tekstuuri. Tällöin kohdepinta päällystetään useilla eri tekstuurikuvilla, jotka voivat olla peräisin eri kuvilta. Eri osat ovat eri laatuisia, eli niiden resoluutio vaihtelee. Eri kohtiin etsitään aina sitä kuvaava parasta laatua oleva tekstuuri. Samalla estetään näkymäesteiden kuvautumista kohteen pintaan. (Bornik et al., 2001) Ofek et al. (1997) käsittelevät muun muassa tekstuurikuvilla esiintyvien heijastusten ja valoisuuserojen poistamista moniresoluutioesityksen avulla. Kuva 51: Yllä kaksi tekstuurikuvaa ja alla niitä vastaavat nelipuuesitykset. Kuvien perspektiivistä johtuen resoluutio vaihtelee kuvan eri osissa. Siksi kuvat on jaettu nelipuussa kolmeen eri osaan. (Bornik et al., 2001) 59 Kuva 52: Tekstuuri yhdistettynä kahdelta eri kuvalta. Vasemmanpuoleinen osa on otettu toiselta kuvalta ja oikeanpuoleinen ja keskiosa toiselta kuvalta siten, että parhaat alueet molemmilta kuvilta tulee käytettyä. (Bornik et al., 2001) 4.2.2 Kuvapyramidi Toinen mahdollinen rakenne on kuvapyramidi. Se muodostuu nelipuun tapaan eri laatuisista tekstuurikuvista (Kuva 53). Sen alin osa sisältää alkuperäisen kuvan. Kuva alipäästösuodatetaan vaiheittain ja näytteistetään aina edellistä kuvaa harvemmalla välillä, jolloin pyramidiin saadaan kerroksittain eri resoluutioisia kuvia. Kuva 53: Kuvapyramidi (Ofek et al., 1997). Nelipuu on kuvapyramidia parempi vaihtoehto, sillä sen osapuut voidaan jakaa eri määrään tarkempiresoluutioisia osapuita. Tällöin eri alueiden tarkimmat tekstuurit voivat poiketa toisistaan. Hyvinkin eri resoluutioisia tekstuureja syntyy esimerkiksi perspektiivivääristymien johdosta. (Bornik et al., 2001) 60 4.2.3 Level of detail Kaupunkimallien muodostamisessa paljon käytetty yksityiskohtien määrään perustuva kuvaustekniikka on ”level of detail” eli eri yksityiskohtatasot. Kaukaa tarkasteltaessa kohdemalli sisältää vain likimääräiset muodot ja tekstuurin. Mallin ja sen tekstuurin ei tarvitse kuvata kaikkein tarkimpia yksityiskohtia, sillä niitä ei kuitenkaan näkyisi kaukaa katsottuna. Usein pienessä mittakaavassa näkymä sisältää paljon kohteita. Mallin käsittely ei käy liian raskaaksi, kun kuvaus on tarpeeksi karkea. Lähelle zoomattaessa tarkemmatkin yksityiskohdat olisi mukava nähdä. Tällöin käytetään enemmän yksityiskohtia sisältävää mallia. Level of detail (LOD) tarkoittaa, että kohteesta muodostetaan useita erilaisia malleja, joiden yksityiskohtaisuus vaihtelee. Kuvassa 54 vasemmalta oikealle mentäessä kani muodostuu yhä pienemmästä määrästä monikulmioita. Monikulmioiden määrän lisäksi myös tekstuurin resoluutio voi vaihdella samaan tapaan. (Erikson, 2000) Kuva 54: Eri yksityiskohtatasoja kanimallien tapauksessa. Vasemmalta oikealle mallit koostuvat 69451, 8680, 1085 ja 135 monikulmiosta. (Erikson, 2000) Etäisyys kohteen ja katsojan välillä määrää, mitä tarkkuustasoa kulloinkin käytetään (Kuva 55). Yksityiskohdat vähenevät, kun kohdemalli näkyy kauempana katsojasta. Tällöin kohteen kuvaaminen vaatii vähemmän resursseja, ja valittu tarkkuustaso on kuitenkin riittävä kohteen kuvaamiseksi. Tarkka yksityiskohtainen malli kaukana olevasta kohteesta voi näyttää hyvin sekavalta, mutta kun ulkoasua pelkistetään, on kohde helpompi hahmottaa. (Erikson, 2000) 61 Kuva 55: Tarkinta mallia käytetään lähitarkastelussa, karkeinta mallia kaukaa katsottuna. Vasemmalta oikealle mallit sisältävät 17361, 8680, 4340, 2169 ja 1085 pintaa. (Erikson, 2000) 4.2.4 CityGML CityGML on avoin tietomalli ja XML-pohjainen formaatti kolmiulotteisten kaupunkimallien taltiointiin ja käsittelyyn. Se määrittelee luokat ja suhteet tärkeimmille topografisille kohteille 3D-kaupunkimalleissa. Sillä voidaan kuvata muun muassa mallin sisältämien kohteiden geometriaa, niiden välisiä suhteita ja ulkoasua. CityGML erittelee viisi eri yksityiskohtatasoa (LOD). Kohteet muuttuvat sitä yksityiskohtaisemmiksi, mitä korkeammalle tasolle noustaan (Kuva 56). Malli voi sisältää yhtäaikaisesti useita kuvauksia samasta kohteesta eri tasoilta. (Gröger et al., 2006) LOD0 on karkein hierarkiataso. Sitä käytetään kaksi- ja puoliulotteisen (2,5D) digitaalisen maastomallin kuvaamiseen. Tekstuurina voi olla esimerkiksi ilmakuva tai kartta. LOD1 käsittää laatikkomallin kohteesta. Rakennukset ovat suorakulmaisia ja katot ovat tasoja. Malli voidaan johtaa esimerkiksi pohjapiirroksesta, johon lisätään karkeasti rakennusten korkeudet. LOD2 on edelleen laatikkomalli, mutta siinä kattogeometria voi olla tasoa monimutkaisempi ja rakennus voi sisältää muissakin paikoissa erimuotoisia pintoja. Myös likimääräinen pintatekstuuri ja kasvillisuuden kuvaus saattavat sisältyä malliin. LOD3 on jo erittäin yksityiskohtainen rakennusmalli, jossa arkkitehtuuriset piirteet, kuten seinien ja kattojen yksityiskohdat, parvekkeet, syvennykset ja ulokkeet, ovat näkyvissä. Lisäksi pinnoille voidaan liittää tarkka tekstuuri. Osana tätä tasoa ovat myös yksityiskohtaiset kuvaukset kasvillisuudesta ja liikenteestä. LOD4 on tarkin yksityiskohtataso. Siinä LOD3-tasoa täydennetään rakennusten sisärakenteilla. Näitä ovat muun muassa huoneet, sisäovet, huonekalut ja rappuset. (Gröger et al., 2006) 62 Kuva 56: CityGML:n määrittelemät viisi yksityiskohtatasoa (Gröger et al., 2006). 4.3 Kuvattavan alueen määritys Level of detail on hyvä menetelmä liian raskaiden prosessien välttämiseksi. Toinen mahdollisuus on määrittää vain se alue 3D-mallissa, joka kulloinkin esitetään näytöllä. Näkymän ulkopuolelle jääviä osia on turha ladata näytölle. Renderöitävä alue voidaan määrittää esimerkiksi ympyrän muotoiseksi. Käyttäjä määrittää alueen keskipisteen ja ympyrän säteen pituuden, ja vain tämä alue ladataan tekstuureineen näyttökuvalle. Prosessoitava tietomäärä riippuu kohteen tarkastelumittakaavasta, määritetystä alueen koosta sekä kohteen sisältävien yksityiskohtien määrästä. (Lefebvre et al., 2004) Level of detail ja piste-säde -tekniikka voidaan yhdistää siten, että ladattavien yksityiskohtien määrä vähenee keskipisteestä ympyrän reunalle kuljettaessa. Näin voidaan edelleen keventää näkymän muodostamista. (Lefebvre et al., 2004) Niinimäki (2006) esittelee diplomityössään erilaisia menetelmiä kuvanmuodostusprosessin keventämiseksi. Vain osa aineistosta prosessoidaan kerralla visuaaliseen muotoon, kuten jo edellä kerrottiin. Tässä tapauksessa renderöinti tapahtuu ainoastaan näkökentässä oleville kohteille (frustum culling). Näkymäalue (frustum) koostuu näkymän molemmilla sivuilla sekä ylä- ja alapuolella olevien tasojen sisäpuolelle jäävästä tilasta, kun tasot risteävät katselukohdan projektiokeskuksessa. Lisäksi voidaan määrittää, että vain tarkastelukohdasta näkyvissä olevat tasot renderöidään 63 (backface culling). Siinä puolet aineistosta jää käsittelystä pois, kun kohteiden takapinnat voidaan jättää prosessoimatta. Myös muissa tapauksissa näkymättömiin jäävät kohteet on poistettavissa (occlusion culling). Näkymästä voidaan poistaa ne kohteet, jotka jäävät jo renderöityjen kohteiden taakse. Vastaavasti voidaan määrittää, onko jo kuvatun kohteen edessä jotain sen näkyvyyttä haittaavaa. (Niinimäki, 2006) 4.4 Kuvien tallennus ja pakkaus Tekstuurien tallennusmenetelmä vaikuttaa teksturoinnin sujuvuuteen ja tehokkuuteen. Aineistot tulisi tallentaa siten, että tarvittavien kohteiden lataus olisi helppoa. Voidaan myös kehittää erilaisia ennustusmenetelmiä, joiden avulla pystytään päättelemään tietokannasta seuraavaksi mahdollisesti haettavia tekstuuriaineistoja. Tietokoneissa varsinaisen muistin lisäksi näytönohjaimen muisti vaikuttaa prosessoinnin tehokkuuteen. Välimuistin käyttö koneen varsinaisen muistin ja näytönohjaimen muistin välillä on eduksi aineiston renderöintivaiheessa. Lähiaikoina tarvittavat tekstuurit löytyvät välimuistista, josta ne saadaan nopeasti käyttöön. (Lefebvre et al., 2004) Tekstuurikuvia voidaan pakata, jolloin ne vievät vähemmät tilaa tietokannassa. Pakattuja aineistoja on lisäksi kevyempi siirtää paikasta toiseen. Näytönohjaimen muisti sisältää yleensä pakkausalgoritmin. Menetelmä on kuitenkin usein häviöllinen, joten aineiston yksityiskohtaisuutta katoaa pakkauksen yhteydessä. Aineiston purku tapahtuu lennossa rasteroinnin yhteydessä. Häviöllisessä pakkauksessa kadonnut tieto voi näkyä visuaalisina epäkohtina näytöllä. (Lefebvre et al., 2004) 64 Luku 5 Koetyöt Tässä luvussa on selostettu kaksi koetyötä, jotka tehtiin teksturointiin liittyvien asioiden havainnollistamiseksi. Kohteena on TKK:n Maanmittausosaston julkisivu sekä yksi viereisistä seinistä. Tarkoituksena on tutkia erityisesti näkymäesteiden esiintymistä teksturoidulla mallilla ja niiden poistomahdollisuuksia. Lisäksi vertailussa ovat kahdella eri tekniikalla tuotettujen mallien tekstuurit, niiden visuaalinen ulkonäkö sekä tuotantoprosessin ja valmiin mallin edut ja haitat. Toisessa 3D-malli ja teksturointi on tehty valokuvilta PhotoModeler Pro -ohjelman avulla. Toisessa vastaava 3D-malli ja teksturointi tehtiin maalaserkeilaimella ja FARO Scene ohjelmalla. 5.1 Teksturointi laatikkomallin pinnalle 5.1.1 Lähtötiedot ja työn vaiheet 3D-malli muodostettiin eri suunnista otetuista kuvista PhotoModeler Pro 5.2.3:n avulla. Mallin sisältämät koordinaatit eivät ole ulkoisessa koordinaatistossa, vaan ainoastaan kuvien sisäinen ja keskinäinen orientointi on ratkaistu. Mallin ulkoinen orientointi haluttuun koordinaatistoon on mahdollista tehdä käytetyllä ohjelmalla. Tässä koetyössä sitä ei kuitenkaan koettu tarpeelliseksi. Käytetty kamera on Olympus Camedia C-4000. Kamera on kalibroitu, joten sen sisäinen orientointi on tiedossa. Sisäisen orientoinnin parametreja ovat kameravakio c , kuvan pääpisteen paikka ( x p , y p ) sekä linssin piirtovirheitä kuvaavat parametrit. Ennen mallintamista kuvilta oletetaan tunnetuksi vain niiden sisäinen orientointi, eli kameran kalibroinnissa saadut tiedot. Kuvat on otettu eri kulmista suhteessa kohde65 seinään, osa hyvin vinosta ja osa taas melkein kohtisuoraan (Kuva 57). Myös kuvausetäisyydet vaihtelevat. Samantyylinen kuvaus on tehty molemmille mallinnettaville seinille. Kuvilla on näkyvissä sekä liikkuvia että liikkumattomia näkymäesteitä. Myös mallinnettu näkymäeste löytyy muutamalta kuvalta. Eri kuvilla näkymäesteet tulevat näkyviin eri paikoissa (vrt. Kuva 45). Kun kuvia otetaan eri suunnista kohdetta eli konvergentisti, voidaan kohdemallin pisteille määrittää kolmiulotteiset koordinaatit. Koordinaattiarvot määräytyvät kuvien vastinpisteistä lähtevien kuvasäteiden leikkauskohdista. Tuloksena syntyy rautalankamalli. Tarvittavat viivat on vedetty pisteiden välille siten, että ne kuvaavat julkisivujen reunoja. Tekstuurikuva liitetään halutulle monikulmioalueelle, tässä tapauksessa julkisivutasoihin. PhotoModeler käyttää teksturoinnissa perspektiivikorjausta, joka ottaa huomioon kuvien perspektiivin suhteessa kohdepintaan. Lisäksi teksturoinnissa käytetään prosessia nimeltä ”feathering”. Se yhdenmukaistaa saumakohtaa kahden eri kuvalta otetun tekstuurin välillä. Tällöin kuvien erilaiset väri- ja intensiteettierot eivät tule niin selkeästi näkyviin. Kuva 57: Kuvauspaikat ja niistä otetut tekstuurikuvat. 66 5.1.2 Mallinnuksen tulokset PhotoModeler-ohjelmalla mallinnettaessa tulokseksi saatiin 3D-malli, jossa kaksi julkisivua koostuu kukin yhdestä monikulmiosta. Kummallekin julkisivulle liitettiin tekstuuri jokaiselta kohdetta esittävältä kuvalta. Seuraava kuvasarja (Kuva 58(a)-(h)) esittää Maanmittausosaston julkisivumalliin liitettyjä tekstuureja. Eri tekstuurikuvia kyseisestä seinästä on yhteensä kahdeksan. Kuvan 58 (a) tekstuuri on otettu vasemmanpuoleisimmalta kuvalta, kun tarkastelusuunta on kohti julkisivua. Seuraava tekstuuri on liitetty järjestyksessä aina seuraavasta kuvausasemasta (edellisestä oikealle) saadulta kuvalta. (a) (b) (c) 67 (d) (e) (f) (g) 68 (h) Kuva 58: M-osaston julkisivun teksturointi eri suunnista otetuilta kuvilta. Kuva (a) on vasemmanpuoleisimmasta kuvauspaikasta, (h) oikeanpuoleisimmasta asemasta. Kuten kuvista näkyy, paikallaan olevat ruukut näyttävät liikkuvan kuvan oikeasta reunasta vasemmalle. Kuvissa 58 (g) ja (h) ruukkuja ei enää näy ollenkaan. Nämä kuvat on otettu sellaisista suunnista, joissa ruukut eivät tule lainkaan näkyviin kuvilla. Kuvan 58 (h) tekstuuri on hyvin venynyt, sillä kuvaussuunta oli jo lähes yhdensuuntainen julkisivun kanssa. Paras tekstuuri on kuvissa 58 (d) ja (e), joissa kuvaussuunta on ollut lähes kohtisuorassa seinään nähden eikä viereinen nurkka estä julkisivutason näkymistä. Kuvat on otettu vasemmalta oikealle. Julkisivun vasemman reunan peittää alkukuvissa toisen julkisivun nurkka, joka häviää tekstuurista, kun kuvanottopaikkaa siirretään oikealle. Tämä nurkka on esimerkki mallinnetusta näkymäesteestä. Oven syvennys ja aita oven oikealla puolella näkyvät eri suunnista otetuissa kuvissa eri lailla. Jos halutaan näkymäesteetön tekstuuri, on käytettävä kuvaa 58 (g), jossa taas oven syvennyksen toinen pystyreuna näkyy eri lailla kuin toinen. Viimeinen tekstuuri ei myöskään sisällä esteitä, mutta tekstuuri on huonon kuvauskulman takia hyvin venynyt eikä sitä siksi kannata käyttää. Pyörät ovat lähes samassa paikassa kaikilla kuvilla, sillä ne sijaitsevat erittäin lähellä julkisivua. Niiden poistamiseen ei toimi kaukana seinätasosta tehtävä kuvauskulman muuttaminen. Oikean seinätekstuurin valokuvalta saattaa saada vain silloin, kun kuva otetaan hyvin läheltä julkisivua. Varteenotettava tekniikka voisi olla tekstuurin kopioiminen. Siinä tekstuuria kopioidaan sellaiselta alueelta, jossa se näyttää likimain samanlaiselta kuin mitä se on pyörien takana. Tämän julkisivun tapauksessa hyvä paikka voisi olla lähellä kuvan vasenta reunaa pyörävapaalla alueella samalla korkeudella seinää. Tekstuurin kokoaminen pienemmistä osista eri kuvilta on ongelmallista, jos tunnettuna ovat vain julkisivujen nurkkapisteet. Tehtävä helpottuu, jos välille mitataan joi- 69 tain muitakin pisteitä. Se kuitenkin hidastaa työtahtia ja seinä koostuu yhden tason sijaan useasta tasosta. Kaikki tekstuurikuvat on otettu samana päivänä puolen tunnin sisällä puolen päivän jälkeen. Päivä oli aurinkoinen. Valoisuusvaihteluita esiintyi, sillä eri tekstuurit ovat eri sävyisiä, osa kirkkaampia ja osa tummempia. Seuraavana on edellistä vastaava kuvasarja (Kuva 59 (a)-(e)) Maanmittausosaston julkisivun viereisestä seinästä, joka niin ikään mallinnettiin ja teksturoitiin. Tekstuurikuvia on tässä tapauksessa viisi kappaletta. Kuvan 59 (a) tekstuuri on otettu kuvan 58 (a) tapaan vasemmanpuoleisimmalta kuvalta ja seuraavan tekstuurikuvan sijainti on edellisen oikealla puolella. Kuvista 59 (a)-(e) tulee erityisen hyvin näkyviin perspektiivin vaikutus. Kun kuva on otettu viistosti julkisivuun nähden, kuten kuvassa 58 (a), on tiiliseinä epätarkka toisesta päästä ja tarkka toisesta päästä. Lisäksi näissä malleissa haasteena on julkisivussa oleva syvennys, joka muuttuu sisällöltään huomattavasti eri suunnista otetuilla tekstuureilla. (a) 70 (b) (c) 71 (d) (e) Kuva 59: Pää-aulan julkisivun teksturointi eri kuvilta. Kuva (a) on vasemmanpuoleisimmasta kuvauspaikasta, (e) oikeanpuoleisimmasta asemasta. Joissain kuvissa näkyy yksittäisiä ihmisiä. Näihin voisi soveltaa samaa kopioi-liitä tekniikkaa kuin pyörienkin suhteen. Tässä tosin tekstuuri voidaan kopioida oikeasta kohdasta, mutta vain eri kuvalta, sillä ihmiset liikkuvat ja eri ihmisiä näkyy eri ku- 72 vissa. Menetelmä vaatisi kaikkien kuvien tarkkaa orientointia ortokuviksi, jolloin vastinpisteet sijaitsisivat kaikilla kuvilla samoissa kohdissa. Kuvassa 60 näkyy koko malli parhailla tekstuureilla. Maanmittausosaston julkisivun tekstuuri on mallissa sama kuin kuva 58 (g). Toisessa seinässä käytetty tekstuuri on sama kuin kuva 59 (a). Kuva 60: Koko malli parhailla tekstuureilla. Kuvassa 61 malliin on visualisoitu kuvilla näkyneet ruukut ja niiden sijainnit. Ruukut on mallinnettu julkisivujen tapaan valokuvilta PhotoModelerilla. Kuva 61: Ruukkujen sijainnit julkisivujen suhteen. Mallin tarkkuus on yleisesti ottaen hyvä. Myös tekstuurin tarkkuus voidaan rinnastaa samoihin suuruusluokkiin, sillä malli on muodostettu tekstuurikuvista. Mallin neliöllinen keskiarvo (RMS) oli 3,857 pikseliä. Se koostuu satunnaisista ja systemaattisista virheistä. 73 Mallin sisäinen tarkkuus (precision) kuvaa sitä, miten hyvin sama mittaus voidaan toistaa useaan kertaan ja saada aina tarkasti sama tulos. Suurimmillaan tässä mallinnuksessa mittaustulosten poikkeama oli 0,6 astetta ja 0,2 metriä. Suurin osa arvoista oli pienempiä kuin 0,1 astetta ja 0,1 metriä. 5.2 Teksturointi pistepilvistä muodostetun mallin pinnalle Kohteena on edellisen koetyön tavoin Maanmittausosaston julkisivu. Osaston ulkoovi suljettiin keilausprosessin ajaksi. Keilauksia tehtiin yhteensä kolmesta eri asemasta. Yhdessä asemassa keilaukseen sisällytettiin myös TKK:n pääaulaan johtava julkisivu. Muihin keilauksiin tätä kohdetta ei otettu mukaan, sillä aulaan johtava ovi olisi tällöin jouduttu poistamaan käytöstä koko tapahtuman ajaksi. 5.2.1 Lähtötiedot ja työn vaiheet Pistepilvet tuotettiin maalaserkeilaimella (FARO Laser Scanner LS 880). Vaiheeromittaukseen perustuva keilain skannaa ympärillä olevan alueen lähes täysin, vain pieni osa kojeen alapuolelta jää katveeseen. Vaakasuuntainen näkymä on täydet 360 astetta ja pystysuuntainen näkymä 320 astetta. Täydellä resoluutiolla keilain tuottaa koko kierrokselle (360°) 40000 3D-pikseliä pystysuunnassa ja 470000 3D-pikseliä vaakasuunnassa. Näin ollen laserpulssien välinen kulma on pystysuunnassa 0,009° ja vaakasuunnassa 0,00076°. (Anon 6) Kuva 62: FARO-laserkeilain sekä muuta mittauksessa tarvittavaa kalustoa (Kuva: Hyyppä, 2006) 74 Keilaus tehtiin kolmesta eri asemasta. Jokaisesta asemasta syntyi oma pistepilvi, ja nämä yhdistettiin jälkikäteen pallosignaalien avulla yhdeksi malliksi. Pistepilvissä pistetiheys tässä työssä on 1:4 täydestä resoluutiosta. Kuten edellisenkin koetyön tapauksessa, ei tätäkään mallia ole orientoitu ulkoiseen koordinaatistoon. Signaalipalloja on yhteensä kymmenen kappaletta ja niitä oli sijoitettu eri puolelle keilattavaa aluetta. Kuva 63 esittää keilattua aluetta sisältäen pallosignaaleja. Kuva 63: Maalaserkeilaimella skannattu alue. Laserkeilaimessa on mukana integroitava laajakulmainen kamerajärjestelmä Nikon D70s. Pistepilven muodostamisen jälkeen koje ottaa valokuvat samalta alueelta. Näin jokaiselle pistepilven pisteelle voidaan määrittää väriarvo ja mallin pintaan saadaan tekstuuri valokuvalta. Eri kuvilta tulevat tekstuurit eivät sovi täysin toisiinsa, eikä tekstuurin tarkkuudesta ja oikeasta sijainnista ole takeita. Kameraan on olemassa valmistajan antamat kalibrointitiedot, joilla virheitä voidaan vähentää. Tulosten perusteella nämä tiedot eivät kuitenkaan ole oikeita tai kovin tarkkoja, sillä työn tuloksissa esiintyy huomattavia epäkohtia tekstuurien yhteensovituksessa. Skannaus suoritettiin lokakuun puolivälissä klo 17:00 - 19:00 välisenä aikana. Sää oli pääosin pilvinen, tosin välillä aurinko paistoi pilven takaa ja aiheutti varjoja julkisivuun. Lisäksi loppuvaiheessa alkoi jo hämärtää, joten tekstuurisävyt vaihtelevat ajan suhteen. Keilaustietojen käsittely tehtiin Faro Scene –ohjelmalla. Kolme pistepilveä käsiteltiin ensin niin, että niistä poistettiin kohina ja muut turhat pisteet. Tämän jälkeen mitattiin aineistoissa näkyvät signaalipallot. Eri pistepilvet yhdistettiin mitattujen sig- 75 naalipallojen avulla. Lopulliseen malliin lisättiin vielä kaikille pikseleille väriarvot kameran ottamista kuvista. 5.2.2 Mallinnuksen tulokset Lopputuloksena saatiin 3D-malli, joka koostuu noin 21 miljoonasta pisteestä (Kuva 64). Kolmiulotteisten koordinaattien lisäksi jokaisella pisteellä on väriarvo valokuvalta. Kuvilta mallintamiseen verrattuna tuloksena saadaan helpommin ja nopeammin erittäin tarkka pintamalli kohteesta. Mallin yksityiskohtaisuus ja visuaalisuus riippuvat pistetiheydestä. Kuva 64: Teksturoitu 3D-malli laserkeilausaineistosta. Tässä mallissa lähelle zoomattaessa pisteiden väleissä näkyy aukkoja (Kuva 65). Lisäksi maassa näkyy alueita, jotka eivät sisällä lainkaan pisteitä. Tämä johtuu siitä, että lasersäteen osumiskulma on lähes yhdensuuntainen kohdetason kanssa ja käytetyllä pistetiheydellä pisteitä ei voi osua kohteeseen tiheämmin. Pisteiden kokoa voi halutessa kasvattaa tai pienentää. Kasvattamalla reikiä häviää, mutta samalla malli muuttuu karkeamman näköiseksi. Pistepilvestä on toki mahdollista luoda pintamalli, jolloin siihen liitetty tekstuuri ei sisällä aukkokohtia. 76 Kuva 65: Pikselit eivät ole kiinni toisissaan. Kuvassa 66 näkyy useita mallin visuaalisuuteen ja tekstuuriin liittyviä asioita, joita saattaa esiintyä laserkeilaamalla tuotetussa mallissa. Joissain kohdissa tekstuuri on kuvautunut väärään paikkaan mallilla. Esimerkiksi keltaiset kolmijalat lähellä seinää näkyvät myös seinätekstuurissa. Samoin kahdesta ruukusta on siirtynyt ruskeaa väriä siivuina maahan. Nämä epäkohdat johtuvat kalibroimattomasta kamerasta ja laserpulssien heijastumisesta ympäristössä useamman paikan kautta takaisin kojeeseen. Maassa näkyy epäjatkuvuuskohtia sellaisissa paikoissa, missä tekstuuriarvo on tullut eri kuvilta. Myös tämä johtuu siitä, että kameraa ei ole kalibroitu. Lisäksi eri kuvilta tulleet väriarvot ovat kirkkaudeltaan erilaisia, joten senkin vuoksi tekstuuriin syntyy näkyviä rajakohtia. Sama ilmiö syntyy valokuvilta mallinnettaessa. Seinän lähellä olevien pyörien takaa on saatu jonkin verran tekstuuria mukaan. Väriarvo on lisätty kaikkiin mallin sisältämiin pisteisiin, joten samalla alueella saattaa olla eri sävyisiä pikseleitä limittäin. Sävyarvot tulevat kuvilta, joita on otettu kolmesta eri paikasta eri ajanhetkillä. 77 Kuva 66: Mallin visuaalisia puutteita. Pistepilvien yhdistämisessä yhtä skannaustiedostoa pidettiin referenssiaineistona, johon kaksi muuta keilausta sitten liitettiin. Tällöin näiden koordinaateille tehtiin muunnos referenssiaineiston koordinaatistoon. Ohjelma antaa joukon vertailuarvoja koordinaatistojen välisistä muunnoksista. Keskihajonnat vastinpisteille olivat suurimmillaan 5 mm. Suurin osa arvoista oli kuitenkin 1 mm:n luokkaa. Suurin etäisyysero eri skannausten vastinsignaalien koordinaattipisteillä on 6,8 mm ja pienin 0,6 mm. Kulmaero vastaavasti oli suurimmillaan 0,03 astetta ja pienimmillään 0,005 astetta. Kokonaisuudessa on kuitenkin vaikeaa määrittää mallin ja tekstuurin tarkkuutta, sillä keilaimesta ja kamerasta ei ole olemassa tarkkoja kalibrointitietoja. Laserkeilaus on menetelmänä vaikeampi. Mittaaminen vaatii osan alueen eristämistä, sillä liian lähellä keilainta ei lasersäteen vuoksi saa olla. Lisäksi laite on suurikokoinen ja tarvitsee toimiakseen muita lisävarusteita, kuten kannettavan tietokoneen ja akun. Jos samasta kohteesta tarvitaan useampi keilaus, on ympäristöön sijoitettava pallosignaaleja mallien yhteensovitusta varten. 78 Valokuvaamiseen tarvitaan vain kamera, joka kulkee kätevästi mukana paikasta toiseen. Kuvaus on lisäksi nopeampaa. Toisaalta taas kuvaamalla ei päästä yhtä tarkkaan pintamalliin etenkään samassa ajassa. Tallennettavan ja käsiteltävän tiedon määrä verrattuna valokuvaukseen on moninkertainen laserkeilauksen tapauksessa. Etenkin jo keilausaineistoa ei muuteta pistepilvestä tasopinnoiksi, on tietomäärää vaikea hallita etenkin laajojen aineistojen kohdalla. Kuten jo edellä mainittiin, suositeltavaa onkin muuntaa pistepilvi tasopinnoiksi, jottei pikseleiden väleihin jäisi aukkoja. 79 Yhteenveto Olemassa olevia menetelmiä hyväksi käyttäen teksturointi on edelleen haastava tehtävä. Erityisesti näkymäesteiden huomioiminen ja automaattisuus tuovat ongelmia prosessin onnistumiseen. Fotogrammetrinen tapa vaatii tarkkoja mittauksia kohdemallissa ja kuvalla. Lisäksi tekstuurin siirto kohdepinnalle on tapahduttava geometrisesti oikein. Likimääräisemmät menetelmät tuottavat jollain tapaa todellisuudesta poikkeavia tekstuureja. Prosessi on yleensä nopeampi ja helpompi, kun kaikkia virhelähteitä ei tarvitse eliminoida. Automaattisuuden lisääminen löyhemmillä laatu- ja tarkkuuskriteereillä on myös helpompaa. Viime aikoina suuntauksena on ollut erityisesti laajojen kaupunkialueiden mallinnus ja teksturointi, jolloin lisähaasteita tuovat suuret ja keskenään toisistaan poikkeavat aineistot. Laajoissa aineistoissa erityisenä haasteena on tekstuurikuvien ja mallin hankinta. Laserkeilaamalla varsinkin ilmasta käsin saadaan helposti ja nopeasti muodostettua tarkka pintamalli laajastakin alueesta. Toisena vaihtoehtona on tekstuurikuvilta mallintaminen, joka vie enemmän aikaa ja sopiikin paremmin pienemmille kohteille. Tosin samalla saadaan selville kuvien ja mallin keskinäinen orientointi. Laajoille alueille sopiva menetelmä on 3D-mallin tuottaminen keilaamalla ja kuvien otto mahdollisimman suurta automaatiota käyttäen. Kuvanottopaikat ja –suunnat voidaan selvittää GPS:n sekä muiden välineiden avulla ja tallentaa tietokantaan, jolloin kuvien likimääräinen orientointi mallin suhteen on jo olemassa. Maanpäällinen kuvaus voi tapahtua esimerkiksi auton lavalta, jolloin paikasta toiseen liikkuminen kävisi nopeasti ja helposti. Julkisivutekstuurit kannattaa ottaa maakuvilta ja kattotekstuurit ilmakuvilta. Kun kyse on laajoista alueista, ei jokaista julkisivua voida kuvata useasta paikasta ja mahdollisimman sopivasta suunnasta. Joitain myönnytyksiä siis on tehtävä, jotta prosessi ei kasvaisi liian raskaaksi. Yksi kuva voi kattaa useamman julkisivun, ja kovinkaan tarkkaa valintaa kuvanottopaikasta ei voida tehdä. Näkymäesteiden huomiointiin ja poistamiseen jää tällöin rajoitettu määrä menetelmiä. Julkisivujen teksturoinnissa tulisi löytää se ”kultainen keskitie”. Samaan aikaan ei voida saavuttaa laajojen aineistojen prosessointia siten, että geometrinen tarkkuus ja visuaalinen ulkonäkö olisivat huippuluokkaa rajoitetulla määrällä resursseja. Laajoja 80 alueita tarkastellaan usein kauempaa kuin yksittäisistä rakennuksista tehtyjä malleja, joten niiden laatu voikin jäädä hieman huonommaksi kokonaisuuden siitä kuitenkaan kärsimättä. Tietokoneiden kasvaneen laskentatehon ansiosta useita teksturointiprosessiin liittyviä ongelmia on jo saatu ratkaistua. Silti erityisesti näkymäesteiden automaattinen tunnistus ja poistaminen kaikissa mahdollisissa tilanteissa ei ole vielä mahdollista. Lisäksi automatisoidutkin menetelmät vaativat yleensä jonkinlaista seurantaa, sillä kone ei aina osaa suorittaa prosessia virheettömästi alusta loppuun. 81 LÄHDELUETTELO: Anon 1, SFB 627: Nexus, Umgebungsmodelle für Mobile Kontextbezogene Systeme, 21.11.2005-last update [Homepage of Universität Stuttgart], [Online]. Available: http://www.nexus.uni-stuttgart.de/ [2006, 11/27]. Anon 2, Liite 2, Kuvanmuodostusalgoritmit, 11.6.2002-last update [Homepage of Tieteen Tietotekniikan keskus CSC], [Online]. Available: http://www.csc.fi/gopas/Kuvanmuodostusalgoritmit.html [2006, 11/27]. Anon 3, RJJ Texture's User Manual Introduction. Available: http://www.shaders.org/rjj_textures/intro.htm [2006, 11/27]. Anon 4, Introduction to CAD: part I. Available: http://wwwieem.ust.hk/dfaculty/ajay/courses/ieem575/lecs/cad_1/lecCAD1.html [2006, 11/27]. Anon 5, TD1 : Changement de taille et Révision de Vecteurs. Available: http://www710.univ-lyon1.fr/~hbriceno/teaching/istg/si05/TD1.htm [2006, 11/27]. Anon 6, FARO Laser Scanner LS 840/LS 880, 10.12.2006-last update [Homepage of FARO Technologies Inc.], [Online]. Available: http://www.faro.com/FaroIP/Files/File/Techsheets%20Download/04REF201_0 41_Laser_Scanner_LS.pdf [2007, 01/15]. Allen, P.K., Stamos, I., Troccoli, A., Smith, B., Leordeanu, M. & Hsu, Y.C. 2003, "3D Modeling of Historic Sites Using Range and Image Data", International Conference of Robotics and Automation, Taipei, Taiwan, pp. 145-150. Blinn, J.F. & Newell, M.E. 1976, "Texture and Reflection in Computer Generated Images", Communications of the ACM, vol. 19, no. 10, pp. 542-547. Bockaert, V., Interpolation [Homepage of Digital Photography Review], [Online]. Available: http://www.dpreview.com/learn/?/key=interpolation [2006, 11/27]. Böhm, J. 2004, "Multi-image Fusion for Occlusion-free Facade Texturing", ISPRS Kongress 2004, Vol. 35, Part B, ed. O. Altan, Commission 5, Istanbul, Turkey, pp. 867. Böhm, J., Haala, N. & Kapusy, P. 2002, "Automated Appearance-based Building Detection in Terrestrial Images", ISPRS Commission V Symposium, Interna- 82 tional Archives on Photogrammetry and Remote Sensing, vol. 34, no. 5, pp. 491-495. Bornik, A., Karner, K., Bauer, J., Leberl, F. & Mayer, H. 2001, "High-quality texture reconstruction from multiple views", The Journal of Visualization and Computer Animation, vol. 12, pp. 263-276. Buchholz, H. & Döllner, J. 2005, "View-dependent Rendering of Multiresolution Texture-atlases", Proceedings of IEEE Visualization 2005, pp. 215-222. Chen, S.E. & Williams, L. 1993, "View Interpolation for Image Synthesis", SIGGRAPH conference proceedings, pp. 279-288. David, P., DeMenthon, D., Duraiswami, R. & Samet, H. 2003, "Simultaneous Pose and Correpondence Determination using Line Features", Proceedings of IEEE Conference on Computer Vision and Pattern Recognition, pp. 424-431. Davis, D., Ribarsky, W., Jiang, T.Y., Faust, N. & Ho, S. 1999, "Real-time Visualization of Scalably Large Collections of Heterogeneous Objects", Proceedings of the conference on Visualization '99, San Francisco, California, USA, pp. 437440. Debevec, P., Taylor, C. & malik, J. 1996, "Modeling and Rendering Architecture from Photographs: A hybrid geometry- and image-based approach", SIGGRAPH conference proceedings, pp. 11-20. Dick, A., Torr, P. & Roberto, C. 2000, "Automatic 3D Modelling of Architecture", BMVC00. Erikson, K.M. 2000, Hierarchical Levels of Detail to Accelerate the Rendering of Large Static and Dynamic Polygonal Environments, Department of Computer Science, University of North Carolina, Chapel Hill, USA. Farmer, T.A. 2002, Geometric Photo Manipulation [Homepage of The Mathematical Association of America], [Online]. Available: http://mathdl.maa.org/mathDL/4/?pa=content&sa=viewDocument&nodeId=465 &pf=1 [2006, 11/27]. Früh, C., Sammon, R. & Zakhor, A. 2004, "Automated Texture Mapping of 3D City Models With Oblique Aerial Imagery", Proceedings of the 2nd International Symposium on 3D Data Processing, Visualization, and Transmission. 83 Früh, C. & Zakhor, A. 2001, "Fast 3D Model Generation in Urban Environments", International Conference on Multisensor Fusion and Integration for Intelligent Systems, 2001, pp. 165-170. Georgiev, A. & Allen, P.K. 2005, 28.1.2005-last update, The Avenue Project. Available: http://www1.cs.columbia.edu/~atanas/research/avenue/ [2006, 11/27]. Gröger, G., Kolbe, T.H. & Czerwinski, A. 2006, CityGML (City Geography MArkup Language), Draft Specification, Version 1.0, Special Intrest Group 3D (SIG3D). Heckbert, P.S. 1989, Fundamentals of Texture Mapping and Image Warping, Dept. of Engineering and Computer Science, University of California, Berkley, USA. Heckbert, P.S. 1986, "Survey of Texture Mapping", IEEE Computer Graphics and Applications, vol. 6, no. 11, pp. 56-67. Hormann, C. 2006, 11.10.2006-last update, Raytracing and POV-Ray - the details. Available: http://www.imagico.de/pov/ray_advanced.html [2006, 11/30]. Inkilä, K. 2005, Analyyttinen fotogrammetria, Kurssimateriaali, Fotogrammetrian ja kaukokartoituksen laboratorio, Teknillinen korkeakoulu, Otaniemi. Kada, M. 2004, "Hardware-based Texture Extraction for Building Facades", XX ISPRS Congress, Commission IV, WG 6, Istanbul, Turkey. Kada, M., Klinec, D. & Haala, N. 2005, "Facade Texturing for Rendering 3D City Models", ASPRS 2005 Annual Conference, Baltimore, Maryland, USA. Klinec, D. 2004, "A Model Based Approach for Orientation in Urban Environments", Proceedings of the XXth Conference of ISPRS '04, Istanbul, Turkey, pp. 903-908. Laycock, R.G. & Day, A.M. 2006, "Image Registration in a Coarse ThreeDimentional Virtual Environment", Computer Graphics Forum, vol. 25, no. 1, pp. 69-82. Lee, S., Jung, S. & Nevatia, R. 2002a, "Automatic Integration of Facade Textures into 3D Building Models with a Projective Geometry Based Line Clustering", Computer Graphics Forum, vol. 21, no. 3, pp. 511-519. Lee, S., Jung, S. & Nevatia, R. 2002b, "Automatic Pose Estimation of Complex 3D Building Models", Proceedings of the Sixth IEEE Workshop on Applications of Computer Vision. 84 Lefebvre, S., Darbon, J. & Neyret, F. 2004, Unified Texture Management for Arbitrary Meshes, INRIA, Institut Mational de Recherche en Informatique et en Automatique. Liebowitz, D. & Zisserman, A. 1998, "Metric Rectification for Perspective Images of Planes", Proceedings of IEEE Conference on Computer Vision and Pattern Recognition, pp. 482-488. Liu, L., Stamos, I., Yu, G., Wolberg, G. & Zokai, S. 2006, "Multiview Geometry for Texture Mapping 2D Images Onto 3D Range Data", Computer Vision and Pattern Recognition. Metherall, G. 2000, 2.0 Spatial Filtering of Images [Homepage of BSc in Computer Science, Clayton Campus], [Online]. Available: http://www.csse.monash.edu.au/hons/projects/2000/Glenn.Metherall/chapter2.h tml [2006, 11/27]. Neider, J., Davis, T. & Woo, M., Chapter 9, Texture Mapping [Homepage of Silicon Graphics], [Online]. Available: http://www.rush3d.com/reference/openglredbook-1.1/chapter09.html [2006, 11/27]. Niinimäki, T. 2006, Interactive multi-scale visualization of built areas, Telecommunications Software and Multimedia Laboratory, Department of Computer Science and Engineering, Helsinki University of Technology. Ofek, E., Shilat, E., Rappoport, A. & Werman, M. 1997, "Multiresolution Textures from Image Sequences", IEEE Computer Graphics and Applications, vol. 17, pp. 18-29. Ortin, D. & Remondino, F. 2005, "Occlusion-free Image Generation for Realistic Texture Mapping", International Archives of Photogrammetry, Remote Sensing and Spatial Information Sciences, vol. 36. Peltonen, S. 2006, SGN-3010: Digitaalinen kuvankäsittely 1, Kurssimateriaali, Signaalinkäsittelyn laitos, Tampereen teknillinen yliopisto. Pöntinen, P. 2006, Fotogrammetrian erikoissovellukset, Luento 4, Kameran kalibrointi, Kurssimateriaali, Fotogrammetrian ja kaukokartoituksen laboratorio, Teknillinen korkeakoulu, Otaniemi. Remondino, F. & El-Hakim, S.F. 2006, "Image-based 3D Modeling: A Review", The Photogrammetric Record Journal, vol. 21, no. 115, pp. 269-291. 85 Rocchini, C., Cignoni, P. & Montani, C. 1999, "Multiple Textures Stitching and Blending on 3D Objects", Eurographics Rendering Workshop 1999. Rönnholm, P. 2001, Kuvien interpolaatiomenetelmien laadun vertailu, Fotogrammetrian, kuvatulkinnan ja kaukokartoituksen erikoistyö, Teknillinen korkeakoulu, Otaniemi. Schwidefsky K. & Ackermann F. 1978, Fotogrammetria, 1st edn, Otapaino, Espoo. Ulm, K. 2005, "3D City Models from Aerial Imagery - Integrating Images and the Landscape", GEOInformatics, vol. 8, pp. 18-21. Varshosaz, M. 2004, "Occlusion-free 3D Realistic Modelling of Buildings in Urban Areas", XX ISPRS Congress, Commission IV, Istanbul, Turkey, pp. 437-442. Weinhaus, F.M. & Devarajan, V. 1997, "Texture Mapping 3D Models of RealWorld Scenes", ACM Computing Surveys, vol. 29, no. 4, pp. 325-365. Weinhaus, F.M. & Devich, R.N. 1999, "Photogrammetric Texture Mapping onto Planar Polygons", Graphical Models and Image Processing, vol. 61, no. 2, pp. 63-83. Zebedin, L., Klaus, A., Gruber, B. & Karner, K. 2006, "Facade Reconstruction from Aerial Images by Multi-view Plane Sweeping", ISPRS Commission III Symposium, Bonn, Germany, pp. 31-36. Zlatanova, S. & van den Heuvel, F. A. 2002, "Knowledge-based Automatic 3D Line Extraction from Close Range Images", International Archives of Photogrammetry and Remote Sensing (ISPRS), vol. 34, no. 5, pp. 233-238. 86