2亿苹果用户起步的arkit进化史(深度技术剖析谷歌ARCore)

昨日,谷歌突然重磅发布了属于安卓系统的AR SDK——ARCore,并号称将要安装到一亿台安卓设备上,目前三星S8和谷歌自家的手机Pixel已经都获得了支持。这一步,被普遍解读为对苹果六月份发布的ARKit的正面回应。

苹果在移动端AR上来势汹汹,ARKit一发布就刷了科技圈的屏,涌现出无数的开发者demo。相比之下,谷歌此前推出的需要TOF深度传感器使用的Tango平台,一下子似乎被拍死在了沙滩上,乏人问津。但如今,谷歌的ARCore不需要再仰仗TOF,而是和ARKit类似,直接使用手机的单目RGB摄像头,加上内部的IMU就能实现AR。这让不少人安卓开发者为之兴奋。

可以想象,两大移动互联网领域的超巨头在不远的未来,基于手机端AR必有一战。那么,ARCore底层技术的实现原理为何?是否有谷歌说得那么神?相比ARKit又有何异同和优劣势?

2亿苹果用户起步的arkit进化史(深度技术剖析谷歌ARCore)(1)

青亭网第一时间联系了专注于AR领域的源视感科技CEO周凡,他连夜阅读了ARCore的代码,并对谷歌放出的demo进行了逐帧分析。下面请看他带来的第一手报告:

前两个功能,研究SFM、SLAM的同学应该不陌生了—— 前者通过单目相机读取图像,通过特征的匹配估计相机的运动轨迹。但是ARCore极有可能用的不是常见的特征匹配法。这里先卖个关子,下文再详细分析运动轨迹的估计方法。

至于环境感知功能,名字起的很高大上,但具体实现的功能其实就是检测平面。这样做的好处就是在现实环境中放置虚拟物体的时候位置相对合理,不会出现类似物体悬空,或者在斜面上仍然处于水平的姿态。

第三个光源感知功能,按照谷歌官方的说法是,ARCore能感知现实世界的光源位置,使虚拟物体能够形成相应方位的影子,从而增加虚拟物体在现实世界里的真实度。这个功能堪称惊艳!从谷歌发布的Demo视频里看, 虚拟物体的影子确实是根据光源形成了相对应方向的影子。

2亿苹果用户起步的arkit进化史(深度技术剖析谷歌ARCore)(2)

但是分帧仔细分析视频后, 发现该功能在强光源的状态下效果才不错,在散漫光源的情况下就一般般了。

个人估计:是因为使用的匹配算法的原因。这样,我们就要回到刚才卖关子的ARCore第一个核心功能——姿态估计上,进行具体分析:

传统的特征匹配方法只计算关键点和描述,几十万像素的图像只用了几百个特征点,屏蔽了大部分可能有用的信息,更别说对灰度的估计了。所以,ARCore很有可能是使用了直接法来做相机位姿估计(对直接法感兴趣的同学可以去看看LSD, SVO, DSO等解决方案)。

简单来说,直接法直接使用的是整张图片的像素信息,通过像素亮度来进行运动轨迹的估计。这样的好处是速度很快,直接跳过计算关键点与描述子的步骤。同时在有些缺失特征点的环境下,只要环境中有明暗变化,也能工作,如此大大的避免了跟丢的情况。

2亿苹果用户起步的arkit进化史(深度技术剖析谷歌ARCore)(3)

直接法的数学推导就不详述了,但是该方案是基于灰度不变的强假设。换句话说, 就是同一空间的像素灰度值,在每张图像上都是不变的。这样就对光源的强弱及位置变化要求比较高,同时相机的自动曝光功能也需要关闭,使得图像不会整体变亮或者变暗。(这一点在外媒TheVerge的上手测试中有体现)

ARCore的所谓光源感知功能估计就是基于像素灰度变化的计算。这也就是为什么不同的光源强度下,形成的影子的方向效果有好有差。谷歌果然聪明,在位姿估计的同时顺水推舟地发布一个光源感知功能,一石二鸟!形象一下子就盖过了ARKit。

由于直接法完全依靠像素梯度优化来估计相机位姿,作为Ceres(谷歌推出的SLAM闭环检测算法)的东家,这点对于谷歌来说并不是什么难处。另外一个ARCore使用直接法的例证就是点云。

3、和ARKit相比如何?

ARCore的SDK里是有点云功能的——由于Unity3D的Demo存在Bug,无法看到具体形成的点云是半稠密还是稠密的。但无论是半稠密还是稠密点云的构建,这都是特征法无法实现的。个人估计是半稠密的点云。如果ARCore在没有GPU CUDA加速的情况下真构建了稠密点云,只能膜拜Google大法了。

2亿苹果用户起步的arkit进化史(深度技术剖析谷歌ARCore)(4)

相比之下,ARCore能够实现的光源感知和点云功能,ARkit实现不了——如果ARKit是Metaio(苹果之前收购的德国公司)做的话,采用特征法的可能性大,这样就无法实现光源感知,点云理论上是能构建,但只能是稀疏的,基本上就是一堆点,看不出什么。

至于ARCore整体的工程是SLAM还是VIO,个人的偏向还是VIO更有可能。就如ARKit一样,使用的场景更偏向于手机端,在场景不大的情况下,VIO作为定位方案已经绰绰有余,而且更加节省计算资源。

无论如何,ARCore推出,补全了安卓市场在AR上的空白。基于安卓系统的市场占有率,苹果还敢说自己是最大的AR平台吗?

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页