基于增强现实技术的位置服务在Android中的应用

2018-09-13 07:40马永辉解佺葛萌
无线互联科技 2018年11期
关键词:增强现实

马永辉 解佺 葛萌

摘要:近年来,Android操作系统功能日益完善,移动终端的地图应用也为人们的日常出行带来了极大的便利,而增强现实是一种通过计算机系统提供的信息增加用户对现实世界感知的新兴技术,在增加人机交互能力方面有卓越的效果。因此,文章主要在Android平台上,就增强现实技术在地图导航领域的应用可能性和相关原理及应用前景进行探讨。

关键词:Android;基于位置的服务;增强现实

近年来,伴随着各种定位技术的快速发展,基于位置的服务(Location Based Services,LBS)[1]技术也随之愈发完善与强大,因此,地图应用在实时定位与导航方面给人们的生活、工作带来了更多的便利,但是同时却存在着可视性差、人机交互功能弱等难题。不过,在移动终端研发的最新突破中,LBS的增强现实技术(Augmented Reality,AR)却能够为用户提供对周围环境重新感知的功能,用户将移动端摄像头所摄入的当前实景画面与计算机生成的虚拟信息叠加在一起,帮助用户以全新的视觉感知周围环境,体验传统数字地图导航不能提供的互动感受。

本文在位置服务的基础上引入AR技术,以Android操作系统[2]为研究平台,探讨AR技术在地图导航领域的应用可能性和相关原理及应用前景。

1 关键技术阐述

1.1 LBS概念详解

LBS是一种获取移动终端用户的位置信息进而在地理系统平台上为用户提供额外服务的派生业务,该服务通常采用电信移动运营商的通信网络,如全球移动通信系统GlobalSystem for Mobile Communication,GSM)网、码分多址(Code Division Multiple Access,CDMA)网或外部定位方式(如GPS)来获取移动终端用户的位置信息。

此技术主要实现了两种功能:(1)获取移动终端用户的详细经祎坐标;(2)提供与位置相关的各类信息服务。现如今移动终端应用市场中类似的应用APP层出不穷,例如高德地图、百度地图等各种地图应用,首先定位用户及移动终端的所在位置,然后可提供附近一定范围以内的所有饭店、旅馆、停车场等相关信息,方便人们的日常生活。所以说位置服务(Location Based Services,LBS)技术就是要通过互联网或无线网络,在固定用户或移动用户之间,完成定位和服务两项业务。

1.2 高德开放平台提供的Android开发SDK

高德地图Android SDK[3]是一款Android操作系统的应用程序接口。可以使用该套软件开发工具包(Software Development Kit,SDK)开发相应的移动终端应用,我们只需要申请一个密钥,获取其使用权限,通过调用其接口,访问高德地图服务和数据,并结合全面精准的路网信息与实时路况,凭借其自主强大的路线算法规划路线并引导用户至目的地。

1.3 AR简述及开发平台介绍

1.3.1 AR 简述

AR[4]技术旨在通过实时地计算摄影机影像的位置及角度并叠加相应计算机虚拟图像、视频、3D模型来实现人机交互功能的一种技术。这种技术是通过将现实世界的实景信息和计算机世界的虚拟信息无缝连接,进而在屏幕上将虚拟世界和现实世界叠加,并且可以实时互动,从而给用户带来更好的沉浸感、体验感。

跟踪注册技术是AR系统中的核心技术,其目的在于实时地判断摄像机坐标系与实景标识物坐标系两者之间的关系,从而将虚拟图像融入现实场景对应的位置上。目前应用程序中较多使用的是基于视觉的跟踪注册方法,其方法可分为基于标识物的跟踪注册方法和基于自然特征的跟踪注册方法两大类。同时,在某些应用程序中,还有一部分采用的是基于传感器的跟踪注册方法,这两种算法均属于AR技术中的主要算法,其优劣各有千秋。

目前,随着处理器技术和计算机视觉领域所取得的一个又一个革命性突破,AR技术以更成熟的姿态展现在世人面前,并且在人工智能、遙感、模拟训练等许多领域更是带来了革命性的变化,移动导览中AR的应用也成了一个新的研究热点。

1.3.2 EasyAR开发平台概述及原理介绍

本文选择浙江大学计算机辅助设计与图形学国家重点实验室开发的EasyAR[5]快速开发开源软件工具作为AR的实现平台,EasyAR支持使用平面目标的AR,支持1 000个以上本地目标的流畅加载和识别,支持基于硬解码的视频(包括透明视频和流媒体)的播放,支持二维码识别,支持多目标同时跟踪,市面上的许多其他类似开发工具本文不予讨论。EasyAR具体工作原理简述如下。

(1)EasyAR的数据流。

EasyAR的组件基本上是互相独立的。所以在EasyAR可以工作之前需要连接这些组件。为了建立完整的EasyAR场景,一个CameraDevice需要被ImageTracker所attached然后周期性让Augmenter从ImageTracker获取新的Frame。attach和newFrame操作让整个AR链条开始运行,而数据则在这个链条上进行传递。

在CameraDevice中产生的Image会逐帧进入ImageTracker,同时推进Tracker工作。这些Image被Frame送入 Augmenter。

Target被图像和json文件构造,可以被载入到ImageTracker中。当它被Tracker识别或跟踪到,将会被Frame送入Augmenter。最终传递到AugmentedTarget。如图1 所示。

(2)EasyAR的内存模型。

EasyAR 的 C++对象与 C++ 的 std::shared_ptr 行为类似,它是一个对真实对象的非常薄的封装。C所引用的内存是引用计数的,并且以类似于std::shared_ptr的方式管理。同时,C的线程安全性与std::shared_ptr相同。EasyAR的对象通常是延迟初始化的,也就是说在特定方法被调用之前,对象是无效(operator bool()返回false)的。如果camera产生的Image被newFrame所识别,它将会一直驻留在内存中,除非Frame得到释放。

ImageTracker会保持加载到自身的Target的引用。这个引用可以通过从Tracker卸载或销毁Tracker来移除。Frame和AugmentedTarget也会保持被跟踪到的Target的引用。加载之后的Target在这些引用被移除之前将不会被释放。如图2所示。

2 Android APP主要实现

2.1 应用设计

此产品为Android客户端APP形态,可进行精确的位置定位,并在后台数据库中录入商户(包括店铺、标志性建筑、街道名称等)相关信息。用户进入应用后,获取移动终端的位置服务,直接显示普通平面地图,点击定位按钮,系统实现定位功能;用户在地图中选定目的地后,点击导航按钮进入导航模式选择——普通导航和AR导航;选择普通导航实施二维地图导航功能,在界面显示导航路线;选择AR导航,移动终端进入移动终端摄像机录入身边现实场景信息,与后台数据库信息匹配后在道路上显示朝向箭头,用户按照箭头方向进行移动即可,AR朝向导航可谓是不区分东西南北用户的一大福利。

2.2 地图加载

高德地图Android SDK下载完成后在官网上申请开发者密钥,将高德地图Android SDK复制到APP应用libs文件夹中,在工程的“AndroidMainfest.xml”添加开发者密钥和相关权限。

密钥添加:

〈application

android:name:” com. amap.api.v2. apikey”

android:value:” key 值 ” />

猜你喜欢
增强现实
照片建模与增强现实实验在三维软件基础课程中的应用
增强现实技术在职业教育中的应用