PCL学习:基于VFH描述子的聚类识别与位姿估计(1)

VFH是非常强大的描述子之一,其主要用于识别和估计点集的聚类,这里的聚类是指3D点的集合,常常代表着一个特殊目标对象或场景的一部分,由分割或提取算法获得。

在本节我们的目标不是提供一个最终的识别工具,而是根据各个聚类的场景及其对应的6自由度位姿,从一组聚类中检索查询进而选取与用户输入的场景近似的候选集,这样就可以将识别问题抽象为一个近邻估计问题。给定一组训练数据,我们将使用一种有效的近邻搜索结构,例如kdtree,来查找返回一组相似对象,这些相似对象以与查找对象之间的距离来进行排序,很明显这样的程序要比直接返回是否存在用户检索的场景的程序要更有用处。

为了更好的解释整个程序,这个应用例子划分为两部分:

(1)训练阶段

给定一个只包含一个物体的场景,这样方便后面聚类的得到。

利用一个准确的位姿记录系统获取位姿。

  • 相对采集设备旋转物体,并为获取的不同视角的点云计算VFH描述子。
  • 保存不同视角的点云,并基于此建立kdtree。

(2)测试阶段

从给定的场景中分割提取出聚类。

对于每个聚类,从当前的视角计算其VFH描述子。

利用VFH描述子在上面建立的kdtree进行搜索,查找候选集。

简单说,首先建立一个组目标对象集合用于后面的识别,最后利用程序实现基于场景对候选对象的检索。

如图1所示是一个典型的真值测量系统,可以将物体放在平板上,移动、旋转、倾斜平板,就可以得到其物体对应的准确位姿。另一个比较廉价的真值测量系统是基于标记点,例如棋盘格等,将物体和棋盘格等参照系统放在一起,然后通过人工旋转摄像头或摆放物体载体,最后通过标定算法计算获取位姿信息。

PCL学习:基于VFH描述子的聚类识别与位姿估计(1)_第1张图片

图1 位姿真值测量系统

本小节中所涉及到的kdtree实现,当然选用基于FLANN,目前在速度各方面其都优于其他实现。

训练阶段

我们开始训练,假设所有的对象都已被分为独立的聚类,如图2所示,左边为原始点云数据,右边为聚类分割后的结果,杯子和桌子为两个不同的聚类。

PCL学习:基于VFH描述子的聚类识别与位姿估计(1)_第2张图片PCL学习:基于VFH描述子的聚类识别与位姿估计(1)_第3张图片

图2 聚类分割示意图

在本节中,主要是想详细的解释基于VFH描述子的训练和测试,所以我们提供收集好的一组数据,在本节相关的源码文件夹内,数据是如图3所示。

PCL学习:基于VFH描述子的聚类识别与位姿估计(1)_第4张图片

图3 图不同物体对应的点云场景

你可能感兴趣的:(PCL,点云库PCL从入门到精通)