大数跨境

科普贴 | “我的AR画面,怎么总是不对劲呢?”

科普贴 | “我的AR画面,怎么总是不对劲呢?” DataMesh
2022-07-06
3
导读:AR设备能把虚拟世界叠加到真实世界之上,看起来挺酷的,但是细看之下,经常发现虚拟画面和真实画面不是那么匹配,这到底是为什么呢?今天我们就来分析一下原因。

在使用AR系统的时候,有时会发现,虚拟物体跟真实世界有些违和,比如移动时物体会偏移,看起来透视关系不正确,等等。为什么会出现这样的事情呢?今天咱们就好好理一理。


我们先看看AR的原理。

我们观察真实世界,可以理解为,通过一个摄像机,将真实世界拍摄下来,呈现在眼前。以iPad/iPhone来说,是手机摄像机拍摄的画面呈现在屏幕上;以HoloLens来说,则直接是用人类的眼睛当摄像机把画面呈现在视网膜上——总之,一切都是摄像机看到的。

虚拟世界之中,其实也是一样,我们会通过一个虚拟摄像机,将程序构建的虚拟世界拍摄下来,呈现在使用者眼前。以iPad/iPhone来说,是呈现在手机屏幕上;以HoloLens来说,则是拆分成左右眼,分别呈现在两个眼睛面前的镜片上。

把这两个画面结合起来,就是AR。

摄像机融合

那么,如何把这两种画面结合到一起呢?要满足三个条件:


1、 虚拟世界和真实世界坐标保持一致


2、 虚拟摄像机的位置,和真实摄像机的位置保持一致


3、 虚拟摄像机的所有参数,与真实摄像机保持一致


满足这三个一致,两个摄像机里呈现出来的画面就可以完全保持同步,虚拟画面里的东西都可以和真实画面保持一样的位置,一样的透视关系,看起来就像融合在一起了一样。就这么简单!


要是真的就这么简单,就好了……


实际上,这个事情是很难做到的,这里涉及到好几个环节,每一个环节都有可能产生误差。我们来仔细分析。



一、虚拟世界和真实世界坐标保持一致


第一步就不容易。程序的虚拟世界是开发程序时设计好的,真实世界则是使用者开启应用的随机地点,这两个世界如何对应起来才是对的呢?


一种方法,是利用约定俗成的固定坐标系,例如经纬度,这套体系在全球范围都是一致的,在制作虚拟场景的时候如果按照经纬度制作,在使用时只要获取环境经纬度,就能和虚拟场景匹配了。然而,这样的坐标系太大,定位技术的精度不会太高,误差几米几十米都是常事儿,很难满足AR程序的需求。


另一种方法,则是设定对照标志物,也就是在虚拟世界和真实世界都存在的某种物体,在虚拟世界中将这种物体设置在一个位置,在真实世界中将对应的真实物体也放到某个位置,然后想办法让AR程序获取到真实空间物体的位置,就可以将虚实物体对应起来,从而拉动两套坐标系达成一致。这里的标志物,目前使用最多的,是二维码,价格便宜制作方便识别准确,精度可以达到厘米级别,能满足AR对齐坐标的需求,是很适合的方式。


然而我们要理解,厘米级别的精度可以满足AR使用,但也一样也存在误差,尤其是旋转误差,相比位置误差,旋转角度的错误更容易被察觉到,因为角度误差是会被距离放大的。设想一下,如果定位时产生了一个1度的偏转,在1米的地方只会产生1.7厘米的偏移,但如果物体在100米的地方,就会产生1.7米的偏移了。


总结,定位环节是会产生偏差的,距离越远误差越大。


二、 虚拟摄像机的位置,和真实摄像机的位置保持一致


使用AR设备时,真实摄像机是随时随地在移动的,那么虚拟摄像机位置,如何能一直稳稳跟随真实摄像机移动呢?


这部分要依赖于AR设备提供的SLAM能力。SLAM能力越好,虚拟摄像机的位置就会更准确,更能贴合真实摄像机。不同的设备能提供的SLAM程度也不同,一般来说,跟设备的空间感知传感器类型、数量、质量有关,跟使用的算法有关,也跟设备能提供的算力有关。


简单理解,越专业(越贵)的设备,效果越好。


比如,HoloLens具有6个摄像机,有专门的HPU提供算力,因此SLAM效果几乎是市面上最好的。(当然,也是最贵的)


再比如,带有激光雷达的iPad Pro,定位效果就比只有普通摄像机的手机更强。(当然,也会更贵)


然而,我们要理解的是,以现在的科技水平,AR设备只能感知到几米距离之内的空间情况,并根据它们来推测虚拟相机的相对位置,这里大概率会存在误差,即使效果最好的SLAM也只能减小误差,不可能消除。也就是说,虚拟摄像机的位置,其实是很难完美匹配真实摄像机的。而且,这种误差跟第一个定位环节的误差类似,都会随距离增大而放大,即使一个微小的误差,在远距离情况下也都会成为巨大的差异,导致越远的物体,越难以跟真实世界匹配。也正是因为这个原因,现在的AR设备一般都会宣称,只在近距离之内保证物体的精度,也会推荐使用者只在近距离使用AR功能。


更麻烦的是,因为AR设备只能观测到周围很近的范围,那么在使用者持续移动的时候,AR设备势必要不断感知新内容,也就是说,AR设备的感知是增量的,而不是一下子了解整个空间。这也就意味着,在对周围环境的不断感知时,误差也在不断的产生、不断的累加,时间长了,小误差也变成了大误差。这也是为什么,我们好不容易在AR里对准了的物体,经常在走了一圈回到原地之后,就发现物体又偏了。


总结:SLAM环节也会产生误差,物体距离越远误差越大,移动得越多误差越大。


三、 虚拟摄像机的所有参数,与真实摄像机保持一致


不同的真实摄像机参数不同,这可能会导致大量的适配工作,然而幸运的是,完善的AR系统基本都提供了这个支持,例如苹果已经把自己所有的iPhone/iPad设备都预先做了适配,并集成到ARKit系统之中,在程序进入AR模式时,系统就会自动接管虚拟摄像机,并把参数设置为与当前设备的真实摄像机参数一致。


这个工作需要对每一个型号的设备单独做适配,对苹果来说还好,毕竟苹果的设备种类优先;安卓设备则会麻烦许多,因为不同的设备过多,所以谷歌提供了一张支持AR功能的设备列表,并在不断的维护,如果没有通过谷歌ARCore认证的设备就无法调用系统的AR功能,比如说小米的新手机都是没有AR能力的,要等认证过后更新系统才有可能用。


对于HoloLens而言又是另一回事,这类设备把人眼当摄像机,因此他们在进入AR系统时,会把虚拟摄像机的参数设置为与人眼类似。


然而,我们要理解的是,这里的适配不可能做到100%一致。一方面,硬件设备的生产和制造本身就会存在一定的微小误差,这些误差同样会随着物体距离增大而被放大;另一方面,真实摄像机的镜头本身就不是均匀的,会存在一定程度的畸变,这些问题会在画面边缘、距离远的地方更加明显。


另外,要说明的是,即使虚拟摄像机和真实摄像机可能存在细微的参数差异,也不要去手工调整虚拟摄像机参数。实际上,能做的调整,设备厂商在出场之前肯定都已经做了,存在的误差是无法避免的硬件误差,不是简单调参数可以解决的。而且,使用中调整参数,只能依赖眼睛观察的效果作为依据,非常不准确,几乎没有可能调得比原厂参数更好。


总结:摄像机一致方面由AR厂家提供保证,可能会存在误差,距离越远误差越大。


 聊到这里,我们可以看到,实现AR的三个重要环节,都无法避免产生误差,这些误差就会带来违和感。而且,所有这些误差,都会随距离增大而被放大,所以AR应用,往往在一些在近距离、小规模物体情况下看起来还不错,一旦改成大型物体、放到远处就变得无法忍受了。


然而这还没有完,对于平面型的AR设备,还会再叠加上一层误差,那就是——视觉误差。像HoloLens这类的双目设备,能给使用者提供立体视觉,使用者是能够感知到虚拟物体的远近的,这时候视觉误差不会有太大影响;但对于iPhone/iPad这类平面型的AR设备来说,所有画面都只能显示在一块屏幕上,立体视觉被剥夺,人们只能通过2D画面来观察物体,无法感知深度,于是物体的大小和远近被混淆了。我如何分辨一个物体,是距离我很近但很小,还是很大但距离很远呢?

视觉误差


视觉误差无疑让AR的表现情况雪上加霜,本来就存在各种误差,虚拟画面表现已经和真实世界有所违和了,视觉误差还能让本来对的物体看上去像是错了……AR:我太难了……

 

好了,知道了这些,我想大家也该明白AR画面为啥会出现各种违和了。让我们给AR一些宽容,不要过分苛责表现效果,尽量在适合目前AR技术的环境下使用,才可能得到符合预期的效果。


公众号|DataMesh

微博|DataMesh商询科技

长按扫码关注我们

点击“阅读原文”了解更多

【声明】内容源于网络
0
0
DataMesh
Digital Twin +XR + AI 构建工业元宇宙,赋能一线工作者。
内容 225
粉丝 0
DataMesh Digital Twin +XR + AI 构建工业元宇宙,赋能一线工作者。
总阅读43
粉丝0
内容225