一种基于多边形柱面全景图的虚拟漫游新方法

2012-09-25 02:59王海颍秦开怀
图学学报 2012年1期
关键词:柱面全景图视点

王海颍, 秦开怀

(1. 中国电子信息产业发展研究院,北京 100048;2. 清华大学计算机系,北京 100084)

一种基于多边形柱面全景图的虚拟漫游新方法

王海颍1, 秦开怀2

(1. 中国电子信息产业发展研究院,北京 100048;2. 清华大学计算机系,北京 100084)

提出了一种基于图像绘制的多边形柱面全景图的虚拟漫游方法。利用普通的手持相机在一个多边形区域内沿某一路径拍摄并拼接多幅全景图,通过基于SIFT的特征点检测来计算深度,用狭缝图像插值来实现整个区域内的平滑漫游。该方法具有采样简单、虚拟场景真实感强,支持连续大范围漫游的特点。

虚拟漫游;基于图像的绘制;全景图;狭缝图像

随着三维图形图像的绘制(Image-Based Rendering, IBR)技术的发展,虚拟现实(Virtual Reality, VR)技术已经被越来越广泛地应用,它可以用于虚拟旅游和娱乐,例如著名旅游景点和博物馆的虚拟游览;也可以用于虚拟训练,例如飞机和车辆驾驶,以及虚拟战场仿真等;另外还可以用于医疗领域和虚拟建筑漫游,等等。基于图像的绘制是指利用一组预先得到的真实图像进行适当的处理或组合,完成复杂三维场景的真实再现[1]。由于基于图像的虚拟现实系统具有场景逼真、交互方便、无需特殊硬件等优点,因此具有广阔的应用前景。

目前,随着基于图像的虚拟现实技术研究的不断深入,已经出现了一些相关的软件系统,其中最有代表性的是Apple公司的QuickTime VR系统[2],它采用环幕电影映像和全景图完成摄像机的旋转,并实现了一个全景开发环境,但是漫游显示只限于绕固定位置(视点)的俯、仰和水平旋转。同心拼图[3]通过以同心圆切线方向的数据组织将无遮挡同心圆区域的光流场简化为3D。全光拼图[4]可以看做是同心拼图的推广,它在一个没有障碍物的空间用全方位摄像机沿着构成规则网格的路径进行图像捕获,然后通过网络上前、后两个摄像机捕获到的参考图像来生成网格内新视点下的图像,这些方法都需要比较复杂的设备条件并有一定的场景限制。

本文提出一种新的多边形柱面全景图漫游方法,使用普通的手持相机沿着一个路径或区域拍摄并拼接多幅全景图,利用 SIFT特征点计算相对深度并使用一种简单有效的方法渲染出新视点下的视野图,实现在采集路径和区域内的平滑漫游。本文各节内容组织如下:第1节介绍多边形柱面全景图的采集方法,第 2节介绍利用SIFT算子进行特征点检测从而得到狭缝深度图的方法,第3节介绍多基于多边形柱面全景图的渲染方法,包括视平面上各像素的计算和利用狭缝图像进行的插值处理,最后是实验结果和讨论。

1 图像采集和配准

在场景的虚拟漫游过程中,为了让用户能够在水平方向上任意移动,我们在一个多边形区域上的多个视点采集全景图,按照一定的规则排列并储存,我们称之为“多边形柱面全景图”。对于一条马路,我们可以用图1中(a)的采集方法来获取路两旁的图像数据,图中圆圈中心为采集点,以此中心旋转360º拍摄一定数量的带有重合区域的图像;对一个更大区域(比如大型广场)进行采样,可以沿着如图1(b)所示的一个多边形路径拍摄/采集多个全景图像,实际上,对于这种路径的采集,在每一点上可以只采集区域外侧的180º或者 270º全景图,便可满足观察视点在这一方形区域内漫游的要求。

图像采集工作完成以后,我们采用一种基于全局优化调整的方法[5]对每一点采集的图像进行配准和融合,生成在这个视点下的首尾无缝连接的360º柱面全景图,然后对每一个采集点的图像都进行同样的处理并存储,我们就得到了这一区域的多边形柱面全景图。在漫游时,我们需要找出任一条光线对应于多边形柱面全景图中的哪一个(或哪几个)全景图,以及这条光线在对应全景图上的位置,这也就是下面要讨论的具体渲染算法。

图1 多边形柱面全景图采集位置示意图

2 狭缝全景图像的构造

狭缝图像是一种宽度只有一个像素的一列图像。由于模拟人的运动时,视点主要在一个二维平面上运动,图像在水平方向上的变化速度要快于垂直方向上的变化速度,此外人眼对水平方向的图像变化也远远要比垂直方向变化敏感,所以作为一种简化,把垂直方向的一列像素结合在一起考虑,这就是狭缝图像(slit images)。狭缝图像在许多IBR系统如同心拼图[3]、多投影中心图像(MCOP)[6]中得到应用。

如果将全景图中的一列或几列像素视为狭缝图像,并加上统一的深度信息,这样的全景图就称为深度狭缝图像全景拼图。与没有深度概念的传统全景图不同,由于深度狭缝图像本身是对场景的一种近似表示,对深度的精度要求并不太高,因此我们可以将某些特征点的深度扩充为整个狭缝区域的深度,并将相邻区域间的深度进行线性插值,这样就将全景拼图中的每一条狭缝图像都赋予一个整体深度,使整个拼图由一组深度不等的“颜色柱”组成,如图2所示。

图2 深度狭缝图像全景拼图(下方的灰度条表示对应狭缝图像的深度)

2.1 图像深度提取

由于多边形柱面全景图的引入,使得深度提取成为可能。对于同一个物体,在不同的两张全景图上,它们的位置应该是不同的。根据这个位置关系,就能够确定出物体的相对深度。图3表示了这样的情况,图中点P代表一个物体,它同时位于C1处和C2处所采集的全景图中。假设我们可以在两张全景图C1和C2上找到该点的对应位置,我们就能够计算出它们对应的角度1θ和2θ。设P点深度为H,则有

其中,是拍摄这两处全景图位置之间的距离。由上式,根据P点在全景图C1和C2上的对应位置就可以计算出P点的深度H。

2.2 基于SIFT的特征提取

计算相应图像位置的深度时,需要先找到两幅图像的对应点,这里我们采用SIFT算法来提取特征点[7]。图 4显示了SIFT的特征提取步骤。由SIFT方法提取的两幅图像中对应的特征点,我们可以通过上节的计算方法算出相应点的相对深度。为简化起见,我们再按照特征点的分布,将全景图分割成相应宽度的狭缝图像,各条狭缝图像的整体深度就是所含特征点的深度,并把这个深度信息存储下来以供今后的计算使用。至此,图像预处理工作就结束了,我们得到了带有场景深度的多边形柱面全景图数据。图5给出了两个不同视点图像下SIFT特征提取和对应点匹配的例子。

图3 根据对应点位置计算场景中物体深度

图4 SIFT特征提取步骤

3 实时漫游的渲染

在传统基于图像的漫游中,为了克服只能在固定视点观察的缺陷,常使用多个柱面全景图进行场景浏览[8]。但是这种情况下全景图之间没有过渡关系,观察者只能从一个视点“跳”到另一个视点进行浏览。因此,我们基于在固定视点采集拼接的全景图像,通过深度计算和狭缝图像插值的方法来合成漫游区域内任意视点的视野图像,从而支持一定范围内的场景平滑漫游。

3.1 任意视点漫游的计算

当漫游视点在如图6(a)所示的位置时,可以由相邻的两幅全景图上相应的点得到视平面上每一像素的颜色值。通过上一节介绍的多边形柱面全景图深度狭缝图像的计算,已经得到了全景图上任意一点的深度值Z,因此我们可以通过如图6(b)所示的几何关系求出新视点下视平面上每一点的像素颜色值,具体的计算步骤如下:

图5 不同全景图上对应点的匹配

图6 任意点像素深度计算示意图

1) 把视平面坐标转换成世界坐标系(XYZ)下的坐标值:假设最终生成的视平面图像(图6中蓝色直线是该平面在xy平面上的投影)大小为W×H,对于视平面上的任意一点,设其坐标为(w,h)。注意,这个坐标是相对于视平面的,我们需要把它转化为图中的XYZ坐标系下的坐标。我们首先求出视平面在XY平面上的投影中点的坐标(Xf,Yf,Zf)

其中,f为焦距,即视点到视平面的距离,θ为视线与水平方向的夹角。

则视平面上坐标为(w,h)的点(如图6中粉红色点)在XYZ坐标系下的坐标为

2) 找出视平面上该点在物体平面的对应位置:由上节深度狭缝图像的获取原理可知,各个物体的深度可以看作一个分段函数(如图6(b)中蓝灰色分段平面)。因此,我们从视点向视平面上的这个点发出一条射线,可以计算出这个射线与分段平面的交点。

至此,我们就从视平面上的一点,找到了全景图上对应的一个像素。对视平面上的每一个点重复这个过程,就完成了一个视平面图像的绘制。

3.2 狭缝图像的插值计算

上面的算法对于视野图的每一个像素进行计算,因此最终结果应是精确的,但由于处理的像素点会很多,而对每一个像素点都要涉及到求交运算,导致最终渲染速度不能达到实时漫游的要求。我们在前面第1节已经介绍过柱面全景图在垂直方向是没有形变的,因此我们采用下面的狭缝图像方法,避免垂直方向的计算从而提高计算速度,具体方法如下:

1) 按照上节介绍的方法计算视线与平面Xh的交点(Xh,Yh),设为点P。注意,这里没有计算Zh的值。

2) 按照上面介绍的方法找出对应的全景图编号,设该全景图坐标为(Xi,Yi)。

3) 根据Xh和Yh的值可以得到对应全景图上的狭缝位置。

4) 将该狭缝图像按照一定比例进行缩放,该比例值为

缩放以后即可作为当前视野图的一个狭缝图像。这样,计算量就大大降低了。

通过上面介绍的方法,我们就可以渲染出采集范围内任意视方向下的视野图像。为了进一步简化和加快渲染速度,我们引入插值算法,来解决跨越两幅全景图时明显分界的问题。对于某一条光线(看作一条从视点发出的射线),首先求出射线与y轴的交点H,然后在该轴上的所有全景图中,找出离交点最近的那一个作为其对应的全景图。

图7 对狭缝图像进行线性插值

4 系统实现与实验结果

多边形柱面全景图漫游系统的实现分为3个步骤,首先是在场景中采样,然后对图像样本进行预处理,最后是进行实时绘制。

首先是拍摄图片,我们沿着指定路径每隔固定距离拍摄一组照片。在采集和生成全景图的时候,每一个采集点的全景图都是360°的,但实际上并没有必要保留 360°的全景图来生成最终的视野图像,实际上只需要道路两侧向外的部分即可,因此实际上只需要180°的全景图。下一步是给每个全景图的狭缝图像确定深度,利用第2节介绍的算法求出相邻全景图的对应点匹配和这些特征点所在的狭缝图像的深度值。由于狭缝图像本身是对场景的一种近似表示,对深度的精度要求不是很高,我们可以将求得离散点的深度进行线性插值,得到整个全景图的连续深度信息并存储起来,这样我们就获得了完整的狭缝深度全景图像。最后是对预处理过的多边形柱面全景图进行虚拟漫游的绘制,利用第3节描述的几何对应关系和狭缝插值方法,我们可以完成新视点下视野图像的绘制,从而在采集路径或区域内实现平滑的虚拟场景漫游。

我们以清华大学东门到主楼的沿线区域作为实验场景,转弯的区域和路线如图8所示,每隔固定距离拍摄一组图片,并利用这些图片生成具有深度信息的多边形柱面全景图,实验环境为2.6GHz CPU,2G内存,在Windows XP操作系统下采用Visual Studio2008 作为编程平台,实现了漫游演示系统。图9为沿着清华主楼左转后前进的一段场景,显示了在这一漫游路径下系统合成的一组视野图像。

图8 转弯区域采集和漫游路线

5 结 论

提出了一种基于多边形柱面全景图进行虚拟漫游的新技术,通过带深度的狭缝图像组成的全景拼图可以支持传统全景图技术所不具备的实时漫游功能,进而实现各个全景图之间的平滑过渡,扩大漫游范围。本文方法介绍的图像采集也比较容易,不需要复杂和大规模的设备,只要一个普通手持相机便可以实现较大范围的自由漫游功能,具有比较大的应用价值。

在这里我们使用统一的深度来表示狭缝图像中各点的深度,这样的简化是对场景一种近似的表达,要求实际场景中大部分像素在一个垂直方向上深度相近,因此该方法和传统全景图一样,更适合应用在宽敞开阔的室外大场景中。

[1]Shum H Y, Kang S B. A review of image-based rendering techniques [C]//Proceedings of IEEE/SPIE Visual Communications and Image Processing (VCIP)2000:2-13.

[2]Shen C, Eric C. Quick time VR——an imaged-based approach to virtual environment navigation [C]//Computer Graphics Proceedings, Annual Conference Series, 1995:29-38.

[3]Shum H Y, He L W. Rendering with concentric mosaics [C]//Proceedings of the SIGGRAPH’99, New York:ACM Press, 1999:299-306.

[4]Aliaga D G, Garlborn I. Plenoptic stitching:a scalable method for reconstructing 3D interactive walkthroughs [C]//Proceedings of SIGGRAPH 2001,New York:ACM Press, 2001:443-450.

[5]Wang Haiying, Qin Kaihuai. A global optimization approach for construction of panoramic mosaics [C]//Automatic Target Recognition and Image Analysis:6th International Conference on Multispectral Image Processing and Pattern Recognition, 2009:78-83.

[6]Rademacher P, Bishop G. Multiple center of projection images [C]//Proceedings of SIGGRAPH’99, New York:ACM Press, 1998:199-206.

[7] Lowe D G. Distinctive image features from scale-invariant keypoints [J]. International Journal of Computer Vision, 2004, 60(2):91-110.

[8]Darius B. Recent methods for image-based modeling and rendering [C]//Proceedings of IEEE Virtual Reality, 2003:41-49.

A novel method for virtual walkthrough using polygonal panoramic mosaics

Wang Haiying1, Qin Kaihuai2
( 1. China Center of Information Industry Development, Beijing 100048, China;2. Department of Computer Science and Technology, Tsinghua University, Beijing 100084, China )

A new method of virtual walkthrough using image-based rendering with polygonal panoramic mosaics is presented. First, we take pictures and get multiple panoramas with ordinary handhold camera along a route or in a square region. Second, we use SIFT feather points detection to get slim images with depth which can be used in interpolation for the rendering of new view point. The algorithm proposed in this method is very efficient for virtual walkthrough in the large outdoor scene. The construction and rendering process with multiple panoramas is easy to implement and the data capturing is simple without expensive equipments.

virtual walkthrough; image-based rending; panoramic mosaic; slim image

TP 391.4

A

1003-0158(2012)01-0056-07

2011-03-20

王海颍(1977-),男,辽宁大连人,博士,主要研究方向为虚拟现实。

图9 基于多边形柱面全景图系统绘制的面向清华主楼向左拐弯的漫游区域

猜你喜欢
柱面全景图视点
智慧课堂的教学设计
基于单摄像头的柱面拼接
嫦娥四号月背之旅全景图
正交变换在判断曲面形状中的应用
环境视点
环保概念股全景图
让你每天一元钱,物超所值——《今日视点—2014精萃》序
两会视点
关于柱面光学透镜在光学成像系统中的运用
奇妙岛全景图