Topologická kostra Medial Axis. Straight Skeleton. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie. Přírodovědecká fakulta UK. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Topologická geoinformatiky kostraa kartografie. Přírodovědecká fakulta UK.) 1 / 53
Obsah přednášky 1 Ukázka použití 2 Formulace problému 3 Medial Axis 4 Straight skeleton Použití skeletonů omáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Topologická geoinformatiky kostraa kartografie. Přírodovědecká fakulta UK.) 2 / 53
Ukázka použití 1. Rekonstrukce tvaru střechy Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikovanétopologická geoinformatiky kostra a kartografie. Přírodovědecká fakulta UK.) 3 / 53
Formulace problému 2. Formulace problému Dáno: Uzavřený, ohraničený region C v R 2. Hledáme: Topologická kostra C. Topologická kostra (tzv. skeleton), výsledek procesu zvaného skeletonizace. Skeletonizace provádí dekompozici C na posloupnost jednodušších 1D entit (linie, křivky). Cílem zjednodušení tvaru C při zachování její tvarové charakteristiky (redukce množství informace). Diskrétní varianta skeletonu: Hranici C tvoří uzavřená lomená čára tvořená n vrcholy p i, použití diskrétní varianty skeletonu reprezentované posloupností úseček. Výhodné pro geoinformatiku, snadnější výpočty. Dva typy skeletonu: Medial Axis Straight skeleton Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Topologická geoinformatiky kostraa kartografie. Přírodovědecká fakulta UK.) 4 / 53
Formulace problému 3. Ukázka skeletonu Medial Axis Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Topologická geoinformatiky kostraa kartografie. Přírodovědecká fakulta UK.) 5 / 53
Medial Axis 4. Medial Axis tzv. Střední osa, (Blum 1967) Analogie střední osy v přírodě: vypalování trávy v nějaké oblasti C. Formální definicie vycházejí z pojmu maximální disk (resp. maximální kruh). Definice 1: Medial Axis je množina všech bodů, které mají nejméně dva nejbližší body na hranici C. Definice 2: Množina středů všech vnitřních maximálních disků k množiny C. Maximální kruh: Nechť k(s, r) je maximální kruh vepsaný do oblasti C tak, že: k(s, r) tečný k C ve dvou a více bodech p i. k(s, r) neobsahuje žádné další body P i. Pro oblast C existuje nekonečně mnoho různých k. Množina všech středů S při translaci k po C tvoří Medial Axis. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Topologická geoinformatiky kostraa kartografie. Přírodovědecká fakulta UK.) 6 / 53
5. Ukázky Medial Axis Medial Axis Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Topologická geoinformatiky kostraa kartografie. Přírodovědecká fakulta UK.) 7 / 53
Medial Axis 6. Medial Axis Transformation Definice 3: Medial Axis M množiny C označovaná jako M(C) představuje takovou množinu bodů q, pro které existují nejméně dva různé body p i, p j na hranici C takové, že vzdálenost d(q, p i ) = d(q, p j ) a obě vzdálenosti jsou minimálními vzdálenostmi mezi bodem q a hranicí C. M(C) = {q q p i = q p j = min{ p m m C}, } p i, p i, p j C, m C} Bod q je označován jako bod skeletonu. Proces transformace C v M(C)označován jako Medial Axis Transformation. Poloměr maximálního kruhu R(q) = min{ q u u C, q M(C)} u Střední osa je množina obecných křivek (pro diskrétní množiny parabol). Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Topologická geoinformatiky kostraa kartografie. Přírodovědecká fakulta UK.) 8 / 53
Medial Axis 7. Zobecněný Voroného diagram V předchozí přednášce předpoklad: generátory p i jsou pouze body. Generátorem mohou být i 1D/2D entity: linie, lomené čáry, kruhové oblouky, kružnice,... Takové V(p i ) nemusejí být konvexní, hranice buněk obecné křivky. Nechť L je množina generátorů L = {L 1,..., L n }, kde L i představuje bodový, liniový nebo plošný generátor (generátory se vzájemně neprotínají). Minimální vzdálenost mezi q a L i, kde L i = {p 1,..., p n } d s (q, L i ) = min{ q p j p j L i } Takové Voronoi diagramy nazýváme Voronoi diagramy generované L a označujeme jako V(L, d) = {V(L 1 ),..., V(L n )} Medial Axis M(C) úzce souvisí s V(L, d). Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Topologická geoinformatiky kostraa kartografie. Přírodovědecká fakulta UK.) 9 / 53
8. Ukázka V(L, d) Medial Axis Okabe et al, 2000. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Topologická geoinformatiky kostraa kartografie. Přírodovědecká fakulta UK.) 10 / 53
Medial Axis 8. Voroného diagramy s bodovými a liniovými generátory Nechť L i L představuje bod či liniový segment. Nechť koncové body linie L i označeny jako p i1 a p i2. q p i1 p R i1 d s(p, L i) = q p i2 p R i2 (q p i1) (q p i1) T (p i2 p i1 ) p i2 p i1 (p i2 p i1) p R i3 = R 2 \ [R i1 R i2] Jaký tvar budou mít bisektory L i, L j? Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Topologická geoinformatiky kostraa kartografie. Přírodovědecká fakulta UK.) 11 / 53
9. Tvary bisektorů Medial Axis Existují 4 typy bisektorů v závislosti generátorů. Typ 1: Generátory p i, p j jsou body: bisektorem přímka kolmá p i, p j. Typ 2: Generátorem bod p i1 a úsečka L i, kde p i1 L i : bisektorem přímka kolmá L i procházející bodem p i1. Typ 3: Generátorem bod p i1 a úsečka L i, kde p i1 / L i : bisektorem parabola. Typ 4: Generáty L i, L j tvořeny úsečkami: bisektorem osa úhlu. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Topologická geoinformatiky kostraa kartografie. Přírodovědecká fakulta UK.) 12 / 53
Medial Axis 10. Ilustrace tvarů bisektorů Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Topologická geoinformatiky kostraa kartografie. Přírodovědecká fakulta UK.) 13 / 53
11. Typy vrcholů Q Medial Axis Existují 4 typy bisektorů v závislosti generátorů. Typ 1: 3 bodové generátory p i, p j, p k, trojice hran je typu 1. Typ 2: Generátory vrcholu Q představují bod p i, úsečka L j a bod p j1 L j. Hrany jsou typu 1,2,3. Typ 3: Generátory vrcholu Q představují úsečka L i a dva body p j, p k / L i. Hrany jsou typu 1,3. Typ 4: Generátory vrcholu Q představují úsečky L i, L j a bodem p ij L i. Hrany jsou typu 2,3,4. Typ 5: Generátory vrcholu Q představují bod p i a dvě úsečky L j, L k, p i / L j, p i / L k. Hrany jsou typu 3,4. Typ 6: Generátory vrcholu Q představují tři úsečky L i, L j, L k, p i / L j, p i / L k. Hrany jsou typu 4. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Topologická geoinformatiky kostraa kartografie. Přírodovědecká fakulta UK.) 14 / 53
Medial Axis 12. Ukázka typů vrcholů Q Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Topologická geoinformatiky kostraa kartografie. Přírodovědecká fakulta UK.) 15 / 53
Medial Axis 13. Ukázka V(L, d) s bodovými a liniovými generátory Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Topologická geoinformatiky kostraa kartografie. Přírodovědecká fakulta UK.) 16 / 53
Medial Axis 14. Souvislost Medial Axis a Voroného diagramu Nechť L = C, tj. množina generátorů tvořena segmenty tvořícími hranici oblasti C. Nechť V(L, d) představuje Voronoi diagram nad množinou C s generátory L. Medial Axis M(C) tvořena V(l, d), z něhož odstraněny hrany ležící vně C. M(C) = V(l, d) h(v(l, d)) / C. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Topologická geoinformatiky kostraa kartografie. Přírodovědecká fakulta UK.) 17 / 53
Medial Axis 15. Medial Axis a její konstrukce Metody konstrukce Medial Axis lze rozdělit do tří skupin: Exaktní metody Konstrukce s využívající definici M(C) jako posloupnosti parabolických oblouků. Voronoi diagramy Voronoi teselace či zobecněné Voronoi teselace. Vzdálenostní metody Dekompozice C na konvexní podoblasti, hledány konvexní oblasti protnuté M(C). Pokud je hranicí C křivka, pak C aproximována mnohoúhelníkem C. Následně konstruována M(C ). Výsledkem diskrétní varianta Medial Axis. Většina algoritmů poměrně komplikovaná, použijeme aproximační algoritmus spadající do 2. skupiny. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Topologická geoinformatiky kostraa kartografie. Přírodovědecká fakulta UK.) 18 / 53
Medial Axis 16. Konstrukce Medial Axis aproximací V(L, d) Algoritmus založen na souvislosti M(C) tvořena V(L, d). Exaktní konstrukce V(L, d) však poměrně složitá, algoritmus používá přibližné řešení. Jak modelovat liniové generátory? Vytvořena pomocná množina generátorů Ω. Každý liniový generátor L i pokryt dostatečně hustou množinou bodových generátorů Ω = {ω i }. Voronoi generátor V(L, d) s liniovými generátory aproximován Voronoi diagramem V(P + Ω) s bodovými generátory. Pokud ω i ω j 0, pak V(P + Ω) V(L, d) Následně z V(P + Ω) odstraněny hrany ležící vně C. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Topologická geoinformatiky kostraa kartografie. Přírodovědecká fakulta UK.) 19 / 53
Medial Axis 17. Ilustrace konstrukce Medial Axis aproximací V(L, d) Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Topologická geoinformatiky kostraa kartografie. Přírodovědecká fakulta UK.) 20 / 53
18. Výsledek konstrukce Medial Axis Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Topologická geoinformatiky kostraa kartografie. Přírodovědecká fakulta UK.) 21 / 53
19. Nevýhody metody Medial Axis Nedořešená topologie, aproximovaná Medial Axis neprochází vrcholy. Pokud není množina Ω dostatečně hustá, tvar generované Medial Axis přibližný. Zlepšení tvaru: vzdálenost dvou libovolných sousedních bodů ω i, ω j ω i ω j = konst. V opačném případě nevhodný tvar DT (P + Ω) způsobí nahrazení rovných segmentů oscilujícími segmenty. Nutno volit body ω s konstantní hustotou závisející na délce L. Aproximace Medial Axis tvarově přijatelná až pro množiny bodů s velkou hustotou. Množina Ω může být výrazně větší než P! Pro velká n výrazný nárůst času nutného pro konstrukci V (P + Ω). Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Topologická geoinformatiky kostraa kartografie. Přírodovědecká fakulta UK.) 22 / 53
20. Citlivost Medial Axis Medial Axis Značná citlivost M(C) vůči oscilacím bodů vstupní množiny C. Malá odchylka v poloze bodu vyvolá velkou změnu tvaru Medial Axis. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Topologická geoinformatiky kostraa kartografie. Přírodovědecká fakulta UK.) 23 / 53
Straight skeleton 21. Vlastnosti Straight Skeletonu Aichholzer et al, 1997. Pro konvexní útvary je Straight Skeleton = Medial Axis. Odstranění nevýhod Medial Axis: menší citlivost tvaru vůči šumu. topologická kostra tvořena pouze liniovými prvky. menší výpočetní složitost. Straight Skeleton pro řadu aplikací v geoinformatice vhodnější. Na rozdíl od Medial Axis, která je definována s využitím Voronoi diagramů, Straight Skeleton definován s využitím smršťovacího procesu (Shrinking Process). Algoritmus konstrukce Straight Skeletonu: Felkel & Obdržálek, 1997. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Topologická geoinformatiky kostraa kartografie. Přírodovědecká fakulta UK.) 24 / 53
Straight skeleton 22. Ukázka Straight Skeletonu Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Topologická geoinformatiky kostraa kartografie. Přírodovědecká fakulta UK.) 25 / 53
Straight skeleton 23. Straight Skeleton Definice: Straight Skeleton S uzavřené a ohraničené množiny C označovaný jako S(C) je tvořen sjednocením částí všech bisketorů b i incidujících stran e i, e j množiny C. Smršťovací proces: Posouváme li současně strany e oblasti C konstantní rychlostí v směrem dovnitř, jejich délky se zmenšují. Vrcholy C se pohybují po bisektorech b incidujících stran a tvoří S(C). Segmenty skeletonu tvoří ABN (Angular Bisector Network). Postup připomíná opakované ořezávání C, C se sesouvá sama sebe tak dlouho, dokud A(C) 0. Při smršťování C dochází ke vzniku dvojice událostí: Edge Event Split Event Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Topologická geoinformatiky kostraa kartografie. Přírodovědecká fakulta UK.) 26 / 53
Straight skeleton 24. Edge Event a Split Event Sesouvání hran probíhá s konstantní rychlostí, pořadí vzniku událostí závisí na vzdálenosti průsečíku dvou sousedních bisektorů od generující hrany. Edge Event: e 0, strana zaniká. Tento bod se stává novým uzlem S(C) stupně 3. Počet stran oblasti C se sníží o jednu, vznikne nová dvojice sousedících stran e i, e j. Split Event: Posunující se vrchol p rozdělí protilehlou hranu e v bodě q na dvě nové hrany e 1, e 2. C rozdělena na dvě podoblasti C 1, C 2. Bod q novým uzlem S(C). {C = C 1 C 2 C 1 C 2 = q e 1 C 1 e 2 C 2} Každá z podoblastí C 1, C 2 zpracovávána analogicky jako C. Rekurzivní řešení problému. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Topologická geoinformatiky kostraa kartografie. Přírodovědecká fakulta UK.) 27 / 53
Straight skeleton 25. Ilustrace Edge Event a Split Event Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Topologická geoinformatiky kostraa kartografie. Přírodovědecká fakulta UK.) 28 / 53
Straight skeleton 26. Degenerovaný Straight skeleton Pokud vrcholy C leží na kružnici, je S(C) je degenerovaný, obsahuje uzly vyšších stupňů. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Topologická geoinformatiky kostraa kartografie. Přírodovědecká fakulta UK.) 29 / 53
Straight skeleton 27. Další vlastnosti Straight Skeletonu S(C) provádí dekompozici C na n monotónních polygonů, na rozdíl od V(p) mohou být nekonvexní. Každý bisektor b je průsečnicí dvojice polorovin definovaných indidentními hranami e, e. Vztah mezi počtem počtem bodů a počtem vrcholů S(C): Nechť r představuje počet reflexních (tj. nekonvexních) vrcholů v C, n s počet segmentů skeletonu. n s (M(c)) = 2n 3 + r n s (S(C)) = 2n 3 Platí pro nedegenerované skeletony. Pro nekonvexní C je S(C) tvořen menším počtem segmentů než M(C). Grafová reprezentace S(C): S(C) představuje binární strom tvořený n 2 uzly a 2n 3 hranami (nedegenerované skeletony). Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Topologická geoinformatiky kostraa kartografie. Přírodovědecká fakulta UK.) 30 / 53
Straight skeleton 28. Konstrukce Straight skeletonu: LAV Pokud je C konvexní, užívána datová struktura List of Active Vertices (LAV) představovaná kruhovým seznamem. Pro nekonvexní oblasti v důsledku Split Event dochází pro každý reflexní vrchol k rozdělení C na dvě podoblasti. Pro každou podooblast uchováván samostatný LAV. Všechny LAV pro oblast C uloženy v kruhovém seznamu (SLAV), Set of Circular List of Active Vertices. Popis LAV: Všechny vrcholy V i uloženy ve dvojitém kruhovém seznamu. Každý vrchol V i obsahuje pointery na dvě sousedící hrany e i 1 = V i 1 V i a e i = V i V i+1. Pro každý vrchol V i je uchováván bližší z průsečíků bisektoru b i se sousedícími bisektory b i 1 a b i+1 označený jako I s počátečními body V i 1 a V i. Pro každé I uchovávány pointery na vrcholy V a, V b generující hrany e (ze kterých vznikl). Body I uchovávány v priporitní frontě Q dle vzdálenosti od hrany e i. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Topologická geoinformatiky kostraa kartografie. Přírodovědecká fakulta UK.) 31 / 53
29. Ilustrace LAV Straight skeleton Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Topologická geoinformatiky kostraa kartografie. Přírodovědecká fakulta UK.) 32 / 53
Straight skeleton 30. Princip Edge Event Nechť I představuje libovolný průsečík s dvojici pointerů na vrcholy V a, V b představující počáteční vrcholy hran e a, e b. V tomto kroku e 0, tj. strana zaniká. Bod I se stává novým vrcholem V a je přidán do LAV. Nový bod V musí uchovávat pointery na vrcholy V a, V b. Nutno provést update struktury LAV : Vrcholy V a, V b označeny jako zpracované. Z vrcholu V uchovat pointery na V a, V b. Přesměrovat předchůdce předchůdce V (tj. předchůdce V a ) na V a opačně. Přesměrovat následníka následníka V (tj. následníka V b ) na V a opačně. Další kroky: Konstrukce bisektoru b v bodě I. Opakování bodů C) - F). Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Topologická geoinformatiky kostraa kartografie. Přírodovědecká fakulta UK.) 33 / 53
31. Update LAV, krok 1 Straight skeleton Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Topologická geoinformatiky kostraa kartografie. Přírodovědecká fakulta UK.) 34 / 53
32. Update LAV, krok 2 Straight skeleton Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Topologická geoinformatiky kostraa kartografie. Přírodovědecká fakulta UK.) 35 / 53
33. Update LAV, krok 3 Straight skeleton Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Topologická geoinformatiky kostraa kartografie. Přírodovědecká fakulta UK.) 36 / 53
34. Princip Split Event Straight skeleton Událost Split Event způsobena přítomností reflexního vrcholu, tj. vykytuje se pouze u C s nekonvexním vrcholem. Neplatí implikace, tj. přítomnost reflexního vrcholu automaticky nezaručuje vznik Split Event. Bod, ve kterém dochází k Split Event má stejnou vzdálenost od hran generujícího vrcholu V i a protilehlé hrany. V bodě A dochází k Edge Event, v bodě B ke split Event. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Topologická geoinformatiky kostraa kartografie. Přírodovědecká fakulta UK.) 37 / 53
Straight skeleton 35. Nalezení protilehlé hrany Test protilehé hrany: leží bod V uvnitř trojúhelníku tvořeného testovanou hranou a jejími bisektory? V praxi test existence průsečíku bisektoru b vrcholu V B a testované hrany e. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Topologická geoinformatiky kostraa kartografie. Přírodovědecká fakulta UK.) 38 / 53
36. Výpočet průsečíku B Straight skeleton Bod B leží na průsečíku bisektoru procházejícím vrcholem V a bisektorem tvořeným prodloužením stran incidujících s B a testované hrany e. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Topologická geoinformatiky kostraa kartografie. Přírodovědecká fakulta UK.) 39 / 53
Straight skeleton 37. Rozpad LAV při Split Event Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Topologická geoinformatiky kostraa kartografie. Přírodovědecká fakulta UK.) 40 / 53
38. Inicializace algoritmu Straight skeleton Inicializace algoritmu tvořena následujícími kroky: (A) Vrcholy V 1, V 2,..., V n přidány do LAV, každý z vrcholů nastaven atribut aktivní. (B) Každému vrcholu V i přidej pointery n dvě sousedící strany: e i 1 = V i 1 V i, e i = V i V i+1. (C) Pro každý vrchol V i spočítej bisektor b i. (D) Pro každý nereflexní vrchol V i spočteme bližší z dvojice průsečíků bisektoru b i s bisektory b i 1, b i+1 sousedních vrcholů V i 1, I i a označíme ho V i, tj. Edge Event. (E) Pro každý reflexní vrchol V i spočítej průsečík I i s protilehlou hranou e a označíme ho V i, tj. Split Event. (F) Každý vrchol V i uložíme do prioritní fronty Q na základě vzdálenosti d(e i, V i ) s informací, zda se jedná o Edge Event nebo SplitEvent. (G) Pro každý průsečík I i uložíme dvojici pointerů na vrcholy V a, V b představující počáteční body bisektorů, jejichž průsečíkem bod I i vznikl. Z bodů V a, V b lze identifikovat odpovídající hrany e a, e b. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Topologická geoinformatiky kostraa kartografie. Přírodovědecká fakulta UK.) 41 / 53
Straight skeleton 39. Implementace algoritmu Algoritmus využívá prioritní frontu Q a datovou strukturu LAV. Celková složitost O(n 2 ). Algoritmus 1: Straight Skeleton 1: Inicializace algoritmu, body A) - G). 2: Dokud Q není prázdné: 3: pop(i) z Q. 4: Pokud I Edge Event pprocessedgeevent(). 5: Jinak ProcessSplitEvent(). Metody ProcessEdgeEvent resp. ProcessSplitEvent tvořeny realizují zánik hrany resp. rozdělení LAV na dvě nové LAV a jejich uložení do SLAV. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Topologická geoinformatiky kostraa kartografie. Přírodovědecká fakulta UK.) 42 / 53
Straight skeleton 40. Implementace ProcessEdgeEvent() 1: Pokud vrcholy V a, V b průsečíku I označeny jako zpracované, ukonči. 2: Pokud se předchůdce vrcholu předcházejícího vrcholu V a rovsná V b, do skeletonu jsou přidány 3 následující hrany: V a I, V b I a V c I, kde bod V c je předchůdcem bodu V a a následníkem bodu V b. Ukonči. 3: Do skeletonu jsou přidány hrany V a I, V b I. 4: Modifikace struktury LAV: Označení vrcholů V a, V b, na které se odkazuje I, jako zpracované. Vytvoření nového vrcholu V se souřadnicemi odpovídajícími bodu I. Přidání vrcholu V do LAV, tj. napojení vrcholu na předchůdce V a a následníka V b. Napojení vrcholu V na hrany e a a e b, na které ukazují vrcholy V a, V b. 5: Pro každý nový uzel V vytvořený z I: Spočítej nový bisektor b mezi liniemi, na které ukazují e a a e b. Spočítej průsečíky tohoto bisektoru s průsečíky bisektorů ze sousedních vrcholů k V, dále viz D) -G). Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Topologická geoinformatiky kostraa kartografie. Přírodovědecká fakulta UK.) 43 / 53
Straight skeleton 41. Implementace ProcessSplitEvent() 1: Pokud vrchol V průsečíku I označen jako zpracovaný, ukonči. 2: Přidej do skeletonu hranu V, I. 3: Modifikace struktury LAV: Označení vrcholu V, na které se odkazuje I, jako zpracované. Vytvoření dvojice nových vrcholů V 1, V 2 se souřadnicemi odpovídajícími bodu I. Nalezení protilehlé hrany v SLAV. Přidání vrcholů V 1, V 2 do SLAV a rozdělení LAV do dvou částí: průsečíky V 1, V 2 napojeny na své předchůdce a následníky. Napojení hran incidujících s V 1, V 2 na své předchůdce a následníky. 4: Pro každý nový uzel V vytvořený z I: Spočítej nové bisektory b z V 1, V 2. Spočítej průsečíky tohoto bisektoru s průsečíky bisektorů ze sousedních vrcholů k V, dále viz D) -G). Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Topologická geoinformatiky kostraa kartografie. Přírodovědecká fakulta UK.) 44 / 53
42. Vertex Event Straight skeleton Navrhovaná implementace nepostihuje situaci, kdy při Split Event protne vrchol smršťující se strany vrchol protilehlé strany. Protilehlá hrana není rozdělena na dvě nové hrany, C však rozdělena na dvě podoblasti C 1, C 2. Tato událost nazvána Vertex Event (Cacciola, 2004). Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Topologická geoinformatiky kostraa kartografie. Přírodovědecká fakulta UK.) 45 / 53
Straight skeleton Použití skeletonů 43. Použití skeletonů Nejčastější použití skeletonizačních algoritmů: Extrake skeletounu pro automatizovanou vektorizaci. OCR (Optival Character Recognition), automatizované rozpoznávání textu. Biometrie. Kartografická generalizace. Automatizovaná rekonstrukce tvaru střechy. Automatické umisťování popisů v mapách. Segmentace dat. Offset polygonu. Dekompozice polygonu na monotónní oblasti. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Topologická geoinformatiky kostraa kartografie. Přírodovědecká fakulta UK.) 46 / 53
Straight skeleton 44. Sekvenční ztenčování Použití skeletonů Aplikace na rastrová data, provádí zeslabování rastrových linií. Aplikace erozního filtru 3 x 3. Použití pro OCR. Ukázka sekvenčního ztenčování s kroky po 10 iteracích. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Topologická geoinformatiky kostraa kartografie. Přírodovědecká fakulta UK.) 47 / 53
Straight skeleton Použití skeletonů 45. Kartografická generalizace prostorovou redukcí. Změna prostorové dimenze generalizovaného objektu s cílem zjednodušení jeho tvaru a zachování tvarových charakteristik. Nejčastější varianty: 2D 1D. 1D 0D. Využití generalizace prostorovou redukcí u prvků výrazně protáhlého tvaru (vodní toky, komunikace), které nelze v daném měřítku zobrazit plošně (v měřítku mapy menší šířka než cca 1mm). Jak dekomponovat prvek snížením dimenze? Aplikací skeletonizačního algoritmu, výsledkem lomená čára tvarově aproximující původní oblast C (Galanda, 2003; Cacciola, 2006). Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Topologická geoinformatiky kostraa kartografie. Přírodovědecká fakulta UK.) 48 / 53
Straight skeleton Použití skeletonů 46. Ukázka generalizace vodního toku prostorovou redukcí Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Topologická geoinformatiky kostraa kartografie. Přírodovědecká fakulta UK.) 49 / 53
Straight skeleton Použití skeletonů 47. Ukázka generalizace vodního toku prostorovou redukcí Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Topologická geoinformatiky kostraa kartografie. Přírodovědecká fakulta UK.) 50 / 53
Straight skeleton Použití skeletonů 48. Použití skeletonu při automatickém popisu vodních toků Automatizované umístění popisů kartografických prvků představuje poměrně složitý problém. U prvků tvarově členitých je vhodné umisťovat popis tak, aby kopíroval tvar tohoto prvku. Písmena jsou umísťována na zvolený segment skeletonu nebo rovnoběžně s tímto segmentem v zadaném odstupu. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Topologická geoinformatiky kostraa kartografie. Přírodovědecká fakulta UK.) 51 / 53
Straight skeleton 49. Rekontrukce tvaru střech Použití skeletonů K dispozici půdorys budovy + další datové zdroje (Laser Scanning). Jak z takových dat zrekonstruovat střechu? Fáze 1: První aproximací tvar střechy generovaný z půdorysu Straight Skeleton. Jednotlivé monotónní polygony S(C) představují roviny střechy. Fáze 2: Upřesnění tvaru střechy z dalších datových zdrojů (Lase Scanning). K dispozici mračno bodů M se známými prostorovými souřadnicemi x, y, z. Průměty bodů M v rovině xy leží v některém monotónním polygonu S(C). Body M ležící v jednom S(C) proložena regeresní rovina. Odlehlé body M vypuštěny (komín, chybný odraz) či opakovaně přesouvány mezi incidujícími polygony (tvar střechy neodpovídá Straight Skeletonu). Hledán takový polygon, od jehož regeresní roviny budou mít přeřazené body nejmenší vzdálenost. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Topologická geoinformatiky kostraa kartografie. Přírodovědecká fakulta UK.) 52 / 53
Straight skeleton Použití skeletonů 50. Znázornění rekontrukce tvaru střech Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Topologická geoinformatiky kostraa kartografie. Přírodovědecká fakulta UK.) 53 / 53