Algorithms for GIS: Terrain simplification

Similar documents
Algorithms for GIS csci3225

Algorithms for GIS. Spatial data: Models and representation (part I) Laura Toma. Bowdoin College

Flow on terrains. Laura Toma csci 3225 Algorithms for GIS Bowdoin College

Algorithms for GIS csci3225

FOOTPRINTS EXTRACTION

Files Used in this Tutorial

Digital Elevation Models

Contents of Lecture. Surface (Terrain) Data Models. Terrain Surface Representation. Sampling in Surface Model DEM

LiDAR for Urban Change Detection. Keith W. Cunningham, PhD Alaska Satellite Facility November 13, 2009

Lecture 06. Raster and Vector Data Models. Part (1) Common Data Models. Raster. Vector. Points. Points. ( x,y ) Area. Area Line.

Outline of Presentation. Introduction to Overwatch Geospatial Software Feature Analyst and LIDAR Analyst Software

[Youn *, 5(11): November 2018] ISSN DOI /zenodo Impact Factor

Light Detection and Ranging (LiDAR)

DECONFLICTION AND SURFACE GENERATION FROM BATHYMETRY DATA USING LR B- SPLINES

Automatic DTM Extraction from Dense Raw LIDAR Data in Urban Areas

CORRECTING DEM EXTRACTED FROM ASTER STEREO IMAGES BY COMBINING CARTOGRAPHIC DEM

Class #2. Data Models: maps as models of reality, geographical and attribute measurement & vector and raster (and other) data structures

Title: Improving Your InRoads DTM. Mats Dahlberg Consultant Civil

3D Terrain Modelling of the Amyntaio Ptolemais Basin

From Multi-sensor Data to 3D Reconstruction of Earth Surface: Innovative, Powerful Methods for Geoscience and Other Applications

Mesh Decimation. Mark Pauly

Building Segmentation and Regularization from Raw Lidar Data INTRODUCTION

Triangulation and Convex Hull. 8th November 2018

Mesh Repairing and Simplification. Gianpaolo Palma

Processing 3D Surface Data

HEURISTIC FILTERING AND 3D FEATURE EXTRACTION FROM LIDAR DATA

Geometry Processing & Geometric Queries. Computer Graphics CMU /15-662

coding of various parts showing different features, the possibility of rotation or of hiding covering parts of the object's surface to gain an insight

Lecture 4: Digital Elevation Models

GMS 8.2 Tutorial Stratigraphy Modeling TIN Surfaces Introduction to the TIN (triangulated irregular network) surface object

Drone2Map for ArcGIS: Bring Drone Imagery into ArcGIS. Will

Tutorial (Intermediate level): Dense Cloud Classification and DTM generation with Agisoft PhotoScan Pro 1.1

Processing 3D Surface Data

Iowa Department of Transportation Office of Design. Photogrammetric Mapping Specifications

Algorithms for GIS:! Quadtrees

Problem Set 6 Solutions

VALIDATION OF A NEW 30 METER GROUND SAMPLED GLOBAL DEM USING ICESAT LIDARA ELEVATION REFERENCE DATA

Volume Illumination and Segmentation

Surface Simplification Using Quadric Error Metrics

iric Software Changing River Science River2D Tutorials

Understanding Geospatial Data Models

Automatic Building Extrusion from a TIN model Using LiDAR and Ordnance Survey Landline Data

Reality Check: Processing LiDAR Data. A story of data, more data and some more data

Modeling & Analyzing Massive Terrain Data Sets (STREAM Project) Pankaj K. Agarwal. Workshop on Algorithms for Modern Massive Data Sets

REGISTRATION OF AIRBORNE LASER DATA TO SURFACES GENERATED BY PHOTOGRAMMETRIC MEANS. Y. Postolov, A. Krupnik, K. McIntosh

Review of Cartographic Data Types and Data Models

GMS 10.0 Tutorial Stratigraphy Modeling TIN Surfaces Introduction to the TIN (Triangulated Irregular Network) surface object

Import, view, edit, convert, and digitize triangulated irregular networks

Accuracy Assessment of Digital Elevation Model From ASTER Data Using Automatic Stereocorrelation Technique, East Luxor, Egypt

Topic 5: Raster and Vector Data Models

Finding Shortest Path on Land Surface

Surface Modeling With TINs

Processing 3D Surface Data

Improved Visibility Computation on Massive Grid Terrains

Applied Cartography and Introduction to GIS GEOG 2017 EL. Lecture-7 Chapters 13 and 14

A Method to Create a Single Photon LiDAR based Hydro-flattened DEM

BUILDING DETECTION AND STRUCTURE LINE EXTRACTION FROM AIRBORNE LIDAR DATA

AUTOMATIC BUILDING DETECTION FROM LIDAR POINT CLOUD DATA

AUTOMATIC EXTRACTION OF BUILDING FEATURES FROM TERRESTRIAL LASER SCANNING

Mesh Simplification. Mesh Simplification. Mesh Simplification Goals. Mesh Simplification Motivation. Vertex Clustering. Mesh Simplification Overview

DIGITAL TERRAIN MODELLING. Endre Katona University of Szeged Department of Informatics

Big Spatial Data Performance With Oracle Database 12c. Daniel Geringer Spatial Solutions Architect

Lab 12: Sampling and Interpolation

A geoinformatics-based approach to the distribution and processing of integrated LiDAR and imagery data to enhance 3D earth systems research

Point Cloud Classification

Polyhedral Building Model from Airborne Laser Scanning Data**

ENY-C2005 Geoinformation in Environmental Modeling Lecture 4b: Laser scanning

Applications. Oversampled 3D scan data. ~150k triangles ~80k triangles

Improving wide-area DEMs through data fusion - chances and limits

GIS data input. In the early days of GIS 1980s and early 1990s. We used canned datasets for teaching (from USA)

N.J.P.L.S. An Introduction to LiDAR Concepts and Applications

The Computational Geometry Algorithms Library. Andreas Fabri GeometryFactory

Generate Digital Elevation Models Using Laser Altimetry (LIDAR) Data

The 3D Analyst extension extends ArcGIS to support surface modeling and 3- dimensional visualization. 3D Shape Files

Map Compilation CHAPTER HISTORY

DIGITAL SURFACE MODELS OF CITY AREAS BY VERY HIGH RESOLUTION SPACE IMAGERY

Space Robotics. Ioannis Rekleitis

CPSC 695. Methods for interpolation and analysis of continuing surfaces in GIS Dr. M. Gavrilova

Fast unstructured quadrilateral mesh generation

GENERATING BUILDING OUTLINES FROM TERRESTRIAL LASER SCANNING

Delaunay Triangulations. Presented by Glenn Eguchi Computational Geometry October 11, 2001

Leica Systems Overview

Light Detection and Ranging (LiDAR) Radiohead House of Cards

USING UNMANNED AERIAL VEHICLE (DRONE/FLYCAM) TECHNOLOGY IN SURVEY WORK OF PORTCOAST

Trimble Geospatial Division Integrated Solutions for Geomatics professions. Volker Zirn Regional Sales Representative

Digital Photogrammetric System. Version 5.3 USER GUIDE. Block adjustment

A METHOD TO PREDICT ACCURACY OF LEAST SQUARES SURFACE MATCHING FOR AIRBORNE LASER SCANNING DATA SETS

EVALUATION OF WORLDVIEW-1 STEREO SCENES AND RELATED 3D PRODUCTS

Möbius Transformations in Scientific Computing. David Eppstein

Introduction to GIS 2011

NATIONWIDE POINT CLOUDS AND 3D GEO- INFORMATION: CREATION AND MAINTENANCE GEORGE VOSSELMAN

Computing Visibility on Terrains in External Memory

GIS Data Collection. This chapter reviews the main methods of GIS data capture and transfer and introduces key practical management issues.

Geometry of Aerial photogrammetry. Panu Srestasathiern, PhD. Researcher Geo-Informatics and Space Technology Development Agency (Public Organization)

Maps as Numbers: Data Models

Analysis Ready Data For Land (CARD4L-ST)

Copyright The McGraw-Hill Companies, Inc. Permission required for reproduction or display.

Rectification Algorithm for Linear Pushbroom Image of UAV

GY461 GIS 1: Environmental Campus Topography Project with ArcGIS 9.x

SPATIAL DATA MODELS Introduction to GIS Winter 2015

Transcription:

Algorithms for GIS: Terrain simplification

Digital terrain models in GIS grid (raster) TIN

Data Sources: digitizing contour maps

Data Sources: satellite imagery

Data Sources: satellite imagery \

Data Sources: satellite imagery

Data Sources: satellite imagery

Data Sources: satellite imagery

Data Sources: satellite imagery

Data Sources: satellite imagery The resolution of satellite images varies depending on the instrument used and the altitude of the satellite's orbit. For example, the Landsat archive offers repeated imagery at 30 meter resolution for the planet, but most of it has not been processed from the raw data. Landsat 7 has an average return period of 16 days. For many smaller areas, images with resolution as high as 41 cm can be available. [5] Satellite imagery is sometimes supplemented with aerial photography, which has higher resolution, but is more expensive per square meter. Satellite imagery can be combined with vector or raster data in a GIS provided that the imagery has been spatially rectified so that it will properly align with other data sets. \

Data Sources: satellite imagery Imaging satellites e.g. GeoEye launched September 6, 2008 has the highest resolution imaging system and is able to collect images with a ground resolution of 0.41 meters (16 inches) in the black and white mode. It collects multispectral or color imagery at 1.65-meter resolution or about 64 inches. ASTER (Advanced Spaceborne Thermal Emission and Reflection Radiometer) on board NASA s satellite Terra, part of NASA s EOS

satellite imagery terrain topography photogrammetry altimetry SAR interpherometry e.g. http://www.earsel.org/tutorials/jac_03demghent_red.pdf

satellite imagery terrain topography photogrammetry altimetry SAR interpherometry

satellite imagery terrain topography photogrammetry altimetry SAR interpherometry ocean topography (bathymetry)

Data Sources: satellite imagery

Data Sources: (LIDAR) point clouds A point cloud is a set of data points in some coordinate system. in 3D: { (x,y,z)} Created by 3D scanners or LIDAR/etc Many uses: modeling of surfaces and objects visualization, animation medical imaging/computer tomography A point cloud image of a torus Geo-referenced point cloud of Red Rocks, Colorado (by DroneMapper) from wiki page: https://en.wikipedia.org/wiki/point_cloud

Data Sources: LIDAR point clouds \

Data Sources: LIDAR point clouds \

Data Sources: LIDAR point clouds

Data Sources: LIDAR point clouds \

Data Sources: LIDAR point clouds

Data Sources: LIDAR point clouds

Data Sources: LIDAR point clouds

Data Sources: LIDAR point clouds

Data Sources: LIDAR point clouds

surface model satellite imagery LIDAR point cloud

surface model satellite imagery point cloud to grid point cloud to TIN grid to TIN LIDAR point cloud

Terrain simplification P = { (x 1, y 1, z 1 ), (x 2, y 2, z 2 ),, (x n, y n, z n ) } a set of terrain elevation samples For e.g. P could be a set of grid (aerial image) or in general a point cloud (from LIDAR) sometimes called a height field (in graphics and vision) P + interpolation method ===> surface Surf(P) corresponding to P P Surf(P) n points

Terrain simplification P = { (x 1, y 1, z 1 ), (x 2, y 2, z 2 ),, (x n, y n, z n ) } a set of terrain elevation samples For e.g. P could be a set of grid (aerial image) or in general a point cloud (from LIDAR) sometimes called a height field (in graphics and vision) P + interpolation method ===> surface Surf(P) corresponding to P P Surf(P) n points P Surf(P ) m points epsilon is a given error threshold dist(s(p}, S(P )) < epsilon Simplification: find an approximation S(P ) which approximates S(P) within the desired error threshold using as few points as possible S(P) has n points ==> S(P ) has m points (m << n)

Outline Grid-to-TIN We ll focus on grid-to-tin simplification The methods can be extended to deal with arbitrary (non-grid) data Point-cloud-to-TIN Point-cloud-to-grid

Grid to TIN

Motivation Grids uniform resolution means a lot of data redundancy grids get very large very fast Example: Area if approx. 800 km x 800 km Sampled at: 100 resolution: 64 million points (128MB) 30m resolution: 640 (1.2GB) 10m resolution: 6400 = 6.4 billion (12GB) 1m resolution: 600.4 billion (1.2TB)

Grid-to-TIN simplification Methods Multi-pass decimation methods start with P and discard points (one by one) E.g.: Lee s drop heuristic Multi-pass refinement methods start with an initial approximation and add points one by one greedy insertion (e.g. Garland & Heckbert) One-pass methods pre-compute importance of points select points that are considered important features and triangulate them based on quad trees or kd-trees

Decimation: Lee s drop heuristic

Refinement: Greedy insertion Notation: P = set of grid points P = set of points in the TIN Algorithm: TIN(P ): the TIN on P P = {all grid points}, P = {4 corner points} Initialize TIN to two triangles with corners as vertices while not DONE() do for each point p in P, compute error(p) select point p with largest error(p) insert p in P, delete p from P, and update TIN(P ) DONE() :: return (max error below given epsilon)? TRUE; FALSE;

Greedy insertion Come up with a straightforward implementation of the generic greedy insertion and analyze its running time. Assume straightforward triangulation: when inserting a point in a triangle, split the triangle in 3

Greedy insertion P P n 4 => O(1) iteration 1 n-1 1 + O(1) iteration 2 n-2 2 + O(1).... iteration k n-k k at the end n-m m Note: m = nb of vertices in the simplified TIN at the end (when error of P falls below epsilon) usually m is a fraction of n (e.g. 5%)

Greedy insertion VERSION 1 Algorithm: P = {all grid points}, P = {4 corner points} Initialize TIN to two triangles with 4 corners as vertices while not DONE() do for each point p in P, compute error(p) select point p with largest error(p) insert p in P, delete p from P and update TIN(P ) create 3 new triangles find triangle that contains p and compute the vertical difference in height between p and its interpolation on the triangle

Greedy insertion VERSION 1 Algorithm: P = {all grid points}, P = {4 corner points} Initialize TIN to two triangles with 4 corners as vertices while not DONE() do RE-CALCULATION SELECTION INSERTION for each point p in P, compute error(p) select point p with largest error(p) insert p in P, delete p from P and update TIN(P ) create 3 new triangles ANALYSIS: At iteration k: we have O(n-k) points in P, O(k) points in P RE-CALCULATION compute the error of a point: must search through all triangles to see which one contains it ==> worst case O(k) compute errors of all points ==> O(n-k) x O(k) SELECTION: select point with largest error: O(n-k) INSERTION: insert p in P, update TIN ==> O(1) unless each point stores the triangle that contains it, need to find the triangle that contains p for a straightforward triangulation: split the triangle that contains p into 3 triangles ==> O(1) time

Greedy insertion VERSION 1 Analysis worst case: iteration k: O((n-k) x k) + O(n-k) + O(1) RE-CALC SELECT INSERT overall: SUM { (n-k) x k } = = O(m 2 n) Note: dominant cost is re-calculation of errors (which includes point location) More on point location: to locate the triangle that contains a given point, we walk (traverse) the TIN from triangle to triangle, starting from a triangle on the boundary (aka DFS on the triangle graph). we must be very unlucky to always take O(k) simple trick: start walking the TIN from the triangle that contained the previous point. because points in the grid are spatially adjacent, most of the time a point will fall in the same triangle as the previous point or in one adjacent to it average time for point location will be O(1)

Greedy insertion VERSION 1 Worst-case: O(m 2 n) iteration k: O(n-k) x O(k) + O(n-k) + O(1) RE-CALC SELECT INSERT overall: SUM {O(n-k) x k} = O(m 2 n) Average case: O(mn) trick to seed up point location ==> average time for point location will be O(1) iteration k: O(n-k) x O(1) + O(n-k) + O(1) RE-CALC SELECT INSERT SUM {O(n-k)} = O(mn)

Greedy insertion VERSION 2 Observation: Only the points that fall inside triangles that have changed need to re-compute their error. Re-compute errors ONLY for points whose errors have changed Each point p in P stores its error, error(p) Each triangle stores a list of points inside it Algorithm: P = {all grid points}, P = {4 corner points} Initialize TIN to two triangles with 4 corners as vertices while not DONE() do for each point p in P, compute error(p) select point p with largest error(p) insert p in P, delete p from P and update TIN(P ) create 3 new triangles for all points in triangle that contains p: find the new triangles where they belong, re-compute their errors

Greedy insertion VERSION 2 Worst-case: O(mn) iteration k: - + O(n-k) + O(1) + O(n-k) x O(1) RE-CALC SELECT INSERT + re-calc overall: SUM {O(n-k) } = O(mn) Average case: O(mn) if points are uniformly distributed in the triangles ==> O((n-k)/k) points per triangle iteration k: - + O(n-k) + O(1) + O((n-k)/k) x O(1) RE-CALC SELECT INSERT + re-calc SUM {O(n-k) + O((n-k)/k} = O(mn) SELECTION will be dominant!

Greedy insertion VERSION3 Version2, re-calculation goes down and selection becomes dominant Version 3: improve selection store a heap of errors of all points in P Algorithm: P = {all grid points}, P = {4 corner points} Initialize TIN to two triangles with 4 corners as vertices while not DONE() do use heap to select point p with largest error(p) insert p in P, delete p from P and update TIN(P ) for all points in the triangle that contains p: find the new triangles where they belong, re-compute their errors update new errors in heap

Greedy insertion VERSION 3 Worst-case: O(mn lg n) iteration k: - + O(lg (n-k)) + O(1) + O(n-k) x O(lg (n-k)) RE-CALC SELECT INSERT + re-calc overall: SUM {(n-k) lg (n-k)} = O(mn lg n) Average case: O((m+n) lg 2 n) if points are uniformly distributed in the triangles ==> O((n-k)/k) points per triangle iteration k: - + O(lg (n-k)) + O(1) + O((n-k)/k) x O(lg (n-k)) RE-CALC SELECT INSERT + re-calc SUM {lg (n-k) + O((n-k)/k} = O((m+n) lg 2 n) heap updates will be dominant!

Greedy insertion VERSION 4 Version 3: selection is down, but updating the heap is now dominant Version 4: store in heap only one point per triangle (point of largest error) Algorithm: P = {all grid points}, P = {4 corner points} Initialize TIN to two triangles with 4 corners as vertices while not DONE() do use heap to select point p with largest error(p) insert p in P, delete p from P and update TIN(P ) for all points in the triangle that contains p: find the new triangles where they belong, re-compute their errors find point with largest error per triangle add these points (one per triangle) to the heap

Greedy insertion VERSION 4 Worst-case: O(mn) iteration k: - + O(lg k) + O(1) + O(n-k)xO(1) + O(1) x O(lg k) RE-CALC SELECT INSERT + re-calc overall: SUM {lg k + O(n-k) } = O(mn) Average case: O((m+n) lg n) if points are uniformly distributed in the triangles ==> O((n-k)/k) points per triangle iteration k: - + O(lg k) + O(1) + O((n-k)/k)x O(1) + O(1) x O(lg k) RE-CALC SELECT INSERT + re-calc SUM {lg k + O((n-k)/k} = O((m+n) lg n)

Triangulations The straightforward way to triangulate when adding new points runs in O(1) time but will create long and skinny triangles

Triangulations The straightforward way to triangulate when adding new points runs in O(1) time but will create long and skinny triangles

Triangulations The straightforward way to triangulate when adding new points runs in O(1) time but will create long and skinny triangles

Triangulations The straightforward way to triangulate when adding new points runs in O(1) time but will create long and skinny triangles

Triangulations The straightforward way to triangulate when adding new points runs in O(1) time but will create long and skinny triangles

Triangulations The straightforward way to triangulate when adding new points runs in O(1) time but will create long and skinny triangles

Triangulations The straightforward way to triangulate when adding new points runs in O(1) time but will create long and skinny triangles Small angles cause troubles!

Triangulations The straightforward way to triangulate when adding new points runs in O(1) time but will create long and skinny triangles Small angles cause troubles! Good meshes have uniform triangles and angles that are neither too small nor too large

Point-cloud-to-TIN? http://doc.cgal.org/latest/surface_mesh_simplification/illustration-simplification-all.jpg

Triangulation

Triangulation A triangulation of a point set P in 2D is a triangulation of the convex hull of P

Triangulation A triangulation of a point set P in 2D is a triangulation of the convex hull of P

Triangulation A triangulation of a point set P in 2D is a triangulation of the convex hull of P

Triangulation Many ways to triangulate a set of points P

Triangulation Many ways to triangulate a set of points P Different ways to evaluate a triangulation minimum angle maximum degree sum of edge lengths Algorithms for various kinds of optimal triangulations are known. A triangulation that maximizes the minimum angle across all triangles is called the Delaunay triangulation and can be computed in O( n lg n) time.

Greedy insertion with Delaunay triangulation Algorithm: P = {all grid points}, P = {4 corner points} Initialize TIN to two triangles with corners as vertices while not DONE() do for each point p in P, compute error(p) select point p with largest error(p) insert p in P, delete p from P, and update TIN(P ) maintain TIN as a Delaunay triangulation of P

Brainstorming: Point-cloud-to-TIN?

Brainstorming: Point-cloud-to-TIN? grid (raster) TIN

Brainstorming: Point-cloud-to-TIN? What needs to change? Algorithm: P = {all grid points}, P = {4 corner points} Initialize TIN to two triangles with corners as vertices while not DONE() do for each point p in P, compute error(p) select point p with largest error(p) insert p in P, delete p from P, and update TIN(P )

Brainstorming: Point-cloud-to-grid?

Brainstorming: Point-cloud-to-grid? California Lidar data http://www.opentopography.org/images/opentopo_images/garlock_slope.jpg

Brainstorming: Point-cloud-to-grid? Given a point-cloud P and a desired grid spacing, compute a grid that represents P.

Brainstorming: Point-cloud-to-grid? Given a point-cloud P and a desired grid spacing, compute a grid that represents P.

Brainstorming: Point-cloud-to-grid? Given a point-cloud P and a desired grid spacing, compute a grid that represents P.

Brainstorming: Point-cloud-to-grid? Sketch an algorithm to compute a grid given a point cloud and a desired resolution. Analyze it.