点击上方“3D视觉车间,选择星标
第一时间送达干货
作者丨cocoon
编辑 | 3D视觉开发者社区
ToF相机深度重建的过程中,总是存在着各种各样的影响因子导致误差,让使用者烦不胜烦。误差是不可避免的,但我们能够通过一些方法,尽可能减少其影响程度,以得到精度更加准确的结果。
本文提出了一种基于深度学习的作者MOM-MRM验证二阶法可以有效减少MPI、运动带来的误差。假如你在担心误差,那就来看看吧!
1.概述
2. ToF相机模型
2.1 理想的相机模型
2.2 多路径效应的影响
2.3 移动(Motion)的影响
2.4 Kinect v2的特性
3. FLAT的数据集
4. 网络结构
5. 实验
5.1 MPI纠正
5.2 运动纠正和消融实验
5.3 Putting Everything Together
5.4 方法限制
6.结论
7. 参考文献
Tackling 3D ToF Artifacts Through Learningand the FLAT Dataset
https://openaccess.thecvf.com/content_ECCV_2018/papers/Qi_Guo_Tackling_3D_ToF_ECCV_2018_paper.pdf
https://research.nvidia.com/publication/2018-09_Tackling-3D-ToF
都会给基于ToF相机的深度重建来误差。
作者提出了,同时解决上述问题。
文章还引入了一个名字特指“Flexible Large Augmentable Time-of-flight。这个数据集有2000次非理想情况ToF数据测量,并允许模拟不同的相机硬件。
文章中使用作为baseline,显示其在合成数据集和真实数据上超过了SOTA的能力。
介绍ToF相机模型是基于理想情况来证明的ToF重建过程是一个微过程。换句话说,整个重建过程可以微分,也就是说,的。
此外,文章还通过数学表达展示,这将有助于数学地表达整个任务。
网络将直接针对原始测量,其扩展到相位之间,目的是
使用文章Kinect v2作为baseline,所以也是对的Kinect v尽可能描述硬件特性。这有助于更好地模拟数据,
AMCW(Amplitude-Modulated Continuous-Wave)的ToF投射到场景中的相机正弦波信号可以表示为:。
假设场景静止,相机和光源同时放置,像素接收到的信号可以表示为:
其中,是场景响应函数,即信号在时间接触到像素的信号。
在理想的场景中,光只反射一次,场景对应的是脉冲,即。飞行时间可直接转换为深度。
一个零差(homodyne)的ToF相机调制相同频率和相位延迟的参考信号,即。相机的曝光时间通常设置为。
通过简单的三角函数,可以实现raw相关测量即:
其中,将视作ToF相机函数。
已知单频率以及的相位的Raw每个像素的深度可以表示为:
但由于多频测量()需要,解调深度大于在这种情况下,频率不妨相应的测量值标记为,距离可以进一步扩大改写为:
显然,从上面的风格可以看出,我们很容易得到微分,也就是说,
当多路径存在时,接触像素的场景信号不再是脉冲。因此,相关测量的形式将被改写为:
当我们处理不同的频率时和不同相位测量正弦信号时,可获得多通道raw测量值。对于一个像素的多通道测量值,我们可以将其视为多维空间的一个点。虽然通过理论分析很难建模,但空间结构可以通过学习来获得。
如果只有单频,准确识别MPI几乎不可能,因为MPI误差值和真实测量值在一个域内。
若为多频,则会产生非线性子空间,MPI受影响的值不会在子空间内。
真实场景很少完全静止。由于物体与相机的横向和轴向运动相比,后续的相关测量往往并不对齐。
此外,相机轴向运动将进一步响应函数影响。作者不考虑。MPI问题,在室内试验中,发现这种情况会对深度恢复产生很大
其他运动引起的运动blur多普勒效应几乎可以忽略不计。
Kinect v二是应用广泛ToF相机,自带一个SDK(libfreenect2,简称LF2)。
我们仔细研究过目的是尽可能准确地模拟这些特征。
Kinect2使用了三个调制频率,每个调整频率测量了三个相位,共产生9个机函数 。
为了对相机函数进行标定,作者仔细地对准光轴,使其垂直于朗伯校准平面。
在Kinect光源前放置一个光吸收管,以缩小光束发射角度,限制MPI。
将平面转换为一已知的距离: ,并获得相对应的raw测量值 。
该raw测量值将接近于 。
在去除掉光照衰减 后,可以获得一系列的观测值。下图表现了三个相机函数的拟合示意图,其中红色和蓝色表示 ,绿色表示 。
至于shot 噪声,假设每一个像素都独立于其他像素,从15个场景中获取数据,对于每一个raw相关值,都计算了其100次测量的平均期望值。对于每一个期望值,都收集了其噪声样本的经验分布,之后将用于仿真过程中的噪声数据生成。
文章认为,一个理想的用于训练及验证ToF算法的数据集应当是大型的,且允许模拟不同的相机响应函数,允许MPI、shot noise以及运动,且允许raw测量值的体现。
因此,作者制作了“FLAT”数据集,该数据集中包含了2000个场景响应函数 。
这一段主要介绍了
网络包括两个模块,如下图所示:
第一个模块称之为MOM,是Motion Module的缩写,整体是一个编码-解码的结构(受FlowNet启发),其目标是输出一个velocity图,进而将Kinect获取的9张raw图进行对齐。
具体来说,对不同的相机函数所测量得到的raw相关进行处理,模块
另一个模块是MRM,是Multi-Reflection Module的缩写,这个模块基于kernel-predicting network(简称KPN)所设计。KPN的具体结构见Mildenhall等(2018)的工作。
输出9个的目的是生成一个干净的raw测量,而所谓的“干净”是指去除掉shot和MPI噪声。
表一体现了基础DNN结构不同变种的细节:
当使用MRM模块时,修改了LF2中的双边滤波部分,因为MRM已经执行过去噪点的过程。
MRM的输入是MOM的输出。训练的损失函数是raw相关测量的L2损失函数。
此后,
首先,需要进行评估。
对比的baseline有LF2、DToF、Phasor。
对比的深度范围在[1.5m, 5m]。
由于Phasor对shot noise未做处理,因此在其生成深度图后再施加双边滤波进行去噪处理。
从下图结果中可见,DToF所产生的深度图精度要差一些。此外,我们注意到,LF2的中位误差是有偏的,这是因为LF2几乎没有对MPI进行处理。而这种有偏情况,或者说MPI所造成的误差,有效地被MRM减轻。
总的来说,该方法接近于Phasor的精度,且不需要额外的硬件设备来制造非常高的频率(比如1063.3MHz以及1034.1MHz)。事实上,MRM所需要的硬件是Kinect2,频率低于50MHz。
下图则展示了在FLAT数据集中典型场景各个方法的表现。
其中,Phasor以及MRM在去除MPI上的效果远超过其他方法。
我们还可以注意到,高频对于噪声来说非常敏感。
在实践中,使用了双边滤波对Phasor的输出进行处理。尽管这有效地减少了随机噪声,却无法去除系统噪声(如由于物体移动造成的噪声),大大地增加Phasor的误差。相比之下,MRM则显得稳健得多。
此外,对于一些在真实场景下墙角的情况,MRM也能够很好的处理,这在后续的实验中将会介绍。
作者通过消融实验,进行了评测。
文章中比较了LF2、MOM以及MOM-MRM的深度重建效果,三者均采用了LF2的掩膜方式对不可靠的点进行滤除。
在某种程度上,我们可以将这一指标用于评测重建像素比例如下图所示:
相对于LF2来说,似乎深度重建精度略高一些,但这并非其最大的优势之处。
其主要的优势在于:在目视层面上,直观体现为补上了深度图上有洞的地方,使得深度图看起来更加的完整。
示意图如下:
同方法在合成数据集以及真实数据集上的表现为:
文章中认为,这样的DNN架构是经过了一番思考论证的,前人已然尝试过许多种架构,包括直接输出深度图的端到端的结构(Su等人,2018)。
然而作者发现,直接输出深度图的结构的误差要大于其DNN结构。究其原因,端到端的结构需要,而不是利用已知的物理事实进行设计。
在下图中,进一步体现了MOM-MRM相对于LF2等方法的优势:
MRM的感受野为 ,主要强调短距离的MPI纠正;而对于长距离的MPI来说,其应对能力相对弱一些。
数据集不包括镜面反射的物体。因此,对于镜面反射的物体来说,无法进行深度估计。
MOM无法对很大的运动进行处理,具体来说,对于遮挡而言并无效果,只是尽可能地减少运动伪影。
仅在室内光的情况下,对噪声进行仿真。
可知,运动、MPI和散粒噪声对ToF成像深度重建的精度有着显著影响。
文章证明了,基于ToF相机的Raw测量数据,可以利用来减弱运动和MPI所带来的负面影响。
[1] Xiang, L., Echtler, F., Kerl, C., Wiedemeyer, T., Lars, hanyazou, Gordon, R., Facioni, F., laborer2008, Wareham, R., Goldhoorn, M., alberth, gaborpapp, Fuchs, S., jmtatsch, Blake, J., Federico, Jungkurth, H., Mingze, Y., vinouz, Coleman, D., Burns, B., Rawat, R., Mokhov, S., Reynolds, P., Viau, P., Fraissinet-Tachet, M., Ludique, Billingham, J., Alistair: libfreenect2: Release 0.2 (April 2016)
[2] Su, S., Heide, F., Wetzstein, G., Heidrich, W.: Deep end-to-end time-of flight imaging. In: The IEEE Conference on Computer Vision and Pattern Recognition (CVPR). (June 2018)
[3] Mildenhall B, Barron J T, Chen J, et al. Burst denoising with kernel prediction networks[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2018: 2502-2510.
*注:文章内图表顺序遵循原始文献标注,与实际略有出入
版权声明:本文为奥比中光3D视觉开发者社区特约作者授权原创发布,未经授权不得转载,本文仅做学术分享,版权归原作者所有,若涉及侵权内容请联系删文。
本文仅做学术分享,如有侵权,请联系删文。
1.面向自动驾驶领域的多传感器数据融合技术
2.面向自动驾驶领域的3D点云目标检测全栈学习路线!(单模态+多模态/数据+代码)3.彻底搞透视觉三维重建:原理剖析、代码讲解、及优化改进4.国内首个面向工业级实战的点云处理课程5.激光-视觉-IMU-GPS融合SLAM算法梳理和代码讲解6.彻底搞懂视觉-惯性SLAM:基于VINS-Fusion正式开课啦7.彻底搞懂基于LOAM框架的3D激光SLAM: 源码剖析到算法优化8.彻底剖析室内、室外激光SLAM关键算法原理、代码和实战(cartographer+LOAM +LIO-SAM)
9.从零搭建一套结构光3D重建系统[理论+源码+实践]
10.单目深度估计方法:算法梳理与代码实现
11.自动驾驶中的深度学习模型部署实战
12.相机模型与标定(单目+双目+鱼眼)
13.重磅!四旋翼飞行器:算法与实战
14.ROS2从入门到精通:理论与实战
15.国内首个3D缺陷检测教程:理论、源码与实战
扫码添加小助手微信,可
一定要备注:
▲长按加微信群或投稿
▲长按关注公众号
学习3D视觉核心技术,扫描查看介绍,3天内无条件退款
圈里有高质量教程资料、答疑解惑、助你高效解决问题