【问题标题】:Aligning captured depth and rgb images对齐捕获的深度和 rgb 图像
【发布时间】:2013-02-27 13:26:30
【问题描述】:

之前有过与我的问题相关的问题(hereherehere),但是我的问题有不同的方面,我在之前提出的任何问题中都没有看到。

我使用 Kinect 深度传感器为我的研究获取了一个数据集。该数据集的格式为 .png 图像,用于特定时刻的深度和 rgb 流。为了给你更多的想法,下面是框架:

编辑: 我在这里添加边缘检测输出。

Sobel 边缘检测输出:

  1. RGB 图像

  2. 深度图像

现在我要做的是对齐这两个帧,以给我一个组合的 RGBZ 图像。

我不了解相机的基本特性或 RGB 和红外传感器之间的距离。

有没有一种方法可以将 RGB 值匹配到相应的 Z 值?

我的一个想法是在两个图像中使用边缘并尝试匹配它们。

【问题讨论】:

  • 为什么你提到的所有问题都没有帮助你解决这个问题?
  • 之前提供的所有解决方案都使用内置的 OpenNI 函数来对齐数据,“g_depth.GetAlternativeViewPointCap().SetViewPoint(g_image)”。我在这里想要实现的是编写一个类似的功能,但不使用相机特性。

标签: matlab alignment kinect rgb depth


【解决方案1】:

这是为那些遇到同样问题的人准备的。我认为分享我的发现可能会有所帮助。

正如 Bill 所说,相机校准是解决此问题的最佳方法。

但是我发现,使用单应性和极线,这两个图像都可以对齐。这需要两个图像中至少有 8 个匹配特征。这是处理深度图像时的一个难题。

已经多次尝试校准这些图像,herehere 都需要校准模式来校准。我试图实现的是对齐已经捕获的深度和 rgb 图像,这可以通过我校准来自我曾经记录的同一个 kinect 传感器的参数来完成。

我发现解决此问题的最佳方法是使用OpenNIKinect SDK 中的内置库函数对齐两个图像。

【讨论】:

  • 之后是否无法对齐已捕获的 rgb 和深度图像。根据您的建议,我尝试使用边缘检测进行此操作,但没有取得太大进展。你最终能够解决你的问题吗?如果你愿意,我可以发布深度和 rgb 数据。
  • 不,我无法对齐已捕获的数据。我尝试使用 kinect sdk 和 openni 中的对齐功能来捕获新数据。我这样做是因为我的工作需要对齐的 rgb 和深度图。如果您尝试对数据执行其他操作,我建议您使用对齐功能来捕获数据。但是,如果您打算解决对齐问题,则可以查看对极几何。我希望这会有所帮助
【解决方案2】:

一般来说,您试图从一对 RGB 和深度图像中做的事情是不平凡且定义不明确的。作为人类,我们可以识别 RGB 图像中的手臂,并能够将其与深度图像中靠近相机的区域相关联。但是,计算机不知道它期望 RGB 图像的哪些部分对应于深度图像的哪些部分。

这种对齐的大多数算法使用相机校准的原因是这个过程允许这个不适定问题变得适定。

但是,仍然有办法找到对应关系,特别是如果您有很多来自同一个 Kinect 的图像对。然后,您只需搜索一组转换参数。我不知道任何现有的算法可以做到这一点,但正如您在问题中指出的那样,您可能会发现类似对两个图像进行边缘检测并尝试对齐边缘图像的好地方。

最后,请注意,当物体靠近 Kinect 时,RGB 和深度图像之间的对应关系可能会变差,即使图像经过校准也是如此。您可以在图像中看到一些这种效果 - 手在示例深度图像中形成的“阴影”在一定程度上表明了这一点。

【讨论】:

    猜你喜欢
    • 2016-07-01
    • 2014-08-17
    • 1970-01-01
    • 2014-03-17
    • 2021-06-13
    • 1970-01-01
    • 2016-01-15
    相关资源
    最近更新 更多