计算机工程
COMPUTER ENGINEERING
1999年  第25卷 第7期 Vol.25 No.5 1999



虚拟实景空间系统HVS的研究与实现
张茂军 钟力 孙立峰 李云浩 胡晓峰
摘要 虚拟实景空间系统HVS由计算机自动拼接、变形与组织许多幅离散的实景图象或连续的视频，生成虚拟空间。这种虚拟空间具有照片质量的视觉效果，称为虚拟实景空间。虚拟实景空间能为用户提供前进、后退、仰视、俯视、360度环境、近看、远看等漫游能力，可运行于PC平台。HVS是虚拟实景空间的生成与漫游平台。将介绍它的模型、组成与实现。
关键词 虚拟现实 虚拟实景空间 图象处理 虚拟空间
HVA：A Virtual Reality System Based on the Real-world Image
Zhang Maojun Zhong Li Sun Lifeng Li Yunhao
Dept.7 of National University of Defense Technology Changsha 410073
Hu Xiaofeng
Center of Electronic Teaching.National Universtiy of Defense Beijing 100091
Abstract：HVS uses panoramic video and multivision technology to construct a photo-quality virtual realiy system.Panoramic video is based on 360 degree panorama of real world scene,captured by the normal camer.Multivision provides an approach of information organization.It makes use of many panoramic videos to build a navigable virtual information space.Users can browse and immerse in this virtual information space.HVS was developed on personal computers.This papersummarizes the spatial model and implementation of HVS.
Key words：Virtual reality;Virtual real-image space;Image processing;virtual space
　　虚拟现实技术能生成一个可操纵的虚拟环境，用户通过接口设备(如三维鼠标)可以"进入"到该环境，并与之交互，使用户观察到的虚拟场景随着他的观察点和观察方向的变化而变化。采用计算机图形技术是构造这样的虚拟环境的方法之一。首先对真实世界进行抽象，从而建立起它的三维几何模型，一般用多边形表示。在给定观察点和观察方向以后，利用计算机由模型实现多边形、着色、消隐、光照以及投影等一系列绘制过程，产生虚拟场景。但这种方法存在以下的问题：一是对计算机的性能要求高。目前最快的图形工作站每秒钟绘制标准三维多边形的数目在百万数量级，而构造一些复杂场景往往需要数亿个标准三维多边形。为了能满足虚拟环境的实时性要求，只能减轻场景的复杂度，降低虚拟场景的视觉效果。二是对复杂场景来说，建模工作相当费时费力。而基于实景图象的虚拟现实系统恰好能解决这些问题。
　　在虚拟实景空间系统HVS中，虚拟场景是按以下步骤生成的：首先利用采集的离散图象或连续的视频作为基础数据，经过处理形成360度柱面全景图象。然后，通过合适的空间模型把多幅全景图象组织为虚拟实景空间。用户在这个空间中可以前进、后退、360度环视、仰视、俯视、近看、远看等，就像进入到一个实际的空间一样。虚拟实景空间具有如下的优点：
　　·不需要硬件加速就能在PC机上实时运行。
　　·不依赖于特殊的设备，如头盔显示器等。
　　·能显示高质量图象，且处理时间与场景复杂度无关。
　　早在1980年，MIT媒体实验室开发成功Aspen Movie Map项目，用户可以"浏览"模拟视盘中存储的Aspen各个街道。虽然受当时技术条件的限制，采用的是模拟技术，但其思想却是新颖、超前的。到了90年代，基于实景图象和视频建立虚拟环境在国际上成为十分热门的研究课题。单视点描述的系统像"QuickTime VR"和"Surrounding Video"，先后已经用于旅游、多媒体光盘出版等很多方面。在军事上，也有人将卫星拍摄的侦察图象加工成可以快速观察的空间图象。在1997年美国发射的火星探路者往地球发回了大量的实景照片，为了方便广大爱好者观察，这些照片很快便在网络上出现。在图象处理领域，Image based rendering已经成为十分重要的研究方向。基于实景图象的方法建立虚拟空间具有快速、简单、逼真等独特的优点，正在为越来越多的应用采纳。值得说明的是，这种技术和基于图形的虚拟环境不是一种取代关系，而是一种互补的关系。
　　但目前，这些方法大都是单视点空间，多视点组成的虚拟实景空间尚未看到。虚拟实景空间系统HVS瞄准国际上该领域的最新发展趋势，几年前便开始力图用多视点的方法实现用实景图象建立虚拟空间的设想，将其应用到军事侦察、大型建筑和武器装备空间观察、旅游空间的观察等方面，并于近期内开发成功。作为一个实用的系统，HVS在虚拟实景空间模型以及在空间中对信息组织方法等方面具有独创性。
1　HVS空间模型
1.1　视点空间
　　定义1 视点 是指用户某一时刻在虚拟实景空间中的观察点，观察时所用的焦距固定。
　　定义2 视点空间 某一视点处用户所观察到的场景。
　　在视点空间的定义中，只限定了视点的位置，对观察方向未作任何限定。也就是说，视点空间应包含任意观察方向上用户所看到的全局场景。我们知道，普通图象反映的往往是局部场景(用户在某一视角看到的场景)，称为局部图象。能反映全局场景的图象称为全景图象(Panaromic Image)。全景图象是视点空间合适的描述形式之一。
　　存在几种全景图象：一种是球面全景图象，一种是多面体全景图象，还有一种是最常用的柱面全景图象，如图1。它们分别把视点空间看作是球体、多面体与圆柱体。球面全景与多面体全景均可反映空间中任意方向的场景，处理它们的难度比较大。柱面全景实际上是它们的简化形式，如图2。柱面全景没有顶盖与底盖两部分场景，限制了用户在垂直方向的观察角度，但在水平方向是360度视角，满足大部分应用的需要，而柱面全景处理起来比球面全景与多面体全景简单得多，因而应用面比较广。HVS也是采用柱面全景图象来反映视点空间的。

图1 立方体全景图图象、球面全景图象和柱面全景图象

图2 柱面全景图象概念图
1.2　虚拟实景空间
　　单个的视点空间反映的是一个三维点空间，而一个虚拟现实系统往往需要建立起一个N维的虚拟空间。N维虚拟空间应具备什么样的特性呢？我们认为：首先，N维虚拟空间应能反映现实世界的三维空间。当然，这样的空间不仅仅是点空间。在点空间内，用户只能靠改变视角来观察不同的场景。N维虚拟空间应支持用户通过改变空间位置来观察不同的场景。其次，N维虚拟空间还应能反映虚拟空间在时间上的变化，如白天与黑夜的变化、风景名胜随季节的变化等。除此之外，还考虑了一种特殊的情况：在虚拟空间中，视点间的变换也许不仅仅局限于物理时空，比如用HVS构建一栋虚拟的教学大楼，这栋虚拟大楼基本上是按大楼的原貌建的，只是有一间房间是虚拟的美国总统克林顿办公室。在这样的虚拟大楼内参观，观众将会沉浸到大楼中，但也会突然进入到克林顿的办公室。这便给观众一种跨越时空的感觉。而超越于现实时空又恰恰是虚拟现实系统的特性之一。为此，需要给N维虚拟空间增加"虚化"的能力。
1.3　空间操纵
　　建立虚拟空间的目的是为了让用户可以通过一定的手段漫游于其中。从这个意义上说，漫游的过程实质上便是操纵虚拟空间的过程。虚拟实景空间的操纵包括两部分：视点空间内操纵与视点空间间操纵。视点空间内操纵主要是操纵视角。由于用户任一时刻的视野不会大于180°，而全景图象是360°全视野，因而任一时刻，用户观察到的场景只是全景图象的一部分。通过视点空间内操纵，用户可以看到全景图象的其它部分。视点空间内操纵一般包括向左旋转(相当于用户向左看)、向右旋转(相当于用户向右看)、向上移动(相当于仰视)、向下移动(相当于俯视)4种。
　　视点空间间的操纵则建立在视点空间之间的关联上。比如视点空间VPS1与视点空间VPS2在空间位置上是相邻的(这种关联称为位置关联)，用户从视点空间VPS1过渡到空间VPS2，相当于用户从VPS1的位置行进到VPS2的位置，反之亦然。除了位置关联外，HVS实现的关联形式还有时间关联、虚化关联与焦距关联。
　　设视点空间VPS1与VPS2时间关联，那么这两个视点空间分别反映在同一个视点处不同时刻所看到的全景场景。
　　设视点空间VPS1与VPS2虚化关联，那么由VPS1可以过渡到VPS2，不包含任何物理时空的含义。
　　设视点空间VPS1与VPS2焦距关联，那么这两个视点空间分别反映在同一个视点处用户使用不同焦距所看到的全景图象。焦距关联可以理解为虚化关联的一种。
　　位置关联、时间关联、虚化关联与焦距关联分别赋予了虚拟实景空间的4种不同的特性。由于有位置关联，用户可以在虚拟实景空间中前进与后退；由于有时间关联，用户在虚拟实景空间中可以体会到季节、朝暮等时间上的变化。由于有焦距关联，在虚拟实景空间中，用户可以近看，看得更仔细，或远看，看到整体。由于有虚化关联，虚拟实景空间能反映一些超现实的场景变化。
　　在HVS系统中，我们借助超媒体系统中的"链"来描述视点空间间的关联。依照关联的种类，链有"位置链"Lp、"时间链"Lt、"虚化链"Lv与"焦距链"Lf 4种。链是单向的，每一个关联实际上由两个链描述，如VPS1与VPS2之间的位置关联可以等价于链Lp1(V1，V2，Property(p1))和链LP2(V1，V2，Property(p2))。其中，p1与p2分别表示两个不同的视点，Property(p1)与Property(p2)为链的属性，分别表示从V1到V2与从V2到V1时空位置的变化值。
2　HVS系统组成与实现
　　HVS的功能可以归结为两点：一是生成虚拟实景空间，二是提供一定的手段使用户能在虚拟实景空间中漫游。HVS系统分为两部分：虚拟实景空间生成平台与虚拟实景空间浏览器。生成平台又分为全景图象生成器与可视化编辑器。前者负责把多幅相互间有少量重叠区域的普通图象或连续的视频拼接为全景图象。把众多的全景图象组织为虚拟实景空间的功能则是由可视化编辑器实现的，编辑过程可视化，便于操作。生成虚拟实景空间的过程如图3所示。

图3 虚拟实景空间生成流程
2.1　全景图象生成器
　　柱面全景图象可以由照相机或摄象机采集数据生成。将照相机或摄象机固定在可水平旋转的支架上，照相机或摄象机的镜头需位于支架的中心点。如果是照相机，转动照相机一周并隔一定角度拍照，把得到的相互间有一定接缝的一圈局部图象用于全景图象生成器的输入。如果采用摄象机生成全景图象，则把摄象机缓慢地绕中心点旋转一圈拍摄，得到的视频作为全景图象生成器的输入。
　　由连续视频拼接全景图象的快速算法已有研究成果[2]。在实际应用的过程中，发现摄象机视频图象分辨率较低，影响了HVS系统的视觉效果，特别是对于由家用型摄象机采集到的视频。所以倾向于用照相机采集HVS所需的原始数据，数码相机最合适。下面主要针对使用照相机的情况介绍全景图象生成器的实现。
　　由于局部图象Lii与Lij(i≠j)分别是在不同方向上拍下的图象，它们的投影平面存在一定的夹角。在拼接全景图象之前，必须把它们统一投影到某一柱面上，使得现实世界中相同的景物在不同的局部图象中是相同的。图4显示了柱面投影的一个实例，具体算法参见文献[6]。得到投影图象后，进行无缝拼接就能得到没有图象畸变的全景图象，如图5。

图4　柱面投影

图5　一幅全景图象
2.2　可视化编辑器
　　可视化编辑器是HVS系统的重要组成部分，它能把本来互不相干的全景图象组织成用户可任意漫游的虚拟实景空间。依据HVS空间模型，可视化编辑器主要负责生成各种链，赋予链属性等。为使用户在虚拟实景空间中漫游时不致迷失方向，HVS可视化编辑器中引入了"导航图"。导航图相当于虚拟实景空间的一幅地图，虚拟实景空间中各个视点的位置以及用户当前的位置等均动态绘制在导航图中。在漫游时，用户可随时查看导航图。
　　在HVS中，一幅柱面全景图象的分辨率是4096×600，24位真彩色，其数据量是7.2Mb，而一个虚拟实景空间的全景图象一般都有成百上千幅。很显然，如此巨大的数据量既增加了系统管理的难度，也造成了不必要的存储资源浪费，所以，进行图象压缩势在必行。
　　HVS系统采用标准的JPEG算法对全景图象进行压缩，但在具体操作上，是把全景图象垂直分块，分成大小相等的一系列子图，例如每块为64×600。在压缩时，对每个子图分别进行压缩，然后依次存放在文件中，并在文件头添加一个子图索引，以便随机访问。考虑到各个子图是按照同一标准压缩，所以它们可共用同一套码表(包括huffman码表和量化表)，以提高压缩效率。子图的最优宽度受CPU速度、硬盘速度以及JPEG算法本身的影响。因为JPEG标准是按8×8作DCT变换的，因此子图宽度是8的倍数比较好。实践证明，64象素宽的子图对HVS的实时解压浏览最合适。
2.3　浏览器
　　浏览器是提供给最终用户漫游虚拟实景空间时使用的。运行浏览器，打开HVS空间文件后，用户首先看到的是导航图。在导航图中任意位置处指点鼠标按钮，便可以进入到相应位置的视点空间中。在虚拟实景空间中，用户可以用键盘、鼠标与游戏操纵杆控制漫游方向，穿行于各个视点空间中。当用户向左看时，全景图象向右移动。当用户向右看时，全景图象向左移动。当用户俯视时，全景图象向上移动。当用户仰视时，全景图象向下移动。点一下近看的图标，焦距大的全景图象被逐步显示出来。点远看的图标时，焦距小的全景图象被逐步显示。点一下前进的图标时，系统将平滑过渡到下一个视点空间。
　　为使用户看到的场景是连续平滑的，浏览器需要解决一些关键技术。首先是全景图象数据预调技术。由于整幅全景图象数据量比较大，而且浏览器一次只显示全景图象的一部分。因此，HVS浏览器进入到一个视点空间时，没有把整幅全景图象一次性调入内存中，而是只调入可见部分解压显示在屏幕窗口。但考虑到用户可能需要左右移动全景图象，HVS浏览器提出了"双向流缓冲机制"[5]，预调恰当的全景图象解压缓存在内存中。
　　其二，在漫游虚拟实景空间时，用户的前进与后退、近看与远看等涉及到下一个视点空间的显示。用户可能到达的下一个视点空间数目由当前视点空间的链决定。若把这些视点空间都预调到内存中，显然会降低系统实时性能，并占用大量系统资源。所以HVS提出"状态相关的预测路径全景图象缓冲机制"[5]，预调恰当的视点空间到内存。
　　其三，当用户沿位置链从当前空间位置行进到另一个空间位置时，HVS浏览器需要解决把当前屏幕上的图象平滑过渡到另一幅图象的问题。如果浏览器只是简单地把当前图象切换为另一幅图象，是无法使用户产生在空间行进的感觉。为此，HVS系统提出了"纵平移图象平滑过渡技术"，该技术提供了两种技术解决方案：一是图象插值法[5,6]，即计算机由起始图象到终点图象，并结合其它信息实时地计算出中间帧，并依次显示在屏幕上；二是参考点法[5,6]，在采集全景图象时，便在相邻视点之间沿轴线采集多幅参考图象，如图6。参考图象不是柱面全景，它的图象分辨率由浏览器决定。如浏览器表现虚拟实景空间所用的窗口大小为800×500象素点，则参考图象的分辨率也是800×500，或稍大。在纵平移图象平滑过渡时，参考图象被作为中间帧依次显示。在实际应用过程中，两种方法可以任选，在起始与终点图象中各象素点景深变化不大时，用图象插值法可得到比较好的效果。否则，应考虑参考点法，或两种方法结合使用。

图6 纵平移参考平滑过渡法
3　结束语
　　虚拟实景空间系统已成为虚拟现实技术的一个重要的发展方向。我们在跟踪研究多年的基础上，最近开发成功HVS系统。本文介绍了HVS系统的空间模型，系统组成以及实现。今后，我们将对视点间过渡技术进行进一步研究。
作者简介：张茂军 男，28岁，博士，主要研究方向包括虚拟现实系统、多媒体通信、多媒体信息系统等
作者单位：张茂军　钟力　孙立峰　李云浩　国防科技大学七系 长沙 410073
　　　　　胡晓峰　国防大学电教中心 北京 100091
参考文献
1　胡晓峰，老松杨，张茂军.HVS：一个半现实全景图时空模型.小型微型计算机系统，1994，15(12)：13-18
2　张茂军，胡晓峰，库锡树.PanoVideo：摄象机运动建模以及从视频中估计摄象机运动参数的一种方法，中国图象图形学报，1997，2(8)：623-628
3　钟力，胡晓峰.全景视频的信息组织和实现方法.小型微型计算机系统，1996，17(12)：1-5
4　钟力，胡晓峰，孙立峰.全景视频信息空间模型.小型微型计算机系统，1997，18(11)：31-35
5　张茂军.基于实景图象的虚拟现实系统HVS设计报告.长沙：国防科技大学七系，1998-06
6　钟力.虚拟实景空间研究与实现.长沙：国防科技大学七系博士论文，1998-09
7　Chen S E.QuickTime VR：An Image-Based Approach to Virtual Environment Navigation，Computer Graphics Proceed-ings.Annual Conference Series，1995：29-38
收稿日期：1998-08-03
