苏泽荫,林志贤,郭太良
(福州大学 物理与信息工程学院,福建 福州 350108)
摘要:针对移动设备弱处理能力和低内存等局限性,导致增强现实技术不能在移动设备上普及,提出一种新的增强现实技术方案。采用SURF算法提取视频帧图像的特征点,接着使用FREAK算法进行特征点描述;在汉明距离强制匹配之后,采用改进的RANSAC算法剔除了误匹配点,然后通过计算比较匹配特征点占样本图像特征点的比重,判断是否成功匹配目标物体;最后渲染对应的三维模型完成增强现实三维注册。通过在Android移动设备上的验证,结果表明该技术方案满足移动设备对实时性、准确性和鲁棒性的要求,为移动增强现实的推广奠定了良好的基础。
关键词:增强现实;SURF;FREAK;汉明距离;RANSAC;三维注册
中图分类号:TP391.4文献标识码:ADOI: 10.19358/j.issn.1674-7720.2017.09.004
引用格式:苏泽荫,林志贤,郭太良.基于Android移动设备的增强现实技术研究[J].微型机与应用,2017,36(9):11-14.
0引言
*基金项目: 国家重点研发计划课题(2016YFB0401503);广东省科技重大专项(2016B090906001);福建省科技重大专项(2014HZ00031);福建省资助省属高校专项课题(JK2014002)
随着智能移动终端的不断普及,以及硬件配置的不断提升,增强现实技术[12]在移动设备的研究与开发已成为当今的热点。增强现实技术在移动手持设备上的应用又称为移动增强现实(Mobile Augmented Reality,MAR)[3-4]。但由于增强现实中的关键技术——三维注册[57],需要大量的运算和内存,因此本文根据移动设备的实际情况,对三维注册算法进行改进,研究设计出一个通用可移植的增强现实系统方案并实际测试验证。
在实际使用智能移动设备进行增强现实的三维注册时,由于待识别的物体存在尺度和旋转变换,以及周围环境如光照等干扰,这就要求三维注册算法要具有良好的鲁棒性,而实时性和准确性大大影响了用户体验,因此,在移动设备上开发三维注册算法需要满足实时性、准确性和鲁棒性要求。
1系统整体框架设计
Android移动设备调用系统内置的Camera API 接口,调用 Android 移动设备的摄像头,对摄像头所拍摄场景的图像进行采集和存储,再对图像进行图像预处理;然后采用SURF[8]算法进行特征点检测,并用FREAK[9]算法进行特征描述,然后采用汉明距离与目标样本库进行初步匹配,最后采用改进的RANSAC进行匹配优化。根据匹配率确定视频图像帧中是否有目标物体[10],如果有则采用OpenGL ES对摄像头视野进行虚拟三维场景的渲染和叠加,完成三维注册。图1是系统方案设计框图。
2三维注册算法方案设计
三维注册是实现移动增强现实的关键技术,它通过在摄像头视野中对目标图片进行分析匹配,根据投影几何的相关知识,准确计算出摄像头在真实世界的姿态信息,从而实现三维虚拟模型的准确添加。传统的三维注册技术是基于人工标志的,容易受光照变化、遮挡情况的影响,而且制作麻烦,应用场景有限,不适合推广使用,因此本文采用基于自然特征的三维注册技术。
SURB是常见的用于自然特征三维注册技术的算法,由于其采用盒式滤波器与原图像卷积的计算方式,只需要几次加减法运算,而且运算量与盒子滤波器大小无关,所以能够快速地构造出SURF的尺度金字塔,与SIFT算法[11]相比,速度有了较大提升,同时也具有尺度不变的特性,对光照变化、仿射、透视变化也具有较强的鲁棒性。但SURF算法特征描述向量是高维向量,而且采用最近邻搜索算法穷尽搜索,计算量较大,导致SURF 算法在构建局部特征描述符与特征匹配阶段耗时过长,难以满足移动设备对实时性的要求。因此本文采用二进制描述符算法FREAK作为描述符算法来改进SURF的不足。该方法模仿视网膜结构的采样模板对特征点进行描述符构造,对旋转、噪声、尺度都具有很好的性能。这类算法采用不同的采样模式生成二进制描述符,降低了描述符的维度,依靠计算特征描述符的汉明距离进行匹配,使运算速度和内存占用方面都得到了很好的改善。
结合上述分析和文献[12]对各个特征点提取与匹配的算法进行实际测试,本文采用算法如下:采用SURF算法进行特征提取,然后用FREAK算法进行特征描述,在汉明距离的基础上结合改进的RANSAC算法对初步筛选的点去伪,获得较为精准的匹配点对,再通过判断匹配特征点占样本图像特征点的比重,确定是否成功匹配目标物体,保证了识别的准确性,然后渲染对应的虚拟三维模型,完成三维注册。
2.1SURF特征点检测
SURF算法的特征点检测是基于尺度空间理论的。为了在尺度空间中检测极值点,SURF算法建立具有多尺度空间的图像金字塔;利用尺度逐渐递增的盒式滤波器与原图像卷积创建图像金字塔生成多尺度空间。首先,使用积分图像加速图像卷积来提高计算速度;再通过计算图像中的每一个像素点的Hessian矩阵行列式得到特征点的值。在实际计算中,采用盒式滤波器来近似高斯滤波的方法,可极大地提高计算速度。为使特征点具有尺度不变性, 首先去掉行列式值低的像素, 然后进行尺度空间和邻域空间的非极大值抑制, 最后所得的极值点即为特征点。
2.2FREAK特征描述
FREAK是受人类视网膜启发的一种能唯一识别关键点的稳健描述子,在计算过程中耗费更少的计算时间和存储空间。FREAK采用圆形的视网膜采样网格,这样能够在保证人眼信息识别量的基础上,减少信息的运算量。不同于BRISK和ORB对所有点只用相同的核,FREAK对每个点使用的核是不同的,高斯核的半径与σ值成比例。FREAK按照ORB的方法,通过最大化对间方差来识别采样点对,然后取不相关的点对,以便为每个关键点提供最大值信息。为了找出采样点对,以产生位向量,FREAK采用类似ORB的方法,但并不是匹配每一点对,而是学习哪些点对能得到最好的结果。算法如下:
(1)用接近50 000个提取出的关键点构造矩阵D,每一行对应一个关键点,每个关键点以一种从视网膜采样模式获取的所有可能的点对构成巨大的描述符表示。使用了43个感受野,产生大约1 000个点对。
(2)计算每一列的均值。均值为0.5时产生最大的方差。
(3)按照方差降序对列排序。
(4)选出最佳列并迭代地加上剩余列,以使它们与选中列之间为弱相关[13]。
在这种方法中,选择在靠外区域中比较采样点的对,最后选择在模式内部区域比较点的对。这与视网膜首先试图定位目标,然后再通过精确匹配密集分布在目标周围的点来辨识的原理相似。
FREAK模仿视网膜的跳视搜索功能,搜索描述子的前16个代表粗略信息的字节,如果距离小于阈值,将继续搜索之后的字节,获取更精细的结果。因此,执行一种级联的比较,会进一步加快比较的步骤,因为在前16 B比较中超过90%采样点被舍弃掉了。
为了估计特征点的主方向,FREAK的方向分配方法与BRISK 相似,通过选择感受野对来总结估计局部梯度值,且主要选择相对于中心对称的感受野对。将此处的梯度值作为特征点的主方向。
2.3特征点匹配
利用汉明距离将检测到的特征点与基准图像进行特征点匹配,完成匹配过程。在匹配过程中,不可避免地存在误匹配点,因此需要对已匹配的特征点采用改进的RANSAC一致性检验算法进行筛选,剔除误匹配点。传统的RANSAC算法由于迭代次数多,运算量非常大,不能满足实时性要求。因此,本文采用RANSAC改进算法:利用结构相似的尺寸相似和位序相似两种约束来剔除大量误匹配点,得到新的匹配点集,作为RANSAC算法的输入,求出变换矩阵。改进的RANSAC算法不仅提高了匹配速度,而且还提高了匹配精度[14]。
2.4识别目标的确定
当视频帧图像进行描述符匹配后,计算并判断匹配点数目占样本图像匹配点数的比重是否大于事先设定的阈值,以此来确定是否成功匹配到目标物体。
2.5虚拟三维物体的渲染
根据识别匹配结果加载对应的三维物体数据, 完成摄像头位姿的估算并利用 OpenGL ES 图形库在场景相应位置生成其相对应的三维虚拟物体, 将虚拟三维物体叠加到摄像头视野中。
3Android平台增强现实技术的实现
由于Android应用主要是用Java语言开发,执行效率比较低,因此,本文算法的实现采用OpenCV图像处理库加上Android NDK开发工具,进行算法的C、C++语言开发,大大提高了运行效率。
Android移动设备调用摄像头获取视频帧图像,并进行图像预处理,然后进行识别和匹配,如果有目标物体,则采用OpenGL ES进行三维模型渲染。
整个Android应用是在Eclipse开发工具上进行模块整合和界面的开发。最后生成APK文件安装在手机上即可实现增强现实功能的开发。
4增强现实技术方案验证
为了验证本文所述算法实际运行的效果,专门开发了在Andriod手机运行的应用程序。将算法移植到Andriod手机上运行。用于测试的手机是华为荣耀8,搭载的Android系统的API版本为6.0.0,开发工具采用Eclipse,采用NDK工具版本为r10e,OpenCV函数库版本为3.1.0。
4.1实时性验证
为了有更好的用户体验,移动设备的实时性除了满足耗时操作不能超过5 s的基本要求外,还应尽量缩短用户等待时间,一般1 s以内能获得比较好的用户体验。本文在验证实时性时,首先对同一个物体,将几种常见的算法在Android手机上的运行效果进行对比,运行结果如图2中的(a)~(e)所示,对应时间如表1所示。结果证明本文算法完成匹配时间为100 ms,耗时最短,满足移动设备对实时性的要求。
4.2鲁棒性验证
为了验证本文算法的稳定性及鲁棒性,将算法在 Android 手机上实现,在不同视角、不同旋转角度、不同尺度、部分遮挡的情况下进行测试,结果如图3所示。测试结果证明:本文算法在各种情况下均可以正确识别物体并渲染3D模型。
4.3准确性验证
为了验证本文算法的准确性,将算法在Android手机上实现,用不同的物体进行测试,结果如图4所示。结果证明只有在正确的物体出现在摄像头视野中才会渲染3D模型。为了进一步验证准确性,在开发Android应用程序时,添加本地数据库,增加样本数量,对20种不同的书籍、图片进行识别,结果证明,本文算法基本上都能够识别出来,准确率达95%,满足移动设备的准确性要求。
5结论
本文针对Android移动设备的局限性,提出一种新的三维注册算法:使用SURF检测具有尺度不变性的特征点,然后使用FREAK特征点描述子得到二进制描述子;在汉明距离的基础上结合改进的RANSAC算法剔除了误匹配点,再通过判断匹配特征点占样本图像的比重来确定是否成功匹配目标物体,进一步保证了识别的准确性。通过在Android移动设备的验证结果表明,此算法方案设计满足移动设备的实时性、准确性和鲁棒性要求。因此,本文提出的三维注册算法方案有很强的实用性,为移动增强现实的实现奠定了良好的基础。本文算法的不足之处在于:所用的目标识别方法仅限于样本库比较少的情况,之后还应加上服务器端[15],在服务器端可以建立庞大的样本库,将大大增加可识别的物体数量。
参考文献
[1] 王涌天, 陈靖, 程德文. 增强现实技术导论[M]. 北京:科学出版社,2015.
[2] 基珀, 兰博拉. 增强现实技术导论[M]. 北京: 国防工业出版社, 2014.
[3] GRAVDAL E.Augmented reality and object tracking for mobile devices[D]. Norway:Norwegian University,2012.
[4] AVILA L, BAILEY M.Augment your reality[J].Computer Graphics and Applications, IEEE,2016,36(1):6-7.
[5] 郭树涛. 一种新的增强现实三维注册算法[J]. 信息通信, 2014 ,27(1): 4244.
[6] 施琦,王涌天,陈靖.一种基于视觉的增强现实三维注册算法[J].中国图象图形学报,2002, 7(7): 56-60.
[7] AZUMA R T. A survey of augmented reality[J]. Teleoperators and Virtual Environments, 1997,6(4):355-385.
[8] BAY H, TUYTELAARS T, GOOL L V. SURF: speeded up robust features[J]. Computer Vision and Image Understanding, 2006, 110(3):346-359.
[9] 谢红,王石川,解武.基于改进的FREAK算法的图像特征点匹配[J]. 应用科技, 2016,43(4):17.
[10] 惠记庄, 罗丽, 杨永奎,等. 基于SURFBRISK的目标识别匹配与定位方法研究[J]. 长安大学学报:自然科学版, 2016, 36(3):93101.
[11] 杨天天,鲁云萍,张为华,等.一种基于GPGPU的SIFT加速算法[J].电子技术应用,2015,41(1):149-152 .
[12] BEKELE D, TEUTSCH M, SCHUCHERT T. Evaluation of binary keypoint descriptors[C]. IEEE International Conference on Image Processing. IEEE,2013:36523656.
[13] 李晶皎,赵 越,王爱侠,等. 基于改进FREAK的增强现实实时注册算法[J].小型微型计算机系统,2016, 37(1):173-177.
[14] 许可可, 朱文球, 郭富禄. 基于结构相似的RANSAC改进算法[J]. 计算机工程与应用, 2016, 52(12).168-171.
[15] 王飞,许魁,徐友云,等.大数据无线通信面临的几点挑战与对策[J].电子技术应用,2015,41(3):12-16.