First, for the answers proposed here, you probably do not want to use the ferry filter to push
Z, at least not prior to segmentation, as the act of normalizing heights involves subtracting an interpolated estimate of the ground elevation from each return. Something planar in the original
X, Y, Z space may no longer be planar in the transformed
X, Y, HeightAboveGround space. If you really need this to occur for downstream processing, I'd suggest holding off until the end of the pipeline.
Two options in the PDAL toolbox are:
Neither of these is a full-fledged building/vegetation segmentation solution, but may serve as valuable building blocks.
approximatecoplanar filter may be helpful -- it is just one of the processing steps used in "Real-Time Detection of Planar Regions in Unorganized Point Clouds" by Limberger and Oliveira. Try adding the following to your pipeline following the existing range filter.
You will have a new dimension called
Coplanar, where 0 indicates that a point is not likely part of a planar patch (e.g., vegetation) and 1 indicates that it is perhaps part of a planar patch (e.g., roof). You'll need to either 1) pick another output format that supports the
Coplanar dimension, or 2) insert another range filter to select only
estimaterank filter is similar in nature. There you will get a new dimension
Rank=2 indicates planar features and
Rank=3 would be more indicative of vegetation. Again, you'll need to choose how to deal with your new dimension as the LAS writer will drop unknown fields like