[pdal] Filtering atmospheric noise

Bradley Chambers brad.chambers at gmail.com
Wed Mar 9 14:09:36 PST 2022


Andreas,

You might have luck with
https://pdal.io/stages/filters.reciprocity.html#filters-reciprocity or
https://pdal.io/stages/filters.miniball.html#filters-miniball, though I
think both may require a bit of trial and error to determine the correct
neighborhood size to use.

In the first, I think you'd need a neighborhood size larger than the
cluster such that you are also finding points outside the cluster. Then
you'd need to filter on the Reciprocity expecting that a percentage of the
neighbors in the cluster are not found in the reciprocal neighborhood. If
you read the docs, it should make sense.

For miniball, the intuition is simply that the miniball formed from the
points in the cluster should be different than the miniball formed from the
valid returns. I suppose that again the neighborhood size probably needs to
be larger than or closely paired to the cluster size so that the enclosing
ball captures the bulk of the cluster.

You could compute each on a sample patch and then visualize the results
using CloudCompare or something that can handle extra dimensions to see if
you can get a feel for where to set those thresholds. I have a feeling that
in both cases you'll probably run into issues where you are also
obliterating sparse points that are more valid (water surface/shoreline,
building facades).

Finally, with the points being so far above ground, have you tried or
considered simply computing ground (or using existing classifications) and
computing AGL values (
https://pdal.io/stages/filters.html#height-above-ground). That would
probably easier when it comes to finding a suitable threshold.

Brad

On Wed, Mar 9, 2022 at 3:44 PM Andreas Yankopolus <andreas at yank.to> wrote:

> All—
>
> I’m using USGS 3DEP point-clouds to generate surface-height rasters around
> Longmont, CO. The point-cloud files have spurious returns over many of the
> lakes/reservoirs in the area that are tagged other than 7 or 18. They’re
> streaks about 0.3 m long located 200+ m above the lake. In most cases the
> streak has 3–8 points, but I’ve found one with 34 points.
>
> The outlier filter with statistical or radius methods doesn’t remove these
> longer streaks. Any recommendations on removing dense groups of points well
> separated from the main mass?
>
> I’m having success with:
>
> {
>
> "type": "filters.outlier",
>
> "method": "radius",
>
> "radius": 16.0,
>
> "min_k": 64
>
> }
>
>
> This seems to do the trick of removing isolated groups while leaving the
> main body of points alone, but I’m thinking these some other dimension that
> could be calculated and added to points then used to remove outlier groups
> later.
>
> Cheers,
>
> Andreas
> _______________________________________________
> pdal mailing list
> pdal at lists.osgeo.org
> https://lists.osgeo.org/mailman/listinfo/pdal
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/pdal/attachments/20220309/b6daa8a4/attachment-0001.html>


More information about the pdal mailing list