RANSAC为长方体

时间:2014-10-28 15:56:53

标签: algorithm 3d geometry point-clouds ransac

我已经能够在3D点云上成功实现RANSAC用于通常的模型,即球体,线,平面。但是,我很难绕过如何为一个长方体,特别是一个3d盒子做我的头。我不确定如何使用点来参数化盒子。

理想情况下,我想获得长度,宽度,高度和中心作为我的参数(Theta)。我很困惑如何使用来自立方体表面的3D点云的最小点数来拟合这些参数。 (我也可以访问点法线)。

例如,我最终想要估计立方体的6个面。我可以估计三个并且使用它们的平行镜来获得所有6.每个面可能被表示为一个平面,它需要一个点和一个法线来定义(或者可选择3个点)。然而,每个平面的法线都存在约束,因为它们都需要彼此正交。我不确定如何在模型估计中包含约束,或者这是否是正确的方法。

任何想法都将不胜感激。我目前正在使用Marco Zuliani" RANSAC for Dummies"工具箱实施,如果它完全相关。

1 个答案:

答案 0 :(得分:0)

如果我要设计一个算法来解决这个问题(将立方体拟合到立方体的点云),我会把它分成两个步骤:

  1. 使用一些聚类算法查找六个聚类,每个聚类一个。在算法执行期间,我需要六个“候选”区域,并且每个点将被视为与一个面部聚类相关,或者是一个异常值。 DBSCAN的某些修改形式似乎是合适的选择;
  2. 在每张脸上涂上一些贴合物,很可能是RANSAC,因为它就是你已经使用过的。
  3. 如果已知立方体的预期大小,则可以将每个点插入到KDTree中,并查询球形附近区域,使其略微低于一个面的大小,检查平面度(主要成分会浮现在脑海中)。那么你最终会找到六个面部中心的好近似候选人。