区别于先前的方法都在关注点特征和相机自运动模型,本文作者提出了一个关于 RS 相片形变的比喻:
刚体的 3D template 在 RS 相机中的形变,可以被看作一个非刚体可形变的 3D template 被 GS 相机所捕捉。从而将 2D 照片中的形变等效到了 3D 空间中,进而使用 Shape-from-Template 技术实时重建这个一直处于形变中的虚拟 3D template,最后使用已知的 template 和每一帧重建的形变 template 做 3d-3d 注册,从而求解出了 RS 相机的姿态和瞬时自运动参数。
本文提出的这个等效比喻第一次将 RS 姿态估计问题(RS pose estimation problem)和 非刚体三维重建(Non-rigid scene reconstructution)联系起来。
■ 论文 | Rolling Shutter Pose and Ego-motion Estimation using Shape-from-Template
■ 链接 | https://www.paperweekly.site/papers/2281
■ 源码 | Yizhen Lao / Omar Ait-Aider / Adrien Bartoli
一些关于RS的题外话
Rolling Shutter(卷帘快门, 下文简称 RS)是目前 CMOS 相机的标配快门方式。顾名思义,其快门的模式是一个卷帘式的连续过程。这和在传统 CCD 上的 Global Shutter(GS)快门模式有很大的不同。GS 快门拍出的相片的所有像素都是在同一个时刻曝光的,而 RS 通常则是逐行扫描的。
如果在拍摄瞬间,被拍摄的物体和你的相机都是静止的,RS 拍出来的照片和 GS 当然是一样的。但是我们可以想象一下,如果你在拍摄时移动你的 RS 相机(或者相机静止,被拍物体在运动),那么你拍出来的 RS 照片的每一行其实都处于不同的姿态。一个最直接的弊端就是影像中的形变(distortions, 我们也称之为 RS effect)。
上面这幅图(Cenek ALbl, CVPR’16)描述了拍摄瞬间不同的自运动(ego-motion)模式所带来的不同的形变类型。
形变首先影响了你所拍摄照片的美观,但更要命的是,这种形变会严重影响使用了 RS 相片的几何算法的精度。熟悉传统 3D vision 的朋友一定读过 Multiple View Geometry,在 MVG 中所有的相片都有一个前提假设,同一张相片上的每个像素都具有相同的 pose。所以我们可以用经典的 P3P 解相机的绝对姿态,可以用五点或者八点法解相对位置。
现在你应该发现问题了,运动的 RS 相机不符合这个前提假设。一旦这个 RS effect 很强的话,你算什么位置都会出问题的。如果这些基础问题的解都不可靠的话,那你基于 RS 玩的 AR/VR,Structure from Motion (SfM),Visual Odometry (VO) 和 SLAM 都得受到影响。
那又有朋友要问了:”我不用 RS 只用 GS 不就完了嘛,我从来都没听说过这种相机,实际应用中肯定很少用到啊”。实际上呢,大家离 RS 相机都不远,大概就是你到你手机的距离,因为目前市售的智能手机摄像头都装备的是 RS 相机。
为什么大家都要用 RS 相机呢?这就要说到 RS 的几大优势了:便宜、体积小、功耗低、更高帧率。甚至很多不缺钱的平台也都在用 RS 拍东西,比如 Google 街景车(Klingner Bryan, ICCV’13)。
总结一下,RS 的优势让它非常适合在移动平台上应用,比如手机,机器人,无人机,无人车。但是,它的逐行扫描模式又让它非常不适合在移动平台上做应用。
正是基于这个矛盾点,针对 RS 相机在 CV 领域的研究越来越多。从 06 年 ECCV 上一篇关于 RS 的文章拿了 Honorable Mention Award 开始,到今年的 ECCV 为止,共有 33 篇关于 RS 的文章发表在 CVPR/ICCCV/ECCV 上,分别涉及 SfM、Pose Estimation 和 Rectification 等 7 大主题。
从 15 年开始,关于 RS 的顶会文章稳定在了每年五篇。但是其实关于 RS 的 CV 应用的坑还有很多很多。像是 SLAM with RS 现在都还没有一个非常 work 的工作出现。目前还没有看到国内高校或者企业的同行们关注 RS 相关的工作,所以也欢迎大家能更关注甚至投身到 RS 的 CV 应用研发中去。
论文介绍
RS Pose and Ego-motion问题
言归正传到这篇论文上,我们在这篇文章中主要解决的是利用已知的 3D 点(又称 template)来估计相机姿态的问题。
在 GS 中,比较有名的有利用三个已知的 3D 点来求解相机 6 dof 的 p3p (Xiao-shan Gao, PAMI’2003)。当然对于 RS,不只有相机姿态的六个参数,还会有拍摄瞬间的 ego-motion(角速度/线速度)的参数。
这就牵扯出了关于 RS ego-motion 模型的假设。如果我们假设相片中的每一行都有一个独立的 pose,那么 n 行的照片就得求解 6n 个参数,这显然是不可能实现的。有一个很好的解决方法是,为快门时间内相机的 ego-motion 设计动力学模型,这就相当于给每一行的 pose 之间设计了时空上的联系,从而有效地降低了要求解得参数个数。
由于快门时间其实非常非常的短,最简单的模型就是匀速模型,假设 RS 相机在快门时间内只做匀速运动(加速度为 0)。 例如在 Omar Ait-Aider, ECCV’06 中:
将一张相片第一行的 pose 设为 [R T],则第 vi 行的 pose 应为:
我们可以发现在这个模型中,对于一个影像来说 ego-motion 也有六个参数,分别是角速度三个和线速度三个。所以对于此模型的 RS pose and ego-motion 问题来说,求解的就是 12 dof 而不是传统 GS pn p问题中的 6 dof 了。
相关研究
关于 RS 的 pose 求解方法可分为两类:
1. 以 Omar Ait-Aider, ECCV’06 和 Ludovic Magerand, ECCV’12 为代表的迭代优化求解方法。此类方法最大的缺点就是慢,也没办法用 ransac 去过滤outliers;
2. 以 R6P (Cenek ALbl, CVPR’15) 为代表的 minimal solution 方法。这个是当年的 CVPR oral,作者首先对上面的匀速模型做了进一步简化。在角速度上,假设了一张相片的 ego-motion 不超过 30 度,因此上文的罗德里德公式只取一级泰勒展开。这个近似让整个 ego-motion 模型的先行性大大提高,他们又进一步对旋转公式进行了线性化,这个 double-linearized model 是这样的:
感兴趣的朋友可以去读原论文。总而言之,R6P 是一个需要六对 3D-2D matches 的线性方法,需要用 p3p 初始化,但是运行速度还是非常快,可以结合在 RANSAC 中进行 outlier 剔除。
无形变的 Template 在 RS 相机中形变?还是一个会形变的 Template 被 GS 相机拍下来了?
这一节的标题很长,但也阐述了这篇论文的核心思想:我们认为 RS 相片中物体的 2D 形变,可以看成是这个物体在 3D 中形变了、并被一个 GS 相机给拍下。
没太理解这句话?没关系,我们一步一步来看:
一个已知的 3D surface 被我们称作 template,它被一个移动的 GS 相机拍到了。因为是 GS,毫无意外的,照片 I1 里没有任何形变。
如果同一个 3D surface (template) 被一个移动中的 RS 相机拍到。无意外的,这时候我们拍出来的照片 I2 就是一个形变的 surface 了。
这个时候,我们来做一个思想实验。能不能用一台 GS 相机拍出和 I2 相片一样的形变呢?答案是可以的,只要把那个 3D surface 掰扯变形,我们也可以用 GS 相机拍出一模一样的形变照片:
但其实这一切都停留在想象之中,这个掰扯的形变完全是虚拟的。因此我们先暂时称这个幻想的形变为 Virtual Deformation。这个等价性在论文中有详细的证明过程。
等等,你为什么要建立这个等价关系?有什么意义呢?
当然是有的,其中一个原因是在非刚体场景三维重建的技术中,有一个叫 shape-from-template(SfT)的成熟方法,它要解决的问题和这个关于 3D template 的形变幻想有很大的相似性,其他的原因会在后面章节提到。
Shape-from-Template
SfT 是一种针对非刚体场景(non-rigid),根据已知 t0 时刻的 3D template 和 tn时刻的 2D image,来恢复 tn 时刻的 3D 模型的技术(Adrien Bartoli, PAMI’2015)。
比如,医生可以在手术前用 CT 或者 NMRI 来获取患者心脏的 3D 模型,但在手术中,医生却无法借助各类大型仪器实时恢复心脏的 3D 形态。对于医生而言,如果仅借助 2D 内窥镜实施微创手术,那无疑对其操作技术存在较高要求。这时候 SfT 就能大显身手了,它通过术前重建 t0 时刻的 3D 模型和手术中内窥镜的 2D 影像,就能实时重建出跳动中的心脏三维模型。
SfT 目前已有高速的 real-time 版本(Toby Collins, ISMAR’15),并且有成熟的 outliers 剔除算法(Daniel Pizarro, IJCV’12)。
好,回到 RS 的问题上来,大家有没有发现 SfT 和上述思想实验的共同点:都有一个 3D template 当 reference,然后每一张照片都对应了一个 template 的形变。因此,我们可以用 3D template 和 RS image 去重建这个 Virtual Deformed Template。
3D-3D Registration在用 SfT 重建好这个形变了的 template 之后,我们可以使用已知的未形变的 template 做一个递归的 3d-3d registration。这一步给整个 proposed 的方法带来了两个好处:
1. 将之前的 3D-2D 问题转换为了 3D-3D 问题,这对于 RS pose 问题来说可以规避掉大量的退化配置风险,例如 R6P 在 plane scene 上就有 degeneracy case;
2. 在 3d-3d registration 中,可以非常容易地结合各式各样的 ego-motion model,包括匀速的、加速的等等。
整体流程
整个方法非常简单,就分为两步:
1. 用 SfT 重建虚拟形变的 template;
2. 用形变的 template 和未形变的 template 做 3D-3Dregistration,解出 pose 和 ego-motion。
原文发布时间为:2018-09-12
本文作者:劳奕臻
本文来自云栖社区合作伙伴“PaperWeekly”,了解相关信息可以关注“PaperWeekly”。