At INTERGEO 2016 in Hamburg, the guys from Aerowest GmbH shared with us a small photogrammetric point cloud from the city of Soest that had been generated with the SURE dense-matching software from nFrames. We want to test whether – using LAStools – we can generate a decent DTM from these points that are essentially a gridded DSM. If this interest you also see this, this, this, and this story.
Here you can download the four original tiles (tile1, tile2, tile3, tile4) that we are using in these experiments. We first re-tile them into smaller 100 meter by 100 meter tiles with a 20 meter buffer using lastile. We use option ‘-flag_as_withheld’ that flags all the points falling into the buffer using the withheld flag so they can easily be removed on-the-fly later with the ‘-drop_withheld’ filter (see the README for more on this). We also add the missing projection with ‘-epsg 32632’.
lastile -i original\*.laz ^ -tile_size 100 -buffer 20 ^ -flag_as_withheld ^ -epsg 32632 ^ -odir tiles_raw -o soest.laz
Below is a screenshot from one of the resulting 100 meter by 100 meter tiles (with 20 meter buffer) that we will be focusing on in the following experiments.
Next we use lassort to reorder the points ordered along a coherent space-filling curve as the existing scan-line order has the potential to cause our triangulation engine to slow down. We do this on 4 cores.
lassort -i tiles_raw\*.laz ^ -odir tiles_sorted -olaz ^ -cores 4
We then use lasthin to lower the number of points that we consider as ground points (see the README for more info on this tool). We do this because the original 5 cm spacing of the dense matching points is a bit excessive for generating a DTM with a resolution of, for example, 50 cm. Instead we only use the lowest point in each 20 cm by 20 cm cell as a candidate for becoming a ground point, which reduces the number of considered points by a factor of 16. We achieve this by classifying these lowest point to a unique classification code (here: 9) and later tell lasground to ignore all other classifications.
lasthin -i tiles_sorted\*.laz ^ -step 0.2 -lowest -classify_as 9 ^ -odir tiles_thinned -olaz ^ -cores 4
lasground -i tiles_thinned\*.laz ^ -step 20 -bulge 0.5 -spike 0.5 -fine ^ -ignore_class 0 ^ -odir tiles_ground -olaz ^ -cores 4
las2las -i tiles_thinned\*.laz ^ -keep_RGB_red 0 7680 ^ -keep_RGB_green 0 8960 ^ -keep_RGB_blue 0 10240 ^ -filtered_transform ^ -set_classification 7 ^ -odir tiles_rgb_filtered -olaz ^ -cores 4
lasground -i tiles_thinned\*.laz ^ -step 20 -bulge 0.5 -spike 0.5 -fine ^ -ignore_class 0 7 ^ -odir tiles_ground -olaz ^ -cores 4
Finally we create a DTM with blast2dem (see README) and a DSM with lasgrid (see README) by merging all points into one file but dropping the buffer points that were marked as withheld by the initial run of lastile (see README).
blast2dem -i tiles_ground\*.laz -merged ^ -drop_withheld -keep_class 2 ^ -step 0.5 ^ -o dtm.bil lasgrid -i tiles_ground\*.laz -merged ^ -drop_withheld ^ -step 0.5 -average ^ -o dsm.bil
lasview -i dtm.bil dsm.bil -faf
Above you see the final DTM and the original DSM. So yes, LAStools can definitely create a DTM from point clouds that are the result of dense-matching photogrammetry. We used the correlation between shadowed areas in the source image and geometric errors to remove those points from consideration for ground points that are likely to be too low and result in bumps. For dense-matching algorithms that also output an uncertainty value for each point there is the potential for even better results as our range of eliminated RGB colors may not cover all geometrically uncertain points while at the same time may be too conservative and also remove correct ground points.