39

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

  • 范围?
  • 解析度?
  • 噪音?

特别想知道:

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

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

4

7 回答 7

26
  • 范围:~ 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 厘米。

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

于 2011-10-08T16:02:45.477 回答
12

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

于 2012-08-24T15:00:54.060 回答
7

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

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

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

于 2014-02-16T00:07:10.480 回答
5

根据Kinect 技术规范最终透露的深度场规范是(这些匹配也在 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.5m 处好。例如,如果您想要计算曲面的法线,这将变得很重要。靠近传感器的结果会比远离传感器的效果更好。

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

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

于 2011-10-10T07:35:02.890 回答
2

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

于 2016-12-12T09:41:07.920 回答
1

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

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

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

于 2011-10-11T23:59:23.403 回答
1

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

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

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

于 2015-11-19T09:42:51.697 回答