APP下载

基于网格的球面虚拟实景空间搭建方法

2012-08-16叶强强刘晓平

关键词:全景图球面实景

叶强强,余 烨,张 静,刘晓平

(合肥工业大学计算机与信息学院,安徽合肥230009)

虚拟实景空间是采用基于图像的虚拟空间绘制技术得到的空间,由于构成空间广阔性的要求,虚拟实景空间的构成元素多为全景图,随着时间的更新而变换适当的场景,从而达到在虚拟空间中漫游的效果,如Apple公司的Quick Time VR[1]和张茂军等搭建的HVS[2]就是很早的虚拟实景空间系统.根据构造模型的不同,虚拟实景空间可分为3类:柱面虚拟实景空间[3-4]、立方体虚拟实景空间和球面虚拟实景空间,由于球面虚拟实景空间具有可视范围广、符合人眼的观看习惯等特点,已经成为国内外的研究热点[5-9].

目前构造球面虚拟实景空间的方式通常是先将获得图像投影到球面上,再在球面上进行图像拼接,如文献[5]、[6]就是利用普通相机获得图像,然后考虑图像在球面上的拼接;文献[7]、[8]是将鱼眼相机获得图像投影到球面上,然后求得投影图像在球面上的拼接关系.与这些构造方法不同,本文先通过单幅图像构造球面网格,然后将图像以纹理绘制的模式映射到球面上,并通过调节网格来调节图像边缘处的拼接,最终实现球面虚拟实景空间的构造,过程如图1所示.

图1 构造球面虚拟实景的方法Figure 1 Themethod of constructing spherical virtual image

1 初始模型建立

本文采用的相机镜头为超广角镜头,其拍摄的视角较大.根据此镜头的特点,本文构成球面虚拟实景空间的数据采集的方式为:侧面每旋转72°拍摄一张图片(共拍摄5张图片,经实验图片和图片间会有重合区域,采用不同的镜头拍摄图片的张数也不相同),朝向顶部拍摄一张照片.

1.1 网格点的选取

获得图像以后,需要进行平面网格点的选取.首先确定网格的大小,网格的大小将影响最终绘制的效果,本文采用的网格大小为横向meshWidth=128,纵向meshHeight=96;然后根据网格点的数目,求得网格点对应的像素点,这里选取的网格点为均匀的网格点,因而对应的像素点在图像上也是分布均匀的.设图像的像素尺寸为imageWidth×imageHeight,则各网格点(i,j)对应的像素点为:

采用相机采集的图像存在畸变,难以用于求得球面上对应的网格,需要对其进行畸变校正[10],如图2所示.

1.2 空间网格的绘制

空间网格的绘制建立在获取空间网格点的基础上,需要获取空间网格点,即将获得平面网格点转换为空间网格点.由透视原理可知,平面上的网格点和球面上网格点的连线正好通过此球面的球心,如图3所示.

图2 校正前后图像对比Figure 2 Image contrast before and after correction

图3 空间网格获取方式Figure 3 Space grid accessmethod

图3中所有的点都是空间中的点,平面γ是相切于球面的平面.由于单镜头对应的图像以像素坐标的形式存在,需要将像素坐标转换为三维的平面坐标,通过测量相机的视角可以求得像素对应到平面γ三维空间位置,像素点所对应的区域如图3所示的区域σ,选取的网格点也会对应到区域σ内.A点为其中的一个网格点,M点位区域的中心点,A'点是A点对应于球面上的网格点,O点为球心,求得半径为R,则

通过公式可得到镜头对应的网格,将镜头对应的图片以纹理映射的方式映射在各个网格上,即可实现球面虚拟实景空间的初步搭建.

1.3 图像边缘融合

由于网格和网格之间会出现重合的区域,直接的纹理映射会导致先前映射的纹理被后映射的纹理覆盖,需要对网格的边缘处进行处理.本文采用调节网格点的深度信息来处理这种情况,即处理图像边缘处的融合,网格点的深度信息和网格点所处的区域有关,如图4所示.其中ABCD和EFGH为拍摄2个方向对应的网格,其在球面上相交的区域为EFCD,O为球面的中心,则所需进行深度信息调整的区域为EFCD.假设网格点P和Q之间有N个网格点,则第i个点的深度信息在2个网格上分别为

图4 网格重合区域Figure 4 Mesh superposition area

2 模型改进

初始建立的模型在图像和图像拼接处会出现场景缺失和错位现象,本节将对初始的模型进行改进.与普通球面虚拟实景构造方法相比,本文采用网格来控制场景的显示,通过改变网格点的位置来改变场景的位置.首先对网格点整体的位置进行调整,实现解决场景缺失问题实现完整场景显示;然后对于边缘处局部位置出现纹理错位的现象,通过调整局部网格点来调节,最终实现模型的改进.

2.1 网格的整体调整

初始构造的模型会在边缘处出现场景缺失的现象,网格的整体调节通过对网格进行放缩处理,使得缺失的场景再次出现.本文采用的方法是侧面拍摄5次和顶部拍摄1次,侧面图片和图片边缘处的场景缺失和网格的宽度有关,所以对于侧面网格只需要改变网格宽度,如图5(a)所示.顶部网格由于要和侧面各个网格都存在相交区域,因而需要对顶部网格整体缩放,如图5(b)所示.根据本文建立的坐标系,各坐标的变化方案为:x→x', y→y', z→z.

图5 网格的整体调整Figure 5 Overall adjustment of grids

网格的放缩即为网格点位置的变化,通常方法是以中心点为目标,所有的网格点向内或向外移动.由于各个网格点移动的距离不相同,靠近网格中间点的网格点移动的距离要比处于网格边缘处的网格点移动的距离小得多,为了保证网格大小统一,靠近内部网格点的移动将影响外部的网格点移动.本文采用了一种间接的方法进行网格的放缩,如图6所示.

图6 网格调整原理图Figure 6 The theory diagram of adjusting grid

图6(b)采用了间接的方法进行网格的缩放,先将整体的网格按照OM的方向移动到某个位置,此时与网格点A点对应的网格点为A″,网格中心点M对应的网格点为M';然后将网格点M'移回M,而对于其他的网格点如A,则按照A″O的方向移动到点A',其中 A'满足的关系为:A'A″∶OA'=MM'∶OM.

可行性验证:假设想将网格放缩为原来网格的λ倍,即所有网格点之间的距离变为原来网格点之间距离的λ倍,则只需要 MM'∶OM=1-λ∶λ即可,证明如下:

如图7(a)所示,A和B为网格上的两网格点,假设移动后的两网格点分别为A'和B'.图7(b)所示为(a)的抽象模型,则可得以下的关系:

图7 可行性验证模型Figure 7 Themodel of feasibility verification

即改变之后的网格点间距离是原来网格点间距离的λ倍,假设A点为原来网格上的网格点,A'为移动后的网格点,M为原来网格中心点,则移动公式为OA'=λOA+(1-λ)OM.

2.2 网格的局部调整

网格的局部调整就是对网格上部分网格点的位置进行变动,而对于其他网格点的位置不进行变动,用网格点的变动而改变对应场景的变动,从而解决纹理错位的现象.本文采取了渐进的方式对局部网格点进行调整,不但调节出现纹理错位的区域,而且对于未出现纹理错位的区域边缘区域也进行相应的调整.

网格的局部调节相当于网格整体调节的局部操作,即按照网格整体调节的思想对处于网格局部的部分网格点进行调整,假设需要将原有网格的局部缩放λ倍,则网格点调整公式为

对于处于纹理错位边缘区域的网格点,则按照其距离纹理错位边缘的距离进行调整,这里的距离即为之间相隔网格点的个数加1,设定边缘处包括点数为M,超出M以外的点则不进行调整,假设边缘区域的网格点距离纹理错位区域的距离为d,设μ是需要调节的倍数,则

即对于此网格点调整公式为

3 实验结果及分析

本文采用的硬件设备为:大广角单反相机一部、用于承载相机的三角架一个、PC机一台(处理器为Intel Xeon CPU W3520@2.67 GHz,内存为 4G DDR3,显卡为 NVIDIA Quadro FX1800 768M).所采用的编程平台为Visual Studio 2008,采用Mircosoft DirectX 9.0对虚拟场景进行搭建,如图8(a)所示为初始搭建模型显示的球面虚拟实景.通过鼠标的拖动,实现场景的360°观看.

初始搭建的模型会在很多的地方出现纹理错位和缺失的现象,如图8(a)所示的场景B就会出现纹理错位和缺失的现象,采用本文提出的网格整体调整和网格局部调整可以解决这些问题,如图8(b)所示.通过网格的整体调整和网格的局部调整,基本解决了网格错位的现象.搭建的球面虚拟实景,可以实现图片和图片边缘处的拼接和融合,同时搭建的程序对机器要求较低.

图8 模型改进效果对比Figure 8 Improving contrast

文献[7]采用了2幅鱼眼图像构建全景图,本文的方法与之相比分辨率更高且畸变更小.如采用1 600×1 200像素的照片进行构造,本文的方法像素可以达到5 400×2 700,而文献[7]构造的最高像素为3 600×1 200;同时鱼眼镜头局部畸变较大,像素信息分布不均匀,有较大的局限性.

图9和图10是本文分别在室外和室内构建的全景图,与文献[9]构建的同场景的全景图相比,其在水平方向上场景显示较好,但与本文方法相比缺少顶部的场景信息,因而本文方法实用性更强.

图9 室外全景图Figure 9 Outdoor panorama

图10 室内全景图Figure 10 Indoor panorama

4 总结与展望

本文提出了一种搭建球面虚拟实景的方法,该方法与传统球面虚拟实景搭建方法有所不同,首先对通过相机镜头获得的图片进行校正处理,然后通过校正后图像构建球面网格,通过纹理映射的方式实现球面虚拟实景的搭建.同时针对初始搭建的球面虚拟实景出现场景缺失和纹理错位等问题,提出了网格的整体调整和网格的局部调整方法,并对出现的问题加以解决.本文所搭建的球面虚拟实景的采集设备较为普遍,构建成本低;同时本文采用的方法具有可复现性,针对不同镜头只要对模型进行调整便可以实现球面虚拟实景的搭建.

在网格调整的过程中,顶部网格将受到侧面5个网格变化的影响,所以本文对顶部网格的调节还是会出现纹理错位的现象;同时由于底部场景采集较为困难,所以本文搭建的球面虚拟实景会缺失底部场景,这些问题都将在以后的工作中加以研究.

[1]CHEN SE.QuickTime VR-An image based approach to virtual reality navigation[C]∥SIGGRAPH'95.Los Angeles,USA,1995:29-38.

[2]张茂军,钟力.HVS:一种基于实景图像的虚拟现实系统[J].小型微型计算机系统,1999,20(7):490-495.

[3]殷润民,李伯虎,柴旭东.自适应柱状全景图拼接[J].中国图象图形学报,2008,13(6):1911-1196.

[4]CHEN Haipeng,SHEN Xuanjing,WU Yihong,et al.Bionicmosaic method of panoramic image based on compound eye of fly[J].Journal of Bionic Engineering,2011,8(4):440-448.

[5]SHUM Heungyeung,SZELISKI Richard.Systems and experiment paper:Construction of panoramic imagemosaics with global and local alignment[J].International Journal of Computer Vision,1999,36(2):101-130.

[6]BROWNMatthew,LOWEDavid G.Automatic panoramic image stitching using invariant features[J].International Journal of Computer Vision,2007,74(1):59-73.

[7]DENG Xiaoming,WU Fuchao,WU Yihong,etal.Automatic spherical panorama generation with two fisheye images[C]∥WCICA'08.Chongqing,China,2008:5955-5959.

[8]王俊杰,徐小刚,胡运发,等.鱼眼投影在虚拟实景中的应用研究[J].小型微型计算机系统,2004,25(2):287-290.

[9]李艳丽,向辉.稳健的球面全景图全自动生成算法[J].计算机辅助设计与图形学学报,2007,19(11):1393-1398.

[10]杨必武,郭晓松.摄像机镜头非线性畸变校正方法综述[J].中国图象图形学报,2005,10(3):269-274.

猜你喜欢

全景图球面实景
金湖县创新“实景式”培训 提升精准执法水平
数字博物馆 线上实景游
球面检测量具的开发
嫦娥四号月背之旅全景图
深孔内球面镗刀装置的设计
论山水实景剧与山水实景演出的区别
环保概念股全景图
拉伸筋在球面拉伸件拉伸模具中的应用
一种基于可量测影像的实景导航数据组织模型
奇妙岛全景图