[vtk-developers] vtkPointCloud remote module

Will Schroeder will.schroeder at kitware.com
Sat Feb 27 10:27:52 EST 2016


Here's a quick update on point cloud processing in VTK. We've got an
initial base of decent capability going now, including (and I am absolutely
delighted about this) a surface extraction capability based on TSDF
(truncated signed distance functions).

*Classes now running (in VTK/Remote/vtkPointCloud):*
vtkEuclideanClusterExtraction.h
vtkExtractHierarchicalBins.h
vtkExtractPointCloudPiece.h
vtkExtractPoints.h
vtkExtractSurface.h
vtkFitImplicitFunction.h
vtkHierarchicalBinningFilter.h
vtkPCACurvatureEstimation.h
vtkPCANormalEstimation.h
vtkPointCloudFilter.h
vtkRadiusOutlierRemoval.h
vtkSignedDistance.h
vtkStatisticalOutlierRemoval.h
vtkVoxelGrid.h

*Surface extraction (in VTK/Remote/vtkPointCloud):*
We've build a pipeline of objects that perform rudimentary surface
extraction from a point cloud. There are three major parts:
1. Generating normals - currently use vtkPCANormalEstimation, including
graph traversal to create consistently oriented normals.
2. Compute the TSDF using vtkSignedDistance.
3. Extract zero-crossing isocontour to generate surface (vtkExtractSurface).

Note that each of these parts will eventually be expanded by writing new
filters, for example I want to use in #1 Brad King's tensor voting (from
his PhD thesis <http://www.kitware.com/publications/item/view/1253>) to
compute better normals. For #2, based loosely on the Curless & Levoy
<https://graphics.stanford.edu/papers/volrange/volrange.pdf> paper, we can
do better by using different interpolation kernels (see PointInterpolation
framework below) rather than the ad hoc probability weights they use (to be
added soon). Also for #2 we need to support incremental updating. Finally,
#3 is based on a modified Flying Edges
<https://www.researchgate.net/publication/282975362_Flying_Edges_A_High-Performance_Scalable_Isocontouring_Algorithm>
algorithm so it is very fast :-)

*Point Interpolation (in VTK/Filters/Points)*
We just pushed this in, it looks to be a very powerful, quite general
framework for performing data interpolation across point samples. It's
threaded, uses fast threaded locators, and has an abstraction for a family
of interpolation kernels (e.g., linear, gaussian, shepard, voronoi,
hopefully SPH) at some point soon, with more on the way.

As usual any feedback is appreciated. Make sure you update both VTK and the
vtkPointCloud remote module. Please don't be shy, this is happening really
fast and I want to catch the inevitable stupid stuff as soon as possible.

Best,
W


On Thu, Jan 28, 2016 at 9:12 AM, Will Schroeder <will.schroeder at kitware.com>
wrote:

> 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:
> https://gitlab.kitware.com/vtk/point-cloud.git
>
> A couple of notes:
> + 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.
> + The classes will process as input any vtkPointSet dataset
> + 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.
> + Current filters include vtkRadiusOutlierRemoval,
> vtkStatisticalOutlierRemoval, vtkExtractPoints (extract points using an
> implicit function). Some of  these names are inspired by PCL
> <http://pointclouds.org/> names.
> + 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.
> + I'm using vtkPointGaussianMapper in the tests, a class that Ken wrote
> that is very fast.
>
> 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.
>
> Best,
> W
>
>
>


-- 
William J. Schroeder, PhD
Kitware, Inc. - Building the World's Technical Computing Software
28 Corporate Drive
Clifton Park, NY 12065
will.schroeder at kitware.com
http://www.kitware.com
(518) 881-4902
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/vtk-developers/attachments/20160227/0ff4275a/attachment.html>


More information about the vtk-developers mailing list