我正在开发一个检测纸飞机位置和方向的项目。 为了收集数据,我使用了英特尔实感 D435,它为我提供了准确、干净的深度数据。
现在我遇到了从 3D 点云数据中检测 2D 纸飞机轮廓的问题。
这是一个数据示例(我将飞机放在棍子上进行测试,这不会在最终实现中):
基本上,我有:
我想计算需要哪些旋转/平移才能将 2D 形状尽可能准确地与 3D 点云对齐。
我在网上搜索过,但找不到好的方法。一种方法是使用迭代最近点 (ICP) 首先获取已知方向的平面校准点云,并将其与当前方向对齐。但据我所知,如果点云一开始就没有紧密对齐,ICP 的性能就不会很好。
如有任何帮助,我们将不胜感激!编码语言并不重要。
您的 3D 点云有异常值吗?以什么方式有多少?
您到底是如何使用ICP的? 一种方法是使用 ICP,并使用
手工制作初始猜测pcl::transformPointCloud (*cloud_in, *cloud_icp, transformation_matrix);
(缓解ICP需要靠近工作的问题。)
您真正想要的是描述点云位置和方向的平面模型,对吧?
可以通过以下方式找到底层函数的良好估计器:pcl::ransac pcl::ransace模型共识
然后您可以获得计算模型系数。
现在找到正确的变换就是:如何计算从一个平面到另一个平面的变换矩阵?