LIS Pro 3D Tutorials

Point Cloud Classification - Part 1: Basic Classification

< Previous section    Next section >

Goal

In this section of the tutorial you will learn how to go from a raw, unclassified point cloud to a fully classified point cloud (ground, low/medium/high vegetation, buildings)!

The powerline and pylon classification, which you can already see in the screenshot, will be covered in part 2. So even if your main goal is powerline and pylon classificiation, do not skip this section as part 2 builds on the results from part 1!

Tutorial Structure

  1. Query the point cloud from the virtual point cloud dataset
  2. Filter noise points
  3. Perform ground classification
  4. Segment planar objects for building roof detection
  5. Perform building and vegetation classification
  6. Clean building facades
  7. Clean building roofs

Locate the Data and Folders from the Previous Section

Important

Take care that you have finished the previous tutorial section! In this tutorial we will need the prepared folders and files.

To start, first open LIS Pro 3D!

Create a New Project

If you have any data open in LIS Pro 3D, open a new, clean project!

Open Tiles_500.shp (single_tile_graticule.shp)

Use the upper-left menu in order to load the Tiles_500.shp file. Please note that this is the same as the single_tile_graticule.shp created previously, so you can also use this file instead!

Get Subset from your Point Cloud Catalog

We can use Tiles_500.shp in order to query an area of interest from our available datasets. The typical scenario is the extraction of a subset.

Note

In our case, the tile size is larger than the “physical” tiling. Thus, the two available *.laz.files will be merged into a single point cloud.

Open the Get Subset from Virtual LAS/LAZ Tool

  • Provide the tiles.lasvf file that we have created in the previous tutorial
  • Provide the Tiles_500.shp for the spatial query!
  • use the settings shown here:

Tool: Get Subset from Virtual LAS/LAZ
Geoprocessing: LIS Pro 3D → Virtual → LAS/LAZ   //    ToolsLIS Pro 3D → Virtual

Parameter Setting
Filename …/data/las/tiles.lasvf
Optional Output Filepath
Copy existing Attributes 🗹
Classes
Last Returns
Constrain Query
File Compression 🗹
Fail on Empty Point Clouds 🗹
Point Cloud Thinning 🗹
    Point Spacing 0.1
AOI
> Shape Tiles_500
    Tilename <not set>
Grid system <not set>
    > Grid <not set>
X-Extent 0;0
Y-Extent 0;0
Add Overlap 🗹
    Overlap 30
    Skip Empty AOIs 🗹
    Optional Tile Info Filename
One Point Cloud per Polygon
Tip

Use the Save button before execution of the tool in order to save the parameters in an *.sg-parameters-file. Provide a reasonable name. If you have an sg-parameter-file for a specific tool, you can simply load your settings by using the Load button. Thereby, you don’t have to remember the settings. Do this for all the tools you run!

Inspect the Extracted Point Cloud Data

Find the extracted dataset in the PointCloud section of the Data Tab.

In the Description Tab you can see, that 1361643 points have been extracted from the point cloud catalog

Open the las_subset_tiles dataset in a map by double-clicking on it!

You can see that both “physical” point cloud files are merged together into one dataset here.

Tip

View the dataset also in the LIS Pro 3D > Point Cloud Editor > Point Cloud Editor.

Remove Noise Points

Open the tool LIS Pro 3D > Filtering > Remove Isolated Points

  • Provide the las_subset_tiles dataset.
  • use the following settings:

Tool: Remove Isolated Points
Geoprocessing: LIS Pro 3D → Filtering → Point Cloud   //    ToolsLIS Pro 3D → Filtering

Parameter Setting
>> Point Cloud las_subset_tiles
    Copy existing Attributes 🗹
> Neighborhood Point Cloud <not set>
< Filtered Point Cloud <not set>
Search Radius 3
Maximum Number of Points 2
Method label points
    Attribute Name noise
    Class ID Noise 7
    Class ID Undefined 1

After Execution we can see that the point cloud has got an additional attribute field called noise, indicating, valid and invalid points for the next processing steps.

The Messages Window indicates that only 7 points have been labelled as noise

Note

Keep in mind that in a typical raw data scenario a much higher number of noise points must be expected (including low and high outliers). These outliers have to be labelled before the following processing steps.

Ground Classification

Open the tool LIS Pro 3D > Classification > Ground Classification

  • Provide the las_subset_tiles dataset.
  • Provide the noise attribute from the previous step.
  • Exclude Point Classes: 7 (computed in the previous step)
  • use the following settings:

Tool: Ground Classification
Geoprocessing: LIS Pro 3D → Classification   //    ToolsLIS Pro 3D → Classification

Parameter Setting
>> Point Cloud las_subset_tiles
    Classification noise
    Segment ID <not set>
    Copy existing attributes 🗹
    Spatial Sorting
< Point Cloud Classified <not set>
   Attribute Suffix
< TIN Polygons <not set>
Seed Generation
Initial Cellsize 50
Final Cellsize 0.5
Adjust Cellsize
Filter Seeds
TIN Densification
Terrain Angle 88
Minimum Edge Length 0.5
Maximum Angle 35
Maximum Distance 0.8
Z Tolerance 0.05
Segments
Point Cloud Normalization
Attach DZ to Point Cloud 🗹
Classification
Exclude Point Classes 7
  • Click Execute

After Execution, the map view will be updated and we can see the point cloud classified into ground and non-ground points.

Tip

View the updated dataset also in the LIS Pro 3D > Point Cloud Editor > Point Cloud Editor. Provide the grd_class as Classification and use the shortcut 5 in order to show the classification.

Segmentation of Planar Objects for Building Roof Detection

Open the tool LIS Pro 3D > Segmentation > Segmentation by Plane Growing

  • Provide the las_subset_tiles dataset.
  • Provide the grd_class attribute from the previous step as Filter Attribute.

Use the following settings:

Tool: Segmentation by Plane Growing
Geoprocessing: LIS Pro 3D → Segmentation   //    ToolsLIS Pro 3D → Segmentation

Parameter Setting
>> Point Cloud las_subset_tiles
    Seed Attribute <not set>
    Threshold Attribute <not set>
    Filter Attribute grdclass
    Direction Scanner (X) <not set>
    Copy existing attributes 🗹
< Point Cloud Segmented <not set>
    Attribute Suffix
Filtering
Low Range 0;1
High Range 3;64
NN Search
Method NN radius
Search Radius 1
Minimum Number of Neighbors 3
Segmentation
Robust Plane Fitting 🗹
    Maximum Distance 0.1
    Minimum Percentage 50
    Method Search Point search point must be included in best fit plane
    Random Seed 2
Growing Radius 1
Growing Plane Distance 0.1
Relabel all Points
Segmentation Iterations 1
Region Growing
Search Radius 1
Minimum Segment Size 20
Maximum Segment Size 100000
Maximum Normal Difference 10
Maximum Plane Offset 0.2
Normal Recalculation Interval 100000
Output
Segment Size
Normal Vector
Slope
Aspect
Quality of fit
  • Click Execute

After Execution, the map view has been updated and we can see the segmented planar objects in the analysed scene. The ground points have been ignored in this segmentation.

Tip

View the updated dataset also in the LIS Pro 3D > Point Cloud Editor > Point Cloud Editor. Provide the segmentid as Random and use the shortcut Q in order to show the segment IDs.

Building and Vegetation Classification

Open the tool Enhanced Point Cloud Classification

  • Provide the las_subset_tiles dataset.
  • Provide the segmentid attribute from the previous step.
  • Provide the grd_class attribute from ground classification.
  • Provide the dz attribute from ground classification.

Use the following settings:

Tool: Enhanced Point Cloud Classification
Geoprocessing: LIS Pro 3D → Classification   //    ToolsLIS Pro 3D → Classification

Parameter Setting
>> Point Cloud las_subset_tiles
    Segment ID segmentid
    Class ID Ground grdclass
    DZ dz
    Copy existing attributes 🗹
< Point Cloud Classified <not set>
    Attribute Suffix
Exclude Point Classes 7
Buildings
Method point cloud features
Minimum DZ 2
Growing Radius 1
Feature Radius 1
Minimum Neighbor Ratio 60
    Slope-Adaptive
Mininum Points Building 200
Vegetation
Search Radius 2
    Minimum Points Vegetation 5
Minimum DZ Low Vegetation 0
Minimum DZ Medium Vegetation 0.3
Minimum DZ High Vegetation 2
Calibration Information
Output Calibration Information
  • Click Execute

After execution the map view has been be updated

Tip

View the updated dataset also in the LIS Pro 3D > Point Cloud Editor > Point Cloud Editor. Provide the classid as Classification and use the shortcut 5 in order to show the classification.

This classification has still some errors: vegetation points on the facades of the buildings and vegetation points on small roof structures like chimneys. To overcome this, we run two additional cleaning steps.

Clean Building Facades

Open the tool LIS Pro 3D > Classification > Clean Building Facades

  • Provide the las_subset_tiles dataset.
  • Provide the classid attribute from the previous step as Attribute to Filter.
  • Set the Attribute Suffix for the output attribute to facades.

Use the following settings:

Tool: Clean Building Facades
Geoprocessing: LIS Pro 3D → Classification   //    ToolsLIS Pro 3D → Classification

Parameter Setting
>> Point Cloud las_subset_tiles
    Attribute to Filter classid
    DZ Ground <not set>
    Copy existing attributes 🗹
< Point Cloud Filtered <not set>
    Attribute Suffix facades
Filter
Search Radius 1
Building Class(es) 6;6
Low Attribute Range 3;5
High Attribute Range 7;64
Target Class 1
  • Click Execute

After execution a new attribute classid_facades has been added to the attributes table of the point cloud.

Clean Building Roofs

Open the tool LIS Pro 3D > Classification > Clean Building Roofs

  • Provide the las_subset_tiles dataset.
  • Provide the classid_facades attribute from the previous step as Attribute to Filter.
  • Set the Attribute Suffix for the output attribute to roofs.

Use the following settings:

Tool: Clean Building Roofs
Geoprocessing: LIS Pro 3D → Classification   //    ToolsLIS Pro 3D → Classification

Parameter Setting
>> Point Cloud las_subset_tiles
    Attribute to Filter classid_facades
    Copy existing attributes 🗹
< Point Cloud Filtered <not set>
    Attribute Suffix roofs
NN Search
Dimension 3D search
Search Radius 2.5
Use Inner Radius
Filter
Threshold Majority 25
Target Class 1
Filter Facade Class
  • Click Execute

After execution a new attribute classid_facades_roofs has been added to the attributes table of the point cloud.

Comparing the initial classid with the classid_facades_roofs shows that vegetation points on facades and roofs have been relabeled to the undefined class (1):

classid (not cleaned)

classid_facades_roofs (cleaned)

Now we are done with the basic point cloud classification!

Recap

In this section (part 1 of the point classification tutorial) we have classified an ALS point cloud into the classes ground, building, vegetation (low/medium/high) by executing the following steps:

  1. Query the point cloud from the virtual point cloud dataset
  2. Filter noise points
  3. Perform ground classification
  4. Segment planar objects for building roof detection
  5. Perform building and vegetation classification
  6. Clean building facades
  7. Clean building roofs

In the next section, you will learn how you can add the powerline and pylon classification which you can already see in the screenshot above!

< Previous section    Next section >