<div dir="ltr">Andreas,<div><br></div><div>You might have luck with <a href="https://pdal.io/stages/filters.reciprocity.html#filters-reciprocity">https://pdal.io/stages/filters.reciprocity.html#filters-reciprocity</a> or <a href="https://pdal.io/stages/filters.miniball.html#filters-miniball">https://pdal.io/stages/filters.miniball.html#filters-miniball</a>, though I think both may require a bit of trial and error to determine the correct neighborhood size to use.</div><div><br></div><div>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.</div><div><br></div><div>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.</div><div><br></div><div>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).</div><div><br></div><div>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 (<a href="https://pdal.io/stages/filters.html#height-above-ground">https://pdal.io/stages/filters.html#height-above-ground</a>). That would probably easier when it comes to finding a suitable threshold.</div><div><br></div><div>Brad</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Mar 9, 2022 at 3:44 PM Andreas Yankopolus <<a href="mailto:andreas@yank.to">andreas@yank.to</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div style="overflow-wrap: break-word;">All—<div><br></div><div>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.</div><div><br></div><div>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?</div><div><br></div><div>I’m having success with:</div><div><br></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div>{</div></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div>"type": "filters.outlier",</div></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div>"method": "radius",</div></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div>"radius": 16.0,</div></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div>"min_k": 64</div></blockquote></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div>}</div></blockquote><div><br></div><div>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.</div><div><br></div><div>Cheers,</div><div><br></div><div>Andreas</div></div>_______________________________________________<br>
pdal mailing list<br>
<a href="mailto:pdal@lists.osgeo.org" target="_blank">pdal@lists.osgeo.org</a><br>
<a href="https://lists.osgeo.org/mailman/listinfo/pdal" rel="noreferrer" target="_blank">https://lists.osgeo.org/mailman/listinfo/pdal</a><br>
</blockquote></div>