vaatimuksista 3-D digitoinnin suorittamiseen
Jos aluksi oletetaan
pisteaineisto järjestämättömäksi eli ei voida sanoa varmuudella mikä piste on
minkin pisteen naapuri tai pinnan piste. Yleensä näin jos mittaukset on tehty
useasta suunnasta ja pisteaineistot on yhdistetty. Peräkkäisten ja
järjestettyjen pisteitten muuntaminen pinnaksi on yksinkertainen tehtävä, jota
tässä ei käsitellä.
Kunpiste aineisto on koottu
useasta eri suunnasta täytyy piste aineiso ensin koota yhdeksi ja järjestää 3D
avaruuteen. Samalla voidaan karsia myös häiriö pisteet mallilta.
Koska näytteenottotiheyden ja
pinnan mallin oletetaan olevan suhteessa toisiinsa, käytetään parametria r + d useaan eri tarkoitukseen pintamallia
muodostettaessa. Parametri määritää
pisteitten tiheyden ja tiheyden vaihtelun.
· Se
määrittelee pisteiden naapuruuden Nbhd(xi) estimoitaessa
tangenttitasoja pinnalle.
· Sitä
käytetään tangenttipintojen yhdistämiseen toisiinsa Riemanin graafissa.
· Se
määrittää onko, arvioitaessa määrättyä etäisyysfunktiota , p:n
projektio lähimmälle tangenttipinnalle rajan sisällä.
· Sitä
käytetään määrittämään pienimpiä kappaleessa esiintyviä muotoja.
Parametrin r + d vaikutus ensimmäisessä
vaiheessa muodostettuun verkkoon
Ensimmäiseksi lasketaan
orientoitu tangenttipinta jokaiselle pisteelle. Valitaan pisteen läheisyydestä
k pistettä joukosta X ja pienimmän neliösumman menetelmällä etsitään parhaiten
sopiva tangenttipinta pisteelle. Samalla tehdään myös läheisten pintojen
keskinäinen orientointi.
Orientointia varten jokaiselle
pinnalle määrätään painoarvo,
jossa n on pinnan tangenttivektori. Jos
,ovat
tangenttipinnat lähes toistensa suuntaisia. Pintojen keskinäiseen orientointiin
muodostetaan graafin optimointitehtävä, joka ratkaistaan käyttämällä
"ahne"(greedy) -algoritmiä. Algoritmi pyrkii levittämään orientoinnin
aina siihen suuntaan, jossa pinnat ovat lähes toistensa suuntaisia ja
välttämään alueita, joilla orientointi on vaikeampaa.
Määrätty etäisyysfunktio
Määrätty etäisyysfunktio on
mielivaltaisen pisteen ja pinnan välinen lyhin etäisyys kerrottuna ±
1:llä. Jos piste on kauempana pinnasta kuin r + d
, se ei voi olla pinnan piste, koska pinnalla pisteiden etäisyys toisistaan on r
ja virhemittauksessa d .
Marching
cubes on William E. Lorensen ja Harvey E. Clinen kehittämä
pinnansovitusalgoritmi 3D mallien muodostukseen Edellisessä vaiheessa
muodostettua tangentti pintaa voidaan käytää kappaleen pinnan rajaukseen.
Toteutus
on kuvattu 2D ja 3D muodossa koska asian hahmottaminen on paljon helpompaa, jos
se esitetään ensin 2D tilassa.
Jos
pisteellä, joka on pienempi kuin raja-arvo on naapuripiste, joka on suurempi
kuin raja arvo on pinnan on oltava pisteitten välissä. Kun käytetään
ensimmäisen kuvan data, niin algoritmi
määrittää ensin mitkä pisteet ovat sisäpuolella. Seuraavaksi määritetään
mitkä neliön sivut ovat sisällä osittain tai kokonaan. Nyt voidaan valita sivut, jotka leikkaavat
reunaviivaa. Yksinkertaistuksena oletetaan, että sivu leikkaa reunaviivaa aina
sivun keskikohdasta. Tarkempia ja parempia määritysmenetelmiä on olemassa mutta
ei vielä käsitellä. Menetelmällä saadaan pisteet, joitten kautta voidaan
piirtää reunaviivan aproksimaatio.
Sama
algoritmi toimii myös 3D tilassa. Tekniikka on sama kuin 2D mallissa, mutta
-
neliöt
on muutettu kuutioiksi
-
tuloksena
ei saada viivoja vaan kolmiopintoja.
Kuutiossa
on 8 kulmaa, jokainen kulma voi olla joko sisä- tai ulkopuolella pinnasta, eli
saadaan 256 vaihtoehtoista tapausta pisteitten sijainnille pinnan suhteen.
Koska sivu voi kohdata pinnan vain kerran, saadaan 256 mahdollista pinnan
muodostus tapausta kuutiossa
Tapausten
määrä voidaan pelkistää 256 tapauksesta 15 tai14 tapaukseen jos jätetään pois
tapaukset, joissa yksikään piste ei ole pinnalla. Yksinkertaistus voidaan
suoritaa käsittelemällä samana tapauksena tilat joissa tapaus voidaan muodostaa
toisesta tapauksesta :
-
kiertämällä
minkä tahansa x,y,z akselin ympäri
-
peilaamalla
minkä minkä x,y,z akselin suhteen
-
kiertämällä
kaikkia pisteitä
Tapausten yhdistäminen vähentää merkittävästi
algoritmin monimutkaisuutta, koska kaikki tapaukset voidaan muodostaa 15
perustapauksesta yksinkertaisilla operaatioilla. Kuvassa sininen piste kuvaa
pistettä, joka on pinnan sisällä, ja vihreä nuoli pinnan normaalin suuntaa.
Kolmioitten
laskentaan voidaan yksinkertaisimmillaan olettaa sivujen leikkavan aina
keskikohdassa, mutta se antaa epätarkan tuloksen, koska kolmioitten asennoille
on vain rajallinen määrä vaihtoehtoja. Parempaan tulokseen päästään
pienentämällä kuutioita tai jakamalla kuution sivu useampaan osaan.
Huonon
aproksimaation vaikutukset voidaan korjata vain paremmalla algoritmilla
määrittä kolmo pinnat kuution sisällä. Yksi nopeimmista ja käytetyimmistä
menetelmistä on linear interpolation. Jokaiselle pinnalle annetaan
interpolaatioarvo, jonka jälkeen pinnan asento on helppo määritellä samaksi
kuin raja-arvopinnan.
Kolmion nurkka pisteitten
gradientit voidaan laskea interpoloimalla kuution nurkkapisteitten
gradienteista.
Tarkan aproksimaation
muodostamiseksi pinnasta ja sen muodosta määritellään pisteistölle kuutio hila,
jossa kuution sivun pituuden on oltava £ r + d . Jokaisen kuution sisällä on vähintään
yksi piste ja algoritmin nopeuttamiseksi pinnan etsinnässä tutkitaan vain
naapurikuutioiden pisteitä. Pinnan määrittämiseksi lasketaan määrätty etäisyys
lähimmästä hilapisteestä mitatun pisteen tangenttipinnalle. Jos etäisyys
hilapisteestä pinnalle on suurempi kuin r + d , niin piste ei voi olla pinnan piste.
Pisteitten etäisyyksistä aproksimoidaan pienimmän neliösumman menetelmällä
pinta, jonka muoto jäljittelee alkuperäistä kappaletta.
Ensimmäisen vaiheen tulos on
aproksimoitu verkko Z().
Verkko on tiheä ja sillä on sama topologia kuin pinnalla U, mutta se ei ole
tarkka malli alkuperäisestä kappaleesta.
Marchin cubes antaa pinnasta
hyvän ja tarkan pintamallin, mutta se ei ole optimoinut pintamallia ja verkon
optimointi joudutaan tekemään erikseen.
Verkon optimoinnin
ratkaisemiseksi minimoidaan energiafunktio (energy function), jossa on
vastakkain kompakti verkko ja tarkka malli pinnasta. Käyttämällä 1 vaiheessa
saatua verkkoa M0 lähtökohtana minimoidaan epälineaarinen energiafunktio
vaihtelemalla sivujen määrää, pisteiden sijainteja ja niiden välisiä
kytkentöjä (ehtona on että alkuperäinen topologia säilyy). Oletuksena on että
optimointi käy läpi kaikki verkot, joilla on sama topologia kuin verkolla M0.
Parhaan mahdollisen verkon löytymistä ei voida taata, mutta tulos on kuitenkin
riittävän hyvä.
Verkon optimoinnissa valinta
tarkkuuden ja kompaktin välillä on käyttäjän määrittelemällä parametrilla crep.
Suurella crep arvolla tulee verkosta karkea ja pienellä kompakti.
Verkon optimoinnin tarkoituksena
on tehdä verkko joka on hyvä sovitus mitatuille pisteille X ja jonka sivujen
määrä on mahdollisimman pieni. Etsitään ryhmä K ja joukko sivuja V määrittämään
verkko M=(K,V), joka minimoi energiafunktion niin että se vastaa
asetettuja vaatimuksia.
E(K,V) = Edist(K,V)+ Erep(K,V) + Espring(K,V).
Edist on pisteiden etäisyyksien neliösumma verkosta M0
joka rankaisee kun pisteiden topologia poikkeaa verkon topologiasta.
Erep rankaisee sivujen
määrästä ja mahdollistaa sivujen poistamisen.
Optimointi mahdollistaa sivujen
poiston ja lisäyksen verkkoon. Kun sivu lisätään, Edist pienenee.
Samalla Erep rankaisee operaatiosta niin, että sivuja ei lisätä
loputtomiin.
Vastaavasti, jos sivu poistetaan,
kasvaa Edist arvo ja Erep arvo pienenee. Käyttäjä
määrittelee arvon, jolla voidaan säädellä verkon tiheyttä ja mallin tarkkuutta.
Minimoimalla Edist + Erep
yksistään ei tuota haluttua tulosta. Kun minimoidaan vain Edist,
estimoidussa pinnassa on monia lisäyksiä, joita ei ole alkuperäisessä
kappaleessa, koska minimiä Edist + Erep ei välttämättä
ole olemassa.
Minimin olemassaolon takaamiseksi
lisätään kolmas termi Espring. Se asettaa jokaiselle sivulle
verkossa 0 pituisen jousen ja jousivakion k .
Minimoimalla E käyttäen lisänä Espring
saadaan paljon stabiilimpi lopputulos.
Jousivoima
ei ole tasainen voima. Sen tehtävänä ei ole poistaa teräviä reunoja joita voi
esiintyä kappaleessa. Jousivoiman tehtävänä on tasata verkkoa ja helpottaa
optimointia.
Jos
kolmiulotteisesta mallista halutaan muodostaa pinta malli joka on tarkka ja
kolmoi pinta malli on optimoitu niin on lähtö aineiston oltava mahdollisimman
tasa laatuinen. Peiniä puuteita mittauksissa voidaan paikata.
-
Aukot
voidaan peitää jos voidaan varmasti oletaa että aukon kohdalla pinnan normaali
on saman tai lähes saman suuntainen kuin ympäröivien pintojen normaalit.
-
Häiriö
pisteet jotka poikkeavat selvästi verkon muusta topologiasta on helppo suodataa
pois.
-
Pintojen
päälekkäiset pisteet eivät haitaa pinnan muodostusta kunhan piste aineisto on
riittävän tiheä
-
Jos
pisteistön tiheys vaihtelee suuresti on mallin muodostus jaettava osiin jossa
tarkemmat alueet mallinnetaan erikseen ja liitetään myöhemmin epätarkkoihin
alueisiin.
-
Verkon
optimoinnilla voidaan poistaa huomattava määrä tarpeetomia kolmio pintoja mutta
alkuperäisen pisteistön oltava tarkka.