因此,我编写了一个迭代最近点(ICP) 算法,并将模型拟合到点云。作为对那些不了解的人的快速教程,ICP 是一种简单的算法,它将点拟合到模型,最终在模型和点之间提供齐次变换矩阵。
这是一个快速图片教程。
步骤 1. 在模型集中找到离您的数据集最近的点:
第 2 步:使用一堆有趣的数学(有时基于梯度下降或 SVD)将云拉得更近并重复,直到形成姿势:
![图2][2]
现在这一点很简单并且有效,我想要帮助的是: 我如何判断我的姿势是否是好的?
所以目前我有两个想法,但它们有点老套:
ICP算法中有多少点。即,如果我几乎不适合任何点,我认为姿势会很糟糕:
但是如果姿势真的很好呢?它可能是,即使只有几分。我不想拒绝好的姿势:
所以我们在这里看到的是,如果低点在正确的位置,实际上可以形成一个非常好的位置。
因此,研究的另一个指标是提供的点与使用的点的比率。这是一个例子
现在我们排除了太远的点,因为它们将是异常值,现在这意味着我们需要一个良好的起始位置才能使 ICP 工作,但我可以接受。现在在上面的例子中,保证会说不,这是一个不好的姿势,它会是正确的,因为点与包含的点的比率是:
2/11 < SOME_THRESHOLD
所以这很好,但是在上面显示的三角形倒置的情况下它会失败。它会说倒三角形很好,因为所有点都被 ICP 使用。
您不需要成为 ICP 专家来回答这个问题,我正在寻找好的想法。使用点的知识我们如何分类它是否是一个好的姿势解决方案?
将这两种解决方案一起使用是一个很好的建议,但如果你问我,它是一个非常蹩脚的解决方案,只是门槛它非常愚蠢。
如何做到这一点有什么好主意?
PS。如果你想添加一些代码,请去吧。我在 C++ 中工作。
聚苯乙烯。有人帮我标记这个问题,我不确定它应该落在哪里。