Any way to calculate curvature (or "spikiness") for points?

76 views
Skip to first unread message

Andy Ritchie

unread,
Jan 15, 2017, 10:48:24 PM1/15/17
to LAStools - efficient tools for LiDAR processing
Maybe I'm making this overly complicated. I am working on a dataset that has fairly poor point density (0.8 - ~2 m last return point spacing) over densely forested high-relief topography. lasground_new gives me decent results (very good in most areas) but I have to go with 25 m step (default) to get rid of the trees and then I chop off ridges too. I've used lasthin and when I get to about a 4-5 m thinning, then I start to get nice spikes where the trees are. at this point they're much "spikier" than the sharp ridges, but lasground_new still won't find them without chopping out the ridgetops too. I thought that if I could remove the spikiest spikes then I could get a nice surface, but I can't figure out a good way to despike the surface.

I tried using cloudcompare to calculate curvature for the points since, if I take a handful of neighbors for each point the curvature of the spikes should be >> than the curvature of anything else, but CC only calculates unsigned curvature so the downspikes (ground or low veg between trees) gets assigned as high a curvature as the upspikes.

Does anyone know of a way to assign some type of curvature or spikiness metric to points,so they can then be filtered? Of course any other suggestions are very welcome too. I've played with about 50 iterations of thinning, bulge, spike, etc.

Much obliged, 

Andy

attached are a couple images showing spikiness (lasthin -lowest to 5m spacing) and lasground_new (unthinned, default settings) on a test tile.




SK_5m_gnd.jpg
SK_5m_thin.jpg

Sam Hackett

unread,
Mar 26, 2018, 3:06:26 PM3/26/18
to LAStools - efficient tools for LiDAR processing
Hi Andy,

With lasground_new you are able to nominate the -sub (step) as well as -step.  Combining a low -sub step value with a high -bulge value of several metres might help.

I would have thought the penetration through the vegetation would have been adequate for a smaller step value than 25, however sounds like you've played with the numbers.

Additionally are you including a -fine/-coarse variable?  '-fine', '-extra_fine', '-ultra_fine', '-hyper_fine' or '-coarse', '-extra_coarse'.  With your steep terrain lasground_new will almost definitely get a better result with a finer value rather than the default, which seems to assume fairly mild terrain.  This fine value will let the 1st iteration accept steep surfaces in the ground solution.  With fine/coarse: you would use -extra_course for sports field type stuff, super flat, and I have had success with -hyper_fine on near vertical cliff faces beside coastal roads.

You might try some values such as;

-step 25
-sub 3
-bulge 2
-ultra_fine
-spike 1

Try other fine values also.  I expect the fine setting will be significant for this terrain.

Lastly, I can't remember if lasground_new filters the retruns for -last_only by default.  You could try adding this in to the mix.


Sam
Reply all
Reply to author
Forward
0 new messages