一名热爱体感技术的
业余专业开发人员

kinect 2.0 噪点问题?

转载于知乎讨论

相对于1.0,kinect2.0获取的深度数据容易出现噪点,镜子的深度数据是错误的。请问:
1、kinect2.0在什么情况下会出现深度数据的噪点或者说获取到的深度数据是错误的。
2、kinect2.0在什么情况下获取到的深度数据精度会比较差。
附:有噪点的深度数据图像,噪点我用蓝色圈出来了

a38bdd888500c118add3c918e4addb7c_r

——————————————————————

回答者 zergb

最近刚好在用Kinect2,说说我的理解,希望能帮助到你。
Kinect2属于TOF(Time Of Flight,飞行时间)深度摄像头,直观上理解就是测量光的飞行时间以获得距离。由于光速非常快(30万公里/秒),直接测量飞行时间对硬件要求太高,基本上是不可实现的。举例来说,要测量1米的距离,飞行时间为1/300000000×2秒(来回),即摄像机的采集频率需要达到150000000帧/秒。因此常用的方式是类似雷达的原理,光源发射出固定频率调制的正弦光波,摄像头同步拍摄多帧反射图像,根据每个像素亮度的变化规律计算反射光的相位差(即时间差),再乘以光速得到了每个像素的距离。借了一张原理图如下,附原网页链接(英文)。

ffac4a05bb60d42cd152d9fb3a853770_r
根据其原理,会有以下几种情况导致距离精度降低甚至出错:
1.被测物体过近或反射光线太强,导致摄像头总是处于过曝光的状态。这时摄像头拍摄到的多帧图像总是为最大值(白色)导致无法计算相位偏差,这种情况下自然无法计算深度。
2.被测物体太远或反射光线太弱,导致摄像头曝光不足,相当于相机拍摄暗区时噪声增大,导致深度误差增大。如果亮度低到无法检测,就无法计算深度。
3.光线发生多次反射导致测量出错误的深度。你说的镜面就是这个问题,镜面完全反射了发出和返回的光,这时测量的距离应该说是正确的值,但却是错误的方向。就好像你在镜子里能看到一个“虚拟”的一模一样的房间,深度摄像头也看到了这个虚拟的房间并把它的距离测量出来了。
4.物体表面不平整,且反射光线的强度位于最小的临界值,这时有些区域能检测到深度,有些区域则不能。从图像上看就像噪点一样,你的图像中左下角区域可能就是这种情况。另外物体表面如果起伏过大,也会导致多次反射出现噪点或错误的深度。一个典型的例子就是手,如果你测量手的深度,就会看到手指之间有大量的噪声出现。

最后再说句题外话,在市面上能买到的消费级深度摄像头当中,Kinect2是精度最高的(据称可以达到1mm),有余钱的话买几个囤着也不错哦。

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址