<div dir="ltr"><div><div>Hi Bradley, <br><br></div>I'm looking for the highest-level solution, and if it requires building a new filter I would consider it although I'd had to find the time to do it properly. My only reservation with coding it in c++ is that I haven't settled on a solution yet, so having the ability to try different approaches in python seems valuable to iterate rapidly and find a working solution. It is still very interesting to see that PDAL gives access to many pieces to manipulate points efficiently.<br><br></div>Etienne<br></div><br><div class="gmail_quote"><div dir="ltr">Le lun. 25 avr. 2016 à 12:10, Bradley Chambers <<a href="mailto:brad.chambers@gmail.com">brad.chambers@gmail.com</a>> a écrit :<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Etienne,<div><br></div><div>Are you hoping to put together a pipeline using existing PDAL (and possibly PCL) filters? Or are you open to creating something new altogether?</div><div><br></div><div>I think you will have the best luck going the latter route, although you may have some success coding up your algorithm in Python, using the programmable filter [1], in which case you can use PDAL out of the box. PCL can even be used in front of the Python code to generate normals - it just wouldn't be available to you within the Python environment.</div><div><br></div><div>It'll be up to you to determine the best approach for scoring your points, but the framework for building your algorithm using PDAL and PCL should all be in place. I'd be tempted to write a new PDAL plugin that implements a filter [2] and leverages some of PCL's modules (e.g., computing normals, SAC segmentation, etc.). The ground filter in our PCL plugin <span style="line-height:1.5">[3]</span><span style="line-height:1.5"> should give you a good feel for how such a filter would be organized and built.</span></div><div><br></div><div>Best of luck!</div><div><br></div><div>Brad</div><div><br></div><div>[1] <a href="http://www.pdal.io/stages/filters.programmable.html" target="_blank">http://www.pdal.io/stages/filters.programmable.html</a></div><div>[2] <a href="http://www.pdal.io/tutorial/writing-filter.html" target="_blank">http://www.pdal.io/tutorial/writing-filter.html</a></div><div><span style="line-height:1.5">[3] </span><a href="https://github.com/PDAL/PDAL/blob/master/plugins/pcl/filters/GroundFilter.cpp" style="line-height:1.5" target="_blank">https://github.com/PDAL/PDAL/blob/master/plugins/pcl/filters/GroundFilter.cpp</a><br></div><div><br></div></div><br><div class="gmail_quote"></div><div class="gmail_quote"><div dir="ltr">On Mon, Apr 25, 2016 at 10:58 AM Etienne B. Racine <<a href="mailto:etiennebr@gmail.com" target="_blank">etiennebr@gmail.com</a>> wrote:<br></div></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div><div>Hi list,<br><br></div>I'm looking for a way of thinning a point cloud by scoring points according to the information they bring according to an interpolated surface (such as a DEM). PDAL can filter points randomly either on a grid or systematically, but I'd like to keep points that indicate an inflection and remove points that are within a plane tolerance (since they don't bring much information if the points are linearly interpolated to a surface). I know PCL can compute normals, could that be leveraged to provide a smarter way to thin a point cloud or harnessing the progressive morphological filter? I haven't found much relevant literature on that, but there must be. I probably don't have the right terminology. If you have any insights, I'd appreciate.<br><br></div>One way to think about it would be to <br><ul><li>Generate a DEM with the whole set of points; <br></li><li>For each point in dataset: <br></li><ul><li>remove a point and generate another DEM;</li><li>compare the change in elevation (or volume or whatever metric you want) using e.g. RMSE;</li><li>associate RMSE value to the removed point;</li></ul><li>Remove point with lowest RMSE, repeat until you reach a user-defined threshold. <br></li></ul>This would be tedious, there's probably a better way. I thought it might trigger some ideas or help people send me in the right direction.<br></div><div><br></div>Etienne<br></div></blockquote></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
_______________________________________________<br>
pdal mailing list<br>
<a href="mailto:pdal@lists.osgeo.org" target="_blank">pdal@lists.osgeo.org</a><br>
<a href="http://lists.osgeo.org/mailman/listinfo/pdal" rel="noreferrer" target="_blank">http://lists.osgeo.org/mailman/listinfo/pdal</a></blockquote></div>
</blockquote></div>