CS 532: 3D Computer Vision 11 th Set of Notes

Similar documents
Computational Geometry

Computational Geometry

CS 532: 3D Computer Vision 14 th Set of Notes

Polygon Triangulation. (slides partially by Daniel Vlasic )

Polygon Triangulation. (slides partially by Daniel Vlasic )

Lecture 3: Art Gallery Problems and Polygon Triangulation

Line segment intersection. Family of intersection problems

CS6100: Topics in Design and Analysis of Algorithms

CS 372: Computational Geometry Lecture 3 Line Segment Intersection

Professor: Padraic Bartlett. Lecture 9: Trees and Art Galleries. Week 10 UCSB 2015

Lecture 4: Trees and Art Galleries

CMSC 754 Computational Geometry 1

Polygon decomposition. Motivation: Art gallery problem

Polygon Partitioning. Lecture03

Art Gallery, Triangulation, and Voronoi Regions

CS 532: 3D Computer Vision 12 th Set of Notes

2 A Plane Sweep Algorithm for Line Segment Intersection

Ma/CS 6b Class 26: Art Galleries and Politicians

Computational Geometry

The Art Gallery Problem: An Overview and Extension to Chromatic Coloring and Mobile Guards

Solutions to problem set 1

Week 2 Polygon Triangulation

Discrete Mathematics I So Practice Sheet Solutions 1

Computational Geometry

Motivation: Art gallery problem. Polygon decomposition. Art gallery problem: upper bound. Art gallery problem: lower bound

Computational Geometry [csci 3250]

The Art Gallery Problem

Notes and Answers to Homework Exam 1, Geometric Algorithms, 2017

Computational Geometry

Connected Components of Underlying Graphs of Halving Lines

Introduction to Algorithms

Trapezoidal Maps. Notes taken from CG lecture notes of Mount (pages 60 69) Course page has a copy

2 Line Segment Intersection

Tutte s Theorem: How to draw a graph

Visibility: Finding the Staircase Kernel in Orthogonal Polygons

The SUMO Speaker Series for Undergraduates. The Art Gallery Problem

Projects & Polygon Triangulation

1. Meshes. D7013E Lecture 14

AMS 345/CSE 355 Computational Geometry

Non-context-Free Languages. CS215, Lecture 5 c

CMSC 754 Computational Geometry 1

Orthogonal art galleries with holes: a coloring proof of Aggarwal s Theorem

1/60. Geometric Algorithms. Lecture 1: Introduction. Convex Hulls

GEOMETRIC SEARCHING PART 1: POINT LOCATION

MISCELLANEOUS SHAPES

Range Searching II: Windowing Queries

Lecture 16: Voronoi Diagrams and Fortune s Algorithm

Kruskal s MST Algorithm

6.854J / J Advanced Algorithms Fall 2008

arxiv: v1 [cs.cg] 8 Jan 2018

How Do Computers Solve Geometric Problems? Sorelle Friedler, University of Maryland - College Park

Today. Types of graphs. Complete Graphs. Trees. Hypercubes.

Line Arrangement. Chapter 6

Planar Point Location

Geometric Streaming Algorithms with a Sorting Primitive (TR CS )

Geometric Computation: Introduction

CMSC 425: Lecture 9 Geometric Data Structures for Games: Geometric Graphs Thursday, Feb 21, 2013

CS 473: Algorithms. Ruta Mehta. Spring University of Illinois, Urbana-Champaign. Ruta (UIUC) CS473 1 Spring / 29

Visibilty: Finding the Staircase Kernel in Orthogonal Polygons

UC Berkeley CS 170: Efficient Algorithms and Intractable Problems Handout 8 Lecturer: David Wagner February 20, Notes 8 for CS 170

Polygon Triangulation

9 About Intersection Graphs

CS S Lecture February 13, 2017

Computational Geometry

Chapter 8. Voronoi Diagrams. 8.1 Post Oce Problem

Advanced Algorithms Computational Geometry Prof. Karen Daniels. Fall, 2012

External-Memory Algorithms with Applications in GIS - (L. Arge) Enylton Machado Roberto Beauclair

Plane Sweep Algorithms

Partitioning Orthogonal Polygons by Extension of All Edges Incident to Reflex Vertices: lower and upper bounds on the number of pieces

CONNECTIVITY AND NETWORKS

Coverage and Search Algorithms. Chapter 10

CPS 102: Discrete Mathematics. Quiz 3 Date: Wednesday November 30, Instructor: Bruce Maggs NAME: Prob # Score. Total 60

Average case analysis of dynamic geometric optimization

Tangencies between disjoint regions in the plane

Bicriteria approach to the optimal location of surveillance cameras *

Computational Geometry

Computational Geometry [csci 3250]

Simultaneously flippable edges in triangulations

Polygon Filling. Can write frame buffer one word at time rather than one bit. 2/3/2000 CS 4/57101 Lecture 6 1

Computing intersections in a set of line segments: the Bentley-Ottmann algorithm

K-structure, Separating Chain, Gap Tree, and Layered DAG

Lecture 11 Combinatorial Planning: In the Plane

Rubber bands. Chapter Rubber band representation

Week 7 Convex Hulls in 3D

Line Arrangements. Applications

CSE331 Introduction to Algorithms Lecture 15 Minimum Spanning Trees

Art Gallery Theorems and Algorithms

Visibility Analysis for Video Surveillance

16.410/413 Principles of Autonomy and Decision Making

managing an evolving set of connected components implementing a Union-Find data structure implementing Kruskal s algorithm

Fortune s Algorithm. Notes from the book by de Berg, Van Krevald, Overmars, and Schwarzkpf

As a consequence of the operation, there are new incidences between edges and triangles that did not exist in K; see Figure II.9.

Algorithms. Daniel G. Aliaga. Computer Science Department Purdue University

INTRODUCTION TO THE HOMOLOGY GROUPS OF COMPLEXES

One-to-One Piecewise Linear Mappings Over Triangulations

Figure 1: Two polygonal loops

Linear Programming in Small Dimensions

CSC 373: Algorithm Design and Analysis Lecture 4

Ma/CS 6b Class 11: Kuratowski and Coloring

Lecture 3 February 23, 2012

Transcription:

1 CS 532: 3D Computer Vision 11 th Set of Notes Instructor: Philippos Mordohai Webpage: www.cs.stevens.edu/~mordohai E-mail: Philippos.Mordohai@stevens.edu Office: Lieb 215

Lecture Outline Line Intersection Polygon triangulation David M. Mount, CMSC 754: Computational Geometry lecture notes, Department of Computer Science, University of Maryland, Spring 2012 Lectures 5 and 6 Slides by: P. Indyk and J.C. Yang (MIT) M. van Kreveld (Utrecht University) 2

Line Segment Intersection Slides by M. van Kreveld 3

Map Layers In a geographic information system (GIS) data is stored in separate layers A layer stores the geometric information about some theme, like land cover, road network, municipality boundaries, red fox habitat, 4

Map Overlay Map overlay is the combination of two (or more) map layers It is needed to answer questions like: What is the total length of roads through forests? What is the total area of corn fields within 1km from a river? To solve map overlay questions, we need (at the least) intersection points from two sets of line segments (possibly, boundaries of regions) 5

The Easy Problem Given a set of n line segments in the plane, find all intersection points efficiently 6

An Easy Algorithm 7

Is it Optimal? 8

Output-sensitive Algorithms The asymptotic running time of an algorithm is always inputsensitive (depends on n) We may also want the running time to be output-sensitive: if the output is large, it is fine to spend a lot of time, but if the output is small, we want a fast algorithm 9

Intersection Points in Practice Question: How many intersection points do we typically expect in our application? If this number is k, and if k = O(n), it would be nice if the algorithm runs in O(nlogn) time 10

First Attempt Observation: Two line segments can only intersect if their y-spans have an overlap So, how about only testing pairs of line segments that intersect in the y-projection? 1D problem: Given a set of intervals on the real line, find all partly overlapping pairs 11

First Attempt 1D problem: Given a set of intervals on the real line, find all partly overlapping pairs Sort the endpoints and handle them from left to right; maintain currently intersected intervals in a balanced search tree T Left endpoint of s i : for each s j in T, report the pair s i ; s j. Then insert s i in T Right endpoint of s i : delete s i from T Question: Is this algorithm output-sensitive for 1D interval intersection? 12

First Attempt Back to the 2D problem: Determine the y-intervals of the 2D line segments Find the intersecting pairs of intervals with the 1D solution For every pair of intersecting intervals, test whether the corresponding line segments intersect, and if so, report it Question: Is this algorithm output-sensitive for 2D line segment intersection? 13

Second Attempt Refined observation: Two line segments can only intersect if their y-spans have an overlap, and they are adjacent in the x-order at that y-coordinate (they are horizontal neighbors) 14

Plane Sweep The plane sweep technique: Imagine a horizontal line passing over the plane from top to bottom, solving the problem as it moves The sweep line stops and the algorithm computes at certain positions => events The algorithm stores the relevant situation at the current position of the sweep line => status The algorithm knows everything it needs to know above the sweep line, and has found all intersection points 15

Sweep 16

Sweep and Status 17

Status and Events The status of this particular plane sweep algorithm, at the current position of the sweep line, is the set of line segments intersecting the sweep line, ordered from left to right Events occur when the status changes, and when output is generated event = interesting y-coordinate 18

Plane Sweep 19

Plane Sweep 20

Plane Sweep 21

Plane Sweep 22

Plane Sweep 23

Plane Sweep 24

Plane Sweep 25

Plane Sweep 26

Plane Sweep 27

Plane Sweep and so on 28

Events When do the events happen? When the sweep line is at: an upper endpoint of a line segment a lower endpoint of a line segment an intersection point of a line segment At each type, the status changes; at the third type output is found too 29

Assume No Degenerate Cases We will at first exclude degenerate cases: No two endpoints have the same y- coordinate No more than two line segments intersect at a point Question: Are there more degenerate cases? 30

Event List and Status Structure The event list is an abstract data structure that stores all events in the order in which they occur The status structure is an abstract data structure that maintains the current status Here: The status is the subset of currently intersected line segments in the order of intersection by the sweep line 31

Status Structure We use a balanced binary search tree with the line segments in the leaves as the status structure 32

Status Structure Upper endpoint: search and insert 33

Status Structure Upper endpoint: search and insert 34

Status Structure Upper endpoint: search and insert 35

Status Structure Sweep line reaches lower endpoint of a line segment: delete from the status structure Sweep line reaches intersection point: swap two leaves in the status structure (and update information on the search paths) 36

Finding Events Before the sweep algorithm starts, we know all upper endpoint events and all lower endpoint events But: How do we know intersection point events??? (these we were trying to find ) Recall: Two line segments can only intersect if they are horizontal neighbors 37

Finding Events Lemma: Two line segments s i and s j can only intersect after (= below) they have become horizontal neighbors Proof: Just imagine that the sweep line is ever so slightly above the intersection point of s i and s j, but below any other event, prove by contradiction Also: some earlier (= higher) event made s i and s j horizontally adjacent 38

Event List The event list must be a priority queue, because during the sweep, we discover new events that will happen later We know upper endpoint events and lower endpoint events beforehand; we find intersection point events when the involved line segments become horizontal neighbors 39

Plane Sweep Algorithm 40

Event Handling If the event is an upper endpoint event, and s is the line segment that starts at p: 1. Search with p in T, and insert s 2. If s intersects its left neighbor in T, then determine the intersection point and insert in Q 3. If s intersects its right neighbor in T, then determine the intersection point and insert in Q 41

Event Handling If the event is a lower endpoint event, and s is the line segment that ends at p: 1. Search with p in T, and delete s 2. Let s l and s r be the left and right neighbors of s in T (before deletion). If they intersect below the sweep line, then insert their intersection point as an event in Q 42

Event Handling If the event is an intersection point event where s and s intersect at p: 1. Exchange s and s in T 2. If s and its new left neighbor in T intersect below the sweep line, then insert this intersection point in Q 3. If s and its new right neighbor in T intersect below the sweep line, then insert this intersection point in Q 4. Report the intersection point 43

Event Handling Is it possible that new horizontal neighbors already intersected above the sweep line? Is it possible that we insert a newly detected intersection point event, but it already occurs in Q? 44

Efficiency How much time to handle an event? At most one search in T and/or one insertion, deletion, or swap At most twice finding a neighbor in T At most one deletion from and two insertions in Q Since T and Q are a balanced binary search tree and a priority queue, handling an event takes only O(logn) time 45

Efficiency How many events? 2n for the upper and lower endpoints k for the intersection points, if there are k of them In total: O(n+k) events 46

Efficiency Initialization takes O(nlogn) time (to put all upper and lower endpoint events in Q) Each of the O(n+k) events takes O(logn) time The algorithm takes O(nlogn+k logn) time If k = O(n), then this is O(nlogn) Note that if k is really large, the brute force O(n 2 ) time algorithm is more efficient 47

Degenerate Cases How do we deal with degenerate cases? For two different events with the same y- coordinate, we treat them from left to right => the upper" endpoint of a horizontal line segment is its left endpoint 48

Degenerate Cases How about multiply coinciding event points? Let U(p) and L(p) be the line segments that have p as upper and lower endpoint, and C(p) the ones that contain p 49

Degenerate Cases How efficiently is a multiply coinciding event point handled? If U(p) + L(p) + C(p) = m, then the event takes O(mlogn) time What do we report? The intersection point itself Every pair of intersecting line segments The intersection point and every line segment involved The output size for this one event is then O(1), O(m 2 ), or O(m), respectively 50

General Sweep Algorithms For every sweep algorithm: Define the status Choose the status structure and the event list Figure out how events must be handled (with sketches!) To analyze, determine the number of events and how much time they take Then deal with degeneracies 51

Triangulating a Polygon (intro) Slides by M. van Kreveld 52

Polygons and Visibility Two points in a simple polygon can see each other if their connecting line segment is in the polygon 53

The Art Gallery Problem How many cameras are needed to guard a given art gallery so that every point is seen? 54

The Art Gallery Problem In geometry terminology: How many points are needed in a simple polygon with n vertices so that every point in the polygon is seen? The optimization problem is computationally difficult Art Gallery Theorem: cameras are occasionally necessary but always sufficient 55

The Art Gallery Problem Art Gallery Theorem: cameras are occasionally necessary but always sufficient 56

Diagonals Why are cameras always enough? Assume polygon P is triangulated: a decomposition of P into disjoint triangles by a maximal set of non-intersecting diagonals Diagonal of P: open line segment that connects two vertices of P and fully lies in the interior of P 57

A Triangulation Always Exists Lemma: A simple polygon with n vertices can always be triangulated, and always with n-2 triangles Proof: Induction on n. If n = 3, it is trivial Assume n > 3. Consider the leftmost vertex v and its two neighbors u and w. Either uw is a diagonal (case 1), or part of the boundary of P is in Δuvw (case 2) Case 2: choose the vertex t in Δuvw farthest from the line through u and w, then vt must be a diagonal 58

A Triangulation Always Exists In case 1, uw cuts the polygon into a triangle and a simple polygon with n-1 vertices, and we apply induction In case 2, vt cuts the polygon into two simple polygons with m and n - m + 2 vertices, 3 m n - 1, and we also apply induction By induction, the two polygons can be triangulated using m - 2 and n - m + 2-2 = n - m triangles. So the original polygon is triangulated using m - 2 + n - m = n 2 triangles 59

A 3-coloring Always Exists Observe: the dual graph of a triangulated simple polygon is a tree Dual graph: each face gives a node; two nodes are connected if the faces are adjacent 60

A 3-coloring Always Exists Lemma: The vertices of a triangulated simple polygon can always be 3-colored Proof: Induction on the number of triangles in the triangulation. Base case: True for a triangle Every tree has a leaf. Remove the corresponding triangle from the triangulated polygon, color its vertices, add the triangle back, and let the extra vertex of the neighboring triangle have the color that is not present at its neighbors 61

A 3-coloring Always Exists 62

Cameras are Enough For a 3-colored, triangulated simple polygon, one of the color classes is used by at most colors. Place the cameras at these vertices This argument is called the pigeon-hole principle Why does the proof fail when the polygon has holes? 63