《电子技术应用》

一种基于SURF与ARToolkit的增强现实设计

来源:电子技术应用2012年第10期 作者:陈荣军1,2, 朱雄泳2, 谭洪舟2, 陈奇彦1
2012/12/7 14:59:41

摘 要: 为了解决旅客在国外旅游时由于语言不通,无法实时了解日常遇到的路牌、餐牌等信息的问题,基于ARToolkitSURF算法,提出一种设计图文解说增强现实功能开发方法。经过实验测试,成功实现了对名画的图文解说,验证了该方法的有效性。该方法使用方便,具有较高的应用和推广价值。
关键词: SURF、ARToolkit、图文解说、增强现实

    增强现实AR(Augmented Reality)是将计算机产生的虚拟物体或信息与真实环境进行融合,借以增强或扩充现实景象的技术[1]。增强现实是虚拟现实技术VR(Virtual Reality) 发展的一个重要分支,也是近年来的一个研究热点[2-4]。随着科学技术的发展,增强现实技术不断完善的同时,增强现实设备的价格也在不断下降, 推动了增强现实技术在医疗、制造、维修、机器人动作路径规划、娱乐、军事、旅游等领域的发展和应用。特别是近年来平板电脑、智能手机的迅速发展,将AR系统与便携式计算机相结合,使用户可以在户外真实环境中随意走动,转换视点,大大增加了AR的应用范围。
     随着经济的不断发展,出国旅游成为人们增长自身见识、了解世界的重要方法。但由于各国使用语言和文字的不同,使游客面对旅游地很多日常的信息都无法了解,为了解决这个问题,本文提出一种利用增强现实技术实现图文解说功能的方法,针对旅客经常看见的路牌、名画、餐牌、标志等现实事物以游客熟悉的文字进行解说,可以真正地让游客体会到宾至如归的感觉。
1 SURF与ARToolkit
1.1 OpenCV中SURF算法的相关函数

    OpenCV[5](Open Source Computer Vision Library)是一种用于数字图像处理和计算机视觉的函数库,由Intel微处理器研究实验室(Intel Microprocessor Research Lab)的视觉交互组(The Visual Inter activity Group)开发。OpenCV由一系列C函数和少量C++类构成,实现了图像处理和计算机视觉方面的很多通用算法。SURF(Speeded Up Robust Features)算法是SIFT(Scale Invariant Feature Transform)算法的加速版,OpenCV的SURF算法在适中的条件下完成两幅图像中物体的匹配,基本实现了实时处理。SURF特征提取算法的流程主要包括三部分:特征点检测、特征点描述和特征点匹配。
1.1.1 特征点检测
    特征点的检测[6]是基于尺度空间理论,使用Hessian矩阵的行列式作为判别式来寻找局部极大值。尺度为σ的图像某点处的Hessian矩阵定义为:

1.1.2 特征点描述
  SURF特征点描述[6]采用Haar小波作为特征描述子,Harr特征最大的特点是速度快、能减少计算时间且增加鲁棒性。SURF描述符的构造分为主方向分配和生成特征向量两部分,且都是在特征点所在的尺度σ上进行的。以特征点为圆心,计算半径为6σ圆内,x和y方向上的Haar小波响应系数;在60°的扇形区域内,求x和y方向上的系数之和, 以此构建一个新向量。转动扇形遍历整个圆,选择最长向量的方向为主方向。
1.1.3 特征点匹配
  特征点匹配[6]就是在高维向量空间中寻找最相似的特征向量,而在大量的数据中寻找最近邻是一个复杂繁琐的计算过程。SURF算法在构造特征描述符时,对每个特征点都会添加Laplacian标识符。由Hessian矩阵的迹的值定义,若Hessian矩阵的迹大于0,则该标识符为1,否则为-1。该标识符用于区分暗背景上的亮斑和亮背景上的暗斑,只有相同类型的特征点才能互为匹配。由此只需对相同类型数据进行比较,既能获得较精确的匹配结果,又降低了计算量。
    OpenCV函数库提供了CvSURFParams()函数和cvExtractSURF()函数来实现SURF算法。
1.2 ARToolkit
    ARToolKit是由日本广岛城市大学与美国华盛顿大学联合开发的增强现实系统二次开发工具。利用计算机视觉技术计算观察者相对于已知标识的位置和姿态的视点,支持将Direct3D、OpenGL图形和VRML场景合并到视频流中,同时支持显示器和头盔显示器等多种显示设备。其实时、精确的三维注册功能可使工程人员非常方便、快捷地开发增强现实应用系统[7]。
    ARToolKit包含了跟踪库及其完整源代码,开发者可以根据平台的不同调整接口,也可以自己设计跟踪算法代替跟踪库。
    ARToolKit工作流程为[8]:(1)进行标识检测,即根据用户设定的阈值将摄像机采集到的一帧彩色图像转换成一幅二值黑白图像; (2)对该二值图像进行连通域分析,找出其中所有的四边形区域作为候选匹配区域,将每一候选区域与系统模板库中的模板进行匹配。如果匹配成功,则ARToolKit认为找到了一个标识,利用该标识区域的变形来计算摄像机相对于已知标识的位置和姿态;(3)根据得到的变换矩阵实现虚实之间的注册。
2 图文解说增强现实的设计
2.1设计环境

    本文所设计的图文解说增强现实以Windows XP系统为平台,以VC++ 6.0为开发环境,安装了OpenCV库和ARToolkit二次开发包,视频摄取采用一个支持USB2.0的CCD摄像头。
2.2 设计流程
    图文解说增强现实设计流程包括:读取模板图片、计算模板图片的特征点,摄像头摄入一帧,进行图片灰度化,计算SUPF特征点,求出与模版图匹配的图像区域,计算所要叠加模型的变换矩阵,对摄入帧RGB转RGBA、叠加模型及显示一帧输出图像。如图1所示。

2.3 模块设计
2.3.1计算模板图片的特征点

    计算出模板图片的特征点是整个流程的第一步。只有计算出这些特征点,才可以将模板图片的特征点与摄像头实时采集的图像的特征点作图像匹配。这里用cvLoadImage函数以灰度图的形式读入模板图片,用cvSURFParams函数设定SURF算法的初始参数,用cvExtractSURF提取模板图片的SURF特征。
2.3.2 摄像
    本文使用OpenCV函数库打开摄像头并捕捉图像流来实现图文解说。用cvCreateCameraCapture函数读入摄像头图像,并将其内容的变量地址返回一个cvCapture*类型的变量。cvQueryFrame函数的参数为cvCapture结构的指针。用来将下一帧视频文件载入内存(实际是填充或更新cvCapture结构中),返回一个对应当前帧的指针。
    关键代码如下:
    //初始化部分 
    cvCapture* m_Video;
    IplImage *newFrame;
    if (!m_Video)
        m_Video=cvCreateCameraCapture(0);
    if (!m_Video)
    {
        printf("无法打开摄像头");
        return 0;
    }
    //循环部分
    static void mainLoop(void){
          newFrame=cvQueryFrame(m_Video);
          //.......
    }
2.3.3灰度化
    计算特征点前,需要对原始图像进行灰度化处理。这是因为OpenCV中计算SURF特征的函数是相对灰度图进行操作。一张 RGB 图像是由 R(红色)、G(绿色)和B(蓝色)三种颜色分量所组成,其中R=G=B的值为灰度值,而灰度是将三种颜色分量转换成亮度值介于0~255之间的灰色,其中0代表最暗的黑色,255代表最亮的白色。灰度值Y与RGB间的关系为:
    Y=0.299R+0.587G+0.114B                (3)
    OpenCV中的cvCvtColor函数可以按式(3)将RGB图像转为灰度图。
2.4 计算被识别图片的特征点
    用OpenCV中的cvExtractSURF函数计算被识别图片的特征点。
2.5 计算模型的变换矩阵

 


    ARToolkit中的arGetTransMatCont函数可以计算模型的变换矩阵。若使用这个函数,需要先计算出标识图像的边缘所在直线的位置,作为arGetTransMatCont函数的输入参数。ARToolkit中以直线方程的标准式ax+by+c=0来表示一条直线,其中,a、b、c为常数。通过locatePlanarObject函数计算出标识图像的四角坐标,然后用这4个点求出标识图像的边缘所在直线。具体计算方法如下:    将直线方程两点式:■=■化为标准式,得到:
 
2.6 图像转换与显示
    OpenCV使用的是RGB三通道图像,而ARToolkit使用的是RGBA四通道图像。因此需要将RGB图像转换为RGBA图像后,才可以使用ARToolkit中的相关函数显示。具体操作方法:先用cvSplit函数将图片分成R、G、B三个通道,再创建一个A通道,通过cvMerge将它们合并起来转换成RGBA图像,然后调用argDispImage函数显示这个图像。
2.7 叠加模型
    OpenGL函数库的工作主要是叠加模型。用OpenGL加载模型之前需要用argConvGlpara函数将ARToolkit的转换矩阵变成OpenGL能够使用的形式。加载模型之后,需要用argSwapBuffers函数将缓冲区的图像显示到屏幕上面。
3 实例测试
    依据本文设计方法为到法国旅游的中国人设计了一个图文解说增强现实功能软件。当游客用摄像头拍摄如图2所示的法国名画时,系统会在拍摄画面的周围自动实时叠加与该名画相关的中文解说信息,实现虚实叠加,让游客对名画有更详细的了解。经过测试,系统应用功能稳定,准确完成位置正确的图形叠加,实现图文解说增强现实功能,如图3所示。

    本文提出一种基于SURF算法和ARToolkit的图文解说增强现实应用方法,不仅丰富了增强现实技术的应用方向,而且对旅游产业的自动图文解说技术发展具有应用推广意义。但研究只是做了一些基本的探索,要真正实现针对游客的图文解说应用,还需解决程序移植Android系统、视联网搜索等问题。相信在科研人员不断的努力下,这样的功能一定可以得到更好的实现和应用。
参考文献
[1] 沈克,彭太乐.基于SURF的增强现实标识物跟踪注册[J]. 计算机工程, 2010,36(13):254-256.
[2] CRYSTIAN W M, LIMA L J P, TEICHRIEB V, et al. Geometric modifications applied to real elements in augmented reality[C].2011 13th Symposium on Virtual Reality, SVR 2011, 2011:96-101.
[3] FANG H C,ONG S K,NEE A Y C.Interactive robot trajectory planning and simulation using Augmented Reality[J].Robotics and Computer-Integrated Manufacturing,2011,2(28):227-237.
[4] SEUNG P J. AR-Room: a rapid prototyping framework for augmented reality applications[J]. Multimedia Tools and Applications,2011,3(55):725-746.
[5] 黎松,平西建,丁益洪. 开放源代码的计算机视觉类库OpenCv的应用[J].计算机应用与软件, 2005,22(8):134-136.
[6] 刘奇, 何明一.基于SURF特征匹配的图像拼接算法[J]. 测控技术,2010,29(10):27-31.
[7] 刘秀坤,郭贵洲.基于ARToolKit的户外增强现实系统的设计和实现[J].测绘科学, 2009(34):164-165,185.
[8] 常勇, 薛立明. 基于改进的ARToolKit的户外增强现实系统构建研究[J].系统仿真学报,2009(08):2273-2276.

继续阅读>>