深度相机(TOF)的工作原理

TOF(Time of flight)直译为“飞行时间”。其测距原理是通过给目标连续发送光脉冲,然后用传感器接收从物体返回的光,通过探测光脉冲的飞行(往返)时间来得到目标物距离。这种技术跟3D激光传感器原理基本类似,只不过3D激光传感器是逐点扫描,而TOF相机则是同时得到整幅图像的深度(距离)信息。

TOF由什么组成?

一、TOF相机采用主动光探测,通常包括以下几个部分:

1、照射单元

照射单元需要对光源进行脉冲调制之后再进行发射,调制的光脉冲频率可以高达100MHz。因此,在图像拍摄过程中,光源会打开和关闭几千次。各个光脉冲只有几纳秒的时长。相机的曝光时间参数决定了每次成像的脉冲数。

要实现精确测量,必须精确地控制光脉冲,使其具有完全相同的持续时间、上升时间和下降时间。因为即使很小的只是一纳秒的偏差即可产生高达15 c m的距离测量误差。

如此高的调制频率和精度只有采用精良的LED或激光二极管才能实现。

一般照射光源都是采用人眼不可见的红外光源。

2、光学透镜

用于汇聚反射光线,在光学传感器上成像。不过与普通光学镜头不同的是这里需要加一个带通滤光片来保证只有与照明光源波长相同的光才能进入。这样做的目的是抑制非相干光源减少噪声,同时防止感光传感器因外部光线干扰而过度曝光。

3、成像传感器

TOF的相机的核心。该传感器结构与普通图像传感器类似,但比图像传感器更复杂,它包含2个或者更多快门,用来在不同时间采样反射光线。因此,TOF芯片像素比一般图像传感器像素尺寸要大得多,一般100um左右。

4、控制单元

相机的电子控制单元触发的光脉冲序列与芯片电子快门的开/闭精确同步。它对传感器电荷执行读出和转换,并将它们引导至分析单元和数据接口。

5、计算单元

计算单元可以记录精确的深度图。深度图通常是灰度图,其中的每个值代表光反射表面和相机之间的距离。为了得到更好的效果,通常会进行数据校准。

二、TOF是如何测距的呢?

照射光源一般采用方波脉冲调制,这是因为它用数字电路来实现相对容易。深度相机的每个像素都是由一个感光单元(如光电二极管)组成,它可以将入射光转换为电流,感光单元连接着多个高频转换开关(下图的G1,G2)可以把电流导入不同的可以储存电荷(下图S1,S2)的电容里。


相机上的控制单元打开光源然后再关闭,发出一个光脉冲。在同一时刻,控制单元打开和关闭芯片上的电子快门。由光脉冲以这种方式产生的电荷S0存储在感光元件上。

然后,控制单元第二次打开并关闭光源。这次快门打开时间较晚,即在光源被关闭的时间点打开。现在生成的电荷S1也被存储在感光元件上。

因为单个光脉冲的持续时间非常短,此过程会重复几千次,直到达到曝光时间。然后感光传感器中的值会被读出,实际距离可以根据这些值来计算。

记光的速度为c,tp为光脉冲的持续时间, S0表示较早的快门收集的电荷, S1表示延迟的快门收集的电荷,那么距离d可以由如下公式计算:

最小的可测量距离是:在较早的快门期间S0中收集了所有的电荷,而在延迟的快门期间S1没有收集到电荷,即S1 = 0。代入公式会得出最小可测量距离d=0。

最大的可测量的距离是:在S1中收集了所有电荷,而在S0中根本没有收集到电荷。然后,该公式得出d= 0.5 x c × tp。因此最大可测量距离是通过光脉冲宽度来确定的。例如,tp = 50 ns,代入上式,得到最大测量距离d = 7.5m。

三、TOF会受什么影响?

1、多重反射。

距离测量要求光只反射一次。但是镜面或者一些角落会导致光线的多次反射,这会导致测量失真。如果多重反射使得光线完全偏转,则没有反射光线进入相机,从而无法正确测量反射面的距离。反之,如果其他方向的光通过镜面反射进入芯片,则可能会发生过度曝光。见下图。

2、散射光

在镜头内或在镜头后面发生多余反射会出现散射光,如下图所示,散射光会导致图像褪色,对比度下降等不良影响。所以要避免在相机正前方有强烈反光的物体存在。

3、环境光

前面说过,深度相机镜头上会有一个带通滤光片来保证只有与照明光源波长相同的光才能进入,这样可以抑制非相干光源提高信噪比。这种方式确实能够比较有效地过滤掉人造光源,但是,我们常见的日光几乎能够覆盖整个光谱范围,这其中包括和照明光源一样的波长,在某些情况下(如夏天的烈日)这部分光强可以达到很大,会导致感光传感器出现过度曝光。因此相机如果想在这种条件下正常工作,仍然需要额外的保护机制。

4、温度

电子元件的精度受温度的影响。所以当温度波动时会影响电子元件的性能,从而影响到脉冲调制的精度。前面说过一纳秒的脉冲偏差即可产生高达15 c m的距离测量误差,因此相机要做好散热,这样才能保证测量精度。

四、那TOF相机最后输出的是什么呢?

TOF相机内部每个像素经过上述过程都可以得到一个对应的距离,所有的像素点测量的距离就构成了一幅深度图,如下图所示。左边是原图,右边是对应的深度图。

可以看到深度图其实是一张灰度图,它是一张三维的图:水平垂直坐标对应像素位置,该位置的灰度值对应的是该像素距离摄像头的距离。所以深度图中的每个像素可以表示空间中一个点的三维坐标,所以深度图中的每个像素也称为体像素(voxel)。

深度相机(TOF)的工作原理的更多相关文章

  1. [转] 深度解剖DIV+CSS工作原理

    本文和大家重点讨论一下DIV+CSS工作原理,在一般情况的DIV+CSS开发静态html网页时,我们把html和CSS是分开的,形成html页面和CSS文件. DIV+CSS原理解剖 在一般情况的DI ...

  2. 三维重建:深度相机方案对比-KinectFusion的基本原理(尺度)

    算法原理请参考此文:  kinect fusion 3D重建基本算法  http://log.csdn.net/xiaohu50/article/details/51592503 三维重建为三维空间实 ...

  3. 【计算机视觉】深度相机(一)--TOF总结

    http://www.voidcn.com/blog/lg1259156776/article/p-6302915.html 1.1 TOF初探 TOF是Time of flight的简写,直译为飞行 ...

  4. N沟通场效应管深度图解(1)工作原理及Multisim实例仿真

    场效应晶体管(Field Effect Transistor, FET)简称场效应管,是一种由多数载流子参与导电的半导体器件,也称为单极型晶体管,它主要分型场效应管(Junction FET, JFE ...

  5. camera理论基础和工作原理

    写在前面的话,本文是因为工作中需要编写摄像头程序,因为之前没有做过这类产品,所以网上搜索的资料,先整理如下,主要参考文章如下,如果有侵权,请联系我:另外,转载请注明出处.本文不一定全部正确,如果发现错 ...

  6. camera理论基础和工作原理【转】

    转自:http://www.cnblogs.com/fjutacm/p/220631977df995512d136e4dbd411951.html 写在前面的话,本文是因为工作中需要编写摄像头程序,因 ...

  7. HashMap的工作原理

    HashMap的工作原理   HashMap的工作原理是近年来常见的Java面试题.几乎每个Java程序员都知道HashMap,都知道哪里要用HashMap,知道HashTable和HashMap之间 ...

  8. HashMap的工作原理深入再深入

    前言 首先再次强调hashcode (==)和equals的真正含义(我记得以前有人会说,equals是判断对象内容,hashcode是判断是否相等之类): equals:是否同一个对象实例.注意,是 ...

  9. javascript引擎工作原理

    1. 什么是JavaScript解析引擎? 简单地说,JavaScript解析引擎就是能够“读懂”JavaScript代码,并准确地给出代码运行结果的一段程序.比方说,当你写了 var a = 1 + ...

  10. 我们应该如何去了解JavaScript引擎的工作原理

    “读了你的几篇关于JS(变量对象.作用域.上下文.执行代码)的文章,我个人觉得有点抽象,难以深刻理解.我想请教下通过什么途径能够深入点的了解javascript解析引擎在执行代码前后是怎么工作的,ec ...

随机推荐

  1. h5移动端开发经验积累篇

    h5键盘控制 const el = document.documentElement || document.body const originHeight = el.clientHeight win ...

  2. ORACLE 去重

    -----------------------------------------------------------------------------模拟数据------------------- ...

  3. 《Unix/Linux系统编程》第九周学习笔记

    <Unix/Linux系统编程>第九周学习笔记 信号和中断 中断"是从I/O设备或协处理器发送到CPU的外部请求,它将CPU从正常执行转移 到中断处理.与发送给CPU的中断请求一 ...

  4. 初学TCP的一些感想

    因为工作原因,想学习一下编程,最近在学习Qt相关的知识,学到了TCP/IP这里,跟着视频做了一个简单的C/S的小例程.例程中没有关于连接状态的判断.经过修改,可是没能达到我要的效果,在百度上进行搜索, ...

  5. keras图片数字识别入门AI机器学习

    通过使用mnist(AI界的helloworld)手写数字模型训练集,了解下AI工作的基本流程. 本例子,要基于mnist数据集(该数据集包含了[0-9]的模型训练数据集和测试数据集)来完成一个手写数 ...

  6. 量子图形加密算法的MATLAB代码实现

    一.概述 目前主流的量子图形加密算法有量子像素编码算法(Quantum Image Pixel Encoding,QIPE).量子像素置乱算法(Quantum Image Pixel Scrambli ...

  7. idea 调试小心得

    1.为什么需要Debug 目的:开发过程中 查找或定位错误或者阅读源码 程序运行的结果(4种情况) 情况1:没有任何bug,程序执行正确! 情况2: 运行以后,出现了错误或异常信息.但是通过 日志文件 ...

  8. (1)入门MasaFramework教程

    (1)入门MasaFramework教程 首先了解一下MasaFramework是什么 MasaFramework是一个基于.Net6.0的后端框架, 可以被用于开发Web应用程序.WPF项目.控制台 ...

  9. 关于IDEA发出基于APR的本地库加载失败错误的解决------->求解决!

    问题描述 在没有使用Maven项目启动该Project时,Tomcat可以正常使用,但在这里会显示这样的错误: 这个错误,已经查了两天了,相关文件以及解决方法已经翻烂了,还没有解决,放出来集思广益一下 ...

  10. 在CentOS中搭建NFS

    概述 NFS是一款经典的网络文件系统,在Linux上我们可以通过创建一个NFS服务在不同的服务器之间共享磁盘文件,而不用在多个服务器之间进行不断的拷贝复制,麻烦且浪费存储空间.在k8s中我们也可以使用 ...