Which filter is recommended for removing noise from merged point cloud

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Which filter is recommended for removing noise from merged point cloud

ravijoshi
I have three point clouds, belongs to the same scene as following-
------------------------------------------------------------
pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloud_1(new
pcl::PointCloud<pcl::PointXYZRGB>); pcl::PointCloud<pcl::PointXYZRGB>::Ptr
cloud_2(new pcl::PointCloud<pcl::PointXYZRGB>);
pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloud_3(new
pcl::PointCloud<pcl::PointXYZRGB>);
------------------------------------------------------------

These clouds were later on merged. Please see the code snippet below-
------------------------------------------------------------
pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloud(new
pcl::PointCloud<pcl::PointXYZRGB>);
*cloud += *cloud_1;
*cloud += *cloud_2;
*cloud += *cloud_3;
------------------------------------------------------------

The final 'cloud' contains some points which have no neighbors. I wanna
filter out those noise points.

Can you please suggest, which filter is recommended for removing noise from
merged point cloud? I would prefer to use GPU version to make the filtering
faster!

-
Thanks
Ravi



--
Sent from: http://www.pcl-users.org/
_______________________________________________
[hidden email] / http://pointclouds.org
http://pointclouds.org/mailman/listinfo/pcl-users
Reply | Threaded
Open this post in threaded view
|

Re: Which filter is recommended for removing noise from merged point cloud

MarkL
I don't know about GPU versions, but:

1) If you can define a fixed threshold for what "no neighbors" means, than
pcl::RadiusOutlierRemoval allows you to set a radius and a min number of
neighbors that are required to be in that radius.

Tutorial: http://pointclouds.org/documentation/tutorials/remove_outliers.php

2) Alternatively, you can use pcl::StatisticalOutlierRemoval, which allows
you define a statistical criteria (mean & std).

Tutorial:
http://pointclouds.org/documentation/tutorials/statistical_outlier.php



--
Sent from: http://www.pcl-users.org/
_______________________________________________
[hidden email] / http://pointclouds.org
http://pointclouds.org/mailman/listinfo/pcl-users
Reply | Threaded
Open this post in threaded view
|

Re: Which filter is recommended for removing noise from merged point cloud

ravijoshi
Thank you very much. After looking at the video located on the page of
StatisticalOutlierRemoval filter, I used it. However since the point cloud
is big, the filtering is taking 6 seconds approximately.

Can you please tell me any workaround to speed up the filtering process? I
have nvidea GPU and cuda installed on my workstation.

Thanks



--
Sent from: http://www.pcl-users.org/
_______________________________________________
[hidden email] / http://pointclouds.org
http://pointclouds.org/mailman/listinfo/pcl-users
Reply | Threaded
Open this post in threaded view
|

Re: Which filter is recommended for removing noise from merged point cloud

MarkL
Here are the alternatives I can think of (compared to
StatisticalOutlierRemoval) -

*Fastest and simple, but approximate approach*:

Construct an octree, and filter all voxels with less than X points.
Using:  pcl::octree::OctreePointCloudOccupancy
<http://docs.pointclouds.org/1.8.1/classpcl_1_1octree_1_1_octree_point_cloud_occupancy.html>  

*Slightly faster and simplest, probably slightly worse result*:

pcl::RadiusOutlierRemoval, as described in my previous post.

*Faster and accurate, but moderately more complicated*:

Use  pcl::PassThrough filter
<http://pointclouds.org/documentation/tutorials/passthrough.php>   to
partition your cloud, then run the StatisticalOutlierRemoval on separate
threads.

*Probably much faster, but most complicated*:

Use  pcl::gpu::octree
<http://docs.pointclouds.org/trunk/classpcl_1_1gpu_1_1_octree.html>   to
implement such a filter yourself.


ravijoshi wrote
> Thank you very much. After looking at the video located on the page of
> StatisticalOutlierRemoval filter, I used it. However since the point cloud
> is big, the filtering is taking 6 seconds approximately.
>
> Can you please tell me any workaround to speed up the filtering process? I
> have nvidea GPU and cuda installed on my workstation.





--
Sent from: http://www.pcl-users.org/
_______________________________________________
[hidden email] / http://pointclouds.org
http://pointclouds.org/mailman/listinfo/pcl-users