Konvexní obálka množiny bodů.

Podobné dokumenty
Konvexní obálka množiny bodů.

Triangulace. Význam triangulace. trojúhelník je základní grafický element aproximace ploch předzpracování pro jiné algoritmy. příklad triangulace

Geometrické vyhledání.

Algoritmy používané ve výpočetní geometrii

Geometrické vyhledávání

Dynamické datové struktury III.

Triangulace. RNDr. Petra Surynková, Ph.D. Univerzita Karlova v Praze Matematicko-fyzikální fakulta.

Voronoiův diagram. RNDr. Petra Surynková, Ph.D. Univerzita Karlova v Praze Matematicko-fyzikální fakulta

Topologická kostra. Medial Axis. Straight Skeleton.

Dynamické datové struktury IV.

Výpočetní geometrie Computational Geometry

Operace s uzavřenými oblastmi v GIS

Úvod do výpočetní geometrie. Základní vztahy.

Dynamické datové struktury I.

Kartografické generalizační algoritmy

Konvexní obal a množina

PLANIMETRIE 2 mnohoúhelníky, kružnice a kruh

Drsná matematika III 1. přednáška Funkce více proměnných: křivky, směrové derivace, diferenciál

Třídící algoritmy. Insert Sort. Bubble Sort. Select Sort. Shell Sort. Quick Sort. Merge Sort. Heap Sort.

AVDAT Mnohorozměrné metody, metody klasifikace Shluková analýza

Vzorce počítačové grafiky

VE 2D A 3D. Radek Výrut. Abstrakt Tento článek obsahuje postupy pro výpočet Minkowského sumy dvou množin v rovině a pro výpočet Minkowského sumy

A4B33ALG 2010/05 ALG 07. Selection sort (Select sort) Insertion sort (Insert sort) Bubble sort deprecated. Quicksort.

Zobrazování těles. problematika geometrického modelování. základní typy modelů. datové reprezentace modelů základní metody geometrického modelování

Maturitní téma: Programovací jazyk JAVA

Detekce kartografického zobrazení z množiny

1 Analytická geometrie

4. Digitální model terénu.

Syntetická geometrie II

Algoritmizace prostorových úloh

Algoritmizace prostorových úloh

Omezíme se jen na lomené čáry, jejichž nesousední strany nemají společný bod. Jestliže A 0 = A n (pro n 2), nazývá se lomená čára uzavřená.

Konvexní obálka v E 3 a dělení prostoru

KMA/GPM Barycentrické souřadnice a

Výpočetní geometrie. Pavel Strachota. 9. listopadu FJFI ČVUT v Praze

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

Rekurze a rychlé třídění

5. P L A N I M E T R I E

Grafové algoritmy. Programovací techniky

Přijímací zkouška na MFF UK v Praze

Rekurzivní algoritmy

Numerické metody a programování. Lekce 8

IB111 Úvod do programování skrze Python

NPRG030 Programování I, 2018/19 1 / :03:07

Grafové algoritmy. Programovací techniky

Bezkontextové jazyky 2/3. Bezkontextové jazyky 2 p.1/27

MATEMATIKA III. π π π. Program - Dvojný integrál. 1. Vypočtěte dvojrozměrné integrály v obdélníku D: ( ), (, ): 0,1, 0,3, (2 4 ), (, ) : 1,3, 1,1,

1 Projekce a projektory

Circular Harmonics. Tomáš Zámečník

7 Konvexní množiny. min c T x. při splnění tzv. podmínek přípustnosti, tj. x = vyhovuje podmínkám: A x = b a x i 0 pro každé i n.

Náplň. v Jednoduché příklady na práci s poli v C - Vlastnosti třídění - Způsoby (algoritmy) třídění

DobSort. Úvod do programování. DobSort Implementace 1/3. DobSort Implementace 2/3. DobSort - Příklad. DobSort Implementace 3/3

64. ročník matematické olympiády Řešení úloh krajského kola kategorie A

Lineární algebra : Lineární (ne)závislost

Dynamické datové struktury II.

Matematika I (KX001) Užití derivace v geometrii, ve fyzice 3. října f (x 0 ) (x x 0) Je-li f (x 0 ) = 0, tečna: x = 3, normála: y = 0

Úsečka spojující sousední vrcholy se nazývá strana, spojnice nesousedních vrcholů je úhlopříčka mnohoúhelníku.

Základní datové struktury III: Stromy, haldy

ZŠ ÚnO, Bratří Čapků 1332

Metamorfóza obrázků Josef Pelikán CGG MFF UK Praha

AVDAT Mnohorozměrné metody, metody klasifikace

Test prvočíselnosti. Úkol: otestovat dané číslo N, zda je prvočíslem

x 2 = a 2 + tv 2 tedy (a 1, a 2 ) T + [(v 1, v 2 )] T A + V Příklad. U = R n neprázdná množina řešení soustavy Ax = b.

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21.

Detekce kartografického zobrazení z množiny bodů

Kybernetika a umělá inteligence, cvičení 10/11

MATURITNÍ TÉMATA Z MATEMATIKY

Jana Dannhoferová Ústav informatiky, PEF MZLU

Úvod do mobilní robotiky AIL028

Definice globální minimum (absolutní minimum) v bodě A D f, jestliže X D f

Zákony hromadění chyb.

Stromy, haldy, prioritní fronty

Lineární algebra : Metrická geometrie

Přijímací zkoušky z matematiky pro akademický rok 2018/19 NMgr. studium Učitelství matematiky ZŠ, SŠ

Matematika II, úroveň A ukázkový test č. 1 (2018) 1. a) Napište postačující podmínku pro diferencovatelnost funkce n-proměnných v otevřené

Gymnázium Jiřího Ortena, Kutná Hora

Kristýna Bémová. 13. prosince 2007

IV. Základní pojmy matematické analýzy IV.1. Rozšíření množiny reálných čísel

Základy matematické analýzy

Různostranný (obecný) žádné dvě strany nejsou stějně dlouhé. Rovnoramenný dvě strany (ramena) jsou stejně dlouhé, třetí strana je základna

GIS Geografické informační systémy

PROGRAMY PRO GIS. Formovat/formulovat problém pro aplikaci v počítači. Fungování GIS programů na základní úrovni - "uvažovat" jako počítač

14. přednáška. Přímka

1 Topologie roviny a prostoru

Úvod do mobilní robotiky AIL028

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 12.

Kružnice, úhly příslušné k oblouku kružnice

Algoritmy výpočetní geometrie

f(x) = arccotg x 2 x lim f(x). Určete všechny asymptoty grafu x 2 2 =

Každá kružnice má střed, označuje se S. Všechny body kružnice mají od středu S stejnou vzdálenost, říká se jí poloměr kružnice a označujeme ho r.

Časová složitost / Time complexity

Rozvinutelné plochy. tvoří jednoparametrickou soustavu rovin a tedy obaluje rozvinutelnou plochu Φ. Necht jsou

SYLABUS 9. PŘEDNÁŠKY Z INŢENÝRSKÉ GEODÉZIE

Obsah přednášky. Analýza algoritmu Algoritmická složitost Návrhy algoritmů Urychlování algoritmů 1/41

Syntetická geometrie I

5 Rekurze a zásobník. Rekurzivní volání metody

9. Je-li cos 2x = 0,5, x 0, π, pak tgx = a) 3. b) 1. c) neexistuje d) a) x ( 4, 4) b) x = 4 c) x R d) x < 4. e) 3 3 b

Syntetická geometrie I

2. Vyšetřete všechny možné případy vzájemné polohy tří různých přímek ležících v jedné rovině.

Syntetická geometrie I

Transkript:

Konvexní obálka množiny bodů. Graham Scan. Jarvis Scan. Quick Hull. Inkrementální metoda. Divide and Conquer. Rotating Calipers. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie. Přírodovědecká fakulta UK. 1 / 56

Obsah přednášky 1 Úvod do problému 2 Formulace problému 3 Metody konstrukce konvexní obálky 4 Minimum Area Enclosing Rectangle 5 Detekce hlavních směrů budov 2 / 56

Úvod do problému 1. Detekce obrysu budovy z klasifikovaných dat Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Konvexní geoinformatiky obálkaamnožiny kartografie. bodpr írodov u. e decká fakulta UK.) 3 / 56

2. Formulace problému Formulace problému Dáno: Hledáme: Množina n bodů S = {p 1,, p 2,..., p n} v R 2, kde p i = [x i, y i]. Nejmenší konvexní množinu C, p i C. (Convex Hull Problem) Definice 1: Konvexní obálka množiny H konečné množiny S v E 2 představuje nejmenší konvexní mnohoúhelník P obsahující S (tj. neexistuje P P splňující definici). Definice 2: Konvexní obálka H množiny konečné množiny S představuje konvexní mnohoúhelník P s nejmenší plochou. Definice 3: Konvexní obálka H množiny konečné množiny S představuje průsečnici všech polorovin obsahujících S. Definice 4: Konvexní obálka H množiny konečné množiny S představuje sjednocení všech trojúhelníků, jejichž vrcholy tvoří body v S. Množinu S označíme jako konvexní, pokud spojnice libovolných dvou prvků leží zcela uvnitř této množiny. 4 / 56

Formulace problému 3. Ukázka konvexní obálky H množiny S 5 / 56

Formulace problému 4. Využití konvexní obálky Jedna z nejpoužívanějších geometrických struktur, pomocná struktura pro řadu algoritmů. Často používána jako první odhad tvaru prostorového jevu Příklady použití: Detekce kolizí: plánování pohybu robotů. Konstrukce MBR: využití v kartografii pro detekci tvaru a natočení budov. Analýza tvarů (Shape Analysis): analýza tvarů objektů. Statistická analýza: analýza rozptylů, odhady, např. metoda Onion Peeling. Analýza shluků (Cluster Analysis): vlastnosti clusterovaných dat. Poznámka: Konvexní obálka H existuje v R d., budeme se zabývat pouze R 2. variantou. 6 / 56

Formulace problému 5. Odhad centroidu metodou Onion Peeling 7 / 56

Metody konstrukce konvexní obálky 6. Metody konstrukce konvexní obálky Přehled nejčastěji používaných metod pro konstrukci konvexní obálky: Jarvis Scan (Gift Wrapping). Graham Scan. Quick Hull. Inkrementální kontrukce. Zametací přímka. Divide and Conquer. Některé z metod použitelné pouze pro R 2, jiné převeditelné do vyšší dimenze. 8 / 56

Metody konstrukce konvexní obálky 7. Jarvis Scan (Jarvis, 1973) Připomíná postup balení dárku do papíru (Gift Wrapping Algorithm). Jednoduchá implementace, lze rozšířit i do R 3. Předpoklad: v S nejsou tři kolineární body. Nutnost předzpracování O(n): nalezení pivotu q q = min (y i ). p i S Princip algoritmu: Dva poslední body H označenyp j 1, p j. Aktuálně přidávaný bod p j+1 do H maximalizuje úhel p j+1 = arg max (p j 1, p j, p i ). p i S Bod p j+1 hledáme ze všech p i S, které dosud nejsou součástí H. Lze je značkovat. 9 / 56

Metody konstrukce konvexní obálky 8. Algoritmus Jarvis Scan Nevýhodou složitost O(n 2 ), nehodí se pro velké S. Snadná implementace. Algoritmus 1: Gift Wrapping (P, H) 1: Nalezení pivota q, q = min(y i ), 2: Přidej q H. 3: Inicializuj: p j 1 X, p j = q, p j+1 = p j 1. 4: Opakuj, dokud p j+1 q: 5: Nalezni p j+1 = arg max pi P (p j 1, p j, p i ) 6: Přidej p j+1 H. 7: p j 1 = p j ; p j = p j+1. 10 / 56

Metody konstrukce konvexní obálky 9. Ukázka Jarvis Scan p j+1 p j+1 ω j p j p x q=p j p j-1 j-1 x p j+1 ω j p j ω j p j p j+1 ω j pj-1 p j-1 x x 11 / 56

10. Graham Scan Metody konstrukce konvexní obálky Algoritmus není možné rošířit do R 3 (Graham 1972). Časová složitost O(n log(n)), lze použít i na rozsáhlé datasety. Převod star-shaped polygonu na H. Princip: Konstrukce star-shaped polygonu z pivotu q. Tvořen vrcholy setříděnými dle úhlu ω = (p i, q, x). Body ve star-shaped polygonu: index j. Kritérium levotočivosti: p j { / H, p j+1 σ r(p j, p j+1),? H, p j+1 σ l(p j, p j+1). Implementace: Prvky v zásobníku S: t (top), t 1 (second). Reflexní vrchol p t odebrán z S, konvexní p j přidán { pop(), p j σ r(p t 1, p t), S push(p j), p j σ l(p t 1, p t). 12 / 56

Metody konstrukce konvexní obálky 11. Ilustrace kritéria levotočivosti 13 / 56

Metody konstrukce konvexní obálky 12. Algoritmus Grahamova skenování Přezpracování O(n): pivot q q = min (y i ). p i S Přezpracování O(n log(n)): setřídění datasetu S podle úhlu k ose x v q. Algoritmus 2: Graham Scan (P, S) 1: Nalezení pivota q = min pi S(y i ), q H. 2: Setřídění p i S dle ω i = (p i, q, x), index j odpovídá setříděnému pořadí. 3: Pokud ω k = ω l, vymaž bod p k, p l bližší ke q. 4: Inicializuj j = 2; S = 5: S q, S p 1 (indexy posledních dvou prvků p t, p t 1 ) 5: Opakuj pro j < n: 6: if p j vlevo od p t 1, p t : 7: S p j 8: j = j + 1 9: else pop S. 14 / 56

Metody konstrukce konvexní obálky 13. Ukázka konstrukce Graham Scan 15 / 56

Metody konstrukce konvexní obálky 14. Ukázka konstrukce Graham Scan 16 / 56

Metody konstrukce konvexní obálky 15. Algoritmus Quick Hull Rychlý, Θ(n lg n), analogie s QuickSortem. Strategie Divide and Conquer, worst case O(n 2 ). Obálka expanduje všemi směry. Princip algoritmu: Předzpracování: setřídění bodů dle x, O(n lg n). Rozdělení S na S U(upper) a S L (lower) vzhledem k (q 1, q 3) q 1 = min (x i), q 3 = max(x i). p i S p i S H konstruována ze 2 částí: Upper Hull (H U), Lower Hull (H L). H U nad S U, H L nad S L. H U, H L zpracovávány separátně, výsledkem sjednocení H(S) = H u(s u) H l(s l). Důvod rychlosti: Většinou málo rekurzivních kroků, málo bodů vně aproximace H U, H L. Pokud S H worst case. 17 / 56

Metody konstrukce konvexní obálky 16. Rozdělení na S U, S L q 4 S U σ U q 3 σ ul q 1 S L q 2 18 / 56

Metody konstrukce konvexní obálky 17. Algoritmus Quick Hull, lokální procedura Nalezení bodu p s indexem ī p = arg max p i (p s, p e) 2, p σ r(p s, p e). p i S Vytvoření nových segmentů (p s, p) a (p, p e). Rekurzivní volání nad prvním segmentem (p s, p). Přidání H p. Rekurzivní volání nad druhým segmentem (p, p e). V lokální proceduře předávány pouze indexy s, e koncových bodů segmentu. Index i odpovídá bodu p. Algoritmus 3: Quick Hull (s, e, S, H), lokální procedura 1: Najdi bod p = arg max pi S p i (p s, p e), p σ r(p s, p e). 2: If p /O ; //Eexistuje bod vpravo od hrany. 3: Quick Hull(s, i, S, H) //Upper Hull, i index p 4: H p. //Přidej bod c do H. 5: Quick Hull(i, e, S, H) //Lower Hull, i index p 19 / 56

Metody konstrukce konvexní obálky 18. Lokální procedura S U i i e i S U σ U s S U σ U s S U σ U s e e i e i s i s S U σ U S U σ U S U U σ U s e e 20 / 56

Metody konstrukce konvexní obálky 19. Lokální procedura S L e e s σ ul s σ ul S L i S L i s σ ul s σ ul L S L i e S L i e 21 / 56

20. Algoritmus Quick Hull, globální procedura Nalezení q 1, q 2,nutné předzpracování. Rozdělení S na: S U S(upper) a S L S (lower) vzhledem k (q 1, q 2 ). Přidání H U q 1, q 3, rekurzivní procedura nad S U. Přidání H L q 3, q q, rekurzivní procedura nad S L. Při CCW orientaci vede ke konstrukci H bez nutnosti spojení. Algoritmus 3: Quick Hull (S, H), globální procedura 1: H =, S U =, S L = 2: q 1 = min pi S(x i ), q 3 = max pi S(x i ). 3: S U q 1, S U q 3. 4: S L q 1, S L q 3. 5: for p i S 6: if (p i σ l (q 1, q 3 )) S U p i 7: else S L p i 8: H q 3. //Přidej bod c do H. 9: Quick Hull(1, 0, S U, H) //Upper Hull 10: H q 1. //Přidej bod c do H. 11: Quick Hull(0, 1, S L, H) //Lower Hull

21. Spojení do H Metody konstrukce konvexní obálky Vhodné načasováním rekurzivních operací zajistí spojení H U a H L. 1. Přidání q 3. 2) Rekurze H U. 3) přidání q 1. Rekurze H L. 2. U 1. σ u 3. L 4. 23 / 56

Metody konstrukce konvexní obálky 22. Doba běhu QHull algoritmu Časová funkce T (n) v závislosti na velikosti vstupu n: T (1) = 1 T (n) = T (n/2) + T (n/2) + n, = 2T (n/2) + n, = 2[2T (n/4) + n] + n, = 4T (n/4) + 3n, = 2{2[2T (n/8) + k] + k} + k, = 8T (n/8) + 7n, = it (n/i) + (i 1)n... = nt (1) + (n 1)n, = n + (n 1)n, = n 2 Doba běhu kvadratickou funkcí velikostí vstupu, O(n 2 ). 24 / 56

Metody konstrukce konvexní obálky 23. Aproximací body MBR První aproximace H představuje konvexní čtyřúhelník q 1, q 2, q 3, q 4. H zpracováván postupně po jednotlivých segmentech. Algoritmus využívá čtveřici rekurzivních volání procedury QuickHull nad každou stranou (q i q i+1 ) urychlení. q 1 = [min(x i ), y];q 2 = [x, min(y i )];q 3 = [max(x i ), y];q 4 = [x, max(y i )]; Split S to S 1, S 2, S 3, S 4 ; H q 1 QuickHull(0, 1, S 1, H); H q 2 QuickHull(0, 1, S 2, H); H q 3 QuickHull(0, 1, S 3, H); H q 4 QuickHull(0, 1, S 4, H); 25 / 56

Metody konstrukce konvexní obálky 24. Konstrukce Quick Hull s aproximací body MBR 26 / 56

Metody konstrukce konvexní obálky 25. Inkrementální vkládání Rychlá konstrukce, složitost O(n log(n)). Lze převést do vyšší dimenze. Princip algoritmu: Body z S přidávány po jednom do vytvořené konvexní obálky H, jejíž tvar je modifikován. Necht P představuje podmnožinu datasetu S obsahující m bodů a p přidávaný bod H(P(m + 1)) = H(P(m)) + H(p), Při přidání bodu p do H m mohou nastat dvě situace: p H m Bod p může být zanedbán, neovlivní tvar H(P(m)) H(P(m + 1)) = H(P(m)). p / H m Bod p ovlivní tvar H m. Nutno najít horní a dolní tečny t 1, t 2 procházející p kolmé k H m. 27 / 56

Metody konstrukce konvexní obálky 26. Ukázka nalezení horní a dolní tečny 28 / 56

Metody konstrukce konvexní obálky 27. Princip nalezení horní a dolní tečny t 1, t 2 V každém bodě H(m) lestujeme polohu incidujících dvou stran e j, e j+1 vzhledem k přidávanému bodu p. V bodech dotyku tečen platí: Dolní tečna t 1: Bod p vlevo od e j a vpravo od e j+1. Horní tečna t 2: Bod p vpravo od e j a vlevo od e j+1. Pro ostatní vrcholy p i leží bod p na stejné straně od e j, e j+1. Konvexní obálka mezi dotykovými body tečen odstraněna a nahrazena dvojicí tečen. Algoritmus 4: Upper and Lower Tangent 1: for i = 0 to n 1 2: if XOR(p vlevo od/na p i 1p i, p vlevo od/na p ip i+1) 3: p i je dotykový bod. Poznámka: XOR(A, B) = (A B) (B A). 29 / 56

28. Metoda zametací přímky Realizace strategie inkrementální konstrukce. Nadrovina rozděluje S na zpracovanou/nezpracovanou část. Složitost O(n log(n)), lze převést do vyšší dimenze. Citlivost vůči singularitám: duplicitní body v P. Princip algoritmu: Předzpracování: setřídění S dle souřadnice x, složitost O(n log(n)). Nad P S se pohybuje nadrovina σ (L->P) přes p i P s. Iniciální řešení tvořeno trojúhelníkem H(P s(3)) (p 1, p 2, p 3 ). Pro přidávaný bod p updatována H(P s(m)), expanduje v kladném směru x H(P s(m)) = H(P s(m 1) + H(p). Algoritmus 1: Sweep Line (P, H) 1: unique(p) //Odstraň duplicitní body 2: Sort P s = sort(p) by x 3: H(P s(3)) (p 1, p 2, p 3 ) //Iniciální řešení pro i 3 4: i 4. 5: Opakuj pro p i P s 6: H(P s(m)) = H(P s(m 1) + H(p i ) //Aktualizace řešení

29. Sweep-line, konvexní obálka 1 2 3 5 6 7 8 9 1 2 3 5 6 7 8 9 4 10 4 10 1 2 3 5 6 7 8 9 1 2 3 5 6 7 8 9 4 10 4 10

30. Datový model Metody konstrukce konvexní obálky Použity celkem 3 seznamy, popis H formou circular listu. První seznam obsahuje všechny vrcholy P s Dva pomocné seznamy: předchůdci p[i] a následníci n[i]. Vrchol bez předchůdce: p[i] = -1. Vrchol bez následníka: n[i] = -1. Pokud p i H, pak p[i] = -1, n[i] = -1 Příklady: p[i]... n[i]... p edch dce i-tého vrcholu, (i-1)-ty vrchol. následník i-tého vrcholu, (i+1)-ty vrchol. p[p[i]]... p edch dce p edch dce, (i-2)-ty vrchol. n[n[i]]... následník následníka, (i+2)-ty vrchol. n[p[i]]... následník p edch dce, i-ty vrchol. p[n[i]]... p edch dce následníka, i-ty vrchol. 32 / 56

31. Ukázka reprezentace H 1 2 3 5 6 7 8 9 4 10 [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] p: -1 2 5-1 1 9-1 -1-1 10 4 S: x=... y=... x=... y=... x=... y=... x=... y=... x=... y=... x=... y=... x=... y=... x=... y=... x=... y=... x=... y=... x=... y=... n: -1 4 1-1 10 2-1 -1-1 5 49

32. Iniciální fáze První hrana tvořená body p 1, p 2, kde x 0 = min pi P s (x i ). Třetí bod p 3 v levé nebo pravé polorovině, nutno zachovat CCW orientaci. 2 2 3 3 σ L σ L 1 1 σ R 1 1 σ R 3 3 2 2 Algoritmus 1: Initial phase(p, H) 1: if (p 3 σ L (p 1, p 2 )) // (p 1, p 2, p 3 ) 2: n[1] = 2; n[2] = 3; n[3] = 1 3: p[1] = 3; p[2] = 1; p[3] = 2 4: else // (p 1, p 3, p 2 ) 5: n[1] = 3; n[3] = 2; n[2] = 1 6: p[1] = 2; p[3] = 1; p[2] = 3 Alternativně lze vytvořit dvojúhelník : 1: n[1] = 2; n[2] = 1 2: p[1] = 2; p[2] = 1

33. Iterativní fáze I. Vytvoření aproximace H se zachovanou CCW orientací. H nemusí být konvexní, převod na H. Rozpojení H mezi body {i 1, n[i 1]} resp. {p[i 1], i 1}. Náhrada sekvence vrcholů: { {p[i 1], i 1, i, n[i 1]}, {p[i 1], i 1, n[i 1]} {p[i 1], i, i 1, n[i 1]}, y > y i 1, y y i 1. Algoritmus 1: Iterativní fáze I., konstrukce H 1: if (y i > y i 1) //p i σ U 2: p[i] = i-1; n[i] = n[i-1]; // Spojeni p[i] s predchudcem/naslednikem 3: else //p i σ L 4: n[i] = i-1; p[i] = p[i-1]; // Spojeni p[i] s predchudcem/naslednikem 4: n[p[i]] = i; //Propojeni predchudce s p[i] 4: p[n[i]] = i; //Propojeni naslednika s p[i] Oboustranné korektní napojení segmentů v H: {p[p[i]], p[i], i, n[i], n[n[i]]}

34. Iterativní fáze I, ukázka. n[i-1] i-1 i σ U n[i-1] i σ U i-1 p[i-1] σ L p[i-1] σ L n[i-1] n[i-1] i-1 σ U i-1 σ U 3 6 p[i-1] i σ L p[i-1] i σ L

35. Iterativní fáze I, indexy. n[i-1] i-1 i n[n[i]] n[i] i p[i] p[i-1] p[p[i]]

Metody konstrukce konvexní obálky 36. Iterativní fáze II. Převod nekonvexní H na H. Náhrada sekvence nekonvexních vrcholů horní a dolní tečnou. Nekonvexní vrcholy vynechány. Horní tečna: Nekonvexita n[i] v trojici {i, n[i], n[n[i]]} řešena vynecháním: Přemostění vrcholu možnou horní tečnou. {i, n[i], n[n[i]]} {i, n[n[i]]}. Dolní tečna: Nekonvexita p[i] v trojici {p[p[i]], p[i], i} řešena vynecháním: Přemostění vrcholu možnou dolní tečnou. Algoritmus 1: Iterativní fáze II., převod H na H {p[p[i]], p[i], i} {p[p[i]], i}. 1: while (n[n[i]]) σ P (i, n[i]) //Neni horni tecna: n[n[i]]) vpravo od (i, n[i]) 2: p[n[n[i]]] = i; n[i] = n[n[i]]; //Vynech n[i], aproximuj horni tecnou, poradi! 3: while (p[p[i]]) σ L (i, p[i]) //Neni dolni tecna: p[p[i]]) vlevo od (i, p[i]) 4: n[p[p[i]]] = i; p[i] = p[p[i]]; //Vynech p[i], aproximuj dolni tecnou, poradi! 38 / 56

37. Iterativní fáze II., ukázka n[n[i]] n[i] i σ R n[n[i]] n[i] t u i σ L p[i] p[i] p[p[i]] p[p[i]] n[n[i]] n[i] i σ R n[n[i]] n[i] i σ L p[i] p[p[i]] t l p[p[i]] p[i]

38. Algoritmus Sweep Line, kompletní Algoritmus 1: Sweep Line 1: Sort P s = sort(p) by x 2: if (p 3 σ L (p 1, p 2 )) 3: n[1] = 2; n[2] = 3; n[3] = 1 4: p[1] = 3; p[2] = 1; p[3] = 2 5: else 6: n[1] = 3; n[3] = 2; n[2] = 1 7: p[1] = 2; p[3] = 1; p[2] = 3 8: for p i P s, i > 3 9: if (y i > y i 1 ) 10: p[i] = i-1; n[i] = n[i-1]; 11: else 12: n[i] = i-1; p[i] = p[i-1]; 13: n[p[i]] = i; p[n[i]] = i; 14: while (n[n[i]]) σ R (i, n[i]) 15: p[n[n[i]]] = i; n[i] = n[n[i]]; //Poradi! 16: while (p[p[i]]) σ L (i, p[i]) 17: n[p[p[i]]] = i; p[i] = p[p[i]]; //Poradi!

39. Konverze reprezentrace Přechod na reprezentaci H tvořenou posloupností vrcholů. Uchování CCW orientace, procházíme následníky. Zapamatován index prvního vrcholu polygonu. Složitost O(n). Algoritmus 1: Sweep Line: konverze reprezentace 1: H p 1 2: i =n[1]) 3: do 4: H p i 5: i =n[i] 6: while (i 1)

Metody konstrukce konvexní obálky 40. Algoritmus Divide and Conquer Předpoklad: žádná trojice bodů není kolineární a žádné dva body v datasetu nemají stejné souřadnice x. Dělení S na dvě podmnožiny A, B a jejich následné spojení s nalezením horní a dolní tečny t 1, t 2. Algoritmus 5: Divide and Conquer. 1: Setřídění S podle x. 2: Rozdělení S na dvě podmnožiny A, B obsahující n/2 bodů. 3: Konstrukce konvexních obálek H(A) a H(B). 4: Spojení konvexních obálek H = H(A) H(B). 5: Nalezení dolní tečny t 1. 6: Nalezení horní tečny t 2. 7: Nahrazení úseků konvexních obálek A, B mezi oběma tečnami. 42 / 56

Metody konstrukce konvexní obálky 41. Algoritmus nalezení dolní tečny t 1 Existence řady algoritmů pro spojení dvojice konvexních obálek. Ukázka spojení nalezení dolní tečny t 1 procházkou, Walking Algorithm (Preprata & Hong, 1977). Z extrémních bodů a, b množin A, B nalezneme k bodu a bod b takový, že jejich spojnice je dolní tečnou B. Z bodu b hledáme bod a takový, aby jejich spojnice byla dolní tečnou A. Postup opakujeme, dokud a, b není dolní tečnou A i B. Algoritmus 6: Lower Tangent t 1, Walk 1: Najdi bod a: nejpravější bod A. 2: Najdi bod b: nejpravější bod B. 3: Opakuj, dokud t 1 = ab není dolní tečnou A a B. 4: Opakuj, dokud t 1 není dolní tečnou A: 5: a = a 1. 6: Opakuj, dokud t 1 není dolní tečnou B: 7: b = b + 1 43 / 56

Metody konstrukce konvexní obálky 42. Princip nalezení dolní tečny 44 / 56

Minimum Area Enclosing Rectangle 43. Využití konvexní obálky pro konstrukci obdélníka s minimální plochou Dáno: Množina n bodů S v R 2. Hledáme: Obdélník R s nejmenší plochou opsaný S. (Minimum Area Enclosing Box) Naivní algoritmy problém řeší v kvadratickém čase O(n 2 ). Definice: Nejméně jedna strana obdélníka s minimální plochou R opsaného množině S je kolineární se stranou H. Algoritmy pro konstrukci obdélníka s minimální plochou R opsaného množině S pracují s konvexní obálkou H předzpracování. Složitost konstrukce konvexní obálky H : O(n log(n)). Složitost konstrukce obdélníku R nad H: pouze O(n)! Algoritmus řeší problém v čase O(n log(n)). Využití v kartografii pro detekci tvaru a natočení budov. 45 / 56

Minimum Area Enclosing Rectangle 44. Ukázka obdélníku s minimální plochou opsaného množině S 46 / 56

Minimum Area Enclosing Rectangle 45. Rotating Calipers Algoritmus Rotating Calipers pro nalezení R nad datasetem S v lineárním čase (Toussaint, 1983). V prvním kroku nalezen MBR, který se dotýká H v bodech s extrémními souřadnicemi p i, p j, p k, p l. Úhly stran příslušející 4 extrémním bodům sevřené se stranami MBTR označme θ i, θ j, θ k, θ l. 47 / 56

Minimum Area Enclosing Rectangle 46. Princip metody Rotating Calipers Pro délky hran l 1, l 2 MBR a plochu A platí: l 1 = d ik cos ϕ k l 2 = d jl cos ϕ j A = l 1 l 2 Otočení obdélníku o úhel ±δ, nové délky hran l 1, l 2 a plocha A l 1 = d ik cos(ϕ k ± δ) l 2 = d jl cos(ϕ j ± δ) A = l 1 l 2. Rotace dle ±δ lze sčítat, jak určit plochu obdélníku po i-tém otočení z plochy předchozího? Pro vztah mezi A i+1 a A i platí po úpravě: A i+1 = A i (cos 2 δ + (tan ϕ k tan ϕ j ) cos δ sin δ tan ϕ k tan ϕ j sin 2 δ) 48 / 56

Minimum Area Enclosing Rectangle 47. Algoritmus metody Rotating Calipers Algoritmus 7: Rotating Calipers 1: Inicializuj A min =, rot = 0, θ sum = 0. 2: Nalezení MBR nad S. 3: Výpočet úhlů ϕ j, ϕ k a plochy A(R). 4: A min = A. 5: Opakuj, dokud θ sum < π 4 : 6: Výpočet úhlů θ i, θ j, θ k, θ l a stran l 1, l 2 7: θ = min(θ i, θ j, θ k, θ l ). 8: Otočení R o úhel θ 9: Určení A(R) z předchozí A. 10: if (A < A min ) 11: A min = A;rot = rot + θ; L 1 = l 1 ; L 2 = l 2. 12: θ sum = θ sum + θ. Možné problémy: numerická nepřesnost vlivem rekurentního výpočtu formule mezi A i+1, A i. 49 / 56

Minimum Area Enclosing Rectangle 48. Znázornění metody Rotating Calipers 50 / 56

Detekce hlavních směrů budov 49. Detekce úhlu natočení budovy Častý problém při kartografické generalizaci budov či jejich automatickém rozpoznávání. Budova před generalizací a po generalizaci musí mít uchovánu orientaci vzhledem k ostatním obsahovým prvkům mapy (např. zachování uliční čáry). Nutnost detekovat tzv. hlavní směry budovy (jsou na sebe kolmé). Popisují orientaci (tj. natočení) budovy vzhledem k ostatním prvkům mapy. Metody detekce natočení budov: Longest Edge. Weighted Bisektor Minimum Area Enclosing Rectangle. Wall Average. 51 / 56

Detekce hlavních směrů budov 50. Metody detekce hlavních směrů budov Longest Edge První hlavní směr budovy představován nejdelší stranou v budově, druhý hlavní směr na ní kolmý. Nedosahuje příliš dobrých výsledků Wieghted Bisector: V budově hledány dvě nejdelší úhlopříčky se směry ϕ 1, ϕ 2 a s délkami s 1, s 2. První hlavní směr je dán váženým průměrem. Dává velmi dobré výsledky. ϕ = s 1ϕ 1 + s 2 ϕ 2 s 1 + s 2. Minimum Area Enclosing Rectangle První hlavní směr představuje delší ze stran R, druhý kratší strana. Dává dobré výsledky, problémy s budovami tvaru L a Z. Wall Average Na každou stranu budovy aplikována operace mod( π 2 ). Zbytky po dělení leží v intervalu < 0, π ). Z hodnot 2 spočten vážený průměr, váhou je délka strany. ϕ = n i=1 s i (ϕ i mod π 2 ) s i. 52 / 56

Detekce hlavních směrů budov 51. Detekce hlavních směrů budovy Metody Longest Edge a Wall Average (Duchene et al, 2003). 53 / 56

Detekce hlavních směrů budov 52. Detekce hlavních směrů budovy Metody Smallest Area Enclosing Rectangle a Weigted Bisector (Duchene et al, 2003). 54 / 56

Detekce hlavních směrů budov 53. Problémy při detekci hlavních směrů Problémy s detekcí hlavních směrů u budov tvarů L, Z. 55 / 56

Detekce hlavních směrů budov 54. Vliv chybného určení hlavního směru na kartografickou generalizaci Algoritmus Divide and Conquer (Bayer, 2009). 56 / 56