论文部分内容阅读
摘要:增强现实是一门近几年发展越来越火热的技术,Windows 8平台是微软发布的最新的操作系统。目前尚未出现一款增强现实的SDK支持Windows 8应用商店应用开发,给有关开发者带来了较大的困难,本文将对Windows 8平台上增强现实解决方案做探究,介绍有关技术实现思路。
关键词:增强现实;Windows 8;ARToolkit
中图分类号:TP317
Windows 8是由微软公司于2012年10月26日正式推出开,具有革命性变化的操作系统。系统独特的metro开始界面和触控式交互系统,旨在让人们的日常电脑操作更加简单和快捷,为人们提供高效易行的工作环境。Windows应用商店帮助开发人员将自己的应用程序销售到全球各地,是一个用户数量与日俱增的开发平台。
增强现实技术定义为:将虚拟三维模型动画、视频、文字、图片等数字信息实时叠加显示到真实场景中,并与现实物体或者使用者实现自然互动的创新的人机交互技术。对于开发一个AR程序来说,最困难的部分在于实时的将虚拟图像覆盖到用户视口,并且和真实世界中的对象精确对齐。ARToolKit它是一个C/C++语言编写的库,通过它可以让我们很容易的编写增强现实应用程序。但ARToolkit并没有提供对Windows 8应用商店应用开发的支持。
本文将基于ARToolkit提供一套具体可行的Windows 8应用商店增强现实应用开发解决方案。
1ARToolkit简介及原理分析
1.1ARTOOLKIT简介
ARToolKit它是一个C/C++语言编写的库,通过它可以让我们很容易的编写增强现实应用程序。增强现实(AR)是将电脑虚拟的图像覆盖到真实世界画面中,这个技术在工业和理论研究方面都存在着极大的潜能。
对于开发一个AR程序来说,最困难的部分在于实时的将虚拟图像覆盖到用户视口,并且和真实世界中的对象精确对齐。ARToolKit使用电脑图像技术计算摄像机和标记卡之间的相对位置,从而使程序员能够将他们的虚拟对象覆盖到标记卡上面。ARToolKit提供的快速和准确的标记跟踪,能够让你快速的开发出许多更新更有趣的AR程序。
1.2平台支持
ARToolKit目前支持以下操作系统:
SGI IRIX、PC Linux、Mac OS X、PC Windows (95/98/NT/2000/XP)
1.3Artoolkit的工作原理分析
ARToolkit具有规范合理的工作流程,以下的几个步骤是使用ARToolkit实现增强现实的主要流程:
初始化 1.初始化视频抓取,读取标志物模式文件和摄像头参数文件
主循环 2.抓取视频中的一帧
3.在抓出的视频帧中检测标识物的位置并识别出标志物类型
4.根据检测到的标志物位置计算摄像机转换相对参数
5.在检测到的标志物上绘制虚拟物体
关闭 6.关闭视频抓取流程
步骤二到步骤五在程序退出之前会一直循环,步骤一和步骤六则只负责程序的初始化和关闭。在这些步骤中,同时会对鼠标键盘等事件做出处理。
2Windows 8平台增强现实解决方案分析
假如想在Windows 8平台的下开发增强现实类的应用商店程序,可以选择移植ARToolkit到其平台下。下面我们根据ARToolkit中的几个主要函数为线索来依次探讨windows 8下开发增强现实类应用解决方案的流程。
2.1Main
此函数为ARToolkit中最为重要的入口函数,依次顺序执行init,arVideoCapStart,argMainLoop函数,其中init函数中包含初始化视频抓取,读取标志物模式文件和摄像头参数文件,初始化渲染窗口的代码。arVideoCapStart函数开始了视频抓取的流程。argMainLoop函数则开始了程序的主循环。
开发Windows 8增强现实类应用程序时,程序的主函数应该也与此函数类似,先做初始化,然后开始视频的截取,然后进入增强现实的主循环。
2.2Init
Init函数在Main函数中被调用,主要实现初始化视频抓取,读取标志物模式文件和摄像头参数文件,初始化渲染窗口。
首先,需要通过调用arVideoOpen,arVideoInqSize,arParamLoad函数找到要处理的视频数据的路径和图像大小的数据。然后通过arParamChangeSize函数将参数转换为符合现在图片大小的值。值此摄像头参数的初始化完毕。然后程序通过调用arLoadPatt函数读入指定的标志物模式文件的信息。最后调用argInit函数,图形化的窗口被打开。
在Windows 8系统环境下,同样需要通过读取配置文件中的视频以及摄像头参数信息,并确定增强现实标志物的类别,将各项参数设置正确。与ARToolkit不同的是,此时并不可以开启一个图形化的窗口来进行显示,因为Windows 8应用商店应用并不存在“窗口”的概念,解决方法是在画布上使用DirectX采用逐帧渲染的方法渲染出所抓取到的摄像头摄入的内容。
2.3MainLoop
这是增强现实的主循环函数,为程序的最核心部分。
首先,arVideoGetImage将实现视频中某一帧的抓取。然后调用arDetectMarker方法用来在视频图像中检测是否存在轮廓为正方形的物体,假如没有则直接执行cleanup函数并且退出本次循环。假如检测到此类物体,将继续执行arVideoCapNext函数开始下一帧图像的截取,并且源程序通过循环把此方形物体与所有标志物做模版匹配来判断标志物的种类。匹配成功后会调用arGetTransMatfunction函数来得到标志物到摄像机的转换的矩阵参数。最后,虚拟的物体通过调用draw函数被绘制在屏幕上。
主循环中最核心的部分是标志物空间方位的检测,在Windows 8应用程序移植的过程中,在取得每一帧图像信息后,需要做以下处理来确定标志物的空间方位并计算转置矩阵,首先将采集到的一帧彩色图像转换成一幅二值的(黑白)的图像(灰阶二元化),然后对该二值图像进行连通域分析,找出其中所有的四边形区域作为候选匹配区域,将每一候选区域与模板库中的模板进行匹配,如果产生匹配,则利用该标识区域的变形来计算摄像机相对于已知标识的位置和姿态,从而计算出转置矩阵。最后在在正确的方位调用draw函数完成绘制。
2.4Draw
在draw函数中,最为重要的是opengl绘制矩阵参数的转变,其中首先需要将mainLoop函数中的patt_trans转换为opengl格式的参数gl_para。然后使用glLoadMatrixd函数加载进入其中。
在Windows 8中开发,只需将使用OpenGL的部分改为使用DirectX即可。
2.5Cleanup
Cleanup函数主要进行视频截取的暂停和内存的释放。
在Windows 8中同样进行内存的释放即可。
3结束语
本文主要对ARToolkit原理进行了分析,对其工作流程做了阐述,并且提出了在windows 8平台下移植此框架实现增强现实类应用的解决方案进行了探讨,提出了一套解决方案思路。希望本文可以为在Windows 8平台下开发增强现实类应用程序的工作者带来帮助。
参考文献:
[1]刘秀坤.基于ARToolkit的增强现实系统的设计与实现[D].湖北:湖北省地图院.
[2]盛君.基于标识的增强现实系统的研究[D].浙江:杭州电子科技大学.
[3]孔祥.基于移动平台增强现实系统的研究[D].西安:西安电子科技大学.
关键词:增强现实;Windows 8;ARToolkit
中图分类号:TP317
Windows 8是由微软公司于2012年10月26日正式推出开,具有革命性变化的操作系统。系统独特的metro开始界面和触控式交互系统,旨在让人们的日常电脑操作更加简单和快捷,为人们提供高效易行的工作环境。Windows应用商店帮助开发人员将自己的应用程序销售到全球各地,是一个用户数量与日俱增的开发平台。
增强现实技术定义为:将虚拟三维模型动画、视频、文字、图片等数字信息实时叠加显示到真实场景中,并与现实物体或者使用者实现自然互动的创新的人机交互技术。对于开发一个AR程序来说,最困难的部分在于实时的将虚拟图像覆盖到用户视口,并且和真实世界中的对象精确对齐。ARToolKit它是一个C/C++语言编写的库,通过它可以让我们很容易的编写增强现实应用程序。但ARToolkit并没有提供对Windows 8应用商店应用开发的支持。
本文将基于ARToolkit提供一套具体可行的Windows 8应用商店增强现实应用开发解决方案。
1ARToolkit简介及原理分析
1.1ARTOOLKIT简介
ARToolKit它是一个C/C++语言编写的库,通过它可以让我们很容易的编写增强现实应用程序。增强现实(AR)是将电脑虚拟的图像覆盖到真实世界画面中,这个技术在工业和理论研究方面都存在着极大的潜能。
对于开发一个AR程序来说,最困难的部分在于实时的将虚拟图像覆盖到用户视口,并且和真实世界中的对象精确对齐。ARToolKit使用电脑图像技术计算摄像机和标记卡之间的相对位置,从而使程序员能够将他们的虚拟对象覆盖到标记卡上面。ARToolKit提供的快速和准确的标记跟踪,能够让你快速的开发出许多更新更有趣的AR程序。
1.2平台支持
ARToolKit目前支持以下操作系统:
SGI IRIX、PC Linux、Mac OS X、PC Windows (95/98/NT/2000/XP)
1.3Artoolkit的工作原理分析
ARToolkit具有规范合理的工作流程,以下的几个步骤是使用ARToolkit实现增强现实的主要流程:
初始化 1.初始化视频抓取,读取标志物模式文件和摄像头参数文件
主循环 2.抓取视频中的一帧
3.在抓出的视频帧中检测标识物的位置并识别出标志物类型
4.根据检测到的标志物位置计算摄像机转换相对参数
5.在检测到的标志物上绘制虚拟物体
关闭 6.关闭视频抓取流程
步骤二到步骤五在程序退出之前会一直循环,步骤一和步骤六则只负责程序的初始化和关闭。在这些步骤中,同时会对鼠标键盘等事件做出处理。
2Windows 8平台增强现实解决方案分析
假如想在Windows 8平台的下开发增强现实类的应用商店程序,可以选择移植ARToolkit到其平台下。下面我们根据ARToolkit中的几个主要函数为线索来依次探讨windows 8下开发增强现实类应用解决方案的流程。
2.1Main
此函数为ARToolkit中最为重要的入口函数,依次顺序执行init,arVideoCapStart,argMainLoop函数,其中init函数中包含初始化视频抓取,读取标志物模式文件和摄像头参数文件,初始化渲染窗口的代码。arVideoCapStart函数开始了视频抓取的流程。argMainLoop函数则开始了程序的主循环。
开发Windows 8增强现实类应用程序时,程序的主函数应该也与此函数类似,先做初始化,然后开始视频的截取,然后进入增强现实的主循环。
2.2Init
Init函数在Main函数中被调用,主要实现初始化视频抓取,读取标志物模式文件和摄像头参数文件,初始化渲染窗口。
首先,需要通过调用arVideoOpen,arVideoInqSize,arParamLoad函数找到要处理的视频数据的路径和图像大小的数据。然后通过arParamChangeSize函数将参数转换为符合现在图片大小的值。值此摄像头参数的初始化完毕。然后程序通过调用arLoadPatt函数读入指定的标志物模式文件的信息。最后调用argInit函数,图形化的窗口被打开。
在Windows 8系统环境下,同样需要通过读取配置文件中的视频以及摄像头参数信息,并确定增强现实标志物的类别,将各项参数设置正确。与ARToolkit不同的是,此时并不可以开启一个图形化的窗口来进行显示,因为Windows 8应用商店应用并不存在“窗口”的概念,解决方法是在画布上使用DirectX采用逐帧渲染的方法渲染出所抓取到的摄像头摄入的内容。
2.3MainLoop
这是增强现实的主循环函数,为程序的最核心部分。
首先,arVideoGetImage将实现视频中某一帧的抓取。然后调用arDetectMarker方法用来在视频图像中检测是否存在轮廓为正方形的物体,假如没有则直接执行cleanup函数并且退出本次循环。假如检测到此类物体,将继续执行arVideoCapNext函数开始下一帧图像的截取,并且源程序通过循环把此方形物体与所有标志物做模版匹配来判断标志物的种类。匹配成功后会调用arGetTransMatfunction函数来得到标志物到摄像机的转换的矩阵参数。最后,虚拟的物体通过调用draw函数被绘制在屏幕上。
主循环中最核心的部分是标志物空间方位的检测,在Windows 8应用程序移植的过程中,在取得每一帧图像信息后,需要做以下处理来确定标志物的空间方位并计算转置矩阵,首先将采集到的一帧彩色图像转换成一幅二值的(黑白)的图像(灰阶二元化),然后对该二值图像进行连通域分析,找出其中所有的四边形区域作为候选匹配区域,将每一候选区域与模板库中的模板进行匹配,如果产生匹配,则利用该标识区域的变形来计算摄像机相对于已知标识的位置和姿态,从而计算出转置矩阵。最后在在正确的方位调用draw函数完成绘制。
2.4Draw
在draw函数中,最为重要的是opengl绘制矩阵参数的转变,其中首先需要将mainLoop函数中的patt_trans转换为opengl格式的参数gl_para。然后使用glLoadMatrixd函数加载进入其中。
在Windows 8中开发,只需将使用OpenGL的部分改为使用DirectX即可。
2.5Cleanup
Cleanup函数主要进行视频截取的暂停和内存的释放。
在Windows 8中同样进行内存的释放即可。
3结束语
本文主要对ARToolkit原理进行了分析,对其工作流程做了阐述,并且提出了在windows 8平台下移植此框架实现增强现实类应用的解决方案进行了探讨,提出了一套解决方案思路。希望本文可以为在Windows 8平台下开发增强现实类应用程序的工作者带来帮助。
参考文献:
[1]刘秀坤.基于ARToolkit的增强现实系统的设计与实现[D].湖北:湖北省地图院.
[2]盛君.基于标识的增强现实系统的研究[D].浙江:杭州电子科技大学.
[3]孔祥.基于移动平台增强现实系统的研究[D].西安:西安电子科技大学.