大家好,又见面了,我是你们的朋友全栈君。
文章目录
深度相机(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)。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/141519.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...