增强现实技术[1](AugmentedReality,简称AR技术)将计算机产生的虚拟对象放置到反映真实世界的场景空间中,对真实世界起到补充、增强的作用。AR技术有着广阔的应用前景,是虚拟现实技术(VirtualReali-ty)领域日益重要的一个分支。AR技术可以应用在工业、军事、娱乐、医疗、教育等领域。AR系统的实现可以采用多种语言和开发平台,目前存在许多AR开发工具包和框架,如ARToolKit,Coin3D,MRPlatform,Studierstube框架,DWARF框架等,这些工具和框架大部分基于c/c++语言,底层采用DriectX或者OpenGL,针对不同应用环境要求设计[2]。采用Java实现AR系统的优点主要是相对于c/c++,通过良好的垃圾回收机制和完全优雅的面向对象语言特征,极大的减小了开发难度,使开发者不需要了解很多的底层技术细节,能够将精力集中在应用逻辑上,同时自动获得高度的平台可移植性。但BruceEckel[3]指出作为解释语言,Java语言总是无法超过本地语言。最早的Java解释器运行程序比c程序要慢20到50倍。虽然当前JVM执行Java程序的性能已有了很大改进,但性能依然是一个较大问题。因此采用Java开发AR系统尤其是视频子系统,Java性能方面的缺点就必须予以克服。其中关键的一个组成部分是负责虚实显示的视频子系统(如图1所示)的实现。AR视频子系统的硬件随着具体应用环境的要求可以很大不同,大致可分为头盔显示器(Head-MountedDisplay)和普通计算机显示器两类[4],不同的显示硬件使得对应的软件设计也有很大不同。第17卷第3期图1AR系统视频子系统结构本文主要讨论以计算机显示器来作为AR系统(比如应用于机器人遥操作环境下的AR系统)显示硬件的视频子系统设计及实现。虚实显示的目的是显示来自真实场景的视频和在视频上绘制虚拟物体。如果虚实显示性能较差则会影响整个AR系统的表现,所以视频子系统是影响AR系统性能的一个关键部分。本文所实现的视频子系统测得的实验数据是在Core双核e2160,2G内存的机器上测得,软件运行平台是JRE1.5,开发工具是EcllipseEuropa。1视频子系统的结构设计视频子系统的静态类结构如图2所示:首先,应用设计模式中的桥接模式(BridgePat-tern)[78]将视频帧来源抽象为视频帧源(以下简称帧源),由抽象类型FrameSource定义。帧源的功能在于不断的产生视频帧(Image对象表示),而FrameSource的实体子类通过继承实现实际的帧源功能。比如CameraSource实现本机摄像头视频帧源,NetVideoSource实现网络传输来视频帧源。通过这样的桥接模式隔离了实际帧源对其他部分的影响,未来还可以加入其他类型的帧源而不会影响系统其他部分,从而实现系统的高度可扩展性。FrameSource类型关联FrameDisplay类型,FrameDisplay实现视频显示和虚拟物体绘制。每当FrameSource获得一幅视频帧,就把该帧交给FrameDisplay进行显示。FrameSource通过这样的过程驱动FrameDisplay进行视频显示。FrameDisplay负责实现显示视频和绘制虚拟物体,其内部分别由FrameDrawer,ModelDrawer两个内部类型来实现其功能。当FrameSource获得并输出一幅图像帧时,该幅图像帧首先进行预处理,主要是进行大小缩放和图像格式转换。2视频子系统的实现2.1真实场景视频的显示Java中实现视频播
java 增强现实_基于Java的增强现实视频子系统的设计和实现
最新推荐文章于 2021-03-03 18:01:28 发布