我有一个城市广场,里面有人,车,树和pcl格式的建筑物。我需要自动确定地平面并将该对象投影到该地平面上以获得具有占用位置的2D地图。
有什么想法吗?
答案 0 :(得分:2)
我认为这里最好的做法是熟悉以下两个PCL教程:
http://pointclouds.org/documentation/tutorials/planar_segmentation.php
http://pointclouds.org/documentation/tutorials/project_inliers.php
第一篇教程利用RANSAC算法在场景中找到主导平面。我用它在机器人场景中找到桌子和地板。你会用它来找到你的主要地平面。
第二个教程展示了如何将点直接投影到平面上。这就是您将3D点云变为2D点的过程。请注意,尽管有“inlier”关键字,但您可以将整个点云传递到平面上。
实际上,如果你在“占用”的地方之后,你可能想要在地平面上投射不的所有点(即异常值),并且在它上面(你可以使用PCL滤波器,例如PlaneClipper3D,或者只是平面分割操作中的异常值的补充。
如果您最终得到的平面(包含所有投影点)不在您想要的坐标系中,您可能希望旋转整个批次,例如,与坐标轴对齐,以便所有z-坐标为零。请参阅pcl :: transformPointCloud(变换将从平面分割返回的平面系数中获得)。
我希望这是有帮助的,而不是太基本的水平,虽然这个问题相当普遍,所以我认为它应该没问题。