IToF技术原理与核心系统实现分析----ToF技术系列(二)

作者||技述无忌
原文地址:https://mp.weixin.qq.com/s/_6eAlWn3cOvXiMp5NX_6wg
✨如果觉得文章内容不错,别忘了三连支持下哦😘~

1.IToF原理介绍

1.1 IToF系统简介

目前,ToF传感器工作原理中主要有两种,一种是基于脉冲波(pulse)的技术原理,第二种是是基于连续调制波(CW)的方式;为了更好地理解两种ToF技术原理,在此先对ToF系统做一个简述:
在这里插入图片描述

图1 ToF系统框架图

ToF系统的主要核心元器件包括:ToF sensor , Diffuser, lens,laser,Depth engine,interface board;diffuser主要的功能是使激光发射出的光线在视野范围更加均匀,Depth engine主要实现ToF sensor采集的相位图转换成深度图。对于ToF sensor的采集电路的基本原理图如下:
在这里插入图片描述在这里插入图片描述
图3 sensor 曝光时序图

ToF sensor 相位的获取分为4个步骤 sensor reset, intergration, readout, Dead time;
sensor Reset:根据上图可看到,RST开关,主要是在测量之前,给电容CA、CB充电;
Integration:Dmix0与Dmix1是由解调模块控制的开关,什么时候开关,与调制和解调的频率有关。当光子被感光元件接收时, 并且当DMIX0闭合时,充好电的电容CA就会和感光元件释放出来的电子中和,电容CA放电,直到中和完毕,最后得到的电容电平代表着在对应时间内接收的电子数量。
Read out: Address Decode开关打开,读取电容上的电平。
Dead time:死区时间。

1.2 基于方波(Pulse)的技术原理

激光模块由矩形波控制,发送光呈现脉冲方波,接收sensor通过接收的波形与发射波比较计算相位差。
在这里插入图片描述图4 ToF 脉冲反射接收时序

发射脉冲可以设定一个频率f,并且开启两个反向的窗口,DMIX0与DMIX1用来接收光子的数量, 一个窗口的频率和相位是与发射脉冲是一致的,另外一个是与DMIX1反向,并且相位差为180。在两个窗口打开的时候,也就是高电平的时候,并且这时候存在物体反射过来的脉冲波,这时候两个不同窗口在各自的时间内收集电荷。在图上已经用红色上色表示。假设DMIX0收集到的电荷量为Q0,DMIX1收集到的电荷量为Q1。Q0与Q1相加的这部分就是有反射脉冲时间内收集的电荷量。td表示相位差存在的时间,为了计算td,可以通过计算Q1在反射脉冲所占的时间,为了计算Q1这部分的时间,我们可以读取DMIX0与DMIX1窗口上的电平,也就是Q0加Q1与Q1的比值,再乘上发射电平高电平的时间。因此,可以通过式子计算深度d;

d = 1 2 C T p Q 1 / ( Q 0 + Q 1 ) d=\frac{1}{2}CTpQ1/(Q0+Q1) d=21CTpQ1/(Q0+Q1)
d d d代表深度, T p Tp Tp为发射模块的高电平时间; C C C为光速;

1.3 基于连续调制波(CW)的技术原理

1.3.1 解相位与深度计算

连续调制波在脉冲波的基础上而来, 连续调制波通常是连续的正弦波调制,与脉冲不同的是, 连续调制波开启了4个窗口分别是C1-C4 ,如下图所示:
在这里插入图片描述图5 CW ToF窗口时序

上图的C1-C4指的是窗口开启与关闭的时序,对于光源与接收端通常是正弦波;

在这里插入图片描述图6 发射波与接收波之间的关系
在解相位之前,此处先介绍一个函数定义, a ( t ) a(t) a(t b ( t ) b(t) b(t)互相关函数:
φ s g ( τ ) = a ( t ) ⊗ b ( t ) \varphi_{sg}(\tau)=a(t)\otimes b(t) φsg(τ)=a(t)b(t)

= lim ⁡ T → ∞ 1 T   ∫ − T 2 T 2 a ( t ) × b ( t + τ ) d t =\lim_{T\rightarrow \infty}{}\frac{1}{T}\ \int_{\frac{-T}{2}}^{\frac{T}{2}} a(t)\times b(t+\tau)dt =limTT1 2T2Ta(t)×b(t+τ)dt

对于ToF,接收信号通过采样信号可以采用类似的关系解调出来, 其中接收信号与发射信号做一定相位延迟后信号重叠;而采样信号的频率f与发射信号的频率相同, 因此,发射信号、接收信号、采样信号三者之间的频率是一致的。

在这里插入图片描述
其中1为环境光导致接收波型引入的一个偏置, r ( t ) r(t) r(t)为接收信号; d ( t ) d(t) d(t)可以理解为发送信号,也可以理解为采集信号【方波】的近似描述,在这里理解为采样信号。从互相关函数的定义形式分析,其实际为两个周期函数相乘后进行积分,若采集信号为方波,那么互相关函数的结果则是接收信号在采样开关下的积分,而此积分则可理解为ToF在某一Tap的曝光时间内接收到的光子总量。由函数可知,其仅与延迟相位与采样时间点相关。若取:
ω τ 0 = 0 ∘ , ω τ 90 = 9 0 ∘ \omega \tau_{0}=0^{\circ} , \omega \tau_{90}=90^{\circ} ωτ0=0,ωτ90=90 ,

ω τ 180 = 18 0 ∘ , ω τ 270 = 27 0 ∘ \omega\tau_{180}=180^{\circ} , \omega \tau_{270}=270^{\circ} ωτ180=180,ωτ270=270

则有:
c ( τ 0 ) = a 2 c o s ( φ ) , c ( τ 90 ) = a 2 s i n ( φ ) c(\tau_{0})=\frac{a}{2}cos(\varphi), c(\tau_{90})=\frac{a}{2}si n(\varphi) c(τ0)=2acos(φ),c(τ90)=2asin(φ)
c ( τ 180 ) = a 2 c o s ( φ ) , c ( τ 270 ) = a 2 s i n ( φ ) c(\tau_{180})=\frac{a}{2}cos(\varphi), c(\tau_{270})=\frac{a}{2}si n(\varphi) c(τ180)=2acos(φ),c(τ270)=2asin(φ)

根据上述结果可得相位:
φ = t a n − 1 ( c ( τ 270 ) − c ( τ 90 ) c ( τ 0 ) − c ( τ 180 ) ) \varphi=tan^{-1}(\frac{c(\tau_{270})-c(\tau_{90})}{c(\tau_{0})-c(\tau_{180})}) φ=tan1(c(τ0)c(τ180)c(τ270)c(τ90))
在这里插入图片描述图7 相位解调计算原理示意图
其中A的值可以理解为幅度的同时,也可以作为置信度的一个标识,可用于Depth或者相位滤波算法的一个平衡参数。ToF的测量距离与发射频率相关。
在这里插入图片描述
偏置B代表系统及环境成像时的直流偏差量。可以理解为系统误差的一类表现。
在这里插入图片描述

1.3.2 双频深度计算

低频调制对应于远距离的测量,但是精度较差;而对于高频调制对应于近距离测量,精度较好。因此,高低频复用既可以用于探测远距离,也可以得到较好精度。对于双频调制对帧率要求较高,同时也会在一定程度上引入运动模糊

在这里插入图片描述图8 双频深度计算示意图

对于双频调制,其探测距离的频率取决于两种频率的最大公约数决定。以fA=100MHz,fB=60MHz为例,fE=20MHz,MA=5,MB=3;

在这里插入图片描述

2. IToF算法处理流程

2.1 ToF算法介绍

2.1.1 算法流程概述

ToF深度算法计算的总体流程如下:

在这里插入图片描述图9 ToF算法总体流程

首先, sensor输出相位图;通常情况下,相位图包含0,90,180,270的数据。然后进行wiggling进行相位较正,然后较正FPPN误差,温补较正;最后做相位展开后做镜头相关的较正以及滤波,最后根据相机的内参计算最终深度;

ToF算法流程近一步细化如下:
获取相位–>wiggling补偿–>FPPN补偿–>温度补偿–>相位展开–>滤波【置信度滤波+中值滤波】–>深度转换–>滤波【中值滤波】–>镜头去畸变—>点云数据;

2.1.2 双频相位展开计算

在ToF系统中,提取的相位都被包裹一个周期的相位中, 并不是真实的相位,因此需要将真实的相位展开获得真实数据。反正切函数获得的相位在【-pi,pi】或者【0,2pi】,解相位出来的相位这里可以称做是绝对相位。滤波需要放在相位展开之后。

在这里插入图片描述图10 一维相位展开示意图

了解以上解相位的基本思路后,回到ToF的双频CW模式的具体场景,由于ToF在同一像素的深度是相同的, 因此对于双频在同一像素点解出的相位对应的距离是同一个值,那么它们存在以下等式:
在这里插入图片描述

d A d_{A} dA d B d_{B} dB是高频与低频直接解算出的相位对应的距离值, d A T d_{AT} dAT d B T d_{BT} dBT是高频与低频一个周期2pi对应的距离值, sigma为两者充许的误差。其中n,m为整数;上式中, d A d_{A} dA, d B d_{B} dB可以根据I、Q图计算得出。 d A T d_{AT} dAT d B T d_{BT} dBT可以通过调制频率计算得出,根据双频的最大公约数频率,可以得到ToF的测量最大距离,n、m取值通过遍历或者查表计算可以计算。从而完成绝对相位的计算。sigma的大小可以用于滤除一些异常点。

2.2 ToF标定算法

注:以下标定中的参数可以是距离也可以是相位,取决于具体实现;

2.2.1 ToF标定内容与流程

ToF的标定内容可以分为两类,一类是所有模组采用统一参数与标定文件,比如温补,所有模组都可以采用同一参数;第二类是每个模组都需要独立标定,如:FPPN、wiggling、lens;
标定数据应用流程如下:
在这里插入图片描述图11 ToF数据补偿流程图

数据的采集步骤说明: 步骤一,采集ToF相机固定频率100MHZ下的相关数据,包括Rawphase、积分时间、真实距离值数据;

a. 配置ToF sensor的积分时间为固定值e0;

b. 固定TOF相机的积分时间,所测量目标物为白色平面,等间隔10cm选取测试距离直至到达100MHz下最大测量距离1500mm。依照上述方法,记录每个测试距离下像素中心点的测量距离值数据100次。

c.改变TOF相机的积分时间,重复步骤(b),其中积分时间等间隔50us选取直至到达TOF相机的最大积分时间800us;

d.大量实验表明,FPPN与积分时间及距离无明显关系。故选取合适实际距离为40cm,合适的积分时间为500us,记录50幅深度图像.

e.计算全局偏差。由于照明驱动电路和电光转换引起的电延迟,每个调制频率下都具有固定偏移量。通过全局偏差,使测量数据归一化,让数据更加易于处理。对步骤(b)、步骤(c)所获得的测量距离值进行平均处理。选取合适积分时间的合适测试距离,将测量距离值平均值减去真实距离值,得到全局偏差值,计算公式为:
P g l o b a l − o f f s e t = M r a w d i s t a n c e − C r e a l d i s t a n c e Pglobal-offset =M rawdistance -C realdistance PglobaloffsetMrawdistanceCrealdistance
其中, P g l o b a l − o f f s e t P global-offset Pglobaloffset 为全局偏差值, M r a w d i s t a n c e M rawdistance Mrawdistance 为测量距离值平均值, C r e a l d i s t a n c e C realdistance Crealdistance 为真实距离值。这里选取积分时间为500us,测试距离为400mm。在此,全局偏差值相当于系统误差。
f.将采集得到的深度图像每个像素测量距离值进行全局偏差补偿,计算公式为:

D p r e p r o c e s s e d ( r , c ) = D r a w d i s t a n c e ( r , c ) − P g l o b a l − o f f s e t D preprocessed (r,c)=D rawdistance (r,c)-P global-offset Dpreprocessed(r,c)Drawdistance(r,c)Pglobaloffset
其中 D p r e p r o c e s s e d ( r , c ) D preprocessed (r,c) Dpreprocessed(r,c)为经过预处理后的像素点坐标为 ( r , c ) (r,c) (r,c)的距离值, D r a w d i s t a n c e ( r , c ) D rawdistance(r,c) Drawdistance(r,c)像素点坐标为 ( r , c ) (r,c) (r,c)的测量距离值, P g l o b a l − o f f s e t P global-offset Pglobaloffset为全局偏差值。

2.2.2 wiggling标定

wiggling标定主要解决调制信号与理想信号存在的周期性差异,因此,在标定时需要确保完成对一个调制周期的标定补偿;
生成wiggling标定表:

对步骤(b)、步骤©选取所有积分时间下,所得到的测量距离平均值减去步骤(e)中全局偏差值,并与真实距离值做差,即可得到该积分时间下该测量点的距离误差值。对某一积分时间,采用三次多项式插值对误差数据进行拟合,得到该积分时间下距离误差值关于测量距离值的分布曲线。如图所示,对积分时间为500us时,采用三次多项式插值对误差数据进行拟合,得到的距离误差值关于测量距离值的部分分布曲线;
在这里插入图片描述图12 距离误差分布曲线
根据分布曲线,在TOF相机的测量距离范围,从最小测量距离值开始,对某一积分时间下求得测量距离值每间隔xmm所对应的距离误差值,直到达到最大测量距离值,并将每个测量距离值所对应的距离误差值按列顺序依次保存。对于所有积分时间进行上述操作,相应的积分时间所对应的数据保存为一行。将上述得到的所有数据保存成文件,即得到Wiggling查找表文件

wiggling校正:

首先判断TOF相机所设置积分时间是否在wiggling查找表中,如果在查找表中,则继续判断全局偏差补偿后得到的距离值是否在wiggling查找表中,如果在查找表中,则该积分时间下预处理后得到的距离值所对应的距离误差就可以在wiggling查找表获得。其次,如果TOF相机所设置积分时间和全局偏关补偿后得到的距离值不全在查找表中,则先计算出表中相接近的积分时间、距离值,然后进行线性插值计算,最终可得到该积分时间下,全局补偿值后得到的距离值所对应的距离误差值。进行wiggling校正计算公式为:

D w i g g l i n g ( r , c ) = D p r e p r o c e s s e d ( r , c ) − D w i g g l i n g − o f f s e t ( r , c ) D wiggling (r,c)=D preprocessed (r,c)-D wiggling-offset (r,c) Dwiggling(r,c)Dpreprocessed(r,c)Dwigglingoffset(r,c)
其中, ( r , c ) (r ,c) (r,c)为对应的像素坐标点坐标, D w i g g l i n g ( r , c ) D wiggling (r ,c) Dwiggling(r,c) D p r e p r o c e s s e d ( r , c ) D preprocessed (r ,c) Dpreprocessed(r,c)
D w i g g l i n g o f f s e t ( r , c ) D wiggling_offset (r,c) Dwigglingoffset(r,c)别为该像素坐标下wiggling校正后得到的距离值、全局偏差补偿后得到的距离值、获取的wiggling偏差值。

2.2.3 FPPN标定

FPPN噪声是与像素点相关的固定偏置噪声,因此,可以在某一位置上计算固定偏置的相位。然后在计算深度时加上这一个固定的偏置相位即可。
生成FPPN标定表:

首先,步骤(d)中获取的m幅深度图像进行平均值处理,然后根据上面步骤生成的全局偏差值、wiggling查找表,对平均值处理后的深度图像进行全局偏差补偿、wiggling偏差校正。由于测量目标物为白色平面,根据相机小孔成像原理,由中心点像素所对应的真实距离值可以计算出深度图的每个像素点真实距离值,其计算公式如下:
在这里插入图片描述
其中,Base(r,c)为像素点坐标为(r,c)的真实距离值,(x center ,y center )为深度图像中心点像素坐标,D(x center ,y center )为中心点像素真实距离值,l pixel 为TOF相机感光元器件的像元尺寸,f为TOF相机的焦距,上述变量单位均为㎜。所有像素的FPPN偏差值计算如下:
D FPPN_offset (r,c)=D calculated (r,c)-Base(r,c);
其中,D FPPN (r,c)为像素点坐标为(r,c)的FPPN的偏差值,D calculated (r,c)为像素点坐标为(r,c)经过全局偏差补偿、wiggling偏差校正后的距离值,Base(r,c)为平面像素点坐标为(r,c)的真实距离值。将计算得到的每个像素FPPN偏差值按像素点顺序保存成文件,即得到FPPN查找表文件。
在这里插入图片描述
FPPN较正:

根据步骤(2c)生成的FPPN查找表,对步骤(3a)中进行wiggling校正后的每个像素距离进行FPPN校正,其计算公式为:

D o u t ( r , c ) = D w i g g l i n g ( r , c ) − D F P P N o f f s e t ( r , c ) D out (r,c)=D wiggling (r,c)-D FPPN_offset (r,c) Dout(r,c)Dwiggling(r,c)DFPPNoffset(r,c)
其中,(r,c)为对应的像素坐标点坐标,D out (r,c)、D wiggling (r,c)、D FPPN_offset (r,c)
分别为该像素坐标下FPPN校正后得到的距离值、wiggling校正后得到的距离值、FPPN偏差值最终可得到校正后的距离值图像。

2.2.4 温漂标定

温度会改变深度偏移,因为VCSEL调制和传感器中的延迟时间解调会随温度变化。因此,距离补偿随温度变化漂移时,应根据传感器和激光驱动器中的温度应用于原始距离(这里,我们假设VCSEL的温度由激光驱动器的温度表示)。模型如下:
在这里插入图片描述在这里插入图片描述在这里插入图片描述

2.2.5 镜头标定

采用张氏标定出摄像机内参,镜头使用用Browm模型标定镜头;
在这里插入图片描述
在这里插入图片描述

2.3 ToF系统常用滤波器

2.3.1 时域滤波器【适用于静态扫描场景】

ToF系统常用的一些滤波器通常采时域与空域的滤波器。两个比较常用的滤波器是IIR一阶滤波器和中值平均滤波器。
一阶IIR滤波器定义如下:
如果在系统中,有足够的算力与带宽,也可以采用高阶的IIR与FIR滤波器以提高滤波性能。
中值均值波滤器是一个非线性的滤波器,通常其是选择多个数据中的中间部分数值求平均,以达到滤滤波的效果。一般会采用3-5个样本。
在这里插入图片描述

然而采用时域的滤波器,最大的问题是会带来运动模糊,在动态场景中,并不太适合。

2.3.2 空域滤波器

  • 高斯滤波器【对于深度滤波,只能改善主观视觉效果,但理论上对深度不是特别友好】
  • 双边滤波器
    双边滤波与高斯滤波器相比,对于图像的边缘信息能过更好的保存。其原理为一个与空间距离相关的高斯函数与一个灰度距离相关的高斯函数相乘。
    空间距离指的是当前点与中心点的欧式距离。空间域高斯函数其数学形式为:
    在这里插入图片描述
    其中(xi,yi)为当前点位置,(xc,yc)为中心点的位置,sigma为空间域标准差。
    灰度距离:指的是当前点灰度与中心点灰度的差的绝对值。值域高斯函数其数学形式为:
    在这里插入图片描述
    其中gray(xi,yi)为当前点灰度值,gray(xc,yc)为中心点灰度值,sigma为值域标准差。
    对于高斯滤波,仅用空间距离的权值系数核与图像卷积后,确定中心点的灰度值。即认为离中心点越近的点,其权重系数越大。
    双边滤波中加入了对灰度信息的权重,即在邻域内,灰度值越接近中心点灰度值的点的权重更大,灰度值相差大的点权重越小。此权重大小,则由值域高斯函数确定。两者权重系数相乘,得到最终的卷积模板。由于双边滤波需要每个中心点邻域的灰度信息来确定其系数,所以其速度与比一般的滤波慢很多,而且计算量增长速度为核大小的平方。
  • 空域中值滤波器

2.3.3 置信度滤波

置信度可以用于滤波,因为置信度的值标示了整个数据的可信程度或者是能量接收信噪比。其使用方法相对简单,可以直接在选择的空域滤波器的后方叠加一个置信度值,若置信度高于一定域值,则此相位参与深度计算,若低于一定域值,则可丢弃此数据。
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.3.4 飞点滤波

飞点产生的原因是由于光束发出之后,一部分照射在前景上,另一部分照射在背景上,使得此像素点同时包含了前景与背景的测量信息,从而偏离真实的物体距离信息。
在这里插入图片描述
对于飞点噪声,可以尝试采用sobel算子进行处理,sobel算子应用于空间梯度的计算,在空间梯度剧烈变化的地方输出峰值。将sobel算法应用于相位图,计算水平与垂直两个方面的响应。在图像边缘会产生一个很强的边框响应,移除边框的同时,也就同步达到滤除飞点的目标。
在这里插入图片描述
如果前景与背景距离比较近,飞点会比较集中且呈现一定梯度高度,基于这个类型的飞点,其可能的使用方法是,一方面可以提升过滤的域值。另一方面可以对sobel算子进行一此变型,可以将3x3矩阵转换为3x4,3x5矩阵。

3.IToF设备误差分析

3.1 误差分析概述

通常来说,ToF系统的精度可以通过下面的公式来进行评估:
在这里插入图片描述
c是光速;f是调制频率,Cd是解调对比度,A接受信号的幅度,B系统的集中偏置量。从上式中可以分析如下:系统的误差与调制频率f、解调对比度Cd、信号的幅值A成反比,与系统偏置B成正比。
解调对比度
在上述的理论计算中,我们总是假定采样的开关波形中,只有高电平的电容采集到了光子,低电平的电容未收集到任何光子,但在实际sensor的实现中,这种理想状态是不存在的。比如说:当DMIX0在高电平时接收到的电子为Nea,而此时DMIX1的电平为低电平接收到的电子为Neb。那么解调对比度定义为:
在这里插入图片描述

3.2 相位相关噪声

固定位置相位噪声(FPPN):每个素像的解调相位延迟差异,及激光器与sensor之间未完全对齐导致的误差;
温漂:物理原器件因为温度而导致调制与解调方面的变化;
调制波形误差(Wiggling Error):谐波失真引起的相位或距离的误差

3.3 物理模型简化误差

在ToF系统中,通常会假定光束发射与接收的路径是相同的, 但在实际实现时激光器与sensor之间是有一个基线距离,因此,在真实模型与理论模型之间存在一个系统简化的误差。

在这里插入图片描述理论模型与简化模型的差异

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

当L比较小时, deltaL始终也比较小,因此可以假定deltaL为一个固定值,且在某些情况下可忽略。

3.4 其它噪声

镜头的畸变等因素导致的内参变化
基线导致的误差等
在这里插入图片描述

图:噪声分类与策略

版权声明:本文仅做学术分享,版权归原作者所有,若涉及侵权内容请联系删文

3D视觉开发者社区是由奥比中光给所有开发者打造的分享与交流平台,旨在将3D视觉技术开放给开发者。平台为开发者提供3D视觉领域免费课程、奥比中光独家资源与专业技术支持。点击加入3D视觉开发者社区,和开发者们一起讨论分享吧~

也可移步微信关注官方公众号 3D视觉开发者社区 ,获取更多干货知识哦!

  • 13
    点赞
  • 78
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值