王 龙,万 刚,黄 河
(1.信息工程大学,河南 郑州 450052;2.73608部队,江苏 南京 210028)
街景地图开创一种全新的地图阅读方式,也开启了 一 个 实 景 地 图 体 验 的 模 式[1-2]。自 2007 年google推出街景地图以来,街景地图得到飞速发展。国内外众多大型软件公司,如google、微软、腾讯、阿里巴巴等纷纷投巨资开发街景地图。同时,街景地图的实景功能也为各个领域提供服务,如:数字化博物馆、房产展示、实体店在线购物等等。街景地图是近年来地理信息领域的研究热点。
街景漫游是浏览街景地图的关键技术,主要包括定点360°自由漫游与全景图点间漫游两种。定点漫游的设计符合全景图数据采集的特点,通过对视锥矩阵的旋转与视角的缩放,实现对全景任意角度与不同细节的浏览。点间漫游则不同,它随全景图之间不同的关联方式而不同,如:空间关联、时间关联、焦距关联、虚化关联等[3]。常见的点间漫游方法有镜头等待法、视锥放大法、帧间差值法、灭线法等[4-5]。由于街景漫游具有全景点间距离小、漫游频繁,全景图在空间分布上呈线状连续等特点。因此,街景漫游集中体现在空间关联关系上,这要求漫游过程要保持一定的空间纵深。然而,各漫游算法空间关联能力并不相同,如表1所示。
针对街景漫游特点,本文引入可以构造具有一定深度信息图像空间的TIP算法,以街景地图应用环境对其实现的步骤进行方法改进,提高街景漫游的效果,保证在街景漫游过程中有较好的空间纵深感。
表1 常见漫游算法空间关联分析
画中游(Tour Into Pict ure,TIP)是由 HORRY等提出的[6]。TIP算法是基于图像绘制的一种方法,与全景图绘制相似,都是通过将图像作为纹理映射在一定的几何空间上,通过设定相机构成可漫游的图像空间。TIP与全景图最大的区别在于其运用透视投影的特性,恢复图像中场景的深度信息,构建具有图像深度信息的几何空间。
TIP实现的一般过程见图1。将源图像进行前景与背景分离。前景模型多数通过蒙版技术,将前景纹理从源图像提取出来。前景纹理多来自于人为选定的人物、树木、建筑等,计算相对位置并运用Billboard显示在图像空间。背景模型构建相对复杂,需要对源图像进行蜘蛛格网的构建并将其映射为规则的图像空间。设置漫游相机位置与姿态,即可生成可漫游的图像空间。
图1 TIP算法的一般过程
目前,常用的TIP算法主要有单灭点法、双灭点松弛法、灭线法等[7-8]。这些算法都对全景图图像空间的构建做了一定的拓展。但在全景漫游中,并没有得到充分的运用。文献[9]将单灭点法与全景空间结合,构建全景到TIP再到全景的算法。通过对计算不同场景的相对深度的计算,将不同的静态图像空间连接在一起。这种方法场景接缝敏感,街景这样密集的图像,很容易破坏场景的整体感知。灭线法,是搜搜街景、Google街景等常用的方法。灭线法保证一定的实时性,运用图像拉伸的方法营造向前运动的“穿行感”,但漫游的纵深感不强,TIP的特点发挥不明显。本文基于这两种方法的分析,针对街景漫游的特点,在源图像获取、灭点设定、漫游效果等方面,提出一种基于单灭点TIP的街景地图漫游方法。
TIP算法的图像获取是离线的,构造的图像空间是静态的,但街景漫游是实时的、频繁的,街景地图更需要流畅连续的图像场景。本文从TIP算法实现的过程分析,重点在图像获取、图像空间构建、灭点设定、漫游等几个步骤考虑街景地图实时漫游的需要并进行改进。
通常来说,TIP算法要采用一张预先拍摄好的图像进行图像空间的构建,图像空间与全景场景配准,生成连续贯穿的场景。这样会使每一个全景点不仅要保存全景图,还要根据全景点的关联关系再存储一张甚至多张静态图像,使单个全景点的存储数据十分庞大。同时,TIP图像空间与全景图像空间的配准远比一般图像配准的难度更大。因此,在漫游的过程中,随着用户漫游的事件需求,将实时漫游的图像截取下来,构建TIP图像空间。这样获取的源图像既可以保证与场景内容的一致,且降低图像场景配准的难度。
三维场景是在计算机图形硬件驱动下绘制的,图形本身的绘制遵循渲染管线的要求。渲染管线将内存中的三维场景数据处理、栅格化后生成图像,保存在帧缓冲区中。帧缓冲区在绘制的每一帧缓冲图像生成后,就将其显示在屏幕上。同时,帧缓冲区中的数据还可以继续传输到内存中,作为下一帧图像的源数据。这一过程称之为渲染到纹理。
实践过程中发现Open GL[10]中用gl Read Pixels与gl TexI mage将缓存数据读入到内存再进行纹理创建,或使用gl Copy TexIa mge可以实现渲染到纹理的操作,但这两种方法的速度较慢,也不利于接下来的TIP图像空间的生成。FBO(Frame Buffer Object)是Open GL的一项技术,可用来存储帧缓存数据,能够达到较好的效果,实现步骤如图2所示。
图2 渲染到纹理流程
图像蜘蛛格网是TIP算法最关键的部分,它是构造具有一定深度信息图像空间的数学基础,主要由3个部分组成:灭点、内窗口和外窗口,如图3所示。灭点与内窗口是通过图形交互用户界面人为设定的,外窗口即是图像轮廓。蜘蛛格网将图像分割为后墙、顶面、底面、左墙和右墙5个部分,连线相交得到12个点,是图像空间各几何面的顶点,见图4。
图3 蜘蛛格网
图4 图像分割几何空间构建
2.2.1 灭点与内窗口的设定
灭点是指场景中不平行于投影面的平行线在透视投影下汇聚的一点,一般汇聚在场景平行线的延长线上。街景地图的场景比较复杂,通常情况下一幅图像上有多个灭点。道路呈平行状是描述街景的主要地物,选它的图像交点作为图像灭点。源图像是在街景车前进方向上获取的,灭点就在源图像的中轴线附近,考虑相机姿态俯仰角的影响,即可得到一定精度下的灭点坐标。街景车利用GPS、惯导等设备采集相机姿态、经纬度、高程等信息[12],这样就可以根据相关信息计算灭点与矩形坐标,有效减少人为指定的大量工作。
图像灭点坐标X″计算:
X′=RαRωRκx ,其中,
α,ω,κ分别是相机绕x轴、y轴、z轴的旋转角。
X″=V·P·M· [X′ ,1] ,其中,V,P,M 分别是视口矩阵、投影矩阵、模型矩阵,实现将空间坐标转化为屏幕坐标,X″= [x ,y,1]。
内窗口主要是与灭点、外图廓将源图像分割,生成图像空间背景墙,在漫游过程中提供清晰的远景。街景地图中内窗口设定的原则是保留街景关键内容,保持空间的连续性。根据设定原则考虑人眼习惯,内窗口长宽比设为2∶1。
2.2.2 深度计算
TIP图像空间的深度计算是根据蜘蛛格网的指定而计算得到的。根据透视学原理,将其映射在左右面平行、顶地面平行、成像面后墙面平行的图像空间内。根据图像空间结构特点,运用几何原理即可求得图像空间深度,如图5所示。
图5 图像空间深度计算
图5 中:O为观察视点;V为图像灭点,V′为成像平面灭点;A,B为TIP图像空间后墙顶、底两点,A′B′所在平面为成像平面;h为试点到底面的距离;f为视点到成像平面的距离;l为灭点到顶面的距离;d为图像空间深度。
f可由三维场景相机投影矩阵参数获得,h与V′B′由图像灭点与内窗口的像素坐标获得。由三角形VOB相似于三角形V′OB′,得
2.2.3 纹理映射
TIP中在顶面、底面以及两个侧面纹理映射的过程,是将梯形的图像映射在矩形的几何面上,使得矩形面上图像分辨率越靠近背景墙越模糊。随着漫游过程的推近,图像侧面呈现越来越模糊的视觉效果,破坏了漫游过程越近越清楚的空间感知。
着色器是定义在Open GL渲染管线上灵活的图形显示接口,设置在管线的关键位置,对图形多样的操作,能产生丰富的效果。街景地图的漫游过程中,对侧立面绑定图形拉伸着色器,图像内容的拉伸给用户营造出穿行的感受,有效提高空间穿梭效果,克服TIP侧立面图像分辨率较低的缺点。
漫游是相机与三维场景产生的相对运动,其实质是相机投影矩阵的变化。街景地图中设计漫游主要有两个方面的因素需要考虑:①全景图数据采集较为连续、密集,构造的TIP空间深度较小漫游距离较短,步长设定受限;②在线地图的网络带宽影响全景图像的加载速度,TIP图像空间是线下的处理方式,能够快速构造图像空间,但其场景深度有限,若已漫游到图像空间的上限时数据加载还未完毕,用户就被滞留在TIP空间。因此,在实践过程中,尽管手动漫游有较强的可操作性,相较在TIP图像空间设计一个按照一定速度的自动漫游方式有更好的效果,并且移动的速度可以根据网络带宽来设定,保证下一个全景图数据的加载时间。漫游实现步骤如下:
1)获取带宽速度,计算场景加载时间;
2)根据TIP图像空间相对深度,计算图像空间漫游速度;
3)自动漫游,另开线程加载下一个全景图数据;
4)等待网络数据加载完毕,切换场景。
本文实验计算机配置如下:CPUi5,显卡GT430,4G内存,vs2010环境下实现。场景建模和绘制方面,运用Open GL以及Open GL着色语言,主要实现消息与事件驱动下的街景漫游。
本文根据街景漫游需要,对TIP算法实现步骤中的源图像获取、背景建模、图像空间生成进行设计与实现,主要流程如图6所示。
图6 实现流程
3.2.1 灭点设定比对结果
图7是焦距为35 mm的镜头采集图像拼接得到的全景图,原始摄像图像分辨率为1 366×768,根据灭点在图像的位置分析得到,水平方向的误差为:|696.660-688.464|/1 366=0.006;垂直方向的误差为:|405.504-432.384|/768 = 0.035;因为灭点本身依赖于图形交互人为设定,存在一定的误差,所以该方法误差较小,具有一定的可行性。
3.2.2 场景漫游效果
如图8所示,场景源图像以及街景漫游在第20、60、100帧的图像效果,图像空间纵深感较强、穿行镜头明显。同时,帧率显示在27帧/s以上,大于25帧/s基本流畅度的要求。
图7 灭点设定对比结果
图8 街景漫游场景截图
本文通过对当前全景漫游技术、TIP算法的分析,借鉴前人在全景图漫游与TIP图像空间构建的方法。运用渲染到纹理、着色器等技术,提出一种适用于街景地图的漫游方法。在源图像获取、灭点处理、漫游等方面对TIP算法进行改进,图像空间具有一定的纵深感,漫游过程能体现出较好的穿行感。但在不同街道的漫游、导航图牵引的漫游等方面还不能取得较好的效果,有待进一步分析与研究。
[1] 城市吧.街景地图何去何从[EB/OL],2012.7.26.http://www.city8.co m/ditu/287073.ht ml.
[2] 李玲,秦志伟,王崇倡,等.基于 WMTS标准的2.5维电子地图的构建[J].测绘与空间地理信息,2014,37(5):127-130.
[3] 张茂军.虚拟现实系统[M].北京:科学出版社,2001:116-117.
[4] 如建成,崔杜武.基于全景图的多视点虚拟空间漫游技术[J].计算机工程,2004,30(1):153-154.
[5] 章玉文,戴青,邵婧.多视点空间平滑漫游的研究与实现[J].计算机工程与设计,2011,32(8):2768-2771.
[6] HORRY Y,ANJYO K,ARAI K.Tour into the picture:using a spidery mesh interface to make ani mation fro m a single i mage[C].Los Angeles:ACM SIGGRAPH,1997:225-232.
[7] KANG H,PYO S,ANIYO K,etc.Tour into the picture using a vanishing line and its Extension to Panoramic i mages[C].Manchester:Euro graphics,2001:6-8.
[8] 刘喜作,徐晓刚,周明,等.图像漫游:双灭点的松弛蜘蛛网格算法[J].中国图像图形学报,2005,10(3):344-348.
[9] 曹智清.基于图像绘制的TIP方法研究[D].杭州:浙江大学,2005:35-51.
[10]Dave Shreiner etc.Open GL编程指南[M].北京:机械工业出版社,2010.
[11]刘兴明,包晓光.GPS车载导航定位技术研究[J].测绘工程,2013,22(6):31-34.
[12]赵春,赵闯姓.基于Arc GIS平台制作矢量电子地图的方法探讨[J].测绘与空间地理信息,2014,37(4):133-136.