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 / 39
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 / 39
Ú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 / 39
Formulace problému 2. 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 / 39
Formulace problému 3. Ukázka konvexní obálky H množiny S 5 / 39
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 / 39
Formulace problému 5. Odhad centroidu metodou Onion Peeling 7 / 39
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 Divide and Conquer Některé z metod použitelné pouze pro R 2, jiné převeditelné do vyšší dimenze. 8 / 39
7. Jarvis Scan Připomíná postup balení dárku do papíru (tzv. Gift Wrapping Algorithm), autorem Jarvis 1973. 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 y = min(y i ). Princip algoritmu: Necht p j 1, p j představují dva poslední body H a bod p j+1 aktuálně nalezený bod přidávaný do H. Bod p j+1 musí splňovat kritérium minimálního úhlu θ mezi stranou p j+1 p j a prodloužením strany p j 1 p j. Bod p j+1 hledáme ze všech p i, které dosud nejsou součástí H. 9 / 39
8. Algoritmus Jarvis Scan Nevýhodou složitost O(n 2 ), nehodí se pro velké S. Algoritmus 1: Gift Wrapping (S, H) 1: Nalezení pivota q, q = min(y i ), 2: Přidej q H. 3: Inicializuj: p j 1 =lib. bod ležící na ose x, p j = q, p i = p j 1. 4: Opakuj, dokud p i q: 5: Opakuj pro p i / H a body p j 1, p j : 6: Nalezni p i takové, že θ = min(θ i ); 7: Přidej p i H. 8: p j 1 = p j ; p j = p i. 10 / 39
9. Ukázka Jarvis Scan 11 / 39
10. Graham Scan Algoritmus není možné rošířit do R 3 (Graham 1972). Výrazně nižší časová složitost O(n log(n)), lze použít i na rozsáhlé datasety S. Princip: Každá uspořádaná trojice bodů p j 1, p j, p j+1 H musí splňovat kritérium levotočivosti. Pokud pro libovolnou trojici bodů p j 1, p j, p j+1 platí kritérium levotočivosti: Body zřejmě leží na H (avšak nemusí!). Pak testování následující trojice p j, p j+1, p j+2... neplatí kritérium levotočivosti: Odstraníme vrchol p j z H, tj. prostřední bod p j nemůže ležet na H. Pak testování trojice p j 2, p j 1, p j+1, tj. bod p j doplněn na trojici dvěma nejbližšími předchůdci p j 2, p j 1 H. Jako kritérium levotočivosti je používán Half Edge test. 12 / 39
11. Ilustrace kritéria levotočivosti 13 / 39
12. Algoritmus Grahamova skenování Přezpracování O(n): pivot q, nejpravější bod q y = min(y i ). Přezpracování O(n log(n)): setřídění datasetu S podle úhlu k ose x v bodě p. Algoritmus 2: Graham Scan (S, Q) 1: Nalezení pivota q, nejpravější bod q y = min(y i ), q H. 2: Setřídění všech bodů S úhlově dle q, index j odpovídá setříděnému pořadí. 3: Pokud dva body mají stejný úhel, vymaž bod bližší q. 4: Inicializuj j = 2; Stack Q. 5: push (q, p 1 ) Q, (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: push p t do Q. 8: j = j + 1. 9: else pop Q. 14 / 39
13. Ukázka konstrukce Graham Scan 15 / 39
14. Algoritmus Quick Hull Nazván QuickHull pro analogii s QuickSortem. Založen na přístupu Divide and Conquer, složitost O(n 2 ). Princip algoritmu: Konvexní obálka je konstruována ze dvou částí, z horní části nazývané Upper Hull a dolní části nazývané Lower Hull. Upper Hull je nad spojnicí dvou bodů q 1, q 3 MBR s extrémními souřadnicemi x, q 1 = min(x i), q 3 = max(x i), Lower Hull pod touto spojnicí q 1, q 3. Nad každou nalezenou stranou obálky a, b hledáme nejvzdálenější bod c ležící vpravo od této strany, který se stává novým bodem konvexní obálky každá nalezená strana se rozpadne na dvě nové. Obě části konvexní obálky zpracovávány separátně, výslednou konvexní obálku složíme z obou částí. Důvod rychlosti algoritmu (navzdory kvadratickému odhadu nejhoršího případu): při vytváření konvexní obálky se nesnažíme pracovat se všemi body vstupní množiny, ale pouze s body, které nacházejí blízko konvexní obálky. 16 / 39
15. Algoritmus Quick Hull Algoritmus využívá dvojici rekurzivních volání procedury QuicHull nad nově vzniklými stranami ac, cb z původní strany ab. Parametry: počáteční a koncový bod dělené strany a jí příslušející podmnožiny datasetu S, H. Nutnost předzpracování, nalezení MBR, rozdělení množiny. Algoritmus 3: Quick Hull (a, b S, H) 1: if (a + 1 b) S = Ø; return; //Hrana neobsahuje mezilehlé body 2: else: 3: Najdi bod c S, d(c, a, b) = max ležící vpravo od a, b 4: If c = /O return; //Neexistuje bod vpravo od hrany. 5: H c. //Přidej bod c do H. 6: Quick Hull(a, c, S, H) //Upper Hull 7: Quick Hull(c, b, S, H) //Lower Hull Volání: q 1 = [min(x i ), y] q 3 = [max(x i ), y] Split S to S1, S2; QuickHull(q 1, q 3, S1); //Upper Hull QuickHull(q 3, q 1, S2); //Lower Hull 17 / 39
16. Ukázka konstrukce Quick Hull 18 / 39
17. Implementace s 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í. Volání: 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 S1, S2, S3, S4; QuickHull(q 1, q 2, S 1, H); QuickHull(q 2, q 3, S 2, H); QuickHull(q 3, q 4, S 3, H); QuickHull(q 4, q 1, S 4, H); 19 / 39
18. Ukázka konstrukce Quick Hull s aproximací body MBR 20 / 39
19. Inkrementální konstrukce 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, pak H m+1 = H m 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 m+1. Test polohy p vzhledem k H m realizován prostřednictvím Half Edge testu. p / H m Bod p ovlivní tvar H m+1. Nutno najít horní a dolní tečny t 1, t 2 procházející p kolmé k H m. 21 / 39
20. Ukázka nalezení horní a dolní tečny 22 / 39
21. 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). 23 / 39
22. Konstrukce metodou Divide and Conquer Algoritmus se složitostí O(n log(n)). Lze snadno převést do vyšší dimenze. Jeho implementace je poněkud obtížnější. Princip algoritmu: Rozdělení problému nad množinou S na dvě podmnožiny S 1, S 2 stejné velikosti, které zpracovávány samostatně. Obě řešení poté spojena s využitím horní a dolní společné tečny t 1, t 2 množin S 1, S 2, spojení lze realizovat v lineárním čase O(n). Tyto podmnožiny mohou být opět děleny na další podmnožiny S i poloviční velikosti tak dlouho, dokud řešení problému není geometricky jednoduché konvexní obálka množiny tvořené třema body. Popis algoritmu bude ilustrován pro dvojici podmnožin A, B. 24 / 39
23. 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. 25 / 39
24. 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 26 / 39
25. Princip nalezení dolní tečny 27 / 39
Minimum Area Enclosing Rectangle 26. 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. 28 / 39
Minimum Area Enclosing Rectangle 27. Ukázka obdélníku s minimální plochou opsaného množině S 29 / 39
Minimum Area Enclosing Rectangle 28. 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. 30 / 39
Minimum Area Enclosing Rectangle 29. 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 δ) 31 / 39
Minimum Area Enclosing Rectangle 30. 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. 32 / 39
Minimum Area Enclosing Rectangle 31. Znázornění metody Rotating Calipers 33 / 39
Detekce hlavních směrů budov 32. 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. 34 / 39
Detekce hlavních směrů budov 33. 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. 35 / 39
Detekce hlavních směrů budov 34. Detekce hlavních směrů budovy Metody Longest Edge a Wall Average (Duchene et al, 2003). 36 / 39
Detekce hlavních směrů budov 35. Detekce hlavních směrů budovy Metody Smallest Area Enclosing Rectangle a Weigted Bisector (Duchene et al, 2003). 37 / 39
Detekce hlavních směrů budov 36. Problémy při detekci hlavních směrů Problémy s detekcí hlavních směrů u budov tvarů L, Z. 38 / 39
Detekce hlavních směrů budov 37. Vliv chybného určení hlavního směru na kartografickou generalizaci Algoritmus Divide and Conquer (Bayer, 2009). 39 / 39