kinect深度相机的精度

时间:2011-10-08 11:17:56

标签: kinect depth

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

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

特别是我想知道:

  • Microsoft是否有任何关于它的官方规范?
  • 有关于这个问题的科学论文吗?
  • TechBlogs的调查?
  • 易于复制的个人实验?

我现在正在收集大约一天的数据,但大部分作者都没有说明他们的来源,而且价值似乎差别很大......

7 个答案:

答案 0 :(得分:24)

  • 范围:~50厘米至5米。零件可以更近(~40厘米),但不能完整视图< 50厘米。
  • 水平分辨率:640 x 480和45度垂直视场和58度水平视场。简单的几何图形显示每像素约0.75毫米×50厘米处的y,每像素约3毫米×2米处的y。
  • 深度分辨率:50厘米时约1.5毫米。在5米处约5厘米。
  • 噪音:在所有深度处约+ -1 DN,但DN到深度是非线性的。这意味着接近+ 1毫米,远离+ - 5厘米。

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

答案 1 :(得分:12)

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

在默认模式下:

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

近距离模式:

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

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

  • 80x60
  • 320×240
  • 640×480
  • 1280×960

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

  • 80x60
  • 320×240
  • 640×480

面对来自Avada Kedavra(以及大多数来源)的信息,API提供的视野的值如下:

对于彩色相机:

  • 水平视场:62.0°
  • 垂直视场:48,6°

对于深度相机:

  • 水平视场:58.5°
  • 垂直视场:45,6°

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

答案 2 :(得分:7)

这里真正的问题是关于分辨率和精确度。我在这里筹码,因为我发现分辨率和精度不如说明的那么好。深度分辨率的最大输出确实是640x480,然而,这不是有效的分辨率,而且这并不完全是多么精确。

kinect工作的方法基于结构光投影。发光并在相机看到的表面上投射光线,然后将来自原点的每条光线三角测量,从物体反射回相机。

问题在于,这种模式仅包含34.749个可以三角测量的亮点http://azttm.wordpress.com/2011/04/03/kinect-pattern-uncovered/)。如果我们将其与640x480 = 307.200数据点的分辨率联系起来,我们会发现一个很大的区别。问问自己,数据量是源数据点数量的10倍,是否有效,并且有效采样。我对此表示怀疑。如果你问我kinect的有效分辨率是什么,我猜它是 240x180 的诚实和非常好的数据。

答案 3 :(得分:5)

根据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在下面的评论中发布的Primesense数据表相匹配。

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

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

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

答案 4 :(得分:2)

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

答案 5 :(得分:1)

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

  • 范围:1.2至3.5米
  • 视角:垂直43°,水平57°
  • 机械化倾斜范围:±28°
  • 帧速率:每秒30帧
  • 分辨率,深度流:320 x 240(实际上可以高于此值)
  • 分辨率,色彩流:640 x 480(再次,它可以更高)

我没有看到任何提及噪音的东西,但我可以说这是非常小的,除了表面边缘,它可以变得更加明显。

答案 6 :(得分:1)

我的经验是,它不是那么精确。 它非常好,但是当你把它与卷尺比较时 然后它不完全匹配。 我做了一个Excel,测量每10毫米,它只是没有保持,特别是超过2500毫米的东西,但更接近。 还要记住,实际深度像素比广告要低很多。内部的电子元件充满了喘气,这就是为什么你会看到小区域的伪像,而不是像素数据。实质上,这意味着320x240具有由“实际”测量覆盖的1/8像素,计算其他像素。所以你可以使用640x480;但它只会占用CPU / UBS资源,不会让你的应用程序看得更清楚。

好吧,这只是我2美分的经验,我正在编程机器人。