这是老师很久之前给的一篇paper,LZ还是有拖延症,到现在才想起来要把这篇paper的一些自己的思考或者说一些理解记录下来,如果有兴趣的,小伙伴可以看下原文“Fast Plane Extraction in Organized Point Clouds Using Agglomerative Hierarchical Clustering”。
1.使用的数据
按照原文的翻译是有组织的点云,其实这还是对于这个算法来说有所偏颇的,在代码使用的时候只使用了点云部分的深度信息,并不包含rgb的信息,只是在使用kinect的时候,PCL库直接是以点云的形式把数据保存下来的。
何为organized point cloud,这个在之前学习PCL的时候就说过,如果点云是可以以2D对3D点云进行索引的话,这就算是organized point cloud,在实际代码中表现在定义点云大小的时候直接定义点云的height和width,一般就是480和640,如果是unorganized point cloud,一般point cloud 的height定义为1,width就是整个点云数目,把kinect采集到的数据定义成unorganized的话,height = 1, width = 307200,这是没办法通过2D进行索引的,相当于把整个点云拉成一条,在数据利用上缺失了点与点之间的空间信息,不利于有些点云的特征的处理。
2.参数设置的问题
文章中有很多人工设置的参数,不同的参数对于后续的平面提取肯定是有影响的,而且对于程序运行的精度也会有所影响。原文中提到了几个阈值的设定也是偏向于经验值或者参考其他文献设定的。当然相机内参是肯定要的。。。
3.算法总体
具体的步骤可以参考上图流程
输入:深度相机获得的深度图像
step1:初始化
对于输入的深度图像进行初始化,先分成10*10大小的方块(尺寸是人为设定,可自行修改),每一块就相当于是图模型的一个node(注意node包含不只一个点)。如果出现下面四种情况,要把该节点和对应的边删除掉:
节点的均方误差高于设定阈值
节点含有缺失的数据
节点包含的深度不连续
节点在两个平面的边界
step2:层次聚类
未完待续。。。