我已经成功地实现了三维点云上的RANSAC,用于通常的模型,即球面、线、平面。然而,我有一个困难的时间包装我的头如何做长方体,特别是一个三维的盒子。我不知道如何用点来参数化这个盒子。
理想情况下,我希望获得长度、宽度、高度和中心作为我的参数(Theta)。我很困惑如何使用立方体表面三维点云中的最小点数来拟合这些参数。(我还将获得点法线)。
例如,我最终想估计立方体的6个面。我只需要估计三个,然后用它们的平行镜像来得到所有的6个,每个面大概都会被表示成一个平面,它需要一个点和一个法线来定义(或者另外3点)。然而,每个平面的法线都有约束,因为它们都需要互相正交。我不知道如何在模型估计中包含约束,或者这是否是正确的方法。
任何想法都将不胜感激。我目前正在使用Marco的“Dummies的RANSAC”工具箱实现,如果这是相关的话。
发布于 2014-10-28 16:03:12
如果我要设计一个算法来解决这个问题(将一个立方体与立方体的点云进行拟合),我将把它分成两个步骤:
DBSCAN的一些改进形式似乎是一种合适的选择;如果已知立方体的预期大小,您可以将每个点插入到KDTree中,并查询球面的相邻点,其半径刚好低于一个面的大小,检查平面性(注意到主成分)。然后你最终会为六个面部中心找到一个很好的近似候选人。
https://stackoverflow.com/questions/26612854
复制相似问题