Point clouds produced with dense-matching by photogrammetry software such as SURE, Pix4D, or Photoscan can include a fair amount of the kind of “low noise” as seen below. Low noise causes trouble when attempting to construct a Digital Terrain Model (DTM) from the points as common algorithm for classifying points into ground and non-ground points – such as lasground – tend to “latch onto” those low points, thereby producing a poor representation of the terrain. This blog post describes one possible LAStools workflow for eliminating excessive low noise. It was developed after a question in the LAStools user forum by LASmoons holder Muriel Lavy who was able to share her noisy data with us. See this, this, this, this, this, and this blog post for further reading on this topic.
Here you can download the dense matching point cloud that we are using in the following work flow:
We leave the usual inspection of the content with lasinfo, lasview, and lasvalidate that we always recommend on newly obtained data as an exercise to the reader. Note that a check for proper alignment of flightlines with lasoverlap that we consider mandatory for LiDAR data is not applicable for dense-matching points.
lastile -i muriel\20161127_Pancalieri_UTM.laz ^ -tile_size 500 -buffer 25 -flag_as_withheld ^ -epsg 32632 ^ -odir muriel\tiles_raw -o panca.laz
lassort -i muriel\tiles_raw\panca*.laz ^ -odir muriel\tiles_sorted -olaz ^ -cores 7
lasthin -i muriel\tiles_sorted\panca*.laz ^ -step 2.5 ^ -highest -classify_as 8 ^ -odir muriel\tiles_thinned -olaz ^ -cores 7
lasnoise -i muriel\tiles_thinned\panca*.laz ^ -ignore_class 0 ^ -step_xy 5 -step_z 0.1 -isolated 4 ^ -classify_as 7 ^ -odir muriel\tiles_isolated -olaz ^ -cores 7
lasground -i muriel\tiles_isolated\panca*.laz ^ -city -ultra_fine -ignore_class 0 7 ^ -odir muriel\tiles_temp_ground -olaz ^ -cores 7
lasheight -i muriel\tiles_temp_ground\panca*.laz ^ -do_not_store_in_user_data ^ -classify_below -0.5 12 ^ -odir muriel\tiles_temp_denoised -olaz ^ -cores 7
las2las -i muriel\tiles_temp_denoised\panca*.laz ^ -change_classification_from_to 1 0 ^ -change_classification_from_to 2 0 ^ -change_classification_from_to 7 0 ^ -change_classification_from_to 12 7 ^ -odir muriel\tiles_denoised -olaz ^ -cores 7
lasground -i muriel\tiles_denoised\panca*.laz ^ -ignore_class 7 ^ -city -ultra_fine ^ -odir muriel\tiles_ground -olaz ^ -cores 7
las2dem -i muriel\tiles_ground\panca*.laz ^ -keep_class 2 ^ -step 1 -hillshade ^ -use_tile_bb ^ -odir muriel\tiles_dtm -opng ^ -cores 7
And here the original DSM side-by-side with resulting DTM after low noise removal. One dense forested area near the center of the data was not entirely removed due to the lack of ground points in this area. Integrating external ground points or manual editing with lasview are two possible way to rectify these few remaining errors …
Great tutorial and workflow – thanks for posting this!
I have avidly read this and the previous 6 blog posts on the topic, as this is a problem I am directly dealing with in my data.
Areas with open water (as in this example) frequently cause me problems with excessive low and high noise. Now you’ve given us a workflow for the removal of the low noise component. I wonder if you also have some thoughts on how to remove the high noise?
In my datasets, these high noise features often get mis-classified at trees or vegetation. The points are clustered into spikey shapes, with point densities too high to be filtered out as sparse noise or outliers.
Perhaps the solution is some combination of filtering based on the highest ~10 percentile and pixel color values?
Pingback: Digital Pothole Removal: Clean Road Surface from Noisy Pix4D Point Cloud | rapidlasso GmbH
Pingback: Using Open LiDAR to Remove Low Noise from Photogrammetric UAV Point Clouds | rapidlasso GmbH