增强现实技术及其实现方法初探
奚晨海
2018年12月12日 来源:人民网-科技频道
摘要:本文对增强现实(AR)领域相关的技术进行了初步的调研。简介了以手机作为设备的AR系统的架构;详细分析了AR的工作原理,包括:3D物体建模,视频和图像的识别,特征点跟踪,视频合成(即虚实物体的结合)以及视频输出;比较了现有的国内外AR的开发软件工具包;展望了AR的应用,特别是在新闻和媒体领域的潜在应用。
关键词:增强现实,图像识别,特征点跟踪,AR SDK
1. 增强现实简介
增强现实[1](Augmented Reality,以下简称AR)是在虚拟现实(Virtual Reality,简称VR)基础上发展起来的新技术。AR和VR有相似之处,也很容易混淆,但实际上两者还是有很大区别的。VR强调使用者完全沉浸在一个由计算机所生成的虚拟世界之中,无法感知到周围的真实世界;而AR则致力于将计算机生成的二维或三维虚拟物体或信息与真实环境融为一体,使其成为真实环境中的一个组成部分,从而提升用户对现实世界的理解和感知。
更通俗一点的说,AR是一种全新的人机交互技术,利用摄像头,传感器,实时计算和匹配技术,将虚拟的信息或图像实时地叠加到真实的环境中去。其目的是让用户能够通过虚拟现实系统感受到在客观物理世界中所经历的“身临其境”的逼真性,还能突破空间、时间以及其它客观限制,感受到在真实世界中无法亲身经历的体验。因此,AR必须能够实时地对现实世界进行响应并及时呈现给用户,否则便没有了意义。
例如,图1展示了由上海央数文化股份有限公司开发的手机或平板电脑上的应用程序:小熊尼奥口袋动物园。这是一款运用了AR技术的儿童认知软件。此应用包含有96张卡片,当用户使用手机摄像头对准这些卡片时,逼真的3D动物模型将实时地展现在手机屏幕上。此外,用户还可以观看相关动画,聆听动物的声音,甚至和虚拟的动物互动。
图1:AR应用-口袋动物园
2. AR工作原理
小熊尼奥口袋动物园是一个使用了典型AR技术的手机端应用。从设备成本上讲,它是非常低廉的,只需要一个带摄像头的智能手机,而没有采用其他AR辅助设备(例如AR头盔、眼镜等)。由于其方便性,这样的方式被AR的研究者以及那些想体验AR的用户大量采用。那么这样的应用是如何实现的呢?
图 2:基于手机摄像头的增加现实系统
如图2所示,采用手机或台式机作为显示设备的AR系统通常可分为以下几个步骤[2]:
1. 视频采集:通过手机或台式机的摄像头实时地采集真实世界的视频;
2. 图形系统:计算机图形系统产生虚拟的图像或动画;
3. 视频合成:将真实的场景和虚拟的图像(或动画)进行视频合成;
4. 视频输出:将增强场景的视频或图像输出到手机屏幕(或台式机显示器)上。
需要注意的是,实时采集的视频和图形系统所产生的虚拟图像之间不可避免的存在一定的系统延迟,这是动态AR系统中产生错误的一个主要原因。但在这种实现方案下,用户的视觉完全在计算机的控制之下,这种系统延迟可以通过计算机内部虚实两个通道之间的协调配合来补偿。
下面我们从技术实现角度详细分析下这4个步骤。
2.1视频采集
从技术实现角度讲,这一步骤是比较容易实现的。无论是iOS系统、安卓系统、支持html5的浏览器或是Windows平台的开发,它们一般都提供了摄像头调用的应用程序编程接口(API)。
2.2图形系统
AR应用一般需要准备大量的3D模型或动画,例如口袋动物园中的3D动物模型,这往往由相关的设计人员来完成。3D MAX、Blender、AutoCAD、FreeCAD和Maya等工具软件可以帮助设计人员来完成三维模型及动画的设计,并存储为标准的OBJ文件。无论是iOS系统、安卓系统上的OpenGL,html5上的WebGL(具体实现可考虑使用第三方应用库Three.js)或者支持多平台开发的Unity3D一般都能够加载标准的OBJ文件,从而导入并显示这些设计好的3D模型。
2.3视频合成
这是整个AR系统中最为复杂,也是最核心的一个步骤。例如上面提到的口袋动物园这一应用中,计算机是如何知道当前屏幕上是哪一张卡片呢?又是如何在卡片上添加动物模型的呢(例如,在卡片的什么位置显示动物模型,动物应该朝着哪个方向)?当摄像头移动时,如何保证动物始终在对应的卡片上呢?
AR系统中的视频合成又可以分为视频识别和视频合成两个步骤。
1) 视频识别
视屏识别的主要目的就是要判断当前摄像头对准的是哪一张卡片(图像)。其流程是:将采集到的视频流数字化成一系列的图像,我们称每张图像为一“帧(Frame)”,然后将这一系列的图像和预先存储在手机应用中的图片进行比对。
预先存储的图片一般被称为目标图。那么如何比对视频帧和目标图呢?首先我们不能认为完全一样的图片才是相同的,这是因为就算是同一个场景,在不同的时间、不同光照、不同分辨率和不同摄像头位置的情况下,它们的成像也将不同。其次我们也不会对两张图片的每个细节进行比较,而是首先利用计算机图像识别和图像查找中的技术,合理的表示图像。
这就像警察在设路障抓捕逃犯时,要将过往行人与逃犯照片进行对比。警察在比对照片时,不会每根头发,每个毛孔都要进行比较。他们会关注嫌疑人的一些显著外貌特征(例如,光头,黄色眉毛或招风耳等等),与这些特征相似度极高的人视为犯罪嫌疑人。同理,图像识别中的目标图也具有特征,特征可能包括颜色、纹理和形状等,这些特征在计算机图像识别中被称为“特征点”。
图像在计算机中的表示是一堆二进制数字。而特征点就是那些十分突出的、和周围反差较大的点。光检测到特征点还不足以判断两张图片是否相似,我们需要量化特征,比较特征点是否一致,这就需要借助特征点描述子。特征点描述子是一种描述特征点的方法。比如,我们在挑西瓜时,会选根蒂蜷缩、敲起来声音浊响的青绿西瓜。这个挑瓜的过程就是描述的过程,挑瓜的依据就相当于生成的描述子。如果一个瓜和我们的挑瓜条件相似或相同,那么我们就判断它是一个好瓜。同样的,如果一幅图像中有一个点和我们的描述子相似或相同,那么就可以判断它们为同一特征。对于图像识别而言,好的特征点描述子在图片缩放、旋转和仿射变换下应能保持不变。
有了特征点描述子,我们就可以比较两幅图片了。当然从实现细节上讲,还需要量化特征以及计算特征点描述子的相似度的方法。有了量化的特征后,判断两幅图是否相似是人为可控的,我们既可以设置匹配率为10%以上的两幅图像是同一图像,也可以设置匹配率为90%以上。具体标准根据应用所需而定。
现在市场上的主流AR软件开发工具包(Software Development Kit,简称为SDK)大都提供了寻找图像中识别点的功能。这大大方便了AR应用的开发,开发人员只需准备好目标图即可,而无需过多关注图像识别等的低层实现。一般来讲,图片越复杂识别点越多,识别效果也就越好;目标图之间差别越大,识别效果越好。如果目标图之间过于相似了,我们可以通过在图片上添加文字的方式来加以区别。此外,如果使用卡片等印刷品来代表目标图,应确保它们清晰可见,并易于被摄像头捕捉到。
2) 视频合成
视频合成是指把计算机图形系统准备好的虚拟物体添加到摄像头所拍摄的真实世界中去。要实现虚实物体间的完美结合,必须将虚拟物体合并到现实世界中的准确位置,这个过程在AR中称为注册(registration)。
视频合成需要注意两个问题。一是要在识别图像的同时,确定虚拟物体在真实世界中的位置和方向。二是当摄像头移动或转动时,虚拟物体能做出相应的调整和变化。例如,在口袋动物园中,当摄像头移动时,3D动物模型应始终保持在在卡片上方,而当卡片不在摄像头范围内时,应不再显示动物的模型。要想实现这种效果,需要对视频中的图像进行特征点跟踪。一种典型的跟踪方法是:在视频的第一帧图像中寻找可能的特征位置,然后在后续的图像中搜索他们的对应位置。完成特征点定位和特征点跟踪后,就可以把三维物体或动画渲染进视频中了。
2.4视频输出
视频输出是将合成好的视频显示在手机或台式机的屏幕上,将虚实结合的最终结果展现给用户。这已经是非常成熟的技术了。
3. AR SDK调研
上一节我们介绍了AR的工作原理。手机端的AR应用大多数都采用这种方法。这种模式化的方法也促进了AR SDK的发展。作为AR的开发者,只需了解AR大致的流程工作原理,而无需过多的关注AR的底层实现。
AR SDK方便了AR开发者,加速了AR产品开发。那么在众多的AR SDK中,我们应该如何选择呢?这里我们调研了国内外主流的AR SDK。
Vuforia
Vuforia[3]是世界领先的AR平台,最初属于高通公司,后在2015年被物联网企业PTC收购。Vuforia可以说是目前功能最完善,稳定性最好的AR SDK,它支持iOS、Android、PC等平台的开发,提供支持Unity 3D的插件。Vuforia的关键特性包括对图片、物体、文本和标记的识别和追踪,多目标的跟踪,以及重建环境。此外,最新版的Vuforia6.0还支持对手势的跟踪、VuMark(完全定制化的可附着于任何表面的图片,类似商标)、智能眼镜和云服务。Vuforia还提供工具用于创建和管理目标图以及扫描实体生成3D图形。Vuforia有收费和免费两个版本,免费版有水印并只支持部分功能。
AR Toolkit
AR Toolkit[4]是一款有着悠久历史的开源AR SDK。它支持iOS、Android、PC、Mac OS和Linux等多个平台的开发,也提供了支持Unity 3D的插件。AR Toolkit能快速和准确地检测并跟踪传统的方形标记、二维码、多标记和周围环境中的自然标记。AR Toolkit的最大优势是其完全免费(严格说是开源),也可用于开发人员学习和研究AR低层技术。
此外,JSAR Toolkit是AR Toolkit的Java Script移植版,支持web端开发。它提供了比较简单的特征点识别功能。
Wikitude
Wikitude[5]一样支持iOS、Android和部分智能眼镜的开发,也提供支持Unity 3D的插件。Wikitude有商用版和免费版,免费版的图片上会有水印。与其他SDK不同的是,除了基于原生平台的开发外,Wikitude还提供了类似JavaScript 的编程接口,让使用者能方便地实现跨平台的开发。从功能上讲,Wikitude的解决方案包括图像识别和3D物体跟踪,3D模型渲染,视频叠加。需要特别指出的是,Wikitude还支持基于地理位置的识别。基于这种技术的导航软件,用户看到的不只是地图,还有前方街道的实时视图。
除了上述国外的AR SDK外,国内的AR平台近来也发展迅速。
EasyAR
EasyAR是上海视辰信息科技的产品,最早的1.0版发布于2015年10月。它支持多个平台的开发,包括iOS、Android、Mac OS和Windows,提供Unity 3D插件。EasyAR支持平面图形和二维码识别,多个本地目标的加载和视频播放。EasyAR还在继续发展,未来计划支持更多特性,包括:3D物体识别、人脸识别、支持智能眼镜和云打包技术。EasyAR目前是免费的,无水印。EasyAR内部使用了一些可被商用的开源软件,因此使用EasyAR的衍生产品也应加入这些软件的LICENSE。
HiAR
HiAR是亮风科技打造的新一代AR平台。支持3D模型和视频。目前只发布了支持Unity 3D的AR SDK。支持Android、iOS和云服务的SDK将在近期发布。
除此之外,常用的AR SDK还包括:Realmax、D’fusion、Catchoom、Xloudia、IN2AR、ARLab和太虚AR等。
4. AR在新闻和媒体领域的潜在应用
AR技术已应用到旅游、商业、家居、教育、娱乐游戏、医疗、军事、工业等领域,这给用户带来一种全新的体验。那么在新闻和媒体相关领域,AR技术能做些什么呢?
在2016年里约奥运会前夕,腾讯公司推出了采用了AR技术的全民奥运圣火传递活动。QQ用户可以通过使用手机扫描AR识别图或者寻找身边火炬手的方式领取“火种”,领取后手机屏幕上就会出现一只拿着奥运火炬的QQ企鹅。这是国内社交软件媒体中首次使用AR技术。从本质上讲这是一种广告,但是由于其创新地使用了AR这种前沿领域的技术,为用户提供了一种全新的体验,因此取得了良好的效果,是一次非常成功的营销。这种将新技术与时效特点相结合,大胆创新,给用户带来惊喜的方式是任何推广服务都可以借鉴的。
2016年7月,央视网报道说[6],“中央电视台在新闻拍摄与制作上首次尝试AR(增强现实)技术,成功应用于《南海仲裁案FAQ》、《故宫端门数字馆》、《World Innovation》等多个节目制作中,并广受好评”。此外,中央电视台还在2016年的G20峰会的报道中再次使用了AR技术。采用AR技术是对传统报道技术的一种很好的补充,实现视觉上的人机交互,在真实环境中体验“身临其境”的新闻报道效果。
AR技术也为传统的纸媒体带来了新的机遇和挑战。纸媒由于受材料和版面的限制,仅能向读者传达以文字为核心的内容,并配以相应的静态图片。这种单一的形式呈现主题的方法已经很难满足读者对动态信息的需求。AR技术则能够让纸媒上的文字“活”起来,让图片“立”起来。2012年,《成都商报》发布了“拍拍动”[7]移动终端应用软件,这是国内平面媒体首次利用AR技术。读者可以用手机对准报纸上标有“拍”子图标的图片,就能在手机中看到相应的视频,三维动画等多媒体信息,并与之互动。AR技术为读者提供了一个全新的视听新环境,让用户在阅读报纸和杂志时就能达到上网或看电视的效果,从而完成了对传统纸质媒体的一体化升级。
参考文献
[1] 余艳红. 增强现实技术的研究现状及发展趋势. 湖南大众传媒职业技术学院学报,2016年1月第16卷第1期:55-57.
[2] 增强现实(AR)系统组成及实用领域综合分析. 百度文库. http://wenku.baidu.com/link?url=o4deXBzkadbva-hHH2VqUssy7KxC3PffwKISDt0UDPeliCJy7wBTxN_dKVSleVM8Tw2t1kHk27heLzHhUsQ79J325--NY2HutQ41Y59NytK
[3] Vuforia. https://developer.vuforia.com/
[4] ARToolkit. http://artoolkit.org/
[5] Wikitude. http://www.wikitude.com/
[6] 央视新闻报道首次探索运用AR技术. http://www.cctv.cn/2016/07/01/ARTIwdqaCnSeWxH3d9pJrOJn160701.shtml
[7] 拍拍动. http://e.chengdu.cn/paipaidong/