RANSAC用于立方体拟合

5
我已经成功地在三维点云上实现了RANSAC算法,可以处理常见的模型,如球体、线段和平面。然而,我很难理解如何在立方体(特别是三维盒子)上应用该算法。我不确定如何使用点来参数化盒子。
理想情况下,我希望以长度、宽度、高度和中心作为参数(Theta)进行拟合。但是,我对如何使用尽可能少的点从立方体表面的三维点云中拟合这些参数感到困惑(我也将有访问点法线的权限)。
例如,最终我想要估计立方体的6个面。我可以只估计其中3个并取它们的平行镜像来得到所有6个面。每个面都将被表示为一个平面,它需要一个点和一个法向量来定义(或者是3个点)。然而,每个平面的法向量都有约束条件,因为它们都需要相互垂直。我不确定如何在模型估计中包含约束条件,或者这是否是正确的方法。
如果您有任何想法,将不胜感激。我目前正在使用Marco Zuliani的“RANSAC for Dummies”工具箱实现,如果这相关,请告诉我。
1个回答

1
如果我要设计一个算法来解决这个问题(将一个立方体拟合到一个立方体的点云中),我会分成两步:
  1. 使用一些聚类算法来找到六个簇,每个簇对应一个面。在算法执行期间,我需要六个“候选”区域,每个点都被认为属于其中一个面簇,或者是异常值。某种修改过的 DBSCAN 算法似乎是一个合适的选择;
  2. 对每个面应用一些拟合算法,最可能是 RANSAC,因为这已经是你正在使用的算法。

如果已知立方体的预期大小,则可以将每个点插入到 KDTree 中,并查询球形邻域,半径略小于一个面的大小,检查平面性(主成分出现)。然后您最终会找到六个面中心的良好近似候选项。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接