首页 文章

kinect深度相机的精度

提问于
浏览
36

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

  • 范围?

  • 决议?

  • 噪音?

特别是我想知道:

  • 微软是否有任何关于它的官方规范?

  • 有关于这个问题的科学论文吗?

  • TechBlogs的调查?

  • 个人实验很容易重现?

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

7 回答

  • 12
    • 范围:~50厘米至5米 . 部件可以靠近(~40 cm),但不能使全视图<50 cm .

    • 水平分辨率:640 x 480和45度垂直视场和58度水平视场 . 简单的几何图形显示每像素约0.75毫米×50厘米处的y,以及每像素约3毫米×2米处的y .

    • 深度分辨率:50厘米时约1.5毫米 . 在5米处约5厘米 .

    • 噪声:在所有深度处约为-1 DN,但DN到深度是非线性的 . 这意味着-1毫米关闭,和-5厘米远 .

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

  • 7

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

    在默认模式下:

    • 最小范围:80厘米

    • 最大范围:400厘米

    在近模式:

    • 最小范围:40厘米

    • 最大范围:300厘米

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

    • 80x60

    • 320x240

    • 640x480

    • 1280x960

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

    • 80x60

    • 320x240

    • 640x480

    面对来自Avada Kedavra的信息(顺便提一下,从大多数来源),API给出的 field of view 的值如下:

    对于彩色相机:

    • 水平视场:62,0°

    • 垂直视野:48,6°

    对于深度相机:

    • 水平视场:58.5°

    • 垂直视野:45,6°

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

  • 5

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

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

    The thing is that this pattern consists out of only 34.749 bright spots that can be triangulatedhttp://azttm.wordpress.com/2011/04/03/kinect-pattern-uncovered/) . 如果我们将其与640x480 = 307.200个数据点的分辨率联系起来,我们会发现一个很大的区别 . 问问自己,数据量是源数据点数量的10倍,是否有效,并有效采样 . 我对此表示怀疑 . 如果你问我kinect的有效分辨率是什么,我猜它是关于 240x180 的诚实和非常好的数据 .

  • 2

    根据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如何处理超出范围的读数 .

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

  • 1

    我认为可能值得一提的是Khoshelham和Elbernik的论文,他在2012年2月提出了kinects深度传感器的理论随机误差模型 . 它被称为"Accuracy and Resolution of Kinect Depth Data for Indoor Mapping Applications" . 该论文可以找到here .

  • 1

    如果你正在寻找微软发布的东西,请查看Kinect Programming Guide的第11页 . 它说的几乎每个人都已经提到了同样的事情 .

    • 范围:1.2至3.5米

    • 视角:垂直43°,水平57°

    • 机械化倾斜范围:±28°

    • 帧速率:每秒30帧

    • 分辨率,深度流:320 x 240(实际上可以高于此值)

    • 分辨率,色彩流:640 x 480(再次,它可以更高)

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

  • 23

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

    那只是我2美分的经验,我正在编程机器人 .

相关问题