【问题标题】:Precision of the kinect depth camerakinect深度相机的精度
【发布时间】:2011-12-03 12:43:51
【问题描述】:

kinect 中的深度相机有多精确?

  • 范围?
  • 分辨率?
  • 噪音?

特别想知道:

  • 微软有没有关于它的官方规范?
  • 是否有关于该主题的科学论文?
  • 来自 TechBlogs 的调查?
  • 易于复制的个人实验?

我现在正在收集大约一天的数据,但大多数作者没有命名他们的来源,而且价值似乎有很大不同......

【问题讨论】:

  • OP 应该明确他们想要什么数据。下面不同的 FOV 角度是由于 a) Kinect 中的不同传感器和数据(RGB v. 深度)和 b) 预对齐或后对齐等。
  • 小心用你的 kinect 检查一切。还有更多版本具有非常不同的深度参数,例如我的使用 16 位原始数据值而不是 11/12/13 位!没有提到(原始数据格式不同)(我的模型是 1414 用于 XBOX360 + PC 减少......真的很旧)它的最小深度范围 ~0.95m !!!。在较新的型号上,您可以接近约 0.4m。较新型号的驱动程序似乎可以在较旧型号上正常工作。另外,如果您想使用加速度计,您应该知道访问速度不快~10ms,而且它们的精度也很差~1%
  • 在对我的 kinect 进行一些更精确的测量后,我确定它的深度分辨率约为 0.121 mm,并且原始数据在 2.0 m 范围内是线性的,之后我没有检查。
  • 原始数据的每个值有 0.121 毫米,但传感器每步使用大约 32 倍,因此实际深度分辨率约为 3.872 毫米

标签: kinect depth


【解决方案1】:

我的经验是,它并不那么准确。这很好,但是当你将它与卷尺进行比较时,它并不完全匹配。我制作了一个 Excel,每 10 毫米测量一次,但它就是不支持,尤其是距离超过 2500 毫米但也更近的东西。

还要记住,实际深度像素比宣传的要低很多。里面的电子设备充满了喘息,这就是为什么你会看到小面积的伪影,而不是像像素数据这样的东西。本质上,这意味着 320x240 有 1/8 像素被“真实”测量覆盖,其他像素被计算出来。所以你可以使用 640x480;但它只会占用 CPU/UBS 资源,不会让您的应用更好看。

这只是我的两分钱经验,我正在编程机器人。

【讨论】:

    【解决方案2】:
    • 范围:~ 50 cm 至 5 m。可以局部靠近(~ 40 厘米),但不能让全视图小于 50 厘米。
    • 水平分辨率:640 x 480 和 45 度垂直 FOV 和 58 度水平 FOV。简单的几何显示在 50 cm 处每像素 x x y 大约为 0.75 mm,在 2 m 处每像素 x x y 大约为 3 mm。
    • 深度分辨率:在 50 厘米处约为 1.5 毫米。 5 m 处约 5 cm。
    • 噪声:在所有深度大约为 +-1 DN,但 DN 到深度是非线性的。这意味着近 +-1 毫米,远 +- 5 厘米。

    传感器开发人员提供了官方规格,而不是 Microsoft。还没有我知道的科学论文。大量的调查和实验(见谷歌)。 OpenKinect 目前对这些事情的讨论比这个网站要多得多。

    【讨论】:

    • mankoff:你有这些规格的参考还是基于你自己的实验?
    • 我自己的实验,除了来自传感器规格的 FOV 之外的所有东西
    【解决方案3】:

    我认为值得一提的是 Khoshelham 和 Elbernik 的论文,他们确实在 2012 年 2 月提出了 kinects 深度传感器的理论随机误差模型。它被称为“用于室内测绘应用的 Kinect 深度数据的准确性和分辨率”。 论文可以在here找到。

    【讨论】:

      【解决方案4】:

      这里真正的问题是关于分辨率和精度。我想在这里插话,因为我发现分辨率和精度不如所说的那么好。深度分辨率的最大输出确实是640x480,但这不是有效分辨率,也不是准确的精度。

      kinect 的工作方式是基于结构光投影。一种光的图案被发射并投射到表面上,相机会看到它,然后对从原点、从物体反弹到相机的每条光线进行三角测量。

      问题在于,这种模式仅包含 34.749 个可以进行三角剖分的亮点 (http://azttm.wordpress.com/2011/04/03/kinect-pattern-uncovered/)。如果我们将其与 640x480=307.200 数据点的分辨率相关联,我们会注意到很大的差异。问问自己,10 倍于源数据点数量的数据量是否可以被视为有效并且有效地采样。我对此表示怀疑。如果你要问我 kinect 的有效分辨率是多少,我猜它大约是 240x180 的诚实且相当不错的数据。

      【讨论】:

      • 请注意,新的 Kinect 不使用结构光 (PrimeSense),而是使用 Time of Flight 机制 (Canesta)
      【解决方案5】:

      Kinect for Windows SDK 提供了一些我一直在使用并且似乎一致的常量。对于 rangeresolution,这些值为:

      在默认模式下:

      • 最小范围:80 厘米
      • 最大范围:400 厘米

      在近距离模式下:

      • 最小范围:40 厘米
      • 最大范围:300 厘米

      对于彩色相机,您可能具有以下任一分辨率:

      • 80x60
      • 320x240
      • 640x480
      • 1280x960

      对于深度相机,您可能具有以下任一分辨率:

      • 80x60
      • 320x240
      • 640x480

      面对来自Avada Kedavra 的信息(顺便说一下,来自大多数来源),API 给出的视野值如下:

      对于彩色相机:

      • 水平视野:62,0°
      • 垂直视野:48.6°

      对于深度相机:

      • 水平视野:58.5°
      • 垂直视野:45.6°

      来源:http://msdn.microsoft.com/en-us/library/hh855368

      【讨论】:

        【解决方案6】:

        根据Kinect tech spec finally revealed,深度场的规格是(这些匹配也在 Mannimarco 发布的官方编程指南中得到确认):

        * Horizontal field of view: 57 degrees
        * Vertical field of view: 43 degrees
        * Physical tilt range: ± 27 degrees
        * Depth sensor range: 1.2m - 3.5m
        * Resolution depth stream: 320x240 pixels
        * Resolution color stream: 640x480 pixels
        

        但根据我自己的经验,深度传感器的范围更像0.8m-4.0m,至少我在这个范围内得到了很好的读数。此范围与 mankoff 在下面的 cmets 中发布的 Primesense 数据表相匹配。

        同样重要的是要记住,靠近传感器的深度分辨率要比远离传感器的高得多。 在 3-4 米处,分辨率不如在 1.5m 处好。例如,如果您想要计算曲面的法线,这将变得很重要。靠近传感器的结果会比远离传感器的效果更好。

        自己测试范围并不难。当您超出范围时,官方 SDK(当前为测试版)将为您提供零 (0) 深度。所以,你可以用一个简单的尺子来测试它,并测试你得到/不得到任何大于零的读数的距离。我不知道 OpenKinect SDK 如何处理超出范围的读数。

        关于噪音的评论:我想说深度流中有相当多的噪音,这使得它更难处理。例如,如果您计算表面法线,您可以期望它们有点“跳跃”,这当然会对假照明等产生负面影响。此外,由于 IR 发射器之间的距离,您在深度流中存在视差问题和接收器。这也很难处理,因为它会在深度数据中留下很大的“阴影”。 This youtube video 演示问题并讨论使用着色器解决问题的方法。这是一个值得一看的视频。

        【讨论】:

        • 官方规格。在此处查看数据表:openkinect.org/wiki/Hardware_info
        • @mankoff:感谢分享。它是一个有趣的链接。然而,引用的硬件数据表是非常低级的,我在您链接到的页面上找不到任何回答 OP(和我自己)关于深度传感器范围、深度分辨率的问题等等。而且,使用 openkinect.org 作为官方规范的来源?他们可能是 kinect 神,但他们不是官方的。 :)
        • 抱歉链接错误。试试这个 PDF db.tt/N1SxqFvp 我不是官方链接到 OpenKinect,只是链接到他们页面上的链接。
        【解决方案7】:

        如果您正在寻找 Microsoft 发布的内容,请查看Kinect Programming Guide 的第 11 页。它说的几乎和这里的每个人已经提到的一样。

        • 范围:1.2 到 3.5 米
        • 视角:垂直 43° x 水平 57°
        • 机械化倾斜范围:±28°
        • 帧速率:每秒 30 帧
        • 分辨率,深度流:320 x 240(它实际上可以比这更高)
        • 分辨率,颜色流:640 x 480(同样,它可以更高)

        我没有看到任何提及噪点的内容,但我可以说它非常小,除了表面边缘会变得更加明显。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多