【问题标题】:Transformation between point clouds点云之间的转换
【发布时间】:2013-11-23 03:46:08
【问题描述】:

我希望从我正在处理的问题中找到一些提示。 我正在使用 Kinect 传感器来捕捉 3d 点云。我创建了一个已经在工作的 3d 对象检测器。

这是我的任务:

假设我有一个点云 1。我在云 A 中检测到一个对象,并且我知道我的对象的质心位置 (x1,y1,z1)。现在我围绕路径移动传感器并创建新的云(例如云 2)。在那个云 2 中,我看到相同的对象,但例如从侧面看,物体检测无法正常工作。

我想将检测到的对象从云 1 转换为云 2,以使质心也在云 2 中。对我来说,听起来我需要一个矩阵(平移、旋转)来将点从 1 转换为 2。

以及如何解决我的问题的想法? 也许是ICP?有没有更好的解决方案?

谢谢!

【问题讨论】:

  • 澄清一下:你不知道传感器走过的路径,或者对它有任何估计,对吗?
  • 我不确定。我用手在房间里移动 kinect
  • 所以我知道检测在 A 帧而不是 B 帧中有效。您可以在传感器移动时跟踪对象吗?那可能会解决它。否则,尝试将原始找到的对象的形状特征与新图像匹配(对象是否有很多特征?)——不过,视点的变化需要足够小。如果您对转换进行了估计,这将有所帮助。如果您对转换有良好的估计并且观点没有太大变化,ICP 可能会起作用。之后它变得更有趣;)

标签: kinect transformation point-cloud-library point-clouds


【解决方案1】:

我认为您所问的特别是 Kinect 传感器和 Microsoft 为其发布的 API。

如果您不打算进行重建,您可以查看 Sensor Fusion 命名空间中的 AlignPointClouds 函数。这应该以类似于@pnhgiol 给出的答案的方法自动处理它。

另一方面,如果您正在考虑进行重建以及点云变换,那么 Reconstruction 类就是您要寻找的。所有这些都可以在here 中找到。

【讨论】:

    【解决方案2】:

    一般来说,这个任务叫做注册。它依赖于对云 1 中的哪些点对应于点 2 中的哪些云的良好估计(更具体地说,给定云 1 中的一个点,云 2 中的哪个点表示检测到的对象上的相同位置)。 PCL 库文档中有一个很好的overview

    如果您有这样的对应关系,那么您很幸运,您可以直接计算旋转和平移,如 here 所示。

    如果不是,您需要估计该对应关系。 ICP 对近似对齐的点云执行此操作,但如果您的点云还没有很好地对齐,您可能希望首先估计点云中的“关键点”(例如书角、不同颜色等),计算如上旋转和平移,然后执行ICP。正如 DJDuff 所提到的,ICP 在实践中在已经近似对齐的点云上效果更好,因为它使用两个指标之一来估计对应关系,最小点到点距离或最小点到平面距离,根据维基百科,后者效果更好在实践中,但它确实涉及估计法线,这可能很棘手。如果对应关系相距甚远,则变换也可能会相距甚远。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-23
      • 1970-01-01
      • 2022-12-11
      • 1970-01-01
      • 1970-01-01
      • 2019-08-20
      相关资源
      最近更新 更多