为什么你的手机后置摄像头越来越丑?ECCV2022这篇论文告诉你

简介: 为什么你的手机后置摄像头越来越丑?ECCV2022这篇论文告诉你

640.png

Paper: https://arxiv.org/pdf/2210.02785.pdf

序言

本文涉及了各种3D传感相关的工作,包含单目、双目、ToF等传感器,涉及了计算摄影、ToF深度测量、双目深度估计、多视角深度估计、相机离线标定、相机在线标定、NeRF等技术,可谓3D视觉集大成者

背景

这里简单介绍下本文将会提到的两种3D成像技术:双目立体视觉、ToF

  • 双目立体视觉: 使用两个物体的摄像头来模仿人类视觉,它们之间有一定的距离。从这些相机获取图像,然后用于执行视觉特征提取和匹配,以获得相机视图之间视差图。视差信息与深度成反比,可以很容易地用于获得深度图
  • Time of Flight (ToF): 顾名思义,发出红外激光,记录发出的红外光打在物体表面返回所需的时间,即光飞行的时间,再根据光速计算相机到物体表面的距离

后续的本公众号将会更新3D视觉系列文章,详细介绍3D视觉相关的技术方案实现以及相关的应用,欢迎大家关注

导读

(a) 多模态相机模型. (b) RGB参照图. (c) ToF 深度. (d) 本文方法深度.

高精度深度信息对于计算摄影至关重要,部分智能手机带有飞行时间(time of flight)传感器来测量深度,与多种RGB相机组合构成手机的多模态相机系统。这篇论文讨论了如何解决多模态相机系统中RGB双目深度和ToF深度融合的问题。这种融合有助于克服分辨率低、主动激光光源功率低等消费级ToF传感器的局限性。本文首先提出了一种基于密集 2D/3D 匹配的在线标定方法,该方法能够从单个快照中估算带有光学防抖的RGB传感器的相机内参、外参和畸变参数,然后通过correlation volume来融合双目深度和ToF深度信息。在融合训练过程中,使用基于深度学习的神经重建方法获取真实场景的深度构建训练数据集。在评估过程中,使用商用高功率深度相机获取测试数据集,并表明本文的方法比现有方法精度更高。

背景

ToF 深度信息给手机背景虚化带来的显著提升

计算摄影的进步带来了许多新的应用场景,如三维重建、视角合成、增强现实等。例如通过将高分辨率的相机RGB图像反向投影到三维空间中来虚拟物体,带来优秀的背景虚化效果。获取高精度像素深度对这些算法至关重要,因此,智能手机现在有了带有多个传感器的相机系统,包含不同焦距的镜头、超广角镜头、黑白镜头和飞行时间(ToF)传感器等等,其中基于相位的ToF传感器通过使用门控红外传感器测量红外主动光的飞行时间来提供深度信息。目前手机上得到高精度的逐像素深度存在两个挑战:

  • ToF传感器的分辨率比同伴的RGB相机的分辨率低几个数量级。近年来智能手机上的RGB相机分辨率已经显著提高,通常在1200万到6400万像素之间,而ToF传感器通常仅有50万到300万像素。自然而然就可以想到,将来自ToF的深度信息与来自两个RGB相机的双目深度信息融合在一起,这是一个提高深度分辨率的好策略。同时融合也有助于我们克服由于依靠电池供电的激光光源能量弱而产生的ToF信号的低信噪比的问题。为了融合两两种模态的传感器信息,我们需要准确地知道相机系统中所有传感器和镜头的相对姿态关系。这就引入了第二个问题。

上图展示了OIS系统对摄影的影响

  • 随着RGB空间分辨率的提高,智能手机现在普遍加入了光学防抖(OIS)功能:当光学防抖模组内部陀螺仪检测到外界的振动时,一个浮动镜头构成的稳定器补偿相机身体的震动,由此将相机抖动造成的图像偏移抵消掉,保证相机在抖动环境中依然可保持成像稳定。在浮动镜头补偿运动的过程中,稳定器的位姿目前无法通过电子系统测量或读出。因此,在含有光学防抖镜头的相机系统中,需要在线标定每次曝光时的浮动镜头,才能使用融合策略发挥作用

本文提出了一种浮动融合算法,从光学防抖RGB镜头、广角RGB相机和ToF传感器组成的相机系统中提供高精度的深度估计。利用ToF测量和RGB相机对之间的密集光流匹配,设计了一种在线标定的方法,针对每个快照,形成2D/3D对应,以尺度确定的方式而不是尺度不确定(up to scale)恢复相机内参、外参和镜头畸变参数。这使得它适用于相机动态环境。然后,为了融合多模态传感器信息,我们建立了一个整合ToF和双目RGB信息的correlation volume,然后通过神经网络预测视差,得到深度信息。但是很少有大型的多模态数据集来训练这个网络,而且合成数据的创建是昂贵的,并与真实数据的存在差距。我们利用多视图捕捉真实世界的场景,并通过ToF深度数据来监督优化神经辐射场(Nerf),所得到的深度图比深度传感器具有更低的噪声和更好的细节,提供高质量的训练数据。验证阶段,本文使用Kinect Azure构建了一个测试数据集,并表明本文的方法优于传统的RGB-D成像方法,也优于其他的基于数据驱动的方法。

方法

我们使用的是一部现成的三星Galaxy S20+智能手机,主摄为一颗1200万像素的带有光学防抖(OIS)的广角RGB镜头,副摄包含一颗1200万像素的120°超广角RGB镜头以及一枚4800万像素长焦镜头,此外还包含一颗300万像素的ToF传感器和红外发射器。

在整个相机系统中,超广角镜头和ToF模块的位置固定的,因此可以使用基于棋盘格的离线标定方法来标定它们的内参、,外参、和镜头畸变参数。我们使用了对于ToF和RGB在可见光谱中吸收率类似的棋盘格标定板。但是,由于每次快照之间相机都在抖动,浮动主相机光学防抖(OIS)在x、y方向引入了镜头移动以实现稳定,在z方向引入了镜头移动以实现对焦,z方向还会导致镜头畸变发生变化。由于重力的影响,镜头还会倾斜(俯仰角(pitch)/偏航角(yaw)旋转)。这就导致了每次快照的时候,浮动主相机的内参会发生变化,浮动主相机和其他相机之间的相对位姿也会发生改变。因此,我们必须在每次快照时估计新的内参矩阵、新的外参矩阵以及来自布朗模型的三个径向和两个切向畸变系数。为了解决这个挑战,论文中提出了一种在尺度确定(而不是尺度不确定“up to scale”)下估计这些参数的方法。

ToF深度估计

ToF解相位

ToF系统使用20MHz和100MHz方波调制其红外光源,并在两个频率之间交替。传感器每个频率通过Four-Sampling-Bucket算法,获得4个相位延迟为0°,90°,180°和270°的采样信号。使用两个频率,我们每次快照可以获得八个原始ToF测量值(上图a):

对于每个调制频率,首先计算发射信号和接收信号的相位差  (measured phase/raw phase),通过计算发射光与反射光的相位差来计算每一个像素点到相机的距离:

640.png

在ToF系统中,提取的相位都被包裹一个周期的相位中,并不是真实的相位,因此需要将真实的相位展开获得真实数据,即求解上式的。同时,ToF深度误差与调制频率成反比。因此,更高调制频率的ToF相机深度噪声更低且深度误差更小;然而,包裹范围更短,这意味着可以准确测量的距离更短(100MHz≈1.5m,20MHz≈7.5m)。由于手机ToF的红外激光是低功率的,对于对象的信号进一步变弱,使得相位估计在较低频率高度不可靠。由此我们可以的带一个粗糙但未包裹的相位图(上图b),一个更精细但包裹的相位图(上图c)。因此我们使用20MHz的相位去展开100MHz相位来估计一个更准确的深度图。

ToF深度置信度

根据估计的深度,我们根据信号的幅值图、和之间的一致性以及局部深度的变化来分配一个置信度图ω。首先,当信号较弱时,我们分配较低的分数:

我们还考虑到与两个频率的估计的距离之间的差异:

由于ToF在深度不连续处不太可靠,我们认为深度梯度较大的区域不太可靠:

最终,完整的置信度分数为:

其中,,和

在线标定

为了标定浮动主相机,需要在已知的3D世界点和这些点的2D投影之间找到足够的对应关系。即使ToF和主相机没有共享光谱响应区间,也必须找到将ToF的3D点映射到主相机的方法。我们的整体策略是利用ToF和超广角相机之间的已知固定关系,并利用超广角和浮动主相机之间的光流的2D颜色对应关系。这样,我们就可以将主相机的2D坐标映射到超广角相机的2D坐标再映射到ToF相机的3D坐标。尽管ToF可能存在噪声,但它仍提供了足够的点来可靠地标定主相机的的内参、外参和镜头畸变参数。

From ToF to Ultrawide

第一步是将ToF深度投影到超广角相机1. 将ToF深度转换为ToF点云:

  1. ToF点云转到超广角相机坐标系得到超广角点云

  1. 超广角点云投影到超广角图像上,最终得到ToF深度点与超广角RGB像素坐标(亚像素)的对应关系

From Ultrawide to Floating Main

下一步是将超广角相机与浮动主相机进行精确标定。由于两个相机位于彼此附近,它们具有相似的视点,因此无需进行稀疏尺度和旋转不变的特征匹配。基于此,本文使用密集的光流来进行特征匹配找到对应关系。为了使用光流,首先对超广角相机去畸变,然后使用离线标定的结果进行极线矫正(Rectify)。由于浮动主相机的内外参一直是变化的,这种矫正是错误的,但是由于光流设计用于小范围的非约束图像到图像对应,因此这种矫正方法仍然会找到有用的对应关系。作为输出,我们得到了两个相机匹配好的匹配2D向量场。

From ToF to Floating Main

得到了ToF与超广角的对应关系、超广角与浮动主相机的对应关系,现在就可以得到每个ToF深度点对应的浮动相机中的像素:

得到了浮动主相机的2D点和超广角相机空间中的3D点,接下来就可以对浮动相机进行标定。

  1. 通过RANSAC求解去除离群值。由于浮动主相机和广角镜头构成的双目系统的基线比较小,RANSAC帮助我们避免来自遮挡、不正确的光流估计和ToF的噪声
  2. 通过基于LM( Levenberg-Marquardt)优化的PnP算法求解带两个RGB相机之间的外参,以及主相机的内参以及其畸变系数

此外,虽然本工作中依赖相对位置固定的广角RGB镜头和ToF模组作为桥接,标定浮动RGB相机和ToF。但是一系列工作证明直接标定浮动RGB和ToF也是可行的,虽然二者光谱域(RGB/IR)不同,也可以进行有效的特征匹配。因此即使没有第二个广角镜头,我们的方法依然有效。

双目、ToF深度融合

深度融合baseline

基于上述的工作后,得到标定好了的双目RGB图和ToF深度图,接下来就是将它们融合得到精确的高分辨率深度图。

Stereo Matching

从浮动主相机和超广角相机两个RGB图像中建立correlation volume 。中的坐标点表示参考图像中像素与目标图像中像素在某个视差下的相关性。因此,correlation volume的形状为(宽×高×宽),因为视差沿着图像水平方向分布。具体来说,我们通过使用RAFT-stereo的特征编码器从每个视图提取256维图像特征,然后计算两个feature map的点积来构建3D correlation volume。需要注意的是,特征提取过程对图像进行四次下采样,以通过RAFT-stereo的凸上采样恢复原始分辨率的视差图。为了便于评估,这里使用固定的超广角相机作为参考图。

Correlation Volume Refinement

根据前面的方法得到ToF 3D点对应超广角相机的2D坐标和浮动主相机中的,同时还得到每个ToF点置信度ω。通过对在correlation volume中这些ToF点所在的位置增加相关性来利用这些ToF点。具体来说,对于ToF深度中的一个点,其在correlation volume中的位置是。但是由于计算出的ToF深度点对应的超广角像素坐标为亚像素级别,所以该ToF深度点对应的correlation volumew位置有八个整数邻居。本文使用线性权重将ToF深度点注入到RAFT-stereo计算的correlation volume中,其中一个邻居点为:

表示向下取整,表示向上取整。对所有的8个整数领域执行相同的操作。如果几个ToF点影响correlation volume中的同一点,它们的贡献就会累积。τ是一个在网络训练中优化的标量参数。然后,我们使用更新后的correlation volume估计视差。基于这种方法,可以有效、鲁棒地融合双目信息和ToF测量来得到更准确的深度

数据集生成

Background

基于学习的双目/ToF融合方法需要训练数据,为此,我们利用多视角RGB图像优化了一个神经辐射场(Nerf),这些数据允许查询场景中的每个点的密度和颜色,从而允许我们渲染估计的深度。具体来说就是下式(Nerf的体素渲染公式)中的颜色项  替换为点的深度然后进行渲染

Design Choices and Our Approach

本文使用的是MipNeRF作为多视图深度的baseline。这可以很自然地处理ToF和RGB相机之间的分辨率差异。对于深度监督,本文使用一种简单的方法,类似于VideoNeRF使用多视图三维重建的逆深度图进行监督的思路,我们在优化中添加了一个使用深度样本的损失项:

ω为上文的ToF置信度。除了这种监督之外,我们还使用6D三维旋转表示方法代替旋转矩阵,欧拉角,四元数等常见三维旋转表示,实现了外参和内参的细化。我们的训练和验证数据集有8个场景,每个场景大约有100个快照。这些场景具有不同的深度范围、背景、物体和材料。

实验

评估数据

为了评估我们的方法,我们使用 Kinect Azure 构建了一个真实世界数据集,并获取了 ground truth 深度。因为这种深度相机功耗较高,所以噪声会减少,深度质量也会比手机的 ToF 模块好得多。在将手机和 Azure Kinect 固定在一个联合安装座上后,将手机的 ToF 模块和超广角相机分别与Kinect深度相机进行标定。一旦标定完成,就可以将Kinect深度图重新投影到超广角相机和手机 ToF 相机进行比较。我们捕获了 4 个场景,总共 200 张快照。

除了这个RGB-D数据集之外,本文还使用传统的棋盘格离线标定方法来标定浮动主相机,为四个场景的在线标定评估提供ground truth。

训练数据生成

Multiview depth estimation

上图显示我们的方法可以有效地保留物体细节结构,上表证实了本文的方法可以有效地融合来自ToF测量和多视图数据。虽然被设计用来处理ToF输入,但当ToF和RGB分辨率不同时,它的性能比本文的方法更差。对比CVD和RCVD,实验观察到,当增加图像大小时,精度会下降。

最终RGB-D成像

标定

上图对比了其他的标定方法。Gao等人标定了两个GoPro相机和一个Kinect RGB-D相机。在我们的比较中,我们用超广角RGB加ToF模块代替RGB-D相机,用浮动主相机代替GoPro相机。Gao等人的标定精度比我们的要低得多,即使该方法使用最先进的特征匹配器DFM。此外,只有我们的方法能够标定相机内参和畸变参数。

Stereo/ToF Fusion

Fusion evaluation

本文使用真实世界的RGB-D数据集来评估的本文提出的融合方法。在第一行中,评估了RGB/ToF其他的融合的其他方法。由于他们的立体匹配方法对噪声和成像伪影不鲁棒,他们的融合结果非常不准确。在第二行中,我们用最先进的方法RAFT-stereo替换它们不那么鲁棒的立体匹配。由于其他的标定方法精度并不高,我们对上述所有的方法都使用了我们的标定方法,以强调我们的逐镜头标定的重要性。结果表明,我们的融合方法优于现有的方法。同时,我们还评估了我们是否可以忽略OIS:当手机固定时,我们使用棋盘格来离线标定主摄像头,然后我们移动手机来捕捉我们的测试场景。上表3第三行结果显示出深度精度大幅下降。因此,在线标定是必要的和有效的。

ToF/stereo fusion results.

上面图示表明我们的方法具有更好的边缘和孔洞保存能力,同时具有较强的鲁棒性。

对设备的依赖

在智能手机这种短基线的设备中,该方法应该得到推广,因为它允许在两个RGB相机之间进行精确的光流估计。此外,我们展示了基于不同硬件的数据集融合的结果:ZED立体相机和微软Kinect v2 ToF深度相机,以及两个校准BASLER scA1000 RGB相机和MESA SR4000 ToF相机的LTTM5。

限制

虽然我们的方法适用于室内环境,但对ToF和双目的依赖阻止了某些场景的应用。首先,ToF模块由于功率低,不能在大距离准确估计深度。其次,在强红外环境光(如太阳直射)下,ToF深度估计不可靠。由于我们的校准直接依赖于ToF测量,如果不能估计ToF深度,它就变得不准确。此外,一些材料——特别是半透明或镜面材料——对于ToF和双目深度估计都具有挑战性,并且不能通过我们的融合方法来解决。

总结

光学防抖镜头在现在很常见,但在相机系统中想要通过多个传感器融合信息时,存在姿态估计问题。这限制了我们从单个快照中估计高质量深度地图的能力。我们的方法是为消费级设备设计的,针对能够有效标定和鲁棒传感器融合的室内环境。由于我们的方法只使用一个快照,并且没有利用相机运动进行姿态估计,因此采集速度快,可以用于动态场景。在真实世界的输入上进行评估,我们的方法得到了目前最先进的ToF和双目融合方法更准确的深度图。

目录
相关文章
|
存储 传感器 编解码
3D激光SLAM:LeGO-LOAM论文解读---完整篇
![在这里插入图片描述](https://img-blog.csdnimg.cn/348d0b4467a24296a22413207566c67e.png) 论文的标题是:**LeGO-LOAM: Lightweight and Ground-Optimized Lidar Odometry and Mapping on Variable Terrain** - 标题给出的应用场景是 **可变地形** - 重点是 **轻量级** 并 利用 **地面优化** - 本质依然是一个 **激光雷达里程计和建图**
3D激光SLAM:LeGO-LOAM论文解读---完整篇
|
7月前
|
存储 测试技术
俄罗斯方块游戏系统的设计与实现(源码+论文)_kaic
俄罗斯方块游戏系统的设计与实现(源码+论文)_kaic
|
7月前
|
计算机视觉 索引 Python
分析”圣诞帽“代码,入门OpenCV
分析”圣诞帽“代码,入门OpenCV
分析”圣诞帽“代码,入门OpenCV
|
传感器 机器学习/深度学习 编解码
为什么你的手机后置摄像头越来越丑?ECCV2022这篇论文告诉你
为什么你的手机后置摄像头越来越丑?ECCV2022这篇论文告诉你
275 0
|
机器学习/深度学习 人工智能 算法
硬刚 ArcFace | ECCV 2022 人脸识别新方法 BoundaryFace:一种基于噪声标签自校正框架(附源码实现)
硬刚 ArcFace | ECCV 2022 人脸识别新方法 BoundaryFace:一种基于噪声标签自校正框架(附源码实现)
553 0
|
机器学习/深度学习 算法 C++
图像去雨(rainy streaks removal)#(代码+毕设)
图像去雨(rainy streaks removal)#(代码+毕设)
|
前端开发 JavaScript
2023跨年烟花(浪漫烟花+美妙音乐+雪花飘飘)含前端源码直接下载---系列最终篇
2023跨年烟花(浪漫烟花+美妙音乐+雪花飘飘)含前端源码直接下载---系列最终篇
493 0
2023跨年烟花(浪漫烟花+美妙音乐+雪花飘飘)含前端源码直接下载---系列最终篇
|
机器学习/深度学习 算法 机器人
计算机视觉教程2-7:天使与恶魔?图文详解图像形态学运算(附代码)
计算机视觉教程2-7:天使与恶魔?图文详解图像形态学运算(附代码)
165 0
计算机视觉教程2-7:天使与恶魔?图文详解图像形态学运算(附代码)
|
机器学习/深度学习 编解码 算法
Nature:盐粒大小的相机,可以拍出清晰彩色照片,未来或可应用到手机
Nature:盐粒大小的相机,可以拍出清晰彩色照片,未来或可应用到手机
192 0
Nature:盐粒大小的相机,可以拍出清晰彩色照片,未来或可应用到手机
|
机器学习/深度学习 人工智能 API
万圣节定制「丧尸生成器」,编辑部亲测,效果鬼畜
get 了这个网站,今年万圣节 C 位就是你的!
323 0
万圣节定制「丧尸生成器」,编辑部亲测,效果鬼畜