郑明月,李颖,焦梓,丁宁
(1.东北大学软件学院数字媒体技术系,沈阳 110167;2.东北大学软件学院信息安全系,沈阳 110167)
基于Android的增强现实应用研究
郑明月1,李颖1,焦梓2,丁宁2
(1.东北大学软件学院数字媒体技术系,沈阳 110167;2.东北大学软件学院信息安全系,沈阳 110167)
为了解决增强现实技术在Android平台上的应用问题,使用Unity与Vuforia结合的方法进行开发,对普通明信片进行视觉拓展,给出了一个完整的虚拟校园App开发方案。在该方案中,通过对于模型的合并点处理、贴图处理等解决手机内存与模型质量之间的矛盾,降低手机性能的门槛。同时,进行图像存储调度方面功能的开发与完善。与同类软件相比对内存需求更低、识别效果更好。
20世纪90年代初期,波音公司的Tom Caudell和他的同事在他们设计的一个辅助布线系统中提出了“增强现实”(Augmented Reality,简称 AR)这个名词[1]。随着计算机技术的快速发展,增强现实技术得到了广泛的应用,目前,该技术的研究已经成为计算机视觉、计算机图形学等领域中的一个热点,搜索量已经超过虚拟现实,人们越来越关注包裹我们的信息空间[2]。增强现实技术是将真实场景同虚拟物体加以融合的一种手段,增强现实系统的特点是虚实空间的一致性结合以及实时交互。
产生现实环境中不存在的虚拟对象,并通过传感技术将虚拟对象准确“放置”在真实环境中借助显示设备将虚拟对象与真实环境融为一体,并呈现给用户一个感官效果真实的新环境[3]。因此,虚实结合的过程设计三个方面:三维注册、物体位姿、光照条纹[4]。
(1)获取真实场景画面;
(2)对真实场景画面进行分析;
(3)计算虚拟物体应有的角度和位置;
(4)显示代表虚拟物体的模型。
如图1所示,即真实摄像机捕捉真实环境画面并将图像信息发送给程序,程序分析图像计算待拟合的虚拟物体与虚拟摄像头的相对位置,最后将虚拟物体的图像叠加在真实画面上。
傍晚,我靠着逐渐暗淡的、最后的阳光指引,走过十八年前的故居。这条街、这个建筑物开始在我的眼前隐藏起来,像在躲避一个久别的旧友。但是它们改变了的面貌于我还是十分亲切,我认识它们,就像认识我自己,还是那样宽的街,宽的房屋。巍峨的门墙代替了太平缸和石狮子,那一对常常做我们坐骑的背脊光滑的雄狮也不知逃进了哪座荒山。然而大门开着,照壁上“长宜子孙”四个字却是原样地嵌在那里,似乎连颜色也不曾被风雨剥蚀。我望着那同样的照壁,被一种奇异的感情抓住了,我仿佛要在这里看出过去的十九个年头,不,我仿佛要在这里寻找十八年以前的遥远旧梦。
Vuforia可以说是 AR(增强现实)业界的一款支柱级产品,它支持大部分主流手机、平板电脑和增强现实设备[6]。它是Qualcomm推出的扩增实境应用的软件开发工具包,它可以识别场景中特定的图像。Vuforia将识别图的灰度信息进行处理形成Marker矩阵码,并将Marker矩阵码集合用于真实场景信息分析。本文要识别图与处理的是明信片。如图2、图3所示。
图1 虚拟物体与真实图像的处理过程
图2 普通明信片
图3 灰度识别点的明信片
在Vuforia通过将外部摄像机捕捉到的画面作为软件内部摄像机画面最底层,使用Marker矩阵码进行匹配,并在上层显示虚拟模型,这样就完成了虚拟物体与现实场景的融合,如图4所示。
图4 Vuforia融合虚拟与现实图示
Android手机资源有限,不能承载针对于电脑的传统建模方法。于是对模型进行了合并点处理、贴图处理。
在3ds Max建模中,模型的数据通过存储点的位置与点之前的链接关系来保存,设点的个数为P,存储每个点所用空间为Mp,点与点之间的链接关系的个数为N,存储每个链接关系所用空间为Mn,存储一个模型数据所用的总空间S。则有:
手机对于数据的存储空间是不可变的,即Mp、Mn为定值,设常数A=Mp+2Mn。则公式(3)可推导为:
由此可知,S的大小与P成正比,即减小P减小S。在模型制作过程中,使用将多个点合并为一个点的方法,可以有效减少P,从而使S减小,如图5所示,将Cub1中黄色点进行合并处理,可以得到Cub2。Cub1中P=12,存储Cub1模型数据所占总空间S1=12A;Cub2中P=8,存储Cub2模型数据所占总空间S2=8A。通过合并处理,在没有形状缺失的情况下减少了1/3的存储空间。
图5 点合并处理实例
在实际模型制作过程中,存储空间的节省比例随模型的不同而有所变化,经过统计该软件所使用的模型合并点之前与合并点之后的数据,模型中点的个数减少了48%。如图6所示。
在合并点处理之后,贴图方式也需要进行改变。传统贴图时往往会分模块进行展UV,这样每个模型会对应数十张贴图,每张贴图上只有部分位置是有用的,大量的贴图占用了很多空间。在展UV之前将模型将模块每两三个合并在一起,此时,模型对应的贴图数量就会大量减少。合并点之后模型如图7所示,贴图后模型效果如图8所示。
图6 点合并前后对比效果
图8 已贴图模型
软件开始运行后,不断检测是否有识别图被识别。当检测到识别图时,程序开始按照用户的操作执行,具体流程见图9。
该软件实现了图像识别、模型展示和相册的存储与管理三方面的功能,下面进行详细阐述。
图像识别功能主要以Vuforia插件为基础,并对它进行了改进,使之更适合本软件。这里给出具体的改进步骤:
(1)创建索引数组“int[]Index”,给每个识别图都分配数字索引
图9 软件工作流程图
(2)设置“识别”消息函数“void getModle()”,该函数在识别图被识别时,立即向主控函数发送该识别图对应的索引“Iq”和识别图被发现的消息。同理,设置“丢失”消息函数“void lostModle()”,该函数在识别图被识别后丢失时,立即向主控函数发送该识别图对应的索引和识别图丢失的消息。
(3)主控函数根据接收到的消息执行对应的工作。
模型展示功能以UI控制模型的切换为主要内容。在识别图被识别后,程序默认展示识别图对应的外建模型,并由UI按下事件来控制模型切换。要创建“gameObject[]Modles”数组来存储模型,这里Modles数组可以存储多个模型,Index中每个元对应一个Mo鄄dles数组。设计数器counter=0,待显示的模型为“Mv”,待隐藏的模型为“Mo”被。UI每次被按下时执行:
这样,可以实现模型的循环显示。
相册的存储与管理功能主要实现了屏幕截取、存储截图、调用内存中图片。这三部分功能均由UI调用,当用户按下按钮时,执行一次对应的函数。一次完整的拍摄照片、浏览照片的实现过程如下:
(1)隐藏UI层,截取全屏,将截取图像命名为“Num鄄ber”+number,其中“number”每次截取屏幕时都自增1,将图像放入软件数据所在路径,重新显示UI层。至此屏幕截取与存储功能完成。
(2)读取软件数据所在路径中第一个格式为jpeg的文件“NumberX”,将该文件显示在屏幕上。按下left按钮时,读取名字为(NumberX-1+number)%number的文件,将该文件显示在屏幕上。同理,按下right按钮时,读取名字为(NumberX+1)%number的文件,将该文件显示在屏幕上。至此浏览照片功能完成。
增强现实技术已经逐渐从实验室走向普通百姓的生活[7],笔者将增强现实技术与校园主题相结合,开发了“虚拟校园”手机软件。使用者可以直观的在明信片上看到立体的校园建筑模型并与其进行交互,进一步验证了本文所述方法的可行性与有效性。
该软件主要实现了三个功能,展示校园功能、拍照功能和浏览相册功能。展示校园功能主要是用来识别明信片、展示配套建筑模型,通过增强现实技术对于二维画面进行拓展。该功能包括8个校园建筑的外建模型以及若干典型建筑的内建模型,对校园建筑完成了全覆盖。拍照功能主要是对手机画面的保存。当用户觉得手机上的画面效果十分有保留价值时,按下拍照按钮,则保存一张当前手机屏幕的照片。浏览相册功能则是提供给用户观看其所拍照片的功能。用户通过左右切换可以查看自己之前保存的图像。
基于增强现实的校区的交互软件在Window8系统中使用Unity引擎开发,在开发过程中用到了Vuforia插件。该软件在Android系统4.2版本及以上可使用。
经过以上一系列开发,最终可以产生一个软件apk和对应的明信片。 下面是运行软件过程中的截图。展示模型界面如图10,图11所示。
图10 信息楼识别效果
图11 文管楼识别效果
相册浏览界面如图12,图13所示。
主界面如图14所示。
这款“虚拟校园”软件是与东北大学浑南校区的建筑群进行实时的交互,可以将当前环境和教学信息融合后实时的反馈给用户,为用户更加形象地了解东北大学浑南校区提供了方便。相对于当前市场上的其他种类的增强现实软件,这款“虚拟校园”软件是更加系统的将明信片与校园建筑相结合。该软件开发了一套增强现实明信片,让使用者有其身临其境的体验阅读、多维空间的魔幻阅读等优势[8]。
图12 宿舍楼照片
图13 校园全景照片
图14 主界面截图
“虚拟校园”软件可以识别在1-2米之外的识别图,用户可以用自己的手机或者其他带有摄像头的移动设备远距离的识别明信片,在一定程度上保证了软件识别的正确率。同时,利用Unity和Vuforia开发的“虚拟校园”软件识别角度广,识别的最广角可达到120°,当明信片倾斜的时候,也可以准确识别。同时该软件也可防反光,在光照强度较强时,软件也可以识别明信片。
“虚拟校园”软件在建筑模型方面采用了简模的方式。这样建模方式的好处体现在了软件的安装包上,较小的软件安装包可以让更多拥有低配置设备的用户也能体验到软件带来的新奇视角以及乐趣。
本文提出了一种增强现实应用的开发方法,所开发软件的识别效果与模型效果良好。通过模型的合并点处理、贴图处理,软件节省了大量的资源占用;通过对于软件功能的分块设计,实现了图像识别、模型展示和相册管理的功能。是增强现实软件应用开发一个成功的例子。
[1]Tom caudell.AR atboeing(1990)[EB/OL].http://www.ipo.tue.nl/homepages/mrauterb/presentations/HCI-history/tsld096.htm.
[2]邱克.增强现实技术在博物馆的运用[A].北京数字科普协会等,2015:8.
[3]全红艳,王长波,林俊隽.基于视觉的增强现实技术研究综述[J].机器人,2008,04:379-384)
[4]Milgram P,Kishino,F.A Taxonomy of Mixed Reality Visual Displays.IEICE Transactions on Information Systems 1994.
[5]朱淼良,姚远,蒋云良.增强现实综述[J].中国图象图形学报,2004,07:3-10.
[6]齐健.Vuforia产品升级,加速“虚实”融合[J].智能制造,2016,(10):8-10.
[7]徐敏,童强.一种基于Unity3D+Vuforia的增强现实交互App的开发[J].现代计算机(专业版),2016,(12):71-75.
[8]夏少琼.增强现实立体书与传统纸质图书的比较研究[J].美术大观,2016,(08):134-135.
Research on the Application of Augmented Reality Based on Android System
ZHENGMing-yue1,LIYing1,JIAO Zi2,DING Ning2
(1.College of Digital Media Technology of Software,Northeastern University,Shenyang 110167; 2.College of Information Security of Software,Northeastern University,Shenyang 110167)
In order to solve the Augmented Reality application problems on the Android platform,gives a completely App development program,us鄄es a combination of Unity and Vuforia approach to develop the application,makes the ordinary postcards have a Visual development.By merging point for model processing,texturing process,solves the contradiction between phone memory and model quality,lowers the threshold of performance.Meanwhile,the image storage scheduling feature has a development and improvement.Compared with the simi鄄lar software,it has lowermemory requirementwith better recognition.
国家级大学生创新创业训练计划项目(No.201610145086)
郑明月(1995-),女,吉林白山人,研究方向为图形图像处理、软件开发
2017-03-06
2017-04-25
1007-1423(2017)13-0033-06
10.3969/j.issn.1007-1423.2017.13.008
增强现实;明信片;合并点处理;虚拟校园
Augmented Reality;Postcard;Merging Point;Virtual Campus