一文详解深度相机之TOF成像
点击上方“小白学视觉”,选择加"星标"或“置顶”
重磅干货,第一时间送达
文章导读
本文通过介绍TOF相机的成像过程,带大家了解TOF相机中脉冲法和连续波调制这两种技术原理,并详细的分析每种方法的实现细节和各自优缺点,对连续波调制方法深入其相位差原理,单频相位测距的限制及如何解决模糊距离等问题。
0
前情回顾
小编过了一个咸鱼般的五一,躺尸在家被五大过程组,十大知识体系折磨个半死,做题全凭感觉。
记得放假前一天和朋友吃饭,被问到TOF的原理是什么?小编弱弱的回答发射脉冲波打到物体返回后统计光的运行时间从而计算距离。被大佬用质疑的眼神瞄了一下,然后啪嗒啪嗒给我解释了一番连续调制波的原理。
小编总感觉哪里有些问题,做了这么久激光雷达感知算法,那些Velodyne-16,Horizon确实是基于脉冲波的技术原理呀,不过再往下问具体传感器内部是怎么工作的,小编也是一知半解。
下面我们来好好补一补有关TOF相机的基本知识,剧透一下原来TOF相机既可以基于脉冲波的光学快门方法又可以基于连续调制波的方法。
1
什么是TOF相机
在双目成像的文章中,我们说过双目相机是一种被动接收自然光的传感器,通过接收自然光利用三角测距的方式描述三维环境。本文的TOF相机则是一种主动发射红外光的传感器,通过发射光脉冲并接收打到物体反射回来的脉冲信号,最后计算光脉冲的飞行时间得到目标物体的距离。
说到这里我们可能第一反应是这不就是激光雷达的工作原理嘛!确实很相似,但是机械式或混合固态激光雷达采用逐点扫描的方式感知环境信息,而TOF相机以面阵的方式得到深度图。
小编最早接触的TOF相机就是微软的Kinect 2.0。Kinect系列很有意思,第一代基于结构光原理做的深度相机,第二代基于TOF原理做的深度相机,当时小编以为第三代是不是要用双目原理做深度相机了,誓把深度成像的技术都玩个遍的时候它停产了。如下图所示:上面是Kinect 1.0,下面是Kinect 2.0(长得太丑)
TOF相机输出的深度图在2D空间表示为灰度图像,每个像素点对应一个距离值,其中强度越亮表示距离越近,如果光源被吸收或者未收到反射信号则呈现黑色。如下图所示:
在深度图的基础上,配合相机的外参数据可以转换三维点云。假如你又同时有一颗RGB相机,能够将物体表面纹理映射到点云体素上,那么一张栩栩如生的三维渲染模型就出来了,如下如所示:
2
TOF相机的技术原理
发射模块和接收模块是TOF相机的核心部分,通过内部的数据处理计算出深度信息。至于采用什么技术计算深度信息,我们提到了两种方法:
基于脉冲法原理简单:类似于我们有一个计时器,按下开始键发射一束脉冲波出去,当遇到障碍物后返回,当被接收器收到后按下停止键。根据计时器记录的时间和光的速度可以计算出相机到物体的距离。
公式如:Distance = 1/2 × c × Δt
其中c表示光在空气中传播的速度,Δt表示脉冲信号从相机到目标往返的时间。
通过一个高频率的时钟驱动计数器对收发脉冲之间的时间进行计数,使得计数时钟的周期必须远小于发送脉冲和接收脉冲之间的时间才能够保证足够的精度。但是如果要达到毫米级别的测量,对控制时钟,发射单元等电子元器件的精度都是一项挑战。这就是为什么无人驾驶中应用的激光雷达传感器常基于脉冲法,因为该方法比较适合中远距离的测量。
但是在机器人等应用中使用的TOF相机大多采用的是连续波调制的方法:使用调制光照射场景, 并测量通过场景中的物体反射后返回光的相位延迟。得到相位延迟后, 再使用正交采样技术测量间接得到距离。
公式如:Distance = 1/2 × c × ϕ × T/2π
其中c表示光在空气中传播的速度,T表示调制周期,ϕ表示发射和接收波形的相位差。
该方法比较适合中短距离的测量,精度往往可以达到毫米级。
通过对比上述两种方法的基本原理,我们不难发现:
脉冲法测量方式简单,占空比窄检测距离远;但是它易受环境光和元器件精度影响,测量精度相对较低。
相位差可以消除测量器件带来的固定偏差但是采样次数多,导致测量耗时帧率低。
3
如何将相位偏移转换成距离?
仔细看两种方法的距离求解公式,其实很相似,最终都是距离 = 速度 × 时间。唯一区别在于时间是怎么得到的?
脉冲法求时间比较直接,这里没有什么好解释的,就是到达时间-发射时间即可。
相位差也是可以转换成时间的,通常某一定频率 f 的相位差时间 = 相位差的度数 / 2πf 。这里就有小伙伴会问相位差的度数是怎么求的?
在连续波调制过程中通常将连续波近似为正弦波划分成4个窗口进行采样,并且采样时间间隔相同。如下图所示:
推导过程就不贴了,最终的结果为:
ϕ = arctan((Q3-Q4) / (Q1-Q2))
相位差求取中的(Q3-Q4)和(Q1-Q2)相对于脉冲调试法消除了由于测量器件或者环境光引起的固定偏差。并且方程中求商的过程减少了来自距离测量的恒定增益影响,比如系统放大和衰减或者反射响度等问题。
4
重复周期下的相移如何计算距离?
在信号与系统中提到过相位与延时的关系,其中2π为一个符号周期时间,如果采用相位差法测距,怎么判断目标位于第几个周期呢?
事实上采用单一频率进行相位测距,确实无法分辨超过一个周期的距离值。简单粗暴一点的做法就是根据最大测量距离来调节频率,不过频率越高意味着距离分辨率越低,从而测量精度越低。所以在单一频率下会出现距离和精度无法同时满足的情况。
为解决单频造成的模糊距离问题,可以采用多频率技术来延长测量距离同时不降低调制频率。多频率技术的工作原理就是将一个或多个调制频率添加到混合。每个调制频率将有不同的模糊距离,但真正的位置是在不同的频率一致。当两个调制一致的频率,称为拍频,通常是较低的,并对应一个更长的模糊距离。如下图所示:
此解释来源于2014年的一篇文章:Time-of-Flight Camera – An Introduction
有兴趣的小伙伴可以私我要文章(还有一篇更详细的原理解释:TOF Camera Principles Methods and Applications)
5
TOF相机的特性对比
市场上比较常见的视觉传感器包括单目相机、双目相机、结构光相机、全景相机、红外相机、TOF相机等。通常在谈到深度相机时会把TOF和结构光、双目这三种技术拿出来进行对比。
TOF技术相比结构光实现难度较低,发射信号遇到目标返回即可,不像结构光需要先打出激光散斑编码,然后再去提取编码特征。而且TOF受环境影响较小,不存在结构光激光散斑在户外会被淹没的问题,具有较好的抗干扰能力。但是TOF相机的分辨率低,所以通常只适用于一些近距离的避障导航功能。
TOF技术相比双目成像技术,因为其主动发射光源,输出的深度数据是通过解相位计算得到,所以很大程度上不受阴影的影响,在昏暗场景依然有良好的效果。而且TOF生成深度图没有复杂的特征配准、三角测量等算法加持,所以不依赖特征匹配的好坏,也就不受物体表面纹理,环境光照射角度等影响。在生成深度图的实时性上自然优于双目经过一大堆复杂计算的成像过程。
下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程,即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。
下载2:Python视觉实战项目52讲 在「小白学视觉」公众号后台回复:Python视觉实战项目,即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。
下载3:OpenCV实战项目20讲 在「小白学视觉」公众号后台回复:OpenCV实战项目20讲,即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。
交流群
欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~