Artikel

Efficiently extracting ground points from street-level point clouds

Amsterdam draagt zorg voor de staat van de openbare ruimte. Een van de verantwoordelijkheden van de gemeente is het bijhouden van een actueel register van grootschalige topografische objecten zoals gebouwen, wegen en waterwegen, maar ook kleinere objecten zoals straatnaamborden, straatlantaarns en vegetatie. In Nederland gebeurt dit door middel van de Basisregistratie Grootschalige Topografie (BGT). Het bijhouden van deze registratie is arbeidsintensief en vatbaar voor menselijke fouten.
Onlangs heeft de gemeente Amsterdam een 3D puntenwolk op straatniveau aangeschaft die het gehele gemeentelijke gebied omvat. De puntenwolk is opgenomen met behulp van zowel een fotocamera als een LiDAR sensor, wat resulteert in een puntenwolk die niet alleen coördinaten bevat, maar ook kleurinformatie. Binnen het team van Amsterdam Intelligence is er een proefproject opgezet om nauwkeurige locatie- en hoogte details van de straatverlichting van Weesp te verzamelen. Een eerste stap in dit project is het wegfilteren van punten die tot de grond behoren. In dit artikel vertellen we je er meer over.

One of the responsibilities of a municipality is to maintain an up-to-date record of large-scale topographical objects such as buildings, roads, and waterways, but also smaller objects such as street signs, street lights, and vegetation. In The Netherlands this is the “Basisregistratie Grootschalige Topografie (BGT)”.  Maintaining this record is labour-intensive and susceptible to human error. Nowadays, accurate data sources are available to aid in this task.

Recently, the City of Amsterdam has acquired a street-level 3D Point Cloud encompassing the entire municipal area. The point cloud, provided by Cyclomedia Technology, is recorded using both a panoramic image capturing device together with a Velodyne HDL-32 LiDAR sensor, resulting in a point cloud that includes not only <x, y, z> coordinates, but also RGB data. In order to investigate the potential of using this data to help improve the topographical register a pilot project has been set-up within the AI Team. The goal of the pilot is to extract accurate location and height details of the street light inventory of Weesp, in order to facilitate the upcoming merger of these two municipalities.

One of the challenges of working with point clouds is the large volume of data. For example, a typical 50x50m urban scene can easily be in the order of 100 MB. A large portion of this can be attributed to ground points, which is why a first pre-processing step in many point cloud classification approaches is to filter out (or label) these ground points in order to simplify further operations.

In this blog post, we describe our findings of efficiently extracting ground points from the input point cloud.

Plane fitting technique for ground segmentation

In our research we looked at the ground segmentation algorithm for LiDAR point clouds by Zermas et al¹. The ground non-ground segmentation algorithm utilises the assumption that the ground is planar in most cases. A plane is estimated using deterministically assigned seed points in an iterative fashion. Once the plane is estimated, a thresholding is applied on the LiDAR points to discriminate whether a point belongs to the ground or not. The main advantage of this method is the low computational cost. However, this method does not perform well for scenes with large ground fluctuations as shown in the animation below.

Implemented in C++, this algorithm takes approximately 2.9 seconds for a 50x50m point cloud tile of 2.5 million points on a 2020 i7 CPU.

 

Point cloud 2

This image shows a point cloud combined with information about ground height.

 

Dataset fusion technique for ground segmentation

In order to overcome the limitations of plane-based ground filters we investigate the possibilities of using available elevation data and overlaying this data on the point cloud. For this, we use the AHN3 or “Actueel Hoogtebestand Nederland”, the openly available elevation model of the Netherlands obtained by aerial laser scanning. A so-called “maaiveld” layer is provided, in which non-ground objects such as buildings and vegetation have been removed.

The image above shows the result of overlaying the AHN3 surface (shown in yellow / purple) on top of the point cloud. The elevation data matches the ground points quite accurately, however gaps appear in the AHN data which are caused by, for example, vehicles on the road. We include an additional pre-processing step in which small gaps in the AHN data are filled using interpolation. After this, points in the point cloud which are within a certain margin of the AHN surface (e.g. +/- 25 cm) are labelled as “ground”.

Implemented in Python, these two steps take approximately 0.3 seconds for a 50x50m point cloud tile of 2.5 million points on a 2020 i7 CPU.

Results

The animation below shows the performance of both ground filtering approaches. The video shows a 50x100m segment of roughly 4.5 million points. The two filtering approaches are compared by colouring the extracted ground points brown and the non-ground points green. It is clear from this visualisation that the plane-fitting approach (at 4 seconds in the video) is not able to handle a scenario in which the ground is build-up of multiple planes with varying height, such as the elevated road in this case. The AHN-based ground filter (starting at the 8-second mark) is able to match the ground level accurately, and is also able to follow the sloped curbs.

 

Plane-based ground filter & AHN based ground filter

 

Conclusion

These first experiments highlight the potential of data fusion techniques for the pre-processing of point clouds. The AHN-based method not only works better, but is also faster because it does not have to “look for” a ground plane to fit to the data. We are currently working on a similar data fusion method to extract buildings, so stay tuned!

Code for this project is available on GitHub.


[1] D. Zermas, I. Izzat and N. Papanikolopoulos, "Fast segmentation of 3D point clouds: A paradigm on LiDAR data for autonomous vehicle applications," 2017 IEEE International Conference on Robotics and Automation (ICRA), 2017, pp. 5067-5073, doi: 10.1109/ICRA.2017.7989591.

 

Auteurs: Daan Bloembergen & Chris Eijgenstein

Nederlandse inleiding door: Jason Fiawo

Dit artikel is afkomstig van: Efficiently extracting ground points from street-level point clouds (amsterdamintelligence.com)

Afbeelding credits

Header afbeelding: Point cloud

Icon afbeelding: Point cloud