<div dir="ltr">Geoff-<div><br></div><div>vtkVoxelGrid (in VTK/Remote/vtkPointCloud) is now interpolating point data attributes. Besides updating Remotes/vtkPointCloud, you'll need to update VTK as I just pushed a bunch of stuff (in VTK/Filters/Points) that implements a kernel interpolation framework. To change the interpolation of attributes on vtkVoxelGrid, you have to specify a new interpolation kernel (vtkLinearKernel is default - averages data).</div><div><br></div><div>Please test this and report problems. I recommend that you build optimized with VTK_SMP_IMPLEMENTATION_TYPE=TBB you'll run much faster.</div><div><br></div><div>Best,</div><div>W </div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Jan 29, 2016 at 10:26 AM, Geoff Wright <span dir="ltr"><<a href="mailto:gpwright@gmail.com" target="_blank">gpwright@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hi Will,<div><br></div><div>That sounds good. For my use case I do have a couple of scalar quantities associated with each point, in PCL terminology I use <span style="line-height:1.5">pcl</span><span style="line-height:1.5;color:rgb(0,0,0)">::</span><span style="line-height:1.5">PointXYZHSV. For interpolation of scalar values </span><span style="line-height:1.5">I think the ideal would be a parameter on voxel grid that can accept either VTK_NEAREST_INTERPOLATION, VTK_LINEAR_INTERPOLATION or VTK_CUBIC_INTERPOLATION a la vtkVolumeProperty.h. However, if this is too much work I think a linear interpolation implementation would be fine for most use cases.</span></div><div><span style="line-height:1.5"><br></span></div><div><span style="line-height:1.5">Let me know when you push the changes, I'll try it out. Just checked your gitlab repo and didn't seem them there yet.</span></div><span class="HOEnZb"><font color="#888888"><div><span style="line-height:1.5"><br></span></div><div><span style="line-height:1.5">G</span></div><div><span style="line-height:1.5"><br></span></div><div><span style="line-height:1.5"><br></span></div>
<div><br></div></font></span></div><div class="HOEnZb"><div class="h5"><br><div class="gmail_quote"><div dir="ltr">On Fri, Jan 29, 2016 at 10:07 AM Will Schroeder <<a href="mailto:will.schroeder@kitware.com" target="_blank">will.schroeder@kitware.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Geoff-<div><br></div><div>I knocked out a vtkVoxelGrid last night, it seems to work great. It's threaded and seems to be fast.</div><div><br></div><div>Question for you before I push the work to the repository: averaging points in each bin provides a nice subsampled point position. But what do you think we should do for attributes (e.g., scalars, vector, etc.)? These could be averaged too. There are however other options like finding the closest point to the subsampled point and using those attribute values, or if you want to get really fancy, using an interpolation kernel to interpolate to the subsampled point.</div><div><br></div><div>Thoughts?</div></div><div dir="ltr"><div>W</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Jan 28, 2016 at 10:03 AM, Will Schroeder <span dir="ltr"><<a href="mailto:will.schroeder@kitware.com" target="_blank">will.schroeder@kitware.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Thanks for the feedback. I have some downsampling filters in the works now, I'll let you know when I have something ready. <div><br></div><div>BTW we are on a similar path. PCL is awesome, but we have some common workflows that would be better served with more compact software environments, and with minimal IO and/or data transfer. So we're trying to knock of a small kernel of capability to achieve this.</div><div><br></div><div>Best,</div><div>W</div></div><div class="gmail_extra"><div><div><br><div class="gmail_quote">On Thu, Jan 28, 2016 at 9:56 AM, Geoff Wright <span dir="ltr"><<a href="mailto:gpwright@gmail.com" target="_blank">gpwright@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hi Will,<div><br></div><div>This is good to see. I'm currently using VTK to generate surfaces from some point cloud data. I have some initial pre processing steps that I use PCL (point cloud library) for, and then a vtk stage that converts PCL point cloud into vtkPolyData/vtkPoints. <span style="line-height:1.5">It would be great to eliminate the PCL dependency and use exclusively vtk. </span><span style="line-height:1.5">My point cloud data grows very large over time with a lot of redundant points so its very important to downsample them onto uniform spacing ( </span><a href="http://docs.pointclouds.org/trunk/classpcl_1_1_voxel_grid.html" style="line-height:1.5" target="_blank">http://docs.pointclouds.org/trunk/classpcl_1_1_voxel_grid.html</a><span style="line-height:1.5"> ) before processing them in vtk. Would it make sense to add something like this to your library?</span></div><div><span style="line-height:1.5"><br></span></div><div><span style="line-height:1.5">Geoff</span></div><div><span style="line-height:1.5"><br></span></div><div><span style="line-height:1.5"><br></span></div><div><br></div><div><br></div><div><br></div><div><br></div></div><br><div class="gmail_quote"><div><div><div dir="ltr">On Thu, Jan 28, 2016 at 9:12 AM Will Schroeder <<a href="mailto:will.schroeder@kitware.com" target="_blank">will.schroeder@kitware.com</a>> wrote:<br></div></div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><div dir="ltr"><div>FYI- I have committed an initial set of filters for performing point cloud processing. Any feedback or suggestions are welcome as this is an initial prototype. The work is currently available as a remote module to VTK (vtkPointCloud) via this repository:</div><div><a href="https://gitlab.kitware.com/vtk/point-cloud.git" target="_blank">https://gitlab.kitware.com/vtk/point-cloud.git</a><br></div><div><br></div><div>A couple of notes:</div><div>+ Right now I am using vtkPolyData to represent the point cloud via a vtkPoints instance. There are no vtkVertex, vtkPolyVertex cells created to save on memory.</div><div>+ The classes will process as input any vtkPointSet dataset</div><div>+ There is a general framework for filtering point clouds via the class vtkPointCloudFilter. Besides their filtered cloud output, these filters also have an optional, second output which contains any points removed from the input.</div><div>+ Current filters include vtkRadiusOutlierRemoval, vtkStatisticalOutlierRemoval, vtkExtractPoints (extract points using an implicit function). Some of these names are inspired by <a href="http://pointclouds.org/" target="_blank">PCL</a> names.</div><div>+ All filters are threaded using vtkSMPTools using a threaded locator (vtkStaticPointLocator) so I believe that this is relatively fast, although I have not done much testing.</div><div>+ I'm using vtkPointGaussianMapper in the tests, a class that Ken wrote that is very fast. </div><div><br></div><div>As usual comments and suggestions are requested. In particular any suggestions for other filters to write are welcome (to round out some of the core functionality). The repository is in flux as I try crazy ideas and try to educate myself, so be forewarned.</div><div><br></div><div>Best,<br>W</div><div><br></div><div><br></div>
</div></div></div>
_______________________________________________<br>
Powered by <a href="http://www.kitware.com" rel="noreferrer" target="_blank">www.kitware.com</a><br>
<br>
Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html" rel="noreferrer" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
<br>
Search the list archives at: <a href="http://markmail.org/search/?q=vtk-developers" rel="noreferrer" target="_blank">http://markmail.org/search/?q=vtk-developers</a><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a href="http://public.kitware.com/mailman/listinfo/vtk-developers" rel="noreferrer" target="_blank">http://public.kitware.com/mailman/listinfo/vtk-developers</a><br>
<br>
</blockquote></div>
</blockquote></div><br><br clear="all"><div><br></div></div></div><span><font color="#888888">-- <br><div><div dir="ltr"><div>William J. Schroeder, PhD<br>Kitware, Inc. - Building the World's Technical Computing Software<br>28 Corporate Drive<br>Clifton Park, NY 12065<br><a href="mailto:will.schroeder@kitware.com" target="_blank">will.schroeder@kitware.com</a><br><a href="http://www.kitware.com" target="_blank">http://www.kitware.com</a><br><a href="tel:%28518%29%20881-4902" value="+15188814902" target="_blank">(518) 881-4902</a></div></div></div>
</font></span></div>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div><div dir="ltr"><div>William J. Schroeder, PhD<br>Kitware, Inc. - Building the World's Technical Computing Software<br>28 Corporate Drive<br>Clifton Park, NY 12065<br><a href="mailto:will.schroeder@kitware.com" target="_blank">will.schroeder@kitware.com</a><br><a href="http://www.kitware.com" target="_blank">http://www.kitware.com</a><br><a href="tel:%28518%29%20881-4902" value="+15188814902" target="_blank">(518) 881-4902</a></div></div></div>
</div>
</blockquote></div>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr"><div>William J. Schroeder, PhD<br>Kitware, Inc. - Building the World's Technical Computing Software<br>28 Corporate Drive<br>Clifton Park, NY 12065<br><a href="mailto:will.schroeder@kitware.com" target="_blank">will.schroeder@kitware.com</a><br><a href="http://www.kitware.com" target="_blank">http://www.kitware.com</a><br>(518) 881-4902</div></div></div>
</div>