2015-11-06 192 views
1

我正在尝试应用双边滤波器来平滑注册的2点云。代码如下:在点云库中使用快速双边滤波器

pcl::FastBilateralFilter<pcl::PointXYZRGB> filter; 
filter.setInputCloud(input); 
filter.setSigmaS(5); 
filter.setSigmaR(5e-3); 
filter.applyFilter(*output); 

结果是一个空的点云,我似乎无法弄清楚为什么。其他人已经使用这种方法取得了很好的成功。我尝试根据我在本白皮书中找到的内容(http://people.csail.mit.edu/sparis/bf_course/course_notes.pdf)操纵我的SigmaS和SigmaR值,但输出没有变化。任何想法,为什么这是?谢谢。

回答

0

我的输入云被搞砸了,它不是一个“有组织的点云”。也就是说,我的Point Cloud中两个给定点之间没有关系。 PCL中的双边滤波器需要组织输入点云。 Click here for more info.

由于我使用的是Kinect v2,我有能力生成有组织的点云;事实上,我将它初始化为有组织的。在我的代码后面的某处,我使用了cloud-> clear()命令,该命令删除了Point Cloud中的所有高度,宽度和isDense信息;然而,我的初衷是只删除数据点,所以我可以添加新的点。

0

libfreenect2已经有一个kinectv2边缘感知双边过滤器