我最近一直在寻找 python 中 ICP 算法的实现,但没有结果。
根据维基百科文章 http://en.wikipedia.org/wiki/Iterative_closest_point ,算法步骤是:
通过最近邻标准关联点(对于一个点云中的每个点,找到第二个点云中的最近点)。
使用均方成本函数估计转换参数(旋转和平移)(转换会将每个点与其在上一步中找到的匹配项最佳对齐)。
使用估计的参数转换点。
迭代(重新关联点等)。
好吧,我知道 ICP 是一种非常有用的算法,它被用于各种应用程序。但是我找不到任何内置的 Python 解决方案。是吗,我在这里遗漏了什么?
原文由 Harry R. 发布,翻译遵循 CC BY-SA 4.0 许可协议
最后,我设法使用 sklearn 和 opencv 库在 Python 中编写了自己的 ICP 实现。
该函数采用两个数据集,一个初始相对姿态估计和所需的迭代次数。它返回将第一个数据集转换为第二个数据集的转换矩阵。
享受!
像这样称呼它: