ƒeské vysoké u ení technické v Praze Fakulta elektrotechnická Katedra po íta Bakalá ská práce 3D rekonstrukce neuronovými sít mi Daniel Fi²er Vedoucí práce: RNDr. Miroslav Kulich, Ph.D. Studijní program: Elektrotechnika a informatika, strukturovaný, Bakalá ský Obor: Výpo etní technika 20. dubna 2010
iv
v Pod kování D kuji RNDr. Miroslavu Kulichovi, Ph.D., za odborné vedení mé bakalá ské práce.
vi
vii Prohlá²ení Prohla²uji, ºe jsem práci vypracoval samostatn a pouºil jsem pouze podklady uvedené v p iloºeném seznamu. Nemám závaºný d vod proti uºití tohoto ²kolního díla ve smyslu Ÿ60 Zákona. 121/2000 Sb., o právu autorském, o právech souvisejících s právem autorským a o zm n n kterých zákon (autorský zákon). V Praze dne 15. 5. 2009.............................................................
viii
Abstract The goal of the bachelor thesis is to implement growing self organizing neural network called Growing Self-reconstruction Maps [19], which is useful for surface reconstruction of 3D objects. It is also shown that the algorithm can be used for reconstruction of data collected by a mobile robot. Input is an unstructured set of points in space dening a 3D object, while output should be a reconstructed surface of the object. The neural network is adopted to the input set to learn geometric arrangement and topology of points. Various models of 3D objects as well as data collected by a mobile robot can be reconstructed using this algorithm as will be shown in the bachelor thesis. Abstrakt Cílem bakalá ské práce je implementace rostoucí samoorganizující se neuronové sít Growing Self-recontruction Maps [19] slouºící k rekonstrukci povrchu 3D objektu a p edev²ím ukázat, ºe tento algoritmus lze s úsp chem pouºít i na rekonstrukci senzorických dat nam ených mobilním robotem. Vstupem je nestrukturovaná mnoºina bod v prostoru denující 3D objekt, výstupem by pak m l být zrekonstruovaný povrch objektu. Neuronová sí se tak musí adaptovat na vstupní mnoºinu bod a nau it se geometrické uspo ádání a topologii bod. Tímto algoritmem lze rekonstruovat nejr zn j²í modely 3D objekt nebo také, jak bude ukázáno v této bakalá ské práci, senzorická data nam ená mobilním robotem. ix
x
Obsah 1 Úvod 1 2 Samoorganizující se neuronové sít 3 2.1 Kohonenovy mapy................................ 3 2.2 Rostoucí neuronové sít.............................. 4 2.3 GSRM....................................... 6 3 Popis algoritmu GSRM 7 3.1 Struktura mapy.................................. 8 3.1.1 Uzel.................................... 8 3.1.2 Hrana................................... 8 3.1.3 Trojúhelníková plo²ka........................... 8 3.2 Stavba mapy................................... 9 3.3 Postprocesing................................... 12 3.3.1 Zkvalitn ní mapy............................. 12 3.3.1.1 Trojúhelníkové plo²ky..................... 13 3.3.1.2 Hrany.............................. 14 3.3.2 Dokon ení triangulace mapy....................... 15 3.3.2.1 Denice omezení........................ 15 3.3.2.2 Vytvá ení nových plo²ek.................... 16 3.3.3 Postprocesing jako celek......................... 17 3.4 Parametry algoritmu............................... 18 3.4.1 Parametry ε b a ε n............................. 18 3.4.2 Parametr λ................................ 18 3.4.3 Parametry β a α............................. 18 3.4.4 Parametr age max............................. 19 3.4.5 Parametry φ v, θ f a φ e.......................... 19 3.5 Historie revizí lánku............................... 19 3.5.1 První verze lánku............................ 20 3.5.2 Druhá verze lánku............................ 20 3.5.3 T etí a zatím poslední verze....................... 20 4 Optimalizace 23 4.1 Nalezení nejbliº²ího uzlu............................. 23 4.1.1 Struktura pro vyhledávání........................ 24 4.1.2 Vyhledávací algoritmus.......................... 25 xi
xii OBSAH 4.2 Kumulativní íta chyb.............................. 26 5 Implementace 29 5.1 Základní struktury knihovny........................... 29 5.1.1 Uzel, hrana, plo²ka............................ 29 5.1.2 Reprezentace mapy (sít )......................... 30 5.1.3 Struktura gsrm_t............................. 31 5.2 Implementace seznam.............................. 31 5.3 SVT - Nástroj pro zobrazování 3D objekt................... 32 6 Experimentální výsledky 35 6.1 Rekonstrukce 3D povrchu............................ 35 6.1.1 Kvalita vygenerovaných povrch..................... 36 6.1.2 Výstupní parametry rekonstrukcí.................... 36 6.2 R zná výstupní rozli²ení............................. 37 6.3 ƒas pot ebný pro rekonstrukci.......................... 38 6.4 Shrnutí....................................... 39 7 Záv r 41 A Obrázky výsledk rekonstrukcí objekt 43 B Obsah p iloºeného CD 53 Literatura 55
Seznam obrázk 2.1 Mapování kohonenovy mapy na bitmapové obrázky. Zdroj: [16]........ 4 2.2 Porovnání výsledk t í r zných rostoucích neuronových sítí. Zleva: Growing Grid, Growing Cell Structures, Growing Neural Gas. Zdroj: [13]....... 5 2.3 Výsledky porovnání z [10]. T i r zná rozloºení pravd podobnosti. Siln ohrani ené ásti jsou místa, kde je uniformní rozloºen pravd podobnosti, zbytek prostoru má nulovou hustotu pravd podobnosti. Horní ádek je adaptace KFM a spodní ádek GCS. Zdroj: [10]......................... 5 3.1 Propojení dvou uzl, které jsou nejblíºe vstupnímu signálu (n 1, n 2 ), pokud nejsou propojené a jejich spole ní sousedé (n a, n b ) propojení jsou....... 10 3.2 Na obrázku (a) stav p ed p idáním nového uzlu n r. Na obrázku (b) stav s uº p idaným novým uzlem.............................. 11 3.3 Ukázka rekonstrukce 3D objektu ze vstupních bod - (a). Na obrázcích (b) aº (f) lze vid t, jak neuronová sí roste a zp es uje se............... 12 3.4 P íklad odstran ní hran p ipojených do mapy jen jednou stranou....... 14 3.5 P íklad odstran ní p í ných hran, které nemohou tvo it trojúhelníkovou plo²ku, a následné vytvo ení hran v místech, kde je to díky tomuto kroku moºné.... 15 3.6 Na obrázcích (a) a (b) jsou vid t struktury, ve které lze vytvo it trojúhelníky jen jedním zp sobem. Na obrázcích (c) a (d) pak struktury, ve kterých není triangulace jednozna n dána........................... 16 3.7 Ukázka dokon ení triangulace ásti mapy..................... 17 3.8 Ukázka výstupu algoritmu podle první verze lánku. Vlevo je pohled na zrekonstruovaný objekt, vpravo pak v t²í detail. Z obrázku je vid t, ºe je tvo eno velké mnoºství hran a plo²ek, které se r zn k íºí a p ekrývají a netvo í tak souvislý povrch................................... 21 4.1 Ukázka, jak vypadá struktura pro vyhledávání ve 2D. Na obr. (a) je vyzna en tverec, ve kterém za íná vyhledávání (kam spadá vstupní signál), na obr. (b) okolní vrstva tverc, která je v prvním kroku také prohledávána. Na obr. (c) je znázorn no, ºe pokud je nejbliº²í uzel ve vzdálenosti do jedné délky hrany, musí to být nejbliº²í uzel. Na obr. (d) je znázorn na dal²í vrstva a na obr. (e) op t ukázka, ºe pokud je nejbliº²í uzel ve vzdálenosti do dvou délek hrany, musí to být nejbliº²í uzel v bec................... 25 5.1 Schéma propojení struktur gsrm_node_t, gsrm_edge_t a gsrm_face_t.... 30 5.2 Schéma struktury gsrm_mesh_t.......................... 30 xiii
xiv SEZNAM OBRÁZK 5.3 Ukázka programu - je zobrazen objekt denovaný ve výpise 5.2........ 33 6.1 Doba rekonstrukce objekt Místnost a Dragon p i r zných výstupních rozli- ²eních vynesená do grafu.............................. 40 A.1 Vstupní body jednotlivých objekt........................ 43 A.2 Zrekonstruovaný objekt Dragon 20 000 uzly................... 44 A.3 Zrekonstruovaný objekt Arm 20 000 uzly..................... 45 A.4 Zrekonstruovaný objekt Místnost 20 000 uzly.................. 46 A.5 Detail nekvalitn zrekonstruované ásti objektu Dragon, na kterém jsou jsou vid t nevytriangulované ásti povrchu...................... 46 A.6 Detaily zrekonstruovaného objektu Arm..................... 47 A.7 Detail zrekonstruovaného objektu Místnost - pohled od dve í dovnit místnosti. 47 A.8 Rekonstrukce objektu Dragon v r zných rozli²eních............... 48 A.9 Ukázka p eu ení sít p i rekonstrukci objektu Dragon. P i p eu ení vzniká více nevytriangulovaných d r v zrekonstruovaném povrchu............. 49 A.10 Detail hlavy zrekonstruovaného objektu Dragon v r zných rozli²eních..... 50 A.11 Rekonstrukce objektu Místnost v r zných rozli²eních.............. 51 A.12 Detail pohledu dovnit místnosti rekonstruovaného objektu Místnost v r zných rozli²eních................................... 52
Seznam tabulek 6.1 Tabulka hodnot parametr pouºitých b hem experiment........... 35 6.2 Tabulka výsledk rekonstrukce pro cílové rozli²ení 20 000 uzl......... 36 6.3 Tabulka po tu plo²ek v map p ed a po postprocesingu............. 36 6.4 Tabulka výsledk rekonstrukce objektu Dragon pro r zné výstupní rozli²ení. 37 6.5 Tabulka výsledk rekonstrukce objektu Místnost pro r zné výstupní rozli²ení. 38 xv
xvi SEZNAM TABULEK
Kapitola 1 Úvod Cílem bakalá ské práce je implementace rostoucí samoorganizující se neuronové sít Growing Self-recontruction Maps [19] slouºící k rekonstrukci povrchu 3D objektu a p edev²ím ukázat, ºe tento algoritmus lze s úsp chem pouºít i na rekonstrukci senzorických dat nam ených mobilním robotem. Vstupem je nestrukturovaná mnoºina bod v prostoru denující 3D objekt, výstupem by m l být zrekonstruovaný povrch objektu. Neuronová sí se tak musí adaptovat na vstupní mnoºinu bod a nau it se geometrické uspo ádání a topologii bod. Tímto algoritmem lze rekonstruovat nejr zn j²í modely 3D objekt nebo také, jak bude ukázáno v této bakalá ské práci, senzorická data nam ená mobilním robotem. Techniky pouºívané k rekonstrukci povrchu jsou vyuºívány v nejr zn j²ích aplikacích jako je vizualizace medicínských dat, která slouºí pro diagnostikování chorob (nap. úrazy hlavy) nebo plánování operací (nap. v plastické chirurgii) [20]. Tyto techniky lze také s úsp chem pouºít i pro p evod 3D objekt nebo rovnou celých prost edí do virtuální reality. Rekonstrukce povrchu má své místo i v robotických aplikacích. Ze senzoru robotu se obvykle získává velké mnoºství bod v prostoru. Cílem rekonstrukce je rapidní sníºení po tu bod tak, aby se ztratilo jen minimum informace v nich obsaºené. P i rekonstrukci povrchu se naopak ze senzorických dat vyt ºuje dal²í dodate ná informace. Tou informací je práv zrekonstruovaný povrch, který lze následn vyuºít pro mapování prost edí, vizualizaci prost edí nebo nap. k plánování pohybu robotu. Bakalá ská práce je rozd lena následujícím zp sobem. Druhá kapitola obsahuje stru ný úvod do rostoucích neuronových sítí. Ve t etí kapitole je kompletn popsán implementovaný algoritmus, ve tvrté kapitole jsou uvedeny optimalizace, které výrazn zrychlují provád ní p vodního algoritmu a v páté kapitole jsou popsány nejd leºit j²í ásti implementace. V následující, ²esté, kapitole jsou uvedeny výsledky experiment a v poslední, sedmé, kapitole je záv r, kde budou shrnuty výsledky celé bakalá ské práce. 1
2 KAPITOLA 1. ÚVOD
Kapitola 2 Samoorganizující se neuronové sít Samoorganizující se neuronové sít, n kdy také nazývané samoorganizující se mapy (Self Organizing Maps SOM) nebo Kohonenovy mapy, jsou neuronové sít schopné u ení se bez u itele. To znamená, ºe b hem u ení, na rozdíl od u ení se s u itelem, není pot eba znát trénovací mnoºinu dvojic vstup a o ekávaný výstup. Samoorganizující se mapy jsou schopny samy nalézt pot ebnou informaci p ímo v trénovacích datech (vstupech) bez jakýchkoli vn j²ích informací (bez p ítomnosti u itele), trénovací data jsou tedy p ímo vstupní data. Výstupem pak je p ímo sama neuronová sí (mapa), která se denovaným zp sobem adaptovala na vstupní data. 2.1 Kohonenovy mapy U vzniku samoorganizujících se neuronových sítí stál profesor Teuvo Kohonen, který navrhl první model SOM Kohonen Feature Map (KFM) [14]. T. Kohonen navrhl model, ve kterém je dop edu dána neuronová sí i se svojí topologií to znamená, ºe je dán po et neuron, kaºdý neuron (uzel) má svojí polohu a také má ur ené svoje sousedy. Kaºdý z t chto neuron je propojen se v²emi vstupními signály (mnoºinou vstupních dat vstupní vrstva). Kaºdý vstupní signál je denován n-dimenzionálním vektorem polohy (v 1, v 2,..., v n ) a kaºdý neuron pak svou polohou v síti (sousedností s okolními neurony) a svým váhovým vektorem také n-dimenzionálním (w 1, w 2,..., w n ). Algoritmus u ení probíhá tak, ºe se náhodn vybírají vstupní signály, které se aktivují a neuronová sí se na n postupn adaptuje. Ke kaºdému aktivovanému vstupnímu signálu se vybere nejbliº²í neuron ze sít neuron, u n hoº je rozdíl mezi jeho váhovým vektorem w a pozicí vstupního signálu v nejmen²í, tento vektor se nazývá vít zný. Následn se vyberou v²echny neurony z okolí vít zného neuronu, p i emº polom r okolí se s kaºdým cyklem (kaºdým dal²ím aktivovaným vstupním signálem) sniºuje. Nakonec se váhový vektor vít zného uzlu i váhové vektory uzl z okolí posunou sm rem k polohovému vektoru vstupního signálu. Intenzita s jakou jsou neurony posunuty (síla jakou neurony vstupní signál p itahuje) se sniºuje s jejich vzdáleností od vít zného uzlu. Váhový vektor vít zného neuronu se tedy sníºí nejvíce a váhové neurony na okraji jeho okolí nejmén. 3
4 KAPITOLA 2. SAMOORGANIZUJÍCÍ SE NEURONOVÉ SÍT P vodn byl tento algoritmus pouºit pro rozpoznávání e i, ale byl s úsp chem pouºit i pro dal²í aplikace, jako je bibliogracká klasikace [15], analýza velkých soubor dat [8], komprese dat [6] atd. Obrázek 2.1: Mapování kohonenovy mapy na bitmapové obrázky. Zdroj: [16] Takto postavená neuronová sí má ale jednu nevýhodu a ta spo ívá v nutnosti dop edu denovat strukturu a velikost neuronové sít. To totiº m ºe být v n kterých p ípadech komplikované aº nemoºné. Zárove to z ásti odporuje tomu, co bylo o SOM napsáno vý²e a to je schopnost sít adaptovat se bez dal²ích vn j²ích informací. Zde totiº ona inicializace z ásti supluje u itele, protoºe struktura a velikost sít musí být vybrána se znalostí problému, se znalostí konkrétních vstupních dat. Pro rekonstrukci povrchu 3D objektu byla SOM pouºita nap. v [21]. Tato metoda ale vyºaduje, aby uºivatel na po átku vybral mapu s korektní topologií (sousednost bod i povrch), která zhruba odpovídá tvaru rekonstruovaného objektu - nap. kulová plocha. Algoritmus pak p izp sobí tento objekt vstupní mnoºin bod. Je zde tedy op t nevýhoda v tom, ºe je pot eba dop edu znát p ibliºn rekonstruovaný objekt a celá rekonstrukce je na inicializaci siln závislá. Tento problém se snaºí e²it rostoucí neuronové sít. 2.2 Rostoucí neuronové sít Modely rostoucích samoorganizujících se neuronových sítí se snaºí e²it problém výchozího denování sít tak, ºe ji jednodu²e nedenují. Místo toho se sí náhodn inicializuje do n jakého minimálního stavu, ve kterém se snaºí optimáln adaptovat na vstupní signály. Postupem asu se pak p idávají jednotlivé neurony (nebo v t²í struktura jako nap. v algoritmu Growing Grid [11]) do uº áste n nau ené neuronové sít tak, aby se sí zp es ovala. Sí tak postupn roste a s ní se i tvo í struktura mapy, dokud nedosáhne ur ité velikosti nebo dokud se nenaplní jinak denovaná ukon ovací podmínka. Po áte ní nastavení struktury sít tak v bec není pot eba, protoºe se sí neu í jen pozici neuron (váhové vektory), ale i svojí strukturu. Zajímavé porovnání mezi rostoucí a nerostoucí neuronovou sítí nap. ukázal Dr. Bernd Fritzke v [10], kde porovnával vý²e zmín ný algoritmus Kohonen Feature Map (KFM) a algoritmus Growing Cell Structures (GCS), který sám navrhl [9]. Zjednodu²en e eno se porovnávala schopnost map modelovat r zné rozloºení pravd podobnosti v ohrani eném prostoru.
2.2. ROSTOUCÍ NEURONOVÉ SÍT 5 (a) Growing Grid (b) GCS (c) GNG Obrázek 2.2: Porovnání výsledk t í r zných rostoucích neuronových sítí. Zleva: Growing Grid, Growing Cell Structures, Growing Neural Gas. Zdroj: [13] Výsledek byl takový, ºe KFM dosahovalo lep²ích výsledk jen v p ípad, kde se modelovalo uniformní rozloºení pravd podobnosti v celém prostoru. V ostatních p ípadech, kde byla pravd podobnost rozloºena v prostoru r zn, byla sí jednodu²e omezena po áte ním nastavením struktury, kdeºto GCS strukturu vytvá el aº podle modelovaného prostoru. Obrázek 2.3: Výsledky porovnání z [10]. T i r zná rozloºení pravd podobnosti. Siln ohrani ené ásti jsou místa, kde je uniformní rozloºen pravd podobnosti, zbytek prostoru má nulovou hustotu pravd podobnosti. Horní ádek je adaptace KFM a spodní ádek GCS. Zdroj: [10]
6 KAPITOLA 2. SAMOORGANIZUJÍCÍ SE NEURONOVÉ SÍT 2.3 GSRM Algoritmus Growing Self-reconstruction Maps (GSRM) spadá mezi samoorganizující se rostoucí neuronové sít a je zaloºen na algoritmu Growing Neural Gas (GNG), který navrhl B. Fritzke [12]. V algoritmu GNG se, tak jako v ostatních rostoucích neuronových sítích, st ídá fáze u ení s fází p idávání uzl do sít. Fáze u ení má vºdy více cykl. V kaºdém cyklu se propojí hranou dva neurony, které jsou nejblíºe aktivnímu vstupnímu signálu, poté se vít zný uzel a jeho sousedé posunou sm rem ke vstupnímu signálu a nakonec se odstraní zastaralé hrany (hrany, které jsou v map uº p íli² dlouho a nebyly dlouho aktivovány) spole n s neurony, které zbyly nepropojeny. Ve fázi p idávání uzl, se vytvo í nový neuron v míst, ve kterém docházelo k nejv t²ímu pohybu neuron v p edcházejících cyklech u ení, a propojí se se zbytkem mapy. To v²e se opakuje sí roste, dokud není napln na ukon ovací podmínka. Tento algoritmus byl pouºit pro rekonstrukci povrchu 3D objektu nap. v [5]. Bohuºel tak, jak je sí GNG navrhnuta, nedokáºe sama o sob nést informace o plo²e, pouze o sousednosti neuron. V [5] proto pouºívají za prvé preprocesing vstupních dat, který je nutný k tomu, aby se vyt ºilo více informace ze vstupní mnoºiny nestrukturovaných bod v prostoru, neº je jejich poloha. Za druhé je pot eba kone ný postprocesing sít, p i kterém se z neuronové sít musí je²t vytvo it povrch 3D objektu. Neuronová sí GSRM je navrºena tak, aby informaci o plo²e nesla sama o sob a byla schopna se ji nau it p ímo ze vstupních dat. Sí GSRM obsahuje krom uzl (neuron ) a hran spojující uzly, také informaci o trojúhelníkových plo²kách ty jsou ohrani ené trojicí uzl a trojicí hran. Tím sí získala prost edek, jak reprezentovat plochu a m ºe tedy vytvá et povrch 3D objektu uº b hem u ení není pot eba ºádný preprocesing, který by získával více informací ze syrových dat, ani ºádný postprocesing, který by z neuronové sít je²t musel vytvá et kompletn celou plochu povrchu. Postprocesing, který byl navrºen pro algoritmus GSRM (popsaný v podkapitole 3.3), uº jen dotvá í rekonstruovaný povrch na základ adaptované neuronové sít, kde je povrch rekonstruován jen áste n, ale obsahuje jiº dostatek informace na jeho dokon ení. Detailní popis algoritmu je uveden ve 3. kapitole.
Kapitola 3 Popis algoritmu GSRM Algoritmus GSRM lze rozd lit na t i ásti. První je u ení (nebo také adaptace) neuronové sít, druhá je vkládání nových uzl a poslední je postprocesing. První dv ásti jsou v lánku [19] dob e popsány, bohuºel ta poslední uº tak dob e popsána není, respektive implementace podle popisu zdaleka nedosahuje pot ebných výsledk. Proto byla vyvinuta vlastní implementace postprocesingu. Fáze u ení spo ívá v adaptaci sít na vstup tak, aby mapa s aktuálním po tem p ítomných uzl co nejlépe modelovala povrch 3D objektu. To zahrnuje za prvé posun uzl na jejich správné pozice v prostoru, ímº je modelován tvar objektu. Za druhé je to u ení se topologie povrchu. Neuronová sí tak musí rozhodnout, které uzly spolu sousedí, mezi kterými uzly lze vytvo it plochu. Sousednost uzl je ve výstupní map reprezentována hranami, které sousední uzly spojují a plocha je sloºena z navazujících trojúhelníkových plo²ek. Plo²ky jsou tedy ohrani eny trojicí uzl, ale také trojicí hran. Druhá fáze, vkládání nových uzl, je fáze, kdy neuronová sí roste. Zp es uje se tak výsledek, protoºe mapa pracuje s vy²²ím rozli²ením. ƒím více uzl mapa obsahuje, tím p esn ji lze modelovat jednotlivé detaily rekonstruovaného objektu. Pokud v²ak mapa obsahuje p íli² mnoho uzl, prodluºuje se doba pot ebná pro rekonstrukci a dokonce m ºe dojít k tomu, ºe se sníºí schopnost sít rekonstruovat p esn detaily objektu. Tato situace m ºe nastat, pokud se po et uzl v map blíºí po tu bod rekonstruovaného objektu (nebo ho p evy²uje). V tom p ípad se v n kterých ástech mapy hromadí uzly, které nejsou v bec aktivovány a zastarávají nejsou k rekonstrukci vyuºívány, p estoºe jsou v map zapojeny. Dochází tak k p eu ení sít. Nové uzly se vºdy vkládají na místa, kde b hem p edchozího u ení docházelo k nejv t²ím chybám, kde se nejvíce poloha uzl li²ila od jejich správné polohy. Tím neuronová sí identi- kuje místa v objektu, na které je pot eba se p i rekonstrukci více soust edit, místa, kde je pot eba zvý²it úrove rozli²ení, protoºe aktuální rozli²ení nedovoluje detailn j²í vykreslení rysu objektu. Poslední fáze (postprocesing) slouºí ke zkvalitn ní zrekonstruovaného povrchu. To znamená, ºe odstraní takové ásti mapy, které neformují plochu, a také ásti plochy, které jsou evidentn chybn rozpoznány (nap. kdyº spolu dv sousedící plo²ky svírají velmi malý úhel). Ta nejpodstatn j²í ást postprocesingu ale spo ívá v triangulaci povrchu tam, kde toho p edchozí dv fáze nebyly schopné. Taková místa mapy jsou správn adaptována v tom smyslu, ºe 7
8 KAPITOLA 3. POPIS ALGORITMU GSRM byla správn nalezena sousednost uzl (jejich propojení hranami), ale chybí v t ch místech vytvo ené plo²ky. Algoritmus jako celek probíhá tak, ºe po inicializaci mapy se nejd íve provádí n kolik cykl adaptace mapy, následn p idání nového uzlu do mapy, poté op t n kolik cykl adaptace, atd. Jakmile je spln no ukon ovacího kritérium (obvykle po et uzl v map úrove rozli²ení mapy), vstupuje se do fáze postprocesingu, kde se struktura mapy dokon í. 3.1 Struktura mapy Výstupní mapa (sí ) generovaná algoritmem GSRM je sloºena z uzl, hran a trojúhelníkových plo²ek. Trojúhelníkové plo²ky jsou ohrani eny hranami, které propojují uzly mezi sebou. Uzly mají svoji polohu v prostoru a ur ují tak celkový tvar 3D mapy. 3.1.1 Uzel Uzel je základní stavební jednotka mapy. V tomto textu budou uzly vºdy ozna eny písmenem n, p ípadn s indexem, nap.: n i, n 1. Poloha uzlu v prostoru je ur ena jeho váhovým vektorem, který bude ozna ován písmenem w, aby bylo z ejmé, ºe se jedná o vektor, a indexem odpovídajícím p íslu²nému uzlu, tedy nap íklad w n1 nebo w ni. Uzly jsou v map spojovány hranami. Za sousedy budou ozna ovány takové uzly, které jsou spojeny hranou, a mnoºina soused uzlu bude ozna ována velkým písmenem N s indexem odpovídajícím uzlu, nap. mnoºina soused uzlu n 1 bude ozna ena N n1. Kaºdý uzel má také p i azen chybový íta, který ur uje odchylku od správné polohy. Takovýto íta bude ozna ován velkým písmenem E s indexem odpovídajícím p íslu²nému uzlu, tedy nap íklad E n1 nebo E ni. 3.1.2 Hrana Hrana spojuje práv dva r zné uzly. Bude ozna ována písmenem e s indexem odpovídajícím dvojici spojených uzl, nap. hrana spojující uzly n 1 a n 2 bude ozna ena e n1 n 2. Kaºdý uzel má také p i azeno íslo, které odpovídá stá í dané hrany. Toto íslo bude ozna ováno jako age e, kde index ozna uje p íslu²nou hranu. Stá í hrany je p irozené íslo a platí u n j, ºe ím vy²²í je íslo, tím star²í je hrana. 3.1.3 Trojúhelníková plo²ka Kaºdá trojúhelníková plo²ka je vºdy ohrani ena trojicí r zných hran a tudíº i trojicí r zných uzl. Tyto hrani ní hrany pak lze ozna it za sousedy plo²ky a naopak. Plo²ka m ºe na kaºdé ze svých hrani ních hran sousedit maximáln s jednou dal²í plo²kou. Jinými slovy to znamená, ºe kaºdá hrana m ºe být hrani ní pro maximáln dv r zné plo²ky.
3.2. STAVBA MAPY 9 3.2 Stavba mapy Algoritmus poºaduje na vstupu mnoºinu sou adnic bod v prostoru, z kterých se má zrekonstruovat povrch objektu. Tyto trojice vstupních sou adnic budou dále nazývány vstupními signály a ozna ovány symbolem ξ. Vstupní parametry algoritmu jsou následující: ε b koecient u ení vít zného uzlu ε n koecient u ení sousedních uzl vít zného uzlu λ po et u ících krok, b hem nichº se nep idává ºádný nový uzel do sít β koecient sniºování íta chyb pro v²echny uzly (hodnota mezi 0 a 1) α koecient sniºování íta chyb pro uzly mezi které byl p idán nový uzel (hodnota mezi 0 a 1) age max mez stá í hrany, nad kterou je hrana povaºována za zastaralou nv ukon ovací kritérium, obvykle po et uzl ve výstupní map Bliº²í popis typických hodnot parametr je uveden v podkapitole 3.4. Algoritmus je popsán v deseti krocích. Jak jiº bylo zmín no vý²e, hlavní dv ásti jsou fáze u ení (adaptace) a fáze vytvá ení nových uzl. Fáze u ení odpovídá bod m 2. aº 7., fáze vytvá ení nových uzl pak bodu 8. Algoritmus GSRM 1. Inicializuj výstupní mapu A t emi uzly s náhodn zvolenými váhovými vektory a íta i chyb inicializovanými na nulu. 2. Náhodn vyber jeden vstupní signál ξ z mnoºiny vstupních signál. 3. Najdi první (n 1 ) a druhý (n 2 ) nejbliº²í uzel z výstupní mapy A ke vstupnímu signálu ξ (tzn. vít ze): w n1 ξ w ni ξ, n i A, (3.1) w n2 ξ w ni ξ, n i A {n 1 }. (3.2) 4. Uprav chybový íta prvního vít zného uzlu o kvadrát jeho vzdálenosti od vstupního signálu: E n1 = E n1 + w n1 ξ. (3.3) 5. Vytvo spojení mezi dvojicí vít zných uzl (n 1, n 2 ) takto: 5.1 Pokud neexistuje hrana spojující n 1 a n 2 :
10 KAPITOLA 3. POPIS ALGORITMU GSRM 5.1.1 Odstra v²echny hrany spojující spole né sousedy n 1 a n 2 (tedy uzly, které jsou hranou spojeny jak s n 1 tak s n 2 ). Zárove s t mito hranami je nutné odstranit i plo²ky, které jsou s nimi spojeny. Na obrázku p echod z 3.1(a) na 3.1(b). 5.1.1 Vytvo novou hranu spojující n 1 a n 2 (e n1 n 2 ) a nastav jí stá í na nula (age en1 n 2 = 0). 5.1.1 Vytvo plo²ky mezi n 1, n 2 a v²emi jejich spole nými sousedy (zobrazeno na obrázku 3.1(c) spole n s vytvo ením nové hrany). (a) (b) (c) Obrázek 3.1: Propojení dvou uzl, které jsou nejblíºe vstupnímu signálu (n 1, n 2 ), pokud nejsou propojené a jejich spole ní sousedé (n a, n b ) propojení jsou. 5.2 Pokud jiº hrana mezi n 1 a n 2 existuje, nastav jen její stá í na nula (age en1 n 2 = 0). Tím je zaji²t no, ºe tato hrana nebude v nejbliº²í dob odstran na. Zárove vytvo plo²ky mezi n 1 a n 2 a v²emi jejich spole nými sousedy. 6. Posu vít zný uzel n 1 a v²echny jeho sousedy sm rem k vstupnímu signálu: kde N n1 je mnoºina v²ech soused n 1. 7. Zvy² stá í hran vycházejících z n 1 o jedna: w n1 = w n1 + ε b ( ξ w n1 ), (3.4) w ni = w ni + ε n ( ξ w ni ), n i N n1, (3.5) age en1 n i = age en1 n i + 1, n i N n1. (3.6) Odstra v²echny hrany, a s nimi spojené plo²ky, kterým se takto zvý²í stá í nad hranici age max, takto: 7.1 Odstra v²echny plo²ky sousedící se zastaralou hranou. 7.2 Odstra hranu samotnou. 7.3 Vznikne-li tím uzel, který není spojen s ºádnou hranou, odstra ho také. 8. Je-li celkový po et dosud na tených vstupních signál roven celo íselnému násobku parametru λ, vloº nový uzel do mapy:
3.2. STAVBA MAPY 11 8.1 Najdi uzel s nejvy²²í hodnotou íta e chyb (ozna me ho jako n q ), k n mu vyber sousední uzel (uzel, který je s n q spojený hranou), jeº má nejvy²²í íta chyb (a ozna me ho jako n f ): E nq E ni, n i A, (3.7) E nf E ni, n i N nq. (3.8) 8.2 Odstra hranu spojující n q a n f i s plo²kami, se kterými sousedí. 8.3 Sniº íta e chyb uzl n q a n f : E nq = αe nq, (3.9) E nf = αe nf. (3.10) 8.4 Vloº nový uzel (ozna me ho n r ) do mapy p ímo mezi uzly n q a n f a nastav mu íta chyb jako pr m r jejich íta chyb: w nr E nr = w n q + w nf 2 = E n q + E nf 2 8.5 Vytvo hrany spojující uzel n r s uzly n q a n f., (3.11). (3.12) (a) (b) Obrázek 3.2: Na obrázku (a) stav p ed p idáním nového uzlu n r. Na obrázku (b) stav s uº p idaným novým uzlem. 9. Sniº hodnotu íta chyb v²ech uzl koecientem β: E n = βe n, n A. (3.13) 10. Pokud je spln na ukon ovací podmínka nv (tedy obvykle po et uzl v map je roven nv), p ejdi k postprocesingu. Jinak pokra uj bodem 2. Postprocesing bude detailn vysv tlen v následující podkapitole.
12 KAPITOLA 3. POPIS ALGORITMU GSRM (a) Vstupní body (b) 10 uzl (c) 100 uzl (d) 500 uzl (e) 1000 uzl (f) 5000 uzl Obrázek 3.3: Ukázka rekonstrukce 3D objektu ze vstupních bod - (a). Na obrázcích (b) aº (f) lze vid t, jak neuronová sí roste a zp es uje se. 3.3 Postprocesing Smyslem postprocesingu je za prvé zkvalitn ní vygenerované mapy a za druhé dokon ení povrchu, který p edchozími kroky nebyl zrekonstruován v podob trojúhelníkových plo²ek. Zkvalitn ní mapy se provádí p edev²ím proto, aby se na ní snadn ji provád la kone ná triangulace. Zárove se triangulace provádí tak, aby spl ovala v²echny poºadavky, které jsou na mapu kladeny b hem zkvalit ování. V následujících podkapitolách bude popsán mechanizmus zkvalit ování mapy a dokon ení triangulace mapy. V poslední podkapitole pak budou tyto dva kroky shrnuty a spojeny do jednoho algoritmu. Zkvalit ovaní mapy a dokon ování triangulace se totiº st ídá v n kolika fázích, aby byl výsledek postprocesingu co nejlep²í. 3.3.1 Zkvalitn ní mapy Po dokon ení u ení neuronové sít se m ºe mapa nacházet ve stavu, kde obsahuje trojúhelníkové
3.3. POSTPROCESING 13 plo²ky, které nejsou úpln ideální. Dá se íci, ºe nejideáln j²í by bylo, kdyby v²echny plo²ky byly rovnostranné trojúhelníky. Úplný opak jsou zase tupoúhlé trojúhelníky, jejichº tupý úhel se blíºí π. Dal²í stav plo²ek, který bude povaºován za nekorektní, je, pokud úhel, který spolu svírají dv plo²ky p es spole nou hranu, bude men²í neº stanovená mez. P íli² malý úhel mezi plo²kami totiº tém ur it zna í ²patnou adaptaci neuronové sít. Hrany lze zkvalit ovat dvojím zp sobem. V uzlech, ve kterých se propojují pouze dv hrany, lze uvaºovat o slou ení hran a to tehdy, pokud spolu svírají úhel blíºící se π. Z mapy je také pot eba odstra ovat hrany, které nejsou schopny tvo it trojúhelníkové plo²ky, pon vadº cílem rekonstrukce je zrekonstruovaný povrch objektu a samotné hrany nemají ºádný význam pro výsledek rekonstrukce. 3.3.1.1 Trojúhelníkové plo²ky Jak jiº bylo popsáno vý²e, b hem zkvalit ování mapy jsou trojúhelníkové plo²ky pouze odstra ovány ty, co jsou povaºovány za nekorektní. Za nekorektní plo²ku je povaºována taková, u které je úhel v jednom z jejích vrchol vy²²í neº denovaná mez φ v (její hodnota bude typicky vy²²í neº 3 π). Odstra ují se tak 4 plo²ky, které mají obvykle malou plochu a v jednom z vrchol trojúhelníku je úhel mnohem v t²í neº ve zbylých dvou zdaleka se neblíºí ideálnímu stavu, kde jsou trojúhelníkové plo²ky rovnostranné. Odstra ovaní t chto plo²ek se provádí jednodu²e tak, ºe se prochází v²echny plo²ky vytvo ené v map, u kaºdé se zkontrolují úhly ve v²ech t ech vrcholech. Pokud n která plo²ka nevyhovuje omezení, je odstran na. Za nekorektní je také povaºována plo²ka svírající s n kterou ze svých sousedních plo²ek úhel men²í neº je stanovená mez θ f (hodnota bude typicky niº²í neº je 1 4 π). Odstra ování probíhá tak, ºe se prochází v²echny hrany v map. Pokud s n jakou hranou sousedí práv dv plo²ky, dojde ke kontrole. Spo ítá se úhel θ mezi plo²kami: b = wn2 w n1, (3.14) u = w n3 w n1, (3.15) v = w n4 w n1, (3.16) cos θ = ( b u) ( b v) b u b v, (3.17) kde n 1 a n 2 jsou uzly, které spojuje hrana spole ná ob ma plo²kám, n 3 a n 4 jsou pak zbývající vrcholy první a druhé plo²ky. Vektorový sou in mezi b a u a mezi b a v musí být ve stejném po adí, aby výsledný úhel opravdu odpovídal úhlu, který plo²ky svírají. Tímto zp sobem lze odhalit dvojici plo²ek, které jsou ob nekorektní. Otázka zní, kterou z nich odstranit. Sta í totiº odstranit jednu, druhá uº pak bude automaticky korektní. V map bude ponechána ta plo²ka, která je více propojená se zbytkem mapy. To se zjistí jednodu²e tak, ºe se spo ítá, s kolika dal²ími plo²kami plo²ka sousedí (s kolika sdílí spole nou hranu). Pokud ob plo²ky sousedí se stejným po tem dal²ích plo²ek, pak se odstraní ta, která má men²í plochu.
14 KAPITOLA 3. POPIS ALGORITMU GSRM 3.3.1.2 Hrany B hem postprocesingu se hrany v map bu spojují, nebo se odstra ují. Odstra ují se ty, které nemohou slouºit k vytvo ení plo²ky, a slu ují ty, které na sebe p ímo navazují p es uzel, ze kterého nevychází ºádná dal²í hrana, a které spolu svírají úhel blízký p ímému úhlu lze tak tuto dvojici hran zjednodu²it nahrazením za jedinou hranu p i minimální ztrát informace v map obsaºené. Zkvalit ování mapy za íná odstra ováním hran, které jsou do mapy p ipojeny jednou stranou, neexistuje tedy zp sob, jak by v bec mohly ohrani it plo²ku. Odstra ování lze provést tak, ºe se prochází v²echny uzly mapy. Pokud uzel sousedí jen s jednou hranou, znamená to, ºe hrana je p ipojena do mapy jen jednou stranou (tou druhou neº je tento uzel). Taková hrana se odstraní, a pon vadº se odstranila jediná hrana navazující na tento uzel, odstraní se i uzel. Takto se prochází uzly stále dokola, dokud dochází k n jakým zm nám v síti. Odstran ním jedné hrany totiº m ºe vzniknout dal²í, op t málo propojená se zbytkem mapy. (a) (b) (c) Obrázek 3.4: P íklad odstran ní hran p ipojených do mapy jen jednou stranou. Následn je moºné provést slu ování hran. Dv hrany lze slou it do jedné tehdy, pokud z uzlu, ve kterém jsou propojené, nevychází ºádná dal²í hrana krom t chto dvou. Dále je nutné, aby spolu tyto dv hrany svíraly úhel blízký π. Stanoví se tedy minimální úhel φ e, který musí hrany svírat, aby mohly být slou eny (typicky bude hodnota meze 9 π a 10 vy²²í). Spojování probíhá tak, ºe se postupn prochází v²echny uzly. Pokud z uzlu vychází práv dv hrany a úhel, který hrany svírají, je v t²í neº φ e, dochází k jejich slou ení. Slou ení se provede tak, ºe se hranou propojí zbylé dva uzly (pokud se nap. slu ují hrany e nanb a e nb n c, vytvo í se hrana e nanc ). Poté se odstraní staré hrany spole n s jejich spole ným uzlem (podle p edcházejícího p íkladu se tedy odstraní hrany e nanb a e nb n c a uzel n b ). Poslední ást odstra ování nepouºitelných hran je následující. Hrana, kterou jiº nelze nijak ohrani it plo²ku, je také taková, která by byla nucena k ohrani ení pouºít hranu, která uº ohrani uje dv plo²ky. Poznat nepouºitelnou hranu lze následovn : zkontrolují se oba koncové uzly hrany. Pokud z n kterého uzlu vychází pouze hrany (vyjma kontrolované), které jiº sousedí se dv ma
3.3. POSTPROCESING 15 plo²kami, pak je jisté, ºe touto hranou nelze jiº ºádnou plo²ku ohrani it. Musela by se k tomu pouºít totiº jedna ze sousedních hran ty jsou v²ak uº pln obsazeny. Odstra ování pak lze jednodu²e naimplementovat procházením v²ech uzl. V nich se zkontroluje vý²e popsaná podmínka a odstraní nepouºitelné hrany. (a) (b) (c) Obrázek 3.5: P íklad odstran ní p í ných hran, které nemohou tvo it trojúhelníkovou plo²ku, a následné vytvo ení hran v místech, kde je to díky tomuto kroku moºné. 3.3.2 Dokon ení triangulace mapy Po fázi stavby mapy je mapa ve stavu, kde není povrch zcela zrekonstruován. Povrch obsahuje díry, které nejsou vytriangulované. Povrch je ale rekonstruován sítí hran v t chto místech je denována sousednost uzl. To ºe taková místa nejsou vytriangulována je dáno tím, ºe p i u ení neuronové sít jsou zastaralé hrany odstra ovány zárove se sousedícími plo²kami. Nové plo²ky jsou naopak do mapy p idávány jen tam, kde hrany formují trojúhelníky. B hem u ení se v²ak hrany nespojují jen do trojúhelník, úkolem triangulace b hem postprocesingu pak je vytriangulování zbytku mapy, vychází se p itom z jiº nau ené topologie sít. P i triangulaci se vychází z p edpokladu, ºe sí má správn nau enou sousednost uzl i povrch (triangulaci sít ). Triangulace v postprocesingu tak postupuje od míst v síti, kde je jiº povrch zrekonstruován, ve sm ru nau ených hran. Nové trojúhelníkové plo²ky se vytvá í jen tam, kde je topologií jednozna n dáno, jak by taková plo²ka m la vypadat (v tom míst neexistuje jiná moºnost, jak plo²ku vytvo it). Automaticky se p itom p edpokládá, ºe pokud zárove spl uje nároky na kvalitu plo²ky, plo²ka do mapy pat í a je vytvo ena. 3.3.2.1 Denice omezení Omezení, která musí nov vytvo ená plo²ka spl ovat, jsou stejná, jako jsou popsána v 3.3.1.1 a n která dal²í, která zajistí, ºe bude postprocesing respektovat vlastnosti, které mapa získala b hem u ení. V 3.3.1.1 byly denovány tyto vlastnosti, které musí kaºdá plo²ka, tedy i ta vytvo ená b hem postprocesingu, spl ovat: 1. Úhel svíraný ve v²ech vrcholech trojúhelníku musí být men²í neº denovaná mez φ v.
16 KAPITOLA 3. POPIS ALGORITMU GSRM 2. Úhel svíraný na kaºdé hran se sousední plo²kou musí být v t²í neº θ f. Nov vytvo ené plo²ky navíc nesmí být p íli² velké ani p íli² malé, aby se postprocesingem nedeformovala jiº nau ená mapa. Ozna íme-li velikost plochy nejmen²í trojúhelníkové plo²ky v map p ed postprocesingem A min a velikost plochy nejv t²í plo²ky A max, pak musí být velikost plochy nov vytvo ené plo²ky b hem postprocesingu mezi t mito krajními hodnotami: kde A f je velikost plochy nov vytvo ené plo²ky. A min A f A max, (3.18) 3.3.2.2 Vytvá ení nových plo²ek Místa, kde je topologií sít dáno, ºe by tam mohla být plo²ka vytvo ena, a kde m ºe být vytvo ena jen jediným zp sobem, jsou ta, kde z uzlu vychází jediná dvojice hran, která by mohla být na opa ném konci uzav ená dal²í hranou a tak tvo it trojúhelník (viz. obr. 3.6). Pokud by z uzlu vycházelo více moºných dvojic schopných uzav ením na opa ném konci vytvo it trojúhelník, není jednozna n dáno, který z trojúhelníku je ten správný. V tom p ípad se ºádná plo²ka nevytvá í. Triangulaci tedy lze provést tak, ºe se postupn prochází v²echny uzly mapy. U kaºdého uzlu se spo ítá, kolik hran, které jsou hrani ní pro jednu nebo mén plo²ek, z n ho vychází. Pokud vychází práv dv, je jednozna n dáno, jak lze novou plo²ku vytvo it (viz. obr. 3.6). Následn se zkontroluje, jestli by nov vytvo ená plo²ka spl ovala vý²e denovaná omezení. Pokud by je spl ovala, vytvo í se nová trojúhelníková plo²ka spole n s nezbytnými hranami (pokud je mapa jiº neobsahuje). Uzly v map se prochází stále dokola, dokud v map dochází ke zm nám. (a) (b) (c) (d) Obrázek 3.6: Na obrázcích (a) a (b) jsou vid t struktury, ve které lze vytvo it trojúhelníky jen jedním zp sobem. Na obrázcích (c) a (d) pak struktury, ve kterých není triangulace jednozna n dána. Triangulace se tak ²í í od jiº vytvo ených plo²ek, protoºe pokud z uzlu vychází práv dv hrany schopné ohrani it plo²ku, pak v t²inou kaºdá z hran jiº jednu plo²ku ohrani uje.
3.3. POSTPROCESING 17 (a) (b) (c) (d) (e) (f) Obrázek 3.7: Ukázka dokon ení triangulace ásti mapy. 3.3.3 Postprocesing jako celek Postprocesing se provádí ve ty ech fázích. V první fázi se nejd íve provedou v²echny kroky ke zkvalitn ní mapy. To znamená odstran ní nekorektních plo²ek, odstran ní nekorektních hran a slou ení hran, které slou it lze. Poté se provede triangulace. Druhá fáze za íná odstran ním nekorektních hran. B hem p edchozí triangulace se z n kterých hran mohly stát nekorektní hrany. Mohlo totiº dojít k tomu, ºe po triangulaci z n kterého uzlu vychází jen jediná hrana, která by mohl ohrani ovat plo²ku. Taková hrana je nekorektní, a proto ji lze odstranit. Nekorektní plo²ky vzniknout nemohly, a proto se ºádná kontrola plo²ek neprovádí. Druhá fáze kon í dal²í triangulací. (Na obrázku 3.5 lze vid t, jak odstran ní hran m ºe pomoci dal²í triangulaci.) Ve t etí fázi se nejd íve odstraní v²echny trojúhelníkové plo²ky, které nejsou nijak zastav ny do mapy. Takové plo²ky se poznají tak, ºe ºádná z ohrani ujících hran neohrani uje ºádnou jinou plo²ku. Následuje odstran ní v²ech hran, které neohrani ují ºádnou plo²ku, a odstran ní uzl, ze kterých nevychází ºádná hrana. Výstup rekonstrukce má být povrch, osamocené hrany a uzly tak nemají pro výstup ºádný význam, a proto se odstraní. Na konci t etí fáze se op t provede triangulace. V poslední, tvrté fázi se uº jen naleznou trojice propojených hran, kde kaºdá z hran ohrani uje práv jednu plo²ku. Mezi t mito hranami se vytvo í nová plo²ka bez jakýchkoli kontrol. Jedná se totiº o místa, kde má zrekonstruovaný povrch jen jednu trojúhelníkovou díru. Nej ast ji to bývají malé trojúhelníky, ve kterých se b hem p edchozí triangulace nevytvo í plo²ka, protoºe by nespl ovala omezení na minimální velikost plo²ky. Nemá ale smysl takovou plo²ku nevytvo it, kdyº se jí zacelí zrekonstruovaný povrch.
18 KAPITOLA 3. POPIS ALGORITMU GSRM 3.4 Parametry algoritmu V této podkapitole bude popsán význam parametr, které jsou pouºity b hem stavby mapy a b hem postprocesingu, a jejich povolené a typické hodnoty. 3.4.1 Parametry ε b a ε n Tyto parametry slouºí k u ení polohy vít zného uzlu a jeho soused b hem 6. kroku algoritmu. V kaºdém cyklu algoritmu se nalezne nejbliº²í uzel ke vstupnímu signálu a ten se posune spole n s jeho sousedy sm rem ke vstupnímu signálu podle rovnic 3.4 a 3.5. Vzdálenost, o kterou se uzly posunou, jsou tedy vzdálenosti od vstupního signálu násobené parametrem ε b, respektive ε n. Hodnoty parametr by nem ly být p íli² vysoké, aby poloha uzl v síti neoscilovala okolo správné hodnoty, ale aby se ke správné hodnot blíºila postupn. P itom by hodnota ε n m la být men²í neº hodnota ε b, protoºe vít zný uzel by se m l ke vstupnímu signálu p iblíºit více neº jeho sousedé. Byly pouºity hodnoty okolo 0, 05 pro parametr ε b a 0, 0006 pro parametr ε n. 3.4.2 Parametr λ Tento parametr ur uje, po et cykl u ení mezi fázemi, kdy se p idává nový uzel do mapy. T chto cykl by nem lo být málo, aby se sít sta ila nau it topologii sít, ale nesmí jich být zase p íli² mnoho, aby se zbyte n neprodluºovala doba rekonstrukce. Hodnota je zárove závislá na velikosti mnoºiny vstupních bod. Pokud je totiº malá, je zbyte né, aby bylo t chto cykl p íli² mnoho. Na druhou stranu, pokud je cílová velikost výstupní mapy malá, je pot eba nastavit tento parametr dostate n vysoko, aby se mapa v bec sta ila topologii nau it. V experimentech, které se provád ly na mnoºinách od p ibliºn 40 000 bod do p ibliºn 1 000 000 bod, se osv d ilo pouºívat hodnotu okolo 200. 3.4.3 Parametry β a α Parametr β slouºí ke sníºení íta chyb v²ech uzl. Hodnota íta se tímto parametrem násobí, proto musí mít hodnotu mezi 0 a 1. Toto sniºování je v algoritmu proto, aby se vyrovnávaly hodnoty íta chyb a nevznikl tak jen úzký okruh uzl, které mají jeho hodnotu neustále nejvy²²í. Hodnota parametru by m la být blízká jedni ce, protoºe zase není ºádoucí, aby se rozdíly v hodnotách íta úpln stíraly, aby opravdu byly poznat ty uzly, jejichº poloha se od té správné polohy li²í nejvíce (ty, které se v map posouvaly o nejv t²í vzdálenosti). Hodnota parametru, která se v experimentech osv d ila, byla 0,9995. Parametr α zase slouºí ke sníºení íta chyb u t ch uzl, mezi kterými byl vytvo en nový uzel. Jeho význam spo ívá v tom, ºe p idáním nového uzlu se vyrovná nep esnost
3.5. HISTORIE REVIZÍ ƒlánku 19 jejich polohy uzel se vkládá do míst, kde docházelo k nejv t²ím pohyb m uzl, tam kde uzly nebyly schopny zaujmout správnou polohu. Hodnota tohoto parametru by tedy m la být niº²í neº hodnota parametru β. Aplikuje se totiº v moment, kdy se jejich nesprávná poloha kompenzuje p idáním nového uzlu. Hodnota, která se osv d ila b hem experiment, byla 0,95. 3.4.4 Parametr age max Hodnota tohoto parametru ur uje hranici, od kdy jsou hrany povaºovány za zastaralé a kdy je pot eba je odstranit. Pokud je hodnota p íli² nízká, bude odstra ováno velké mnoºství hran spole n se sousedními plo²kami. To zp sobí, ºe p estoºe uzly budou mít nau enou správnou polohu v prostoru, nebude správn nau ená topologie sít ve smyslu sousednosti uzl a plo²ek mezi uzly. Pokud je hodnota na druhou stranu p íli² vysoká z stanou po skon ení u ení v map i hrany, které budou spojovat uzly na opa ných koncích rekonstruovaného objektu. Sousednost bude nekorektn nau ená. B hem experiment se ukázalo, ºe tento parametr se nastavuje na správnou hodnotu nejobtíºn ji. Osv d ilo se v²ak nastavit ho na hodnotu blízkou hodnot parametru λ. 3.4.5 Parametry φ v, θ f a φ e Tyto parametry se pouºívají b hem postprocesingu a nastavit jejich hodnotu je asi nejsnaz²í. Parametr φ v je maximální úhel, který m ºe být svírán v kterémkoli vrcholu trojúhelníkové plo²ky. Pokud je nejideáln j²í podoba plo²ek rovnostranné trojúhelníky, nem la by být hodnota tohoto parametru niº²í neº 3π. 4 Parametr θ f zase íká, jaký je minimální úhel, který mohou plo²ky svírat mezi sebou. Jeho hodnota vychází z povahy vstupních bod, ale z ejm lze íci, ºe hodnota 1π bude 4 minimální pro v t²inu objekt. Pokud v²ak bude dop edu známo, ºe rekonstruovaný objekt obsahuje jen pravoúhlé st ny, lze bez úhony hodnotu tohoto parametru zvý²it. Parametr φ e slouºí k rozeznání hran, které jsou odd leny jedním uzlem a lze je slou it do jedné hrany, pokud spolu svírají úhel vy²²í neº je tato mez. Jeho hodnota by tedy m la být velmi blízká π. B hem experiment byla pouºita hodnota 9 10 π. 3.5 Historie revizí lánku Na implementaci algoritmu GSRM jsem za al pracovat p ed více neº rokem a p l, kdy jsem se s vedoucím práce M. Kulichem domluvil na tomto tématu a obdrºel od n j aktuální verzi lánku [19], který m l k dispozici k revizi. V lánku byly prezentovány zajímavé výsledky p i rekonstrukci 3D objekt. Mým cílem pak bylo zam it se na jejich moºnou aplikaci v robotice pro mapování 3D prost edí ze senzorických dat robotu. ƒasem se ukázalo, ºe lánek nebyl je²t p ipravený k ociálnímu vydání a dodnes vydán nebyl. Místo toho byly postupn vydávány jednotlivé revize lánku a bylo tak pot eba program podle nich upravovat. V této podkapitole bude popsáno, jak byly vydávány jednotlivé verze lánku za sebou a jak se podle nich li²ila kvalita rekonstrukce 3D objekt.
20 KAPITOLA 3. POPIS ALGORITMU GSRM 3.5.1 První verze lánku Algoritmus GSRM byl v první verzi lánku zna n odli²ný od verze, která je zde popsaná. V této verzi bylo pot eba vyhledat trojici nejbliº²ích uzl vstupnímu signálu, které se navzájem propojily hranami. Odstra ování hran také probíhalo rozdíln. V poslední verzi lánku se odstra ují zastaralé hrany spole n se sousedními plo²kami, ale v první verzi se zastaralá hrana odstra ovala, aº kdyº s ní nesousedila ºádná plo²ka. Plo²ky pak byly odstra ovány, pokud v²echny ohrani ující hrany byly zastaralé. Dal²í krok, ve kterém se tato verze li²ila od té poslední, je p idávání nového uzlu. P i p idání uzlu se totiº zárove provád la triangulace s uzly, mezi kterými byl nový uzel vytvo en, a jejich spole nými sousedy. Poslední rozdíl spo íval v denici struktury. Hrany totiº mohly ohrani ovat neomezen plo²ek a nikoli pouze dv. Díky p ísn j²ím podmínkám odstran ní hran a plo²ek, docházelo k odstra ování mnohem mén asto a bylo tak pot eba mít nastaven parametr age max na niº²í hodnotu, aby byla topologie sít nau ena p esn ji. Zárove se hrany a plo²ky vytvá ely ast ji díky zp sobu, jakým se p idávaly nové uzly. Nejmarkantn j²í rozdíl ale tkv l v rozdílu ve struktu e. Pon vadº hrany mohly ohrani ovat neomezený po et plo²ek, zrekonstruovaný povrch tak m l mnohem sloºit j²í strukturu. Výsledná mapa na pohled vypadala mnohem lépe zrekonstruovaná oproti výsledku ze sou- asné verze lánku. Jednalo se ale vlastn jen o optický klam, protoºe p i pohledu z vn objektu vypadal povrch perfektn zrekonstruovaný. Doopravdy ale docházelo uvnit objektu v d lení povrchu a povrch rostl dovnit objektu. Docházelo také ke generování mnohem v t- ²ího po tu hran a plo²ek, které se r zn k íºily a p ekrývaly. Z vn j²ku tak povrch vypadal lépe, ale doopravdy nebyla kvalita zrekonstruovaného povrchu p íli² dobrá. 3.5.2 Druhá verze lánku Druhá verze nep i²la s velkým zlep²ením. P ibyl pouze postprocesing, který spo íval v odstran ní plo²ek, které spolu svíraly p íli² malý úhel (podobn, jak je popsáno v postprocesingu k sou asné verzi). Dal²í krok postprocesingu byl dokon ení triangulace nevytriangulovaných polygon. Bohuºel nikde nebylo popsáno, jak takové polygony v map nalézt. Výsledek se tedy p íli² neli²il od první verze, pon vadº stále vznikalo velké mnoºství hran a plo²ek a hlavn proto, ºe hrana mohla ohrani ovat neomezen plo²ek. 3.5.3 T etí a zatím poslední verze Verze lánku, která je popisována v podkapitole 3.2 uº napravovala mnoho chyb p edchozích verzí a zárove zjednodu²ovala implementaci. Jsou vyhledávány jen dvojice nejbliº²ích uzl, hrany jsou odstra ovány zárove se sousedícími plo²kami, s novým uzlem se p idávají pouze dvojice hran spojující nový uzel s dvojicí
3.5. HISTORIE REVIZÍ ƒlánku 21 (a) (b) Obrázek 3.8: Ukázka výstupu algoritmu podle první verze lánku. Vlevo je pohled na zrekonstruovaný objekt, vpravo pak v t²í detail. Z obrázku je vid t, ºe je tvo eno velké mnoºství hran a plo²ek, které se r zn k íºí a p ekrývají a netvo í tak souvislý povrch. uzl, mezi kterými je nový uzel vytvo en. Nejpodstatn j²í rozdíl ale spo ívá ve struktu e, kde hrana m ºe ohrani ovat maximáln dvojici plo²ek. Výsledný povrch je tak mnohem blíºe tomu, co si pod pojmem povrch p edstavíme. Na druhou stranu se mnohem ast ji odstra ují hrany a plo²ky, takºe ve výsledku je sice správn nau ená sousednost uzl, ale povrch je d ravý díky nedostatku vytvo ených plo²ek. Tento problém jsem se pokusil vy e²it vlastním návrhem postprocesingu, který je popsán v podkapitole 3.3. V lánku je také popsán vlastní postprocesing, který spo ívá v n kolika krocích. První krok je topologické u ení, které spo ívá v postupném pouºití celé mnoºiny vstupních signál pro u ení topologie bez p idávání nových uzl a posunu uzl. Druhý krok pak ve vyhledání v²ech nevytriangulovaných ty úhelník, p tiúhelník a ²estiúhelník, které se vytriangulují. P estoºe je v lánku ukázána úsp ²ná aplikace postprocesingu, tento úsp ch nebylo moºné zreprodukovat. Respektive byl implementován první krok, o kterém je v lánku napsáno, ºe dokon í triangulaci tém celého povrch objektu, aº na velmi málo polygon, které se dotriangulují v druhém kroku postprocesingu. Po implementaci se ale ukázalo, ºe vliv topologického u ení na mapu není v podstat ºádný. Mapa se po prvním kroku zm nila jen málo, díry v povrchu z staly tém stejné. Druhý krok postprocesingu nebyl v bec implementován, protoºe nikde v lánku nebylo popsáno, jak takové souvislé nevytriangulované polygony v map nalézt. Proto byl navrhnut vlastní postprocesing.
22 KAPITOLA 3. POPIS ALGORITMU GSRM
Kapitola 4 Optimalizace V této kapitole budou popsány optimalizace, které byly provedeny s algoritmem, popsaným ve t etí kapitole, a vedou k jeho zrychlení. Optimalizace jsou zam eny na asov nejnáro n j²í ásti algoritmu. K nejnáro n j²ím operacím bezesporu pat í hledání nejbliº²ího uzlu ke vstupnímu signálu (krok 3). Provádí se totiº opakovan v kaºdém cyklu algoritmu. Vylep²ení je popsáno v podkapitole 4.1. Dal²í ást algoritmu, který je asov náro ný, a který je popsán v podkapitole 4.2, je 9. krok sniºování íta chyb v²em uzl m v map. Tato operace se provádí také kaºdý cyklus, a proto stojí za vylep²ení. Níºe popsáné optimalizace mají výrazný vliv na rychlost algoritmu. V kapitole 6 jsou uvedeny asy b hu algoritmu s pouºitými optimalizacemi a bez nich. 4.1 Nalezení nejbliº²ího uzlu Nalezení dvojice nejbliº²ích uzl ke vstupnímu signálu pat í k nejdraº²ím operacím celého algoritmu, dochází k n mu totiº v kaºdém cyklu algoritmu. Nejjednodu²²í a nejp ím j²í implementace této operace je pouºití lineárního vyhledávání (n kdy také nazývané sekven ní vyhledávání). Takové vyhledávání je v²ak asov p íli² náro né. Pro vyhledávání bod v prostoru s niº²í neº lineární asymptotickou sloºitostí lze pouºít nap. strukturu zvanou kd-strom [18]. Pomocí kd-stromu lze vyhledávat s asymptotickou sloºitostí O(log n). Bohuºel ho nelze pouºít pro hledání v uzlech mapy. Kd-strom by se totiº musel m nit s kaºdým pohybem uzl, ke kterému dochází n kolikrát b hem jednoho cyklu. Jeho pouºitím by se sníºil as pot ebný k vyhledání nejbliº²ích uzl ke vstupnímu signálu, ale zase by se prodlouºila ta ást, b hem níº se uzly posouvají sm rem ke vstupnímu signálu. Proto tu bude popsán jiný zp sob, který byl pro tento problém vyvinut, a který as vyhledávání výrazn sniºuje. Jeho asymptotická sloºitost sice není niº²í neº lineární, ale b hem experiment se jasn prokázalo, ºe je v praxi velmi rychlý. Zárove nemá nijak výrazný vliv na zbytek algoritmu pouze zrychluje ást vyhledávání nejbliº²ích uzl, ale nezpomaluje tím ºádné jiné ásti. 23
24 KAPITOLA 4. OPTIMALIZACE V následujících podkapitolách bude nejprve popsána struktura, která se pro vyhledávání pouºívá, a následn samotný vyhledávací algoritmus. 4.1.1 Struktura pro vyhledávání Struktura, která je pouºita, spo ívá v tom, ºe se prostor, ve kterém bude probíhat vyhledávání, rovnom rn rozd lí na stejn velké krychle s délkou hrany a. Vyhledávání pak m ºe probíhat v rámci jednotlivých krychlí sniºuje se tak prohledávaný prostor. Rozd lením prohledávaného prostoru na krychle vznikne 3D m íºka krychlí. Rozm ry m íºky mohou být ve sm ru kaºdé osy r zné budou zna eny g x, g y, g z. Po et krychlí v m íºce je tak rovný g x g y g z. Velikost pokrytého prostoru je tedy denována rozm ry m íºky (g x, g y, g z ) a délkou hrany krychle (a). Aby bylo jednozna n denováno, jaký prostor je pokrytý, je je²t pot eba stanovit po átek pokrytého prostoru vzhledem k po átku sou adnic. Ten bude zna en trojicí sou adnic o x, o y, o z. Kaºdá krychle je ur ena svojí pozicí v této m íºce, sou adnice krychle v m íºce budou zna eny trojicí c x, c y, c z. M íºku lze navíc denovat tak, aby pokrývala i body, které se nenachází p ímo v ohrani eném prostoru. Toho lze docílit tím, ºe hrani ní krychle m íºky budou pokrývat ty body, které mají svou pozici mimo p ímo pokrytý prostor. V programu lze celou m íºku uloºit do jednorozm rného pole. Pozice c i krychle v poli krychlí lze pak jednodu²e spo ítat z jejích m íºkových sou adnic: c i = c x + c y g x + c z g x g y (4.1) Kaºdý bod prostoru je denován trojicí sou adnic p x, p y, p z. Do jaké krychle struktury takový bod pat í, lze pak spo ítat v konstantním ase z jeho sou adnic: c x,y,z = min( max(p x,y,z + o x,y,z, 0), g x,y,z 1) (4.2) a Takto spo ítané sou adnice krychle platí i pro body v prostoru, které nepat í p ímo do pokryté oblasti. M íºka krychlí je v algoritmu pouºita následovn. Na po átku je pot eba vybrat prostor, který bude m íºka pokrývat. To lze provést tak, ºe se projdou v²echny vstupní signály a ur í se kvádr, který v²echny tyto vstupní signály obsahuje. Pokud máme denován prostor, který chceme mít krychlemi pokrytý, sta í uº jen zvolit délku hrany krychle. Rozm ry m íºky se z ní pak jednodu²e dopo ítají tak, aby m íºka krychlí obsáhla celý kvádr vstupních signál. B hem algoritmu pak musí mít kaºdý uzel p i azenu jednu krychli, do které pat í a kaºdá krychle musí mít seznam uzl, které obsahuje. Pokud se p idává nový uzel do mapy, spo- ítá se podle vzorc 4.2 a 4.1, do jaké krychle pat í. Krychle si p idá uzel do seznamu uzl, které obsahuje, a uzel si uloºí odkaz na tuto krychli. P i posunu uzlu v prostoru se pak vºdy p epo ítá, jaká krychle odpovídá nové pozici. Pokud se li²í od staré pozice (té uloºené v uzlu), odebere se posunutý uzel ze seznamu uzl staré krychle a p idá do seznamu uzl nové krychle. Odkaz z uzlu se nakonec zm ní na novou krychli. V²echny operace s uzly lze tedy provád t v konstantním ase (pokud jsou operace nad seznam uzl konstantní a to jsou, jak je popsáno v kapitole 5) a mají velmi malý vliv na délku provád ní t chto operací.
4.1. NALEZENÍ NEJBLIš ÍHO UZLU 25 4.1.2 Vyhledávací algoritmus Ve struktu e popsané vý²e probíhá hledání nejbliº²ího uzlu ke vstupnímu signálu následovn. Nejd íve je ze sou adnic vstupního signálu spo ítáno, do které krychle signál pat í. Následn se lineárním vyhledáváním prohledá tato krychle a v²echny krychle, které tuto obklopují (celkem 27 krychlí). Pokud je vzdálenost aktuáln nejbliº²ího uzlu od vstupního signálu men²í neº je délka hrany krychle, pak se jedná o nejbliº²í uzel ze v²ech uzl a vyhledávání kon í. Pokud je vzdálenost v t²í neº délka hrany, nemusí to nutn být nejbliº²í uzel. Proto se prohledají i v²echny krychle, které obklopují ty jiº prohledané (lze si to p edstavit jako dal²í vrstvu krychlí). Pokud je po tomto kroku vzdálenost aktuáln nejbliº²ího uzlu ke vstupnímu signálu men²í neº dvojnásobek délky hrany, je to ten nejbliº²í ze v²ech. Pokud není men²í, prohledá se dal²í vrstva a kontroluje se trojnásobek délky. Takto se pokra uje, dokud bu nejsou prohledány v²echny uzly, nebo není ten nejbliº²í nalezen d íve. (a) (b) (c) (d) (e) Obrázek 4.1: Ukázka, jak vypadá struktura pro vyhledávání ve 2D. Na obr. (a) je vyzna en tverec, ve kterém za íná vyhledávání (kam spadá vstupní signál), na obr. (b) okolní vrstva tverc, která je v prvním kroku také prohledávána. Na obr. (c) je znázorn no, ºe pokud je nejbliº²í uzel ve vzdálenosti do jedné délky hrany, musí to být nejbliº²í uzel. Na obr. (d) je znázorn na dal²í vrstva a na obr. (e) op t ukázka, ºe pokud je nejbliº²í uzel ve vzdálenosti do dvou délek hrany, musí to být nejbliº²í uzel v bec. Z popsaného algoritmu je z ejmé, ºe asymptotická sloºitost se oproti lineárnímu vyhledávání nesníºí, protoºe v nejhor²ím p ípad se budou prohledávat v²echny uzly. Pokud se v²ak
26 KAPITOLA 4. OPTIMALIZACE prohledávaný prostor vhodn rozd lí na krychle, sta í prohledat men²í po et uzl. Z experiment vyplývá, ºe maximálního zrychlení se dosahuje, pokud se prostor vstupních signál rozd lí na p ibliºn stejný po et krychlí jako je cílový po et výstupních uzl (výstupní rozli²ení). Velkého zrychlení oproti lineárnímu vyhledávání se v²ak dosahuje uº p i mnohem men²ím po tu krychlí. 4.2 Kumulativní íta chyb V 9. kroku algoritmu se sniºují íta e chyb v²ech uzl v síti parametrem β. Tento krok je dal²ím kandidátem na zrychlení, pon vadº se provádí kaºdý cyklus algoritmu a jsou v n m procházeny v²echny uzly mapy. Krom 9. kroku se s íta i chyb pracuje je²t v krocích 4 a 8. B hem jednoho cyklu je tedy pot eba znát íta e chyb u velmi málo uzl oproti tomu, kolik jich je pot eba sníºit v posledním kroku. Optimalizace tedy spo ívá v tom, ºe se místo sniºování íta chyb u v²ech uzl jen po ítá kolikrát m lo ke sniºování dojít. Je-li pak pot eba zjistit aktuální stav íta e u konkrétního uzlu, aplikuje se β na íta tolikrát, kolikrát je pot eba. Odpadá tak nutnost v kaºdém cyklu procházet v²echny uzly. Kv li optimalizaci je pot eba jednak zavést globální íta E β, který nese informaci, kolikrát do²lo ke sníºení íta chyb u v²ech uzl, a potom musí mít kaºdý uzel svojí vlastní zna ku E βn, která obsahuje poslední stav íta e E β, p i kterém bylo sníºení parametrem β aplikováno na uzel. V kroku 4 se totiº zvy²uje íta chyb a m ºe tak dojít k tomu, ºe na r zné uzly bylo β pouºito v r zných stavech jejich íta e mají zcela jinou hodnotu. Navíc je je²t zaveden íta β cum, který obsahuje p edem vypo tenou hodnotu β E β, kterou lze pouºít na sníºení íta u t ch uzl, které mají hodnotu E βn rovnou 0. To jsou ty uzly, u kterých je pot eba sníºit íta koecientem β E β -krát, protoºe nebyly od po átku ítání globálního íta e nijak zm n ny a to není v t²ina uzl v map. Hodnota β cum se vypo ítává p edem, protoºe operace mocniny je drahá a tímto jednoduchým opat ením se poda í eliminovat nutnost provedení této operace na minimum. Pokud máme takto p ipravenou infrastrukturu, lze vy e²it problém sniºování íta chyb úpravou algoritmu tak, aby ji vyuºíval. Následující kroky popisují, jak lze algoritmus upravit: 1. Na po átku algoritmu se nastaví E β na nula a β cum na 1. 2. Pokud se p idává nový uzel n do mapy, nastaví se mu parametr E βn na aktuální hodnotu E β. 3. V kroku 4 se provádí zvý²ení íta e chyb u vít zného uzlu n 1. Je tedy pot eba tento krok upravit tak, aby se korektn sníºil íta chyb a nastavila správn zna ka E βn : E n1 = β (E βn E 1 β ) E n1 + w n1 ξ, (4.3) E βn1 = E β. (4.4) 4. V kroku 8 se sekven n prochází v²echny uzly, aby se na²el ten s nejv t²í hodnotou íta e chyb. Je tedy moºné (dokonce nutné) aplikovat globální íta na v²echny uzly
4.2. KUMULATIVNÍ ƒítaƒ CHYB 27 mapy, a pon vadº jsou upraveny íta e v²ech uzl lze E β vynulovat. Pro kaºdý uzel n se tedy provede: E n = β (E βn Eβ) E n, (4.5) E βn = 0. (4.6) Navíc lze len β (E βn E β) v rovnici 4.5 zam nit za β cum, pokud je E βn rovno nule. Nakonec se vynuluje i globální íta a resetuje akumulované β: E β = 0, (4.7) β cum = 1 (4.8) 5. V kroku 9 se místo sniºování íta provede jen zm na E β a β cum : E β = E β + 1, (4.9) β cum = ββ cum. (4.10) S takto popsanou optimalizací se z lineární sloºitosti p i sniºování v²ech íta chyb stane sloºitost konstantní jen se m ní íta e a zna ky. Zárove se nezvý²í sloºitost ºádného jiného kroku. Je totiº vyuºito proces, které se musí vykonat nezávisle na úprav íta chyb (nap. procházení v²ech uzl v kroku 8).
28 KAPITOLA 4. OPTIMALIZACE
Kapitola 5 Implementace Algoritmus GSRM je implementován jako knihovna libgsrm a jako vzorový program gsrm nad touto knihovnou. V²e je implementováno v programovacím jazyce C (konkrétn ve standardu C99), knihovna je pln reentrantní, coº znamená, ºe je schopná vícenásobného sou- asného b hu. V této kapitole budou dále stru n popsány jen základní struktury, které jsou pouºity, a zajímavé implementa ní detaily, které stojí za p iblíºení. Spole n s programem a knihovnou implementující algoritmus GSRM byl také naprogramován program pro zobrazování 3D dat ten bude také stru n popsán v samostatné podkapitole. 5.1 Základní struktury knihovny Struktura mapy se skládá z propojených uzl, hran a trojúhelníkových plo²ek a tak jsou i reprezentovány uvnit programu. 5.1.1 Uzel, hrana, plo²ka Struktura uzlu gsrm_node_t (implementovaná ve zdrojových souborech node.{h,c}) je slo- ºena p edev²ím z polohového vektoru, ze seznamu odkaz na hrany, které z n ho vycházejí a ze struktur (gsrm_list_t - bude popsána níºe), které mu dovolují zapojovat se do seznamu v²ech uzl v map a do seznamu uzl krychle, do které pat í. Struktura hrany gsrm_edge_t (implementována ve zdroj. souborech edge.{h,c}) je slo- ºena z dvojice odkaz na koncové uzly hrany a dvouprvkového pole odkaz na plo²ky. Dvouprvkové proto, ºe hrana m ºe ohrani ovat maximáln dv plo²ky. Dále obsahuje strukturu dovolující zapojovat hranu do seznamu v²ech hran mapy. Struktura plo²ky gsrm_face_t (implementována ve zdroj. souborech face.{h,c}) se skládá ze trojice odkaz na ohrani ující hrany a ze struktury, kterou je moºné p ipojit plo²ku do seznamu v²ech plo²ek mapy. Ke v²em t mto strukturám jsou implementovány jen základní operace. V²echny sloºit j²í operace jsou p esunuty na vy²²í vrstvu. To je ud láno proto, ºe jsou v²echny struktury navzájem propojeny a bylo by sloºité provád t v²echny nezbytné kontroly. Vy²²í vrstva naopak 29
30 KAPITOLA 5. IMPLEMENTACE má více informací o celé map, a proto je jednodu²²í d lat tyto kontroly tam. Jedná se nap íklad o operace jako je odstran ní nebo p idání hran. Pokud se nap. odstra uje hrana, je pot eba zkontrolovat, ºe neohrani uje ºádnou plo²ku, následn je pot eba ji odstranit ze seznam hran v koncových uzlech atd. Vy²²í vrstva, která má na starosti v²echny tyto operace je struktura gsrm_mesh_t. Obrázek 5.1: Schéma propojení struktur gsrm_node_t, gsrm_edge_t a gsrm_face_t. 5.1.2 Reprezentace mapy (sít ) Struktura, která sdruºuje uzly, hrany a plo²ky je struktura gsrm_mesh_t (implementována v souborech mesh* ). Struktura je sloºena ze seznamu v²ech uzl, hran a plo²ek a z odkazu na m íºku krychlí pomocí které se v map vyhledává (viz. kapitola 4). šádná jiná ást knihovny nemá p ístup k uzl m, hranám, plo²kám ani krychlím, neº je tato. Ve²keré informace o síti jsou uloºeny zde a jedinou manipulaci se sítí lze provád t jen skrze funkce za ínající na gsrmmesh, a které mají v²echny jako první argument odkaz na strukturu sít gsrm_mesh_t. Nad sítí je pak poslední vrstva struktura gsrm_t, coº je zárove vn j²í rozhraní knihovny. Obrázek 5.2: Schéma struktury gsrm_mesh_t.
5.2. IMPLEMENTACE SEZNAM 31 5.1.3 Struktura gsrm_t Struktura gsrm_t (implementována v souborech gsrm.{h,c}) je sloºena p edev²ím ze struktury parametr, odkazu na strukturu gsrm_mesh_t a odkazu na strukturu reprezentující mnoºinu vstupních signál gsrm_insig_t. Jednotlivé kroky algoritmu jsou implementovány na této úrovni a p evádí se na volání funkcí niº²í vrstvy sít, jako je vytvo nový uzel a pod. 5.2 Implementace seznam Pon vadº se v programu neustále pracuje s r znými seznamy, byl p i implementaci kladen velký d raz na to, aby tyto operace byly co nejrychlej²í. Proto byla za vzor k implementaci seznam vybrána implementace, která je pouºita v zdrojových kódech jádra OS Linux. Konkrétn se jedná o implementaci struktury struct list_head a operací s ní z hlavi kového souboru include/linux/list.h. Jedná se o implementaci obousm rného spojového seznamu. Prvky (struktury), které se do seznamu zapojují, musí v d t do jakého seznamu pat í. Nejedná se tedy o implementaci kontejnerového typu seznamu, jako je nap. std::list ze standardní knihovny C++, a proto je nelze pouºít v²ude. Jejich výhoda naopak je, ºe v²echny operace se provádí v konstantním ase. V knihovn gsrm je základní strukturou gsrm_list_t (implementována v souboru list.h). Tato struktura se skládá jen z dvou ukazatel,.prev a.next, na dal²í strukturu gsrm_list_t. Mechanizmus seznamu funguje tak, ºe se do struktury, která vlastní seznam, vloºí struktura gsrm_list_t a inicializuje tak, aby.next i.prev ukazovaly na sebe sama (viz. funkce init() ve výpisu 5.1). Do struktur, které mají být prvky seznamu, se také vloºí struktura gsrm_list_t (viz. denice struktury item ve výpisu 5.1). Od tohoto momentu jiº lze et zit prvky seznamu p es.next a.prev ukazatele. První prvek pole je tedy ten, na který ukazuje atribut.next struktury gsrm_list_t uloºené ve struktu e, která vlastní seznam (podle výpisu 5.1 by tedy owner.l.next ukazoval vºdy na za átek seznamu). Na druhý prvek ukazuje.next z prvního prvku, atd. Pon vadº na sebe odkazují jen struktury gsrm_list_t, je pot eba n jak zjistit ukazatel na samotný uchovávaný prvek. To lze provést jednodu²e tak, ºe se hodnota ukazatele na prvek dopo ítá z hodnoty ukazatele na strukturu gsrm_list_t v prvku a z polohy struktury gsrm_list_t v prvku. Ve výpisu 5.1 funkce itementry() vrací ukazatel na prvek, který je spo ítaný z ukazatele na strukturu gsrm_list_t. To je provedeno makrem gsrm_container_of, které jednodu²e od tohoto ukazatele ode te oset struktury v prvku (makrem gsrm_offsetof). Tato struktura pro tvorbu seznam je pouºita pro v²echny seznamy v programu, kde je to jen moºné. Tedy pro seznamy v²ech uzl, hran a plo²ek, pro seznamy uzl, uvnit krychle a pod. V²echny operace se seznamy jsou tak velmi rychlé.
32 KAPITOLA 5. IMPLEMENTACE Výpis 5.1: Ukázka pouºití gsrm_list_t struktury 1 s t r u c t owner { gsrm_list_t l } ; 2 s t r u c t item { 3 i n t a, b, c ; 4 gsrm_list_t l ; 5 } ; 6 7 void ownerinit ( s t r u c t owner o ) { 8 o >l. next = o >l. prev~= &o >l ; 9 } 10 11 #d e f i n e g s r m _ o f f s e t o f (TYPE, MEMBER) ( ( s i z e _ t ) &((TYPE ) 0) >MEMBER) 12 #d e f i n e gsrm_container_of ( ptr, TYPE, MEMBER) \ 13 ( TYPE ) ( ( char ) ptr gsrm_offsetof ( TYPE, MEMBER ) ) 14 15 s t r u c t item itementry ( gsrm_list_t l ) { 16 r e t u r n gsrm_container_of ( l, s t r u c t item, l ) ; 17 } 5.3 SVT - Nástroj pro zobrazování 3D objekt P i implementaci a b hem lad ní knihovny bylo pot eba prohlíºet vygenerované mapy. Bylo pot eba prohlídnout si i jednotlivé detaily, jak vypadá zrekonstruovaný objekt ze v²ech stran i zevnit. Zárove bylo pot eba mít moºnost skrývat r zné ásti tak, aby neru²ily p i prohlíºení zbytku. Bohuºel jsem nenalezl ºádný nástroj, který by n co takového umoº oval, a proto jsem se rozhodl naprogramovat sv j vlastní nástroj, který jsem pojmenoval SVT - Simple Visualization Tool. SVT je postaveno nad knihovnou Qt [4], která slouºí ke stavb GUI, a knihovnami Coin3D a Quarter [2], které slouºí k zobrazování 3D dat a jejich integraci do frameworku Qt. Ke kompilaci je navíc pot eba program ex [3], který slouºí ke generování lexikálního analyzátoru pro parser vstupních dat. SVT je licencován pod GPLv3 licencí a zdrojové kódy jsou dostupné p es gitový repozitá git://phil.danfis.cz/svt.git. Tento nástroj umoº uje prohlíºet jednotlivé detaily 3D objekt, vypínat a zapínat pohled na jednotlivé ásti a m nit jejich barvy. V²echny zde uvedené obrázky z rekonstrukce jsou generovány z tohoto nástroje. Knihovna libgsrm také momentáln generuje mapu pouze ve formátu pro tento nástroj, ale nebude problém kdykoli v budoucnu dal²í formáty výstupu doprogramovat. 1 Points : 2 0 0 0 3 1 0 0 4 1 1 0 5 0. 5 0. 5 1 6 Edges : 7 0 1 8 1 2 9 2 0 10 0 3 11 1 3 12 2 3 13 Faces : 14 0 1 2 Výpis 5.2: Ukázka vstupních dat pro nástroj SVT - jehlan
5.3. SVT - NÁSTROJ PRO ZOBRAZOVÁNÍ 3D OBJEKT 33 Obrázek 5.3: Ukázka programu - je zobrazen objekt denovaný ve výpise 5.2
34 KAPITOLA 5. IMPLEMENTACE
Kapitola 6 Experimentální výsledky V této kapitole budou prezentovány výsledky experiment rekonstrukce r zných objekt. Experimenty byly provád ny v OS Linux na notebooku s procesorem Intel Core 2 Duo taktovaným na 2 GHz a 2 GB RAM, programem bylo p ímo vyuºito jen jedno procesorové jádro. Jako vstupní data byly zvoleny za prvé skeny objekt dostupné z ve ejného repozitá e [1], který obsahuje pov t²inou skeny r zných so²ek. Za druhé byly pouºity skeny z robotu, které jsem dostal k dispozici od Skupiny mobilní robotiky z Katedry kybernetiky, FEL, ƒvut. R zné druhy vstupních objekt byly zvoleny proto, aby bylo ukázáno, ºe tento algoritmus lze bez rozdílu pouºít na data z robotu stejn tak jako na 3D skeny jiných objekt. Pro rekonstrukci v²ech objekt bez rozdílu byly pouºity ty stejné hodnoty parametr (viz. tabulka 6.1). ε b ε n λ β α age max φ v θ f φ e 3 0,05 0,0006 200 0,9995 0,95 200 π π 4 4 9 π 10 Tabulka 6.1: Tabulka hodnot parametr pouºitých b hem experiment 6.1 Rekonstrukce 3D povrchu P i rekonstrukci v²ech objekt v této podkapitole byly pouºity hodnoty parametr uvedených v tabulce 6.1 s cílovým rozli²eným 20 000 uzl. Byly rekonstruovány objekty z [1] Dragon obsahující 437 646 bod, Arm obsahující 172 974 bod a sken z robotu, poskytnutý Skupinou mobilní robotiky, Místnost obsahující 806 092 bod. Sken z robotu byl získán b hem jízdy robotu dv ma místnostmi. Na obrázku A.1 si lze prohlédnout, jak vypadají vstupní mnoºiny jednotlivých objekt. Na obrázcích A.2, A.3 a A.4 jsou vid t výsledky rekonstrukce. V tabulce 6.2 si pak lze prohlédnout výstupní parametry jednotlivých rekonstrukcí. 35
36 KAPITOLA 6. EXPERIMENTÁLNÍ VÝSLEDKY objekt Dragon Arm Místnost po et vstupních bod 437 646 172 974 806 092 po et vygenerovaných uzl 19 190 19 499 15 029 po et vygenerovaných hran 57 247 58 510 41 884 po et vygenerovaných plo²ek 37 826 38 832 26 652 doba rekonstrukce 35s 40s 37,5s z toho postprocesing 0,5s 0,5s 0,5s Tabulka 6.2: Tabulka výsledk rekonstrukce pro cílové rozli²ení 20 000 uzl. 6.1.1 Kvalita vygenerovaných povrch Povrchy vygenerované algoritmem GSRM celkem v rn rekonstruují povrch objekt, jak je vid t z obrázk. Rekonstrukce v²ak nejsou úpln dokonalé, coº je vid t na obrázku A.5, kde je zobrazen detail spodní ásti objektu Dragon po rekonstrukci. Na obrázku je vid t, ºe v zrekonstruovaném povrchu z staly n jaké díry. To je zp sobeno tím, ºe v t chto místech nemá sí dokonale nau enou topologii objektu. V takových místech vznikají hrany, které se r zn k íºí a podobn. Následný postprocesing pak není schopen správn rozeznat, kde m ºe a kde nem ºe vytvo it plo²ky. Chyba je tak v nedokonalém algoritmu GSRM i nedokonalém postprocesingu. Naopak velmi dobré výsledky jsou vid t p i bliº²ím pohledu na detaily zrekonstruovaných objekt. Na objektu Dragon je dob e vid t, ºe algoritmus je schopný dob e zrekonstruovat v²echny moºné záhyby a sloºité tvary objektu. Na objektu Arm pak, ºe i jemné detaily povrchu jsou p i dostate ném rozli²ení dob e tvarované (viz. A.6(a) detailní pohled na objekt shora). Na obrázku A.6(b) je zase dob e vid t, ºe zrekonstruovaný povrch je opravdu povrch objektu, a ºe se uvnit objektu nevytvá í ºádné p í né plo²ky, které by z pohledu zven í nebyly vid t. Nakonec na obrázku A.7, kde je pohled dovnit zrekonstruované místnosti, si lze v²imnout, ºe r zné men²í, robotem oskenované, objekty, jako jsou stoly, po íta e a podobn, se nezrekonstruovaly p íli² dob e, protoºe uº ve vstupních bodech byly ²patn rozeznatelné. Naopak je vid t, ºe zá ivky u stropu, které byly ve skenu reprezentované sice malým shlukem bod, ale jednozna n ji odli²itelným od zbytku skenu, jsou alespo áste n zrekonstruované. objekt plo²ek p ed pp plo²ek po pp Dragon 25 101 37 826 Arm 27 736 38 832 Místnost 19 261 26 652 Tabulka 6.3: Tabulka po tu plo²ek v map p ed a po postprocesingu. 6.1.2 Výstupní parametry rekonstrukcí V tabulkách 6.2 a 6.3 jsou vypsané výstupní parametry jednotlivých rekonstrukcí.
6.2. R ZNÁ VÝSTUPNÍ ROZLI ENÍ 37 D vod, pro není výstupní po et uzl roven 20 000, coº bylo cílové rozli²ení, je ten, ºe jsou n jaké uzly odstran ny b hem postprocesingu. Z tabulky je vid t, ºe délka postprocesingu je oproti celkové délce rekonstrukce zanedbatelná. Dále je vid t, ºe rekonstrukce je extrémn rychlá nezávisle na tom, jak velká je vstupní mnoºina. Dokonce neplatí, ºe by více vstupních bod implikovalo del²í dobu rekonstrukce. ƒas rekonstrukce se pohybuje od 35 sekund to 40 sekund, a je vstupních bod cca 170 000 nebo cca 800 000. Navíc kvalita generovaného povrchu je u v²ech objekt srovnatelná. Vliv postprocesingu je vid t na obrázcích A.2, A.3 a A.4 i z tabulky 6.3. Postprocesing dokon il triangulaci objekt a vytvo il tak ve v t²in p ípad souvislý povrch bez d r na základ nau ené topologie sít. Z tabulky 6.3 je také vid t, ºe b hem postprocesingu byl navý²en po et plo²ek v map zhruba o polovinu. Povrch se tedy nevytvá í od za átku, ale je vytvá en na základ jiº zrekonstruovaného povrchu pro úsp ²ný výsledek postprocesingu je p ímo nutné, aby zrekonstruovaný povrch m l jiº jistou kvalitu a neobsahoval p íli² mnoho d r. Postprocesing lze hodnotit jako úsp ²ný, protoºe v t²ina d r byla korektn vytriangulována. Dragon po et uzl 1000 5000 10 000 20 000 doba rekonstrukce 0,7s 4s 10,5s 35s pouze s opt. sniºování chyb. íta e 7s 2m 45,5s 10m 48,2s 44m 51,7s pouze s opt. vyhledávání 1,5s 27,2s 4m 18,5s 39m 35,5s zcela bez optimalizací 7,9s 3m 13,5s 16m 11,5s 1h 33m 3s Tabulka 6.4: Tabulka výsledk rekonstrukce objektu Dragon pro r zné výstupní rozli²ení. 6.2 R zná výstupní rozli²ení Na obrázcích A.8 a A.10 si lze prohlédnout zrekonstruovaný objekt Dragon ve výstupním rozli²ení 1000, 5000, 10 000 a 20 000 uzl. Na obrázcích je vid t, jaký má vliv zvy²ování cílového rozli²ení rekonstrukce. P i nízkém cílovém rozli²ení je objekt zrekonstruován ve velmi hrubých obrysech. P i zvy²ování rozli²ení se mapa m ºe b hem u ení více soust edit na jednotlivé detaily objektu a vytvá et tak p esn ji zrekonstruovaný povrch objektu. Naopak p i p íli² velkém cílovém rozli²ení dochází k p eu ení sít, protoºe se vytvá í velké mnoºství uzl, které v map z stávají, ale nejsou dostate n asto aktivovány p i u ení na n p ichází ada velmi z ídka. Na obrázku A.9 je zrekonstruovaný objekt Dragon p i cílovém rozli²ení 50 000 a 100 000 uzl. Je vid t, ºe uº p i 50 000 uzlech z stává v map více d r a se zvy²ujícím se rozli²ením kvalita rekonstruovaného povrchu dále klesá. Na obrázku A.11 je ukázán výsledek rekonstrukce objektu Místnost p i r zných cílových rozli²eních. Op t lze vid t, jak se p i zvy²ujícím se rozli²ení rekonstruuje více detail objektu. To je je²t lépe vid t na obrázku A.12, kde je detail pohledu dovnit místnosti. Zpo átku se rekonstruují jen hrubé obrysy objektu, jakmile má ale mapa k dispozici více uzl, m ºe se soust edit na modelování v t²ích detail. Nap íklad zá ivka u stropu není p i rozli²ení
38 KAPITOLA 6. EXPERIMENTÁLNÍ VÝSLEDKY 1000 a 5000 uzl v podstat v bec zrekonstruována. P i 10 000 uzlech je jiº zrekonstruována v hrubých obrysech a p i 20 000 uzlech ji jiº celkem dob e rozeznatelná. Dal²í zajímavou vlastností algoritmu GSRM je jeho schopnost dokázat se rychle adaptovat na vstupní data. Uº p i velmi malém rozli²ení lze totiº za ít objekt rozeznávat. Objekt Dragon je objekt s relativn sloºitým tvarem a p i jeho rekonstrukci je pot eba dbát na vysokou míru detailu. Jeho model obsahuje tém 450 000 bod, p esto jiº p i výstupním rozli²ení 1000 uzl odpovídá v hrubých obrysech tvar zrekonstruovaného objektu reálnému tvaru objektu (jak je vid t na obr. A.8(a)). Dokonce jsou v map rozpoznatelné jednotlivé detaily, jako je tvar hlavy nebo vzadu zkroucený ocas. Podobn p esn zrekonstruovaný tvar lze pozorovat i v p ípad objektu Místnost (viz. obr. A.11(a)) v tomto p ípad je v²ak pom r mezi výstupním rozli²ením a velikostí vstupní mnoºiny je²t vy²²í (objekt Místnost je sloºen z více neº 800 000 bod ). Místnost po et uzl 1000 5000 10 000 20 000 doba rekonstrukce 0,6s 3,8s 10,5s 37,5s pouze s opt. sniºování chyb. íta e 6,8s 2m 42,2s 10m 47,5s 44m 37,3s pouze s opt. vyhledávání 1,5s 37s 5m 1s 45m 37s zcela bez optimalizací 7,7s 3m 17s 16m 15,5s 1h 33m 42s Tabulka 6.5: Tabulka výsledk rekonstrukce objektu Místnost pro r zné výstupní rozli²ení. 6.3 ƒas pot ebný pro rekonstrukci Jak jiº bylo e eno vý²e, rekonstrukce je provád na b hem velmi krátkého asu v ádu sekund a to nezávisle na velikosti vstupní mnoºiny bod. Toho je dosaºeno p edev²ím implementací optimalizací (viz. kapitola 4). V tabulkách 6.4 a 6.5 je vid t, jak velký je rozdíl v ase pot ebném pro rekonstrukci povrchu bez optimalizace a s ní. S optimalizací se jedná o asy od desetin sekund pro 1000 výstupních uzl po desítky sekund pro 20 000 výstupních uzl. Naopak bez optimalizací jsou to asy od jednotek sekund pro 1000 uzl po více neº hodinu a p l pro 20 000 uzl. Velikost rozdílu je v n kolika ádech a zvy²uje se se zvy²ujícím se po tem výstupních uzl. V tabulkách 6.4 a 6.5 jsou také uvedeny doby rekonstrukcí s aplikovanou pouze jednou optimalizací bu je optimalizováno pouze vyhledávání nejbliº²ích uzl ke vstupnímu signálu, nebo je optimalizováno pouze sniºování íta chyb parametrem β. Z tabulek je vid t, ºe p i men²ím cílovém rozli²ení se více uplatní optimalizace vyhledávání a se zvy²ujícím se cílovém rozli²ení se vlivy obou optimalizací na dobu rekonstrukce p ibliºují. V t²í vliv optimalizovaného vyhledávání p i men²ím po tu uzl je dán tím, ºe uzly jsou v prostoru více rozprost eny a rozd lení prostoru na krychle tak výrazn pomáhá (není pot eba procházet tolik uzl ). Optimalizace sniºování chybových íta je zaloºena na tom, ºe u v t²iny uzl v map není b hem u ících cykl zapot ebí s íta i v bec pracovat (jejich hodnoty se nem ní). P i malém
6.4. SHRNUTÍ 39 po tu uzl v map jsou v²ak chybové íta e m n ny u v t²í ásti celkového po tu uzl. Tato optimalizace se tak uplat uje jen áste n. P i vy²²ím cílovém rozli²ení je vliv obou optimalizací srovnatelný, protoºe vyhledávání se provádí stále na men²ím po tu uzl, ale po et uzl, u kterých dochází ke sniºování chybových íta, vzhledem k celkovému po tu uzl se sniºuje vliv optimalizace sniºování chybových íta se tak více uplat uje. Na tom je vid t, jak byly optimalizace pot ebné a pro je bylo nezbytné implementovat. Zárove je to d kaz toho, ºe pro optimalizace byly opravdu vybrány ty ásti algoritmu, které ho nejvíce zpomalovaly. Pozitivní není jenom pom r mezi neoptimalizovaným a optimalizovaným b hem, ale i samotná velmi krátká doba b hu. Nap. ve srovnání s dobou, která je pot eba k sejmutí sken z robotu, je n kolikanásobn krat²í. To nazna uje, ºe by v budoucnu mohl být tento algoritmus pouºit pro mapování prost edí uº b hem jízdy robotu. Z tabulek 6.4 a 6.5 je také vid t, ºe doba b hu je v podstat závislá jen na cílovém rozli²ení rekonstrukce. Ta závislost v²ak není lineární, coº je vid t i na grafu 6.1, kde je vynesena závislost asu pot ebného pro rekonstrukci na velikosti výstupního rozli²ení pro je²t více p ípad neº je v tabulkách. Nelineárnost závislosti je dána tím, ºe ani sloºitost struktury mapy se nezvy²uje lineárn. P i vy²²ím po tu uzl v map obsaºených je propojení uzl vy²²í, a p estoºe se optimalizacemi povedlo eliminovat v t²inu p ípad, kdy bylo pot eba procházet v²echny uzly, stále je pot eba procházet v²echny uzly b hem kroku p idávání nového uzlu do mapy. B hem tohoto kroku je také pot eba procházet v²echny sousedy uzlu s nejvy²²í hodnotou chybového íta e a takových soused také p ibývá s vy²²í sloºitostí struktury mapy. Tyto dva aspekty se s nejv t²í pravd podobností jeví jako p í ina r stu doby pot ebné pro rekonstrukci. 6.4 Shrnutí B hem p edchozích podkapitol byla zanalyzována kvalita výstup algoritmu pro nejr zn j²í výstupní rozli²ení a na nejr zn j²ích objektech. Z obrázk je vid t, ºe kvalita zrekonstruovaných povrch, i díky dob e navrºenému postprocesingu, je vysoká. Algoritmus je schopen velmi dob e adaptovat neuronovou sí na vstupní mnoºinu bod a zrekonstruovat tak celkový tvar objektu i jeho jednotlivé detaily. Zárove bylo ukázáno, ºe navrºené optimalizace výrazn sniºují as pot ebný pro rekonstrukci.
40 KAPITOLA 6. EXPERIMENTÁLNÍ VÝSLEDKY Obrázek 6.1: Doba rekonstrukce objekt Místnost a Dragon p i r zných výstupních rozli²eních vynesená do grafu.
Kapitola 7 Záv r Cílem bakalá ské práce bylo implementovat rostoucí samoorganizující se neuronovou sí Growing Self-recontruction Maps (GSRM) [19] slouºící k rekonstrukci povrchu 3D objektu a p edev²ím ukázat, ºe tento algoritmus lze s úsp chem pouºít i na rekonstrukci senzorických dat nam ených mobilním robotem. Algoritmus GSRM byl implementován. Zárove s implementací algoritmu byl navrhnut vlastní postprocesing, bez kterého by nebylo moºné dosahovat tak vysoké kvality zrekonstruovaného povrchu objekt. Algoritmus je schopen detailn zrekonstruovat povrch objektu, p i emº míru detailu lze ídit nastavením výstupního rozli²ení. V experimentech bylo prokázáno, ºe tímto algoritmem lze rekonstruovat jak modely 3D objekt jako jsou modely so²ek a pod., tak i modely prost edí získaných z m ení mobilního robotu. Byly také navrhnuty a implementovány optimalizace, které velmi významn zkracují as pot ebný pro rekonstrukci v experimentech bylo ukázáno, ºe je to aº 150-krát pro nejvy²²í pouºité rozli²ení. S optimalizacemi trvá rekonstrukce povrchu jen n kolik sekund (p i nejvy²²ím výstupním rozli²ení 20ti tisíc uzl trvala rekonstrukce p ibliºn 35 sekund) nezávisle na velikosti vstupní mnoºiny bod, coº bylo v experimentech ov eno na modelech obsahujících p ibliºn 170 aº 800 tisíc bod. Velmi krátký as rekonstrukce nazna uje, ºe by mohlo být moºné pouºít tento algoritmus pro mapování prost edí jiº b hem jízdy robotu. Algoritmus by v tom p ípad bylo pot eba modikovat, aby dokázal zpracovávat vstupní data postupn tak, jak budou dostupná z mobilního robotu. K dal²ímu zrychlení algoritmu by mohlo dojít p i optimalizaci kroku, ve kterém se p idávají nové uzly do mapy. Bylo by zapot ebí zrychlit vyhledávání nejh e adaptovaných míst mapy p i zachování pozitivního dopadu jiº navrºených optimalizací. V²e vý²e uvedené m ºe být náplní dal²í práce spole n s dal²ím vylep²ením algoritmu s cílem co nejvíce eliminovat pot ebu záv re ného postprocesingu. Pokud by se poda ilo postprocesing zcela eliminovat, bylo by moºné rekonstrukci kdykoli v pr b hu p eru²it a získat tak zrekonstruovaný povrch objektu v aktuálním rozli²ení. 41
42 KAPITOLA 7. ZÁV R
P íloha A Obrázky výsledk rekonstrukcí objekt (a) Dragon (b) Arm (c) Místnost Obrázek A.1: Vstupní body jednotlivých objekt. 43
44 P ÍLOHA A. OBRÁZKY VÝSLEDK REKONSTRUKCÍ OBJEKT (a) P ed postprocesingem (b) Po postprocesingu Obrázek A.2: Zrekonstruovaný objekt Dragon 20 000 uzly.
45 (a) P ed postprocesingem (b) Po postprocesingu Obrázek A.3: Zrekonstruovaný objekt Arm 20 000 uzly.
46 P ÍLOHA A. OBRÁZKY VÝSLEDK REKONSTRUKCÍ OBJEKT (a) P ed postprocesingem (b) Po postprocesingu Obrázek A.4: Zrekonstruovaný objekt Místnost 20 000 uzly. Obrázek A.5: Detail nekvalitn zrekonstruované ásti objektu Dragon, na kterém jsou jsou vid t nevytriangulované ásti povrchu.
47 (a) Pohled shora (b) Pohled dovnit objektu Obrázek A.6: Detaily zrekonstruovaného objektu Arm. Obrázek A.7: Detail zrekonstruovaného objektu Místnost - pohled od dve í dovnit místnosti.
48 P ÍLOHA A. OBRÁZKY VÝSLEDK REKONSTRUKCÍ OBJEKT (a) 1000 uzl (b) 5000 uzl (c) 10 000 uzl (d) 20 000 uzl Obrázek A.8: Rekonstrukce objektu Dragon v r zných rozli²eních.
49 (a) 50 000 uzl (b) 100 000 uzl Obrázek A.9: Ukázka p eu ení sít p i rekonstrukci objektu Dragon. P i p eu ení vzniká více nevytriangulovaných d r v zrekonstruovaném povrchu.
50 P ÍLOHA A. OBRÁZKY VÝSLEDK REKONSTRUKCÍ OBJEKT (a) 1000 uzl (b) 5000 uzl (c) 10 000 uzl (d) 20 000 uzl Obrázek A.10: Detail hlavy zrekonstruovaného objektu Dragon v r zných rozli²eních.
51 (a) 1000 uzl (b) 5000 uzl (c) 10 000 uzl (d) 20 000 uzl Obrázek A.11: Rekonstrukce objektu Místnost v r zných rozli²eních.
52 P ÍLOHA A. OBRÁZKY VÝSLEDK REKONSTRUKCÍ OBJEKT (a) 1000 uzl (b) 5000 uzl (c) 10 000 uzl (d) 20 000 uzl Obrázek A.12: Detail pohledu dovnit místnosti rekonstruovaného objektu Místnost v r zných rozli²eních.