对比ARKit
Google的ARCore有何不同?
苹果的ARKit发布之后,市场对AR的热情再次被点燃。就在苹果沾沾自喜、Android开发者表示强烈不满时,Google也在前不久发布了增强现实方案——ARCore。
Google的目的很明确,连名字都很相似——就是冲着ARKit去的。作为AR技术的先驱,Google出手不凡,一次性在Github上放出三个SDK,涵盖Android原生、Unity3D和Unreal平台。虽然没有像上次的SLAM方案中的Cartographer那样直接开源,但是对应用开发者,无论是手机端,还是嵌入式设备都已经算非常友好的了。
在Google公布的代码中,我们可以看出ARCore的核心功能有三个:相机姿态估计、环境感知以及光源感知(Light Estimation)。前两个功能,研究过SFM和SLAM的同学应该不陌生了——前者通过单目相机读取图像,通过特征的匹配估计相机的运动轨迹。但是ARCore极有可能用的不是常见的特征匹配法。
至于环境感知功能,名字听起来很高大上,但具体实现的功能其实就是检测平面。这样做的好处就是在现实环境中放置虚拟物体的时候位置相对合理,不会出现类似物体悬空,或者在斜面上仍然处于水平的姿态。
第三个光源感知功能,按照Google官方的说法是,ARCore能感知现实世界的光源位置,使虚拟物体能够形成相应方位的影子,从而增加虚拟物体在现实世界里的真实度。这个功能堪称惊艳!从Google发布的Demo视频里看,虚拟物体的影子确实是根据光源形成了相对应方向的影子。
ARCore的所谓光源感知功能估计就是基于像素灰度变化的计算。这也就是为什么不同的光源强度下,形成的影子的方向效果有好有差。ARCore的开发者在设计时使了一个小聪明,在位姿估计的同时顺水推舟地发布一个光源感知功能,一石二鸟,使得ARCore的形象一下子就盖过了ARKit。
此外,ARCore的SDK里还有点云(在逆向工程中通过测量仪器得到的产品外观表面的点数据集合)功能,但由于Unity3D的Demo存在Bug,无法看到具体形成的点云是半稠密还是稠密的。不过,无论是半稠密还是稠密点云的构建,这都是ARKit的特征法无法实现的。
至于ARCore整体的工程是SLAM(即时定位与地图构建)还是VIO(视觉惯性里程计),笔者个人的偏向还是VIO。就如ARKit一样,ARCore的使用场景更偏向于手机端,在场景不大的情况下,VIO作为定位方案已经绰绰有余,而且更加节省计算资源。无论如何,ARCore推出,补全了Android市场在AR上的空白。基于Android系统的市场占有率,苹果还敢说自己是最大的AR平台吗?
加载更多