增强现实技术原理及应用

发表于2015-10-28
评论0 3.1k浏览

增强现实技术原理及应用

Ello,Ciel

 

一、概念及现状

增强现实(Augmented reality,以下简称AR)可以说是一种将虚拟与现实混合的技术,通过AR我们能看到现实中无法展现的信息,想象你戴着一个支持AR的眼镜,在家里看电视很无聊,你扫了一眼桌子,AR帮你在桌子上建立了一个虚拟游戏场景,桌子上突然就跳出来一些虚拟小人,你就这样在自家的客厅里玩起了虚实结合的植物大战僵尸或是别的神马;玩累了你开窗看了眼天空,眼镜屏幕上浮现今天的天气状况PM2.5污染状况以及未来数小时的预报;天气不错,你又饥肠辘辘,想找一个不错的餐馆?轻念餐馆二字,语音识别系统听懂你的话,在屏幕上为你显示不同方向位置的餐馆,甚至评论信息,这评论信息甚至还是语音的;你选好餐馆,刚一进去便邂逅美女,你在美女的脸旁看到一个好感度数值条,如果美女看到你好感度大增,那恭喜你了~

上面说了这么多,一言蔽之,AR的基本理念是将图像、声音或其他感官增强功能实时添加到真实世界的环境中,不要以为这很简单,添加到现实的这些虚拟物件可不是什么静态图片,它们会根据摄像头的移动,地理信息,以及各种现实的因素来不断的改变形态位置,你甚至可以和他们进行触摸、语音等交互。下面具体介绍一下AR技术实现的原理,以及给出了自己的基于LBS和AR技术相结合的应用方案。

 

二、技术原理

AR从其技术手段和表现形式上,可以明确分为大约两类,一是Vision based AR,即基于计算机视觉的AR,二是LBS based AR,即基于地理位置信息的AR,我们分门别类对其进行概念讲解和原理解析。

Ø  Vision based AR

基于计算机视觉的AR是利用计算机视觉方法建立现实世界与屏幕之间的映射关系,使我们想要绘制的图形或是3D模型可以如同依附在现实物体上一般展现在屏幕上,如何做到这一点呢?本质上来讲就是要找到现实场景中的一个依附平面,然后再将这个3维场景下的平面映射到我们2维屏幕上,然后再在这个平面上绘制你想要展现的图形,从技术实现手段上可以分为2类:

1)     Marker-Based AR

这种实现方法需要一个事先制作好的Marker(例如:绘制着一定规格形状的模板卡片或者二维码),然后把Marker放到现实中的一个位置上,相当于确定了一个现实场景中的平面,然后通过摄像头对Marker进行识别和姿态评估(Pose Estimation),并确定其位置,然后将该Marker中心为原点的坐标系称为Marker Coordinates即模板坐标系,我们要做的事情实际上是要得到一个变换从而使模板坐标系和屏幕坐标系建立映射关系,这样我们根据这个变换在屏幕上画出的图形就可以达到该图形依附在Marker上的效果,理解其原理需要一点3D射影几何的知识,从模板坐标系变换到真实的屏幕坐标系需要先旋转平移到摄像机坐标系(Camera Coordinates)然后再从摄像机坐标系映射到屏幕坐标系(其实由于硬件误差这中间还需要理想屏幕坐标系到实际屏幕坐标系的转换,这里不深究),见下图。

图1.Marker based AR坐标系转换

 

在实际的编码中,所有这些变换都是一个矩阵,在线性代数中矩阵代表一个变换,对坐标进行矩阵左乘便是一个线性变换(对于平移这种非线性变换,可以采用齐次坐标来进行矩阵运算)。公式如下:

矩阵C的学名叫摄像机内参矩阵,矩阵Tm叫摄像机外参矩阵,其中内参矩阵是需要事先进行摄像机标定得到的,而外参矩阵是未知的,需要我们根据屏幕坐标(xc ,yc)和事先定义好的Marker 坐标系以及内参矩阵来估计Tm,然后绘制图形的时候根据Tm来绘制(初始估计的Tm不够精确,还需要使用非线性最小二乘进行迭代寻优),比如使用OpenGL绘制的时候就要在GL_MODELVIEW的模式下加载Tm矩阵来进行图形显示。

2)     Marker-Less AR

基本原理与Marker based AR相同,不过它可以用任何具有足够特征点的物体(例如:书的封面)作为平面基准,而不需要事先制作特殊的模板,摆脱了模板对AR应用的束缚。它的原理是通过一系列算法(如:SURF,ORB,FERN等)对模板物体提取特征点,并记录或者学习这些特征点。当摄像头扫描周围场景,会提取周围场景的特征点并与记录的模板物体的特征点进行比对,如果扫描到的特征点和模板特征点匹配数量超过阈值,则认为扫描到该模板,然后根据对应的特征点坐标估计Tm矩阵,之后再根据Tm进行图形绘制(方法与Marker-Based AR类似)。

图2.初音在我的桌子上跳舞(影子有木有!)

 

Ø  LBS-Based AR

其基本原理是通过GPS获取用户的地理位置,然后从某些数据源(比如wiki,google)等处获取该位置附近物体(如周围的餐馆,银行,学校等)的POI信息,再通过移动设备的电子指南针和加速度传感器获取用户手持设备的方向和倾斜角度,通过这些信息建立目标物体在现实场景中的平面基准(相当于marker),之后坐标变换显示等的原理与Marker-Based AR类似。

这种AR技术利用设备的GPS功能及传感器来实现,摆脱了应用对Marker的依赖,用户体验方面要比Marker-Based AR更好,而且由于不用实时识别Marker姿态和计算特征点,性能方面也好于Marker-Based AR和Marker-Less AR,因此对比Marker-Based AR和Marker-Less AR,LBS-Based AR可以更好的应用到移动设备上。

下图是来自日本的SekaiCamera,一款采用了LBS-Based AR技术的应用,用户能够在摄像头上看到实景中某些地点别人提交的评论和照片等。该应用登陆日本App Store,仅4天的时间就达到了10万次的下载量,可见AR应用的受欢迎度。

图3.SekaiCamera截图
 

三、LBS based AR 产品实践(AR导航者)

Ø  具体实现

以下实现基于Android系统,和OpenGL ES,技术原理适用于其他移动系统。

从百度地图或soso地图的API中获取数据,得到周围物体的一些位置信息,比如周围的银行,周围的酒店,同时使用GPS或者网络获得用户此时的位置,想象我们建立这样一个坐标系,该坐标系以用户获取的经纬度位置为原点,地磁北极方向作为Y轴正方向,东方作为X轴正方向,Z轴从用户头顶指向天空。此时,周围的银行,酒店等地理位置只是这个三维坐标系中XY平面上的点。我们想要做的事情就是把这个坐标系上的位置映射到用户的屏幕上,以一种立体的效果展现出来。

我们的做法是建立一个大约50×50大小的网格,作为虚拟地图,使用OpenGL进行绘制,将上一段落提到的坐标系中的地理位置通过缩放变换映射到该网格中,在映射到网格的位置上以标签的形式展示,然后将网格以一定角度倾斜,使用户产生类似45度角俯视一个虚拟地图的感觉。

映射完之后要做的事,就是当用户不断的改变手机的倾斜角度时,那个网格会像一个稳定的地平面一样,不断的跟随着你的视角发生变化,但始终与地面平行,做到这点很简单,通过Android的方向传感器API,我们可以得到:
-------------------------------------------------------------------------------
侧倾度(围绕 z 轴的旋转角)。这是指设备 y 轴与地磁北极间的夹角。例如,如果设备的 y 轴指向地磁北极则该值为 0,如果 y 轴指向南方则该值为 180。同理,y 轴指向东方则该值为 90,而指向西方则该值为 270。
俯仰度(围绕 x 轴的旋转角)。当 z 轴的正值部分朝向 y 轴的正值部分旋转时,该值为正。当 z轴的正值部分朝向 y 轴的负值部分旋转时,该值为负。取值范围为 -180 度到 180 度。
翻滚度(围绕 y 轴的旋转角)。当 z 轴的正值部分朝向 x 轴的正值部分旋转时,该值为正。当 z轴的正值部分朝向 x 轴的负值部分旋转时,该值为负。取值范围为 -90 度到 90 度。
-------------------------------------------------------------------------------
       根据这些角度,我们对网格进行相应的旋转就可以了,效果就是,用户的眼前有一个正45度角俯视的平面网格,(这个角度可以自行设定)然后用户摄像头指向方向的地点都会浮现在该网格相应的位置,有远近区分,当用户转动摄像头,网格和上面的地点也会按相反方向转动,接下来要做的是当用户点击你网格上你感兴趣的地点时,会弹出其相关信息,这就是根据数据任意发挥了。

图4.AR导航者应用截图

 


 

四、遇到的问题以及解决方案

LBS-Based AR导航类应用,由于需要显示的信息较多,会出现以下两个问题。

Ø  物体相互覆盖无法显示的问题

      采用实时聚类技术,将互相覆盖较严重的标签进行实时合并,当用户点        击聚合标签时,聚合标签聚合的所有标签都以列表的形式显示出来,         再供用户二次选择。

Ø  点选几个物体相互覆盖部分时的物体选择问题。

采用射线相交技术,当用户点击屏幕时,通过坐标变化,把2D的屏幕  坐标转换为3D的射线,并判断该射线是否与3D场景中的标签相交, 如果相交,则把所有相交的标签以列表的形式显示出来,再供用户    次选择。

 

五、AR虚拟现实可以实现的其它应用模式

除了导航类应用外,还可以实现实景寻宝类游戏和恶搞类游戏等。

Ø  实景寻宝类游戏,

假象的应用模式为在某些具体的地理位置放下某些虚拟物品,玩家只有到真        的位置附近通过搜索这些虚拟物品的POI信息,找到这些物品才算通关等等。

Ø  恶搞类游戏,

假象的应用模式为通过人脸检测技术,检测人脸位置并在人脸上演示虚拟动画,比      如开朵花儿,爬出条虫子之类的...

 

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引

游戏学院公众号二维码
腾讯游戏学院
微信公众号

提供更专业的游戏知识学习平台