分类号 P22 密 级 公开
U D C 528 编 号 10486
硕 士 专 业 学 位 论 文
室内 360 度全景浏览场景无缝过渡技术
研究
研 究 生 姓 名: 唐志雄
学 号: 2015282130087
指导教师姓名、职称: 胡庆武 教授
专 业 类 别 (领 域): 测绘工程
二〇一七年五月
A Study on Seamless Panorama Transition
Candidate: TANG ZhiXiong
Student Number: 2015282130087
Supervisor: Prof. HU QingWu
Major: Geomatics Engineering
School of Remote Sensing and Information Engineering
Wuhan University
May, 2017
论 文 原 创 性 声 明
本人郑重声明:所呈交的学位论文,是本人在导师指导下,独立进行
研究工作所取得的研究成果。除文中已经标明引用的内容外,本论文不包
含任何其他个人或集体已经发表或撰写过的研究成果。对本文的研究做出
贡献的个人和集体,均已在文中以明确方式标明。本声明的法律结果由本
人承担。
学位论文作者 (签名):
年 月 日
室内 360 度全景浏览场景无缝过渡技术研究
摘 要
360 度全景漫游系统是一种以静态图像为基础的初级虚拟现实技术,因其导览性
好、真实性强而应用广泛。随着它的流行,其中存在的全景站点切换过渡不自然的问
题愈发突出,亟待解决。由于场景切换问题,全景漫游系统不能有效衔接各全景站点,
致使用户在场景切换时难以把握空间位置的变化、产生方向迷失感,极大影响了漫游
系统的浏览体验。针对这一问题,尤其是室内场景的漫游过渡,本文重点做了如下两
方面研究工作:
1) 全景浏览场景与三维场景模型的加载和融合方法研究。通过引入场景的三维模
型来扩展全景漫游系统,使得漫游系统不仅可浏览各全景漫游站点,还可以跳出全景
球的限制,游览整个三维空间。在如何衔接全景漫游和模型浏览这两种异质浏览交互
方式问题上,提出通过生成临时观察相机并内插其空间位姿的方式来做到无缝过渡切
换的解决方案。
2) 全景浏览场景之间的平滑过渡方法研究。通过提取同名控制点点对生成匹配的
三角网来引导场景过渡,使得场景过渡自然逼真。与常规的跳变、渐变、拉伸、干扰
和视差法相比,动态全景图和动态全景球方案不存在重叠的虚影,场景内物体缓缓向
侧边移动,视图自然地拉伸放大,给人自然走动观察的感觉,达到了良好的自然过渡
效果。
最后,通过设计与实现室内 360 度全景场景无缝漫游原型系统实践验证了上述研
究工作的有效性。
关键词: 室内全景漫游, 场景自然过渡, 网格渐变, 纹理渐变, 全景图与模型的融合
I
武汉大学硕士专业学位论文
ABSTRACT
Panoramic Wandering System is a primary Image-Based Rendering System, which
is getting more and more popular nowdays because of its realistic browsing eects. But
some typical problems like the inconsistency of site browsering exist here haunting the
developers for a sultion, baing the users making them confused and lost in the system.
To address these problems, this paper does two main research work:
1) Integration of panorama viewing and model browsing. By introducing 3D models
to panoramic wandering system, we can not only browse panorama images, but also
jump out of the viewing spheres and experience the real 3D environment. To tackle the
inconsistency of these two incompatible browsing, we use a temporary viewing camera to
make the visual eect realistic by carefully interpolating its trajectary and pose during
the transition.
2) Smooth transition among panorama views. By providing control point corre-
spondences, we can guide the view morphing from one panorama to another in a natual
way. Compared with typical solutions like blending, stretching, and parallax-eect
methods, this solution provides a natual transition eect similar to what people see
when walking in 3D environment from one panorama viewing site to another.
By prototyping the indoor panoramic wandering system based on Three.js, we
proved the eectiveness of these above proposed methods.
Key words: natural transition eect, mesh morph, texture morph
II
室内 360 度全景浏览场景无缝过渡技术研究
目 录
摘要 I
ABSTRACT II
1 绪论 1
1.1 室内全景漫游系统 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 全景漫游技术研究现状 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.3 问题解决思路及本文组织结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2 360 度全景与全景漫游关键技术 6
2.1 全景图及其投影方式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.1.1 球面投影 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.1.2 立方体投影 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.1.3 Fisheye 投影 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.1.4 柱面投影 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.1.5 Plate Carrée 投影 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.2 全景漫游系统中的数学基础 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2.1 坐标空间与坐标变换 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2.2 旋转矩阵与四元数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2.2.1 欧拉角 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.2.2.2 欧拉角表达下的万向节锁问题 . . . . . . . . . . . . . . . . . . . . . 16
2.2.2.3 四元数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.2.3 纹理的 UV 贴图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.2.4 重心坐标及其与笛卡尔坐标的相互转化 . . . . . . . . . . . . . . . . . . . . . 20
2.3 模型数据与全景数据的采集和处理 . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.4 本章小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3 全景图与场景模型的加载和融合方法 24
3.1 全景图与场景模型间存在的矛盾 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.2 三维场景模型作为参考框架 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.3 全景站点位于三维场景模型之中 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.4 三维场景模型与二维全景漫游的自然衔接 . . . . . . . . . . . . . . . . . . . . . . . 27
III
武汉大学硕士专业学位论文
3.5 本章小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4 全景浏览场景间的平滑切换过渡方案 31
4.1 全景浏览的常见过渡处理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.2 第一种解决方案:动态全景图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.2.1 理论说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.2.2 同名控制点的获得 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.2.3 三角化与过渡 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.2.4 效果与评价 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.3 第二种解决方案:动态全景球 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.3.1 理论与试验 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.3.2 效果与评价 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.4 效率测试 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.5 本章小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
5 室内 360 度全景场景无缝漫游原型系统设计与实现 47
5.1 软件环境 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
5.1.1 基于 Three.js 的单页应用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
5.1.2 用 Makele 管理工程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
5.2 实验数据 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
5.3 实现的功能点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.4 工程上的一些考虑 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
5.4.1 全景图的压缩 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
5.4.2 全景图的分层切片后确保代码的可复用性 . . . . . . . . . . . . . . . . . . . 54
5.5 本章小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
6 总结与展望 56
6.1 内容总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
6.2 论文创新点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
6.3 工作展望 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
参考文献 59
致谢 62
IV
室内 360 度全景浏览场景无缝过渡技术研究
1 绪论
1.1 室内全景漫游系统
360 度全景漫游系统是一种以静态图像为基础 (IBR,Image-Based Rendering) 来
虚拟现实场景的初级虚拟现实技术,具有对播放设备硬件要求低,显示分辨率高,导
览性好,交互性强,真实性强,数据采集处理容易且数据量小便于网络传输等优良特
性
[21]
。
全景漫游系统的流行主要是因为它克服了真三维虚拟现实技术三个未能解决的问
题
[13]
:i) 三维数据获取难;ii) 数据量大网络传输难;iii) 对硬件要求高,显示效果和
交互性性价比低。在数据获取上,室内全景漫游系统只需要使用数码相机配合鱼眼镜
头在欲漫游地点采集多张影像数据,再使用 Pano Tools、PTGui 等工具即可拼接得到
全景图。没有鱼眼镜头的情况下,也可用普通的数码相机多采集一些影像数据,并不
需要特殊的采集设备。在网络传输上,生成的全景图用 JPEG 标准压缩后,一般 8192
× 4096 分辨率的全景图可以压缩至不足 2 MB,已达到了极好的体验效果;如果利用
影像金字塔把分辨率降到 2048×1024,数据量不足 200 KB,而一般视角下的查看显
示效果并没有明显损失;相比而言,三维模型数据动辄上百兆字节
[5]
,三维细节还缺
失严重,通过降采样压缩到 10 MB 以下的模型数据,往往只有轮廓,无法提供有效的
三维漫游体验。在硬件设备上,无论是 PC 还是移动设备所配套的浏览器,均能很好
地支持全景漫游系统。甚至在禁用 JavaScript 的浏览器上,通过 CSS 的三维变换或
者 Canvas 的绘图功能也能提供全景漫游体验。而一般的虚拟现实技术对设备的图形
处理能力要求很高,还需要安装专有软件才能使用。
1.2 全景漫游技术研究现状
1995 年,McMillan 和 Bishop 提出了基于图像的 360 度全景漫游方案,对采集到
的原始影像数据进行一系列处理拼接得到全景图,在没有三维模型数据的情况下,即
可提供有效的漫游效果
[13, 21]
。在有三维模型的情况下,全景图还可以作为漫游的底图,
弥补模型分辨率低、不够逼真等缺点
[36]
。也有不少研究着眼于通过图像修补 (Image
1
武汉大学硕士专业学位论文
Inpainting)、自动化地蒙版提取 (Automatic Matte Extraction)、光流等方法实现三维
模型和全景图的融合和过渡。2006 年,华盛顿大学的 Noah Snavely、Steve Seitz 以
及微软研究院的 Richard Szeliski,推出了 Photo Tourism 系统。只要导入一组大量的
无序的影像数据,即可计算出每幅影像的位姿,构建出三维场景。通过系统自带的浏
览界面用户可以漫游这些三维场景和二维影像,还可无缝地自如地切换,体验三维漫
游
[29]
。基于 Photo Tourism,微软于 2008 年正式发布 Photosynth,允许用户上传图
片生成自己的场景模型。Photosynth 的全景切换效果逼真,极具美感
[11, 28]
。从此,基
于全景的 360 度漫游系统开始在互联网流行
[8]
。
由于真实三维信息的缺失,相比一般的虚拟现实系统 360 度全景漫游系统也存在
一些问题。主要体现在:i) 漫游者的观察只能局限在特定的几个漫游点,不能在场景
中任意移动,甚至当场景中只有一个视点时,只能实现虚拟场景的环视漫游;ii) 漫游
点之间场景过渡时会发生跳跃式切换,效果并不自然,严重影响漫游体验。
对于前一个问题,可以增加漫游点采集数目,也可以通过画中游的方式模拟小幅
移动摄像中心,以产生漫游点发生移动的感觉
[17]
。但这种移动的幅度十分有限。对于
后一个问题,一般有两种解决方法。第一种基于光场信息,通过采集大量的数据,创
建全光函数,从而可以计算出任意视点的视图。第二种基于图像变形技术,在两个全
景视图间进行一些图像处理
[23]
,通常有四种策略:
1)色彩混合 (Blend)
将两个全景浏览漫游视图沿着漫游方向对准后,进行色彩上的线性插值。这种方
法可以提示用户场景正在从当前场景向下一场景切换,但是切换时的视觉效果无法反
映出切换过程中观察点的空间位置变化,且无法处理场景中的遮挡问题。
2)淡出和裁剪 (Fade and Cut)
这种方法只要求标记场景即可实现。全景图上某一特定区域的一个标签称为一个
标记 (Tag),在视点切换的时候,可以调整标记的区域,让把当前全景图的标记区域淡
出,或者裁剪掉,然后加载新的全景图或者三维模型。最简单的标记法是直接把全景
视图中的可视域作为标记区域,在标记区域加载新的全景视图。稍微复杂的标记方法
是对当前视图和下一视图同一物体进行标注,对应的区域在淡出淡入时要进行图像变
形。采用这种方案,如果有三维模型数据,无需特别考虑前后视图和模型的空间关系,
只需要先淡出当前视图,再淡入模型,最后淡入新的视图遮住模型即可。
2
室内 360 度全景浏览场景无缝过渡技术研究
3)内插过渡图像
这种解决方案从图像变换和插值的角度考虑,通过拉伸视图插入过渡图像来减弱
切换过程的不连续对漫游体验的负面影响。但内插何种过渡图像以及如何获取这样的
过渡图像又是新的难以解决的问题。
4)视差法 (Parallax)
除了考虑现实物理规律,还可以参考人眼感知特性来提高过渡效果,这就是视差
法
[30]
。视差法分为全视差 (Full Parallax)、画中游 (Tour into the Picture)
[17]
和假视差
(Fake Parallax)。在全景过渡时采用全视差法,需要不断更新三维模型的视场角 (FOV,
Field of View),直到它消失于全景视图中。对视差建模是为了让场景过渡时自然地
淡入、淡出三维模型。
[
41] 指出,为了得到逼真的视觉效果,需要计算出每个模型到
相机中心的距离,以及模型间的空间关系 (因为它们可能存在遮挡关系),他们提出的
LAMP 表示法为全景视图提供了深度信息,而且与分层深度图像 (LDI,Layer Depth
Image) 不同的是,LAMP 拥有真正的三维信息,相比全景视图它的视点是不固定的。
考虑人眼对全景过渡中背景和前景有不同的心理预期,画中游将背景和前景分别处理,
以期达到更好的过渡效果。[17] 的方法则是先从全景图中提取粗略的背景图,再扣取
遮挡物的蒙版并估计遮挡物蒙版下的背景颜色,最后在场景过渡时分别融合前后背景
图和蒙版,使得过渡更自然。假视差法只是提取出背景的粗略几何信息,以及背景的
颜色图层,通过简单的平移和缩放来模拟视差效果。实现较为容易。
可以看到,在 360 度全景漫游研究领域,尤其是解决场景过渡不自然这一课题上,
研究趋势可总结为三点:
1)用前后全景视图特征提取和匹配后再进行颜色混合取代直接渐变整个视图;
2)除了物理上的合理性,人眼的视觉感知特点也被纳入了考虑之中,诞生了一系
列通过视差法来提高过渡效果的解决方案;
3)从准三维向真三维过渡,通过将三维模型数据引入基于全景图的 360 度全景
漫游系统来改善全景视图切换过程。
1.3 问题解决思路及本文组织结构
如图 1.1,在解决全景漫游站点空间关系被破坏导致用户在全景漫游时无法感知
位置变化而产生空间迷失感这一问题上,可从整体和局部两个角度考虑。从整体上,引
3
武汉大学硕士专业学位论文
入模型数据作为整体参考框架统领全部全景漫游站点,可将问题转化为 1) 模型与全
景在空间上的统一问题;以及 2) 模型浏览与全景浏览这两种不同的交互、浏览方式在
时间上的衔接问题。在局部上,需要解决全景漫游场景间的平滑过渡问题,从纹理和
模型两个角度考虑,前者可通过生成渐变的纹理贴图来使过渡自然,后者可通过移动
全景球节点来变形全景场景以达到自然过渡的效果。因室外场景相邻漫游站点间不存
在视觉上的关联性,无法做到视图上的自然过渡,所以本文只考虑解决室内简单环境
近距离漫游切换下的场景自然过渡问题的解决。
全景漫游站点间
空间关系被打破
三维模型
作为
参考框架
从整体考虑
漫游站点间的
自然平滑过渡
从局部考虑
模型与全景在空间上的统一
模型与全景在时间上的衔接
考虑纹理:动态全景图
考虑模型:动态全景球
图 1.1 全景浏览场景无缝过渡问题的解决思路
根据上述解决思路,本文首先介绍室内全景漫游系统相关理论知识。先介绍几种
常见的全景图投影,分析对比它们的优劣势,并解释了 Plate Carrée 投影流行的根本
原因:正反向投影关系简单且数据采集、处理容易。接着介绍了漫游系统相关的多个
坐标空间、纹理空间,以及三维物体的姿态表示法,串联了三维物体从模型到屏幕像
素的变换过程、多种纹理贴图的基本原理和意义以及四元数在姿态表达上的特有优势。
然后介绍了全景影像数据的采集和拼接相关的知识,并以 RIEGL RZ-400 激光扫描仪
为例梳理了点云模型数据的采集和预处理流程。
介绍了相关理论知识后,引出全景漫游系统中普遍存在的全景站点间空间关联被
打破以致漫游体验差的问题。先提出引入三维模型作为整体参考框架、全景站点置于
其中的思路,通过内插临时观察相机位姿的方式来衔接两种观察交互方式的全景—模
型过渡方案。又提出无缝过渡全景浏览场景的动态全景图和动态全景纹理方案,基于
用同名匹配点点对指导图形变形的原理,使得原本跳跃的场景切换变得如真实漫步于
三维场景般自然,有效避免了空间迷失的感觉。
最后,介绍 360 全景浏览场景无缝过渡原型系统的设计原则、软件平台以及技术
4
室内 360 度全景浏览场景无缝过渡技术研究
路线。并根据实验数据缺乏三维模型的现状提出一种从全景图提取包围盒模型来代替
真三维扫描模型的方法。还分享了原型系统开发中在全景图压缩,全景图分层、切片
与加载解耦等相关问题上的经验。
全文的组织框架如下:
1)第一章引出研究的课题:360 度全景浏览场景无缝过渡问题;
2)第二章简介 360 度全景与全景漫游关键技术,包括全景图及投影方式、相关数
学基础、全景和模型数据的采集和处理;
3)第三章讲全景图与场景模型的加载和融合方法,主要从空间上的统一与时间上
的衔接两个角度入手;
4)第四章提出动态全景图和动态全景球两种全景浏览场景间的平滑切换过渡解
决方案,分别从纹理和模型两个角度引导全景场景自然变形以达到类似步行漫游观察
的效果;
5)第五章介绍室内 360 度全景场景无缝漫游原型系统设计与实现,包含从理论
到代码实践的全过程,验证了本文提出的全景图与场景模型的加载和融合方法以及全
景浏览场景间的平滑切换过渡解决方案的有效性;
6)第六章,总结与展望,总结在 360 度室内全景漫游场景过渡问题上做的一些思
考、完成的工作以及创新点,并介绍下一步可探索的方向以及一些可能的思路。
5
武汉大学硕士专业学位论文
2 360 度全景与全景漫游关键技术
本章简要介绍 360 度全景漫游系统相关理论知识,包括全景图及投影方式、相关
数学基础以及全景和模型数据的采集和处理。
2.1 全景图及其投影方式
全景图是全景漫游系统的主要数据源,通过反投影将它映射到三维空间中,模拟
三维环境来提供虚拟漫游体验
[20]
。不同的应用场景和采集设备下,全景漫游系统使用
的全景图可能采用不同的投影方式。依据全景图投影方式的差异,可将全景漫游系统
分为几类:i) 球面投影漫游;ii) 立方体投影漫游;iii) 柱面投影漫游;和 iv) Plate Carrée
投影漫游。下面逐一介绍这几种的投影方式,并作简单比较。
2.1.1 球面投影
在几何学里,球极平面投影 (Stereographic Projection) 是一种将圆球面投影至平
面的映射。在构造地质学里,它被称为球面立体投影或球面投影。除了投影点以外,投
影在整个球面都有定义。在定义域内,球面投影具有光滑性、双射性和共形性 (保角
性),但不能维持距离、面积不变
[12]
。
如图 2.1,球面球座标投影到平面极座标变换公式为:
  
 (2.1)
反向投影公式为:
  
 (2.2)
其中 和 是球面上点的天顶距和水平角, 和 是球面点按照球面投影在南
极切平面上的投影点的极坐标值。特别地,当   时,   是球面和投影面的切
点。易知,投影时若只投影一部分球面,畸变就会更小。图 2.2(a) 的 Panono 相机就
是通过增加相机数目,减低每次球面投影的范围来保证形变量小。其表面有 36 个摄
像头,拍摄得到的全景图达到 16k × 8k 分辨率。
6
室内 360 度全景浏览场景无缝过渡技术研究
图 2.1 从北极点投影到南极切平面的球面投影
2.1.2 立方体投影
立方体投影是一种把部分或者整个球面投影到六个特殊平面的投影方式。这六个
特殊平面可以围成一个立方体,立方体投影投影到每一个立方体平面时,采用的是 Rec-
tilinear Projection (Gnomonic Projection),视场角为 ,变形较小
[34]
。从中心浏览
立方体即可实现基于立方体投影的全景漫游。
得到立方体全景图的方法一般有 3 种:i) 利用图形软件从其他影像合成无缝拼接
在一个立方体六个面上的贴图;ii) 利用特定的拍摄仪器装置,分别在水平、垂直方向相
隔  的六个方向拍摄一张照片,再无缝拼接在一个立方体六个面上 (如图 2.2(b))
[44]
;
iii) 利用三维建模软件直接渲染合成。
(a) 球形全景相机 Panono (b) 相机架 + 六个 GoPro 相机 (c) 昂贵的 Matterport 相机
图 2.2 各种全景相机
在图形学中作 Cubemap 纹理贴图,立方体投影是一种较为理想的投影方式,因
为纹理影像通常是计算机渲染而成的虚拟影像。而在全景漫游的应用中,使用立方体
投影的全景图采集 (需要获取上、下、左、右、前、后六个方向的影像) 和使用 (每个
站点都需要加载六个方向的影像) 都更麻烦。通常都只能从 Plate Carrée 投影得到的
7
武汉大学硕士专业学位论文
影像间接生成立方体投影的纹理贴图。图 2.2(b) 采用了一个相机架子加上六个 GoPro
相机组成相机组来得到六个方向的影像,是一种常见的直接采集立方体投影全景图的
方式。
2.1.3 Fisheye 投影
鱼眼 (Fisheye) 镜头为一种超广角的特殊镜头的俗称,因其前镜片球面直径短且
呈抛物状向前凸出,类似鱼眼而得名。如图 2.3(a),鱼眼镜头焦距短、视角广 (接近
)、景深大,一方面视域广远远超过人眼看见的范围,一方面成像中存在较大畸变,
相片边缘处分辨能力差。
(a) 单反相机鱼眼镜头及其成像 (b) 尼康全景相机 (c) 本实验室全景相机
图 2.3 鱼眼镜头和全景相机
鱼眼投影的镜头相对简单,所以不少移动端全景采集设备都采用鱼眼投影。如图
2.3(b),通过它的两个鱼眼摄像头输出的画面,各自涵盖了  的水平和垂直视场角,
然后将两个输出结果“扣”在一起就是全视域的沉浸式包围盒了。由于鱼眼相机视场
边缘的分辨率较低,又因通过两个鱼眼镜头采集、拼接全景图时拼接线必会出现在视
场明显区域,使用这种投影的漫游系统时浏览者很容易察觉到影像中的瑕疵。
2.1.4 柱面投影
柱面投影是指平面图像与柱面表面相互映射的过程,包括将平面图像投影到柱面
表面的柱面正投影和将柱面表面的某个特定的观察区域投影到柱面的切平面上的柱面
反投影。柱面投影是当前全景系统中应用最为广泛的一种投影方式,是柱面全景生成
和显示过程中的必要环节。
如图 2.4(a),设圆柱面的半径   ,有:  
。由于弧长等于半径乘
8
室内 360 度全景浏览场景无缝过渡技术研究
以弧度,得
   
。如图 2.4(b),
相似于 
, 
 ,
这里的 
等于图 2.4(a) 中 

,故

,得
 

 。
(a) (b)
图 2.4
综合上述推导,柱面上的坐标 
与平面上的坐标  的正投影关系为
 
 
 
(2.3)
由上述正投影公式,亦可推导出反投影公式:
 


(2.4)
综上,设 是相机拍摄的原始图像上任意一个像素,
是像素 
投影到柱面全景影像的坐标。其中 、 和 为原始影像的宽和高以及相机焦距 (等
于圆柱半径 ),有
  






(2.5)
2.1.5 Plate Carrée 投影
以上几种全景漫游技术中,立方体投影多在虚拟环境中被用于 Cubmap 贴图以及
Skybox 贴图,Fisheye 投影多用于低成本全景影像采集,基于柱面投影的全景漫游技
术则濒于淘汰,究其原因在于常规柱面投影无法实现全视域展示浏览。
9
武汉大学硕士专业学位论文
Equirectangular 是一种特殊的柱面投影:等距圆柱投影。首先定义一些变量:i) :
欲投影点在球面上的经度;ii)
:中央经线;iii) :欲投影点在球面上的纬度;iv)
:
标准水平线,其上无距离畸变;v) :投影点在平面上的水平方向坐标;vi) :投影点
在平面上的竖直方向坐标。则 Equirectangular 投影的前向投影可以表达为:
  

 
(2.6)
反向投影可以表达为:
 

  
(2.7)
当
为 0,这样的 Equirectangular 投影被称为 Plate Carrée 投影
[18, 32]
。如图
2.5(a),Plate Carrée 投影最常见应用是地球仪贴图。全景漫游系统与此类似,只不过全
景浏览时视线由球心向外而使用地球仪时视线由外向内指向球心。Plate Carrée 投影
的特点是水平方向的坐标轴和经度一致,水平视角的图像尺寸可以得到很好的保持,竖
直方向和纬度一致因而在垂直视角上尤其是接近两极的地方会发生无限的尺寸拉伸。
(a) 投影示意 (b) 投影坐标
图 2.5 Plate Carrée 投影
全景漫游系统中全景图采用 Plate Carrée 投影有如下优势:i) 数据获取容易,可
以从鱼眼相机拍摄的相片中拼接而成,如图 2.3(c),在水平方向放置更多相机,而在天
顶方向放置一个相机,即可拼接出优质的全景图,而且分辨率较低的上下部分远离全
景漫游时的视线中心,不易被察觉;ii) 全景图宽高比固定为 2:1,正向和反向投影都
简单,对全景图进行分层、切片以及加载都更容易。这些都促成了 Plate Carrée 投影
成为全景漫游系统中全景图使用的最流行的投影方式。很多情况下,无论拍摄设备采
用何种投影得到原始影像,都会被转化为 Plate Carrée 投影方式并存储成宽高比 2:1
的全景图。
10
室内 360 度全景浏览场景无缝过渡技术研究
2.2 全景漫游系统中的数学基础
理解和实现全景漫游系统需要掌握一些数学和图形学知识。这里简单介绍漫游系
统中的坐标空间和坐标变换、旋转矩阵和四元数,纹理贴图等知识。
2.2.1 坐标空间与坐标变换
向量的表达和运算是线性空间的基础。在物理学中,向量被定义为方向和距离,空
间中的一个起点和一个终点可以确定一个向量,平移一个向量,向量不变;在数学中,
向量被抽象为满足数乘和向量加法的一种数;在计算机中,向量是定义了的一串数字。
向量的表达取决于基底的选择,比如二维线性空间中,选取
、
作为
基底,则任意向量可以表达为
和
的线性组合,即   
。这样,我
们把 参数化为 ,表达成一个坐标。可见,向量可以根据基向量参数化为一串
数字,用坐标来表达。这和空间中点的表达方式一致,所有也可以理解成固定向量起
点用向量终点这个点来表示向量。
向量的集合被称为线性空间。当基底确定后,空间中每一个向量都有唯一的参数
化表达。在不同的向量空间中,同一向量有不同的参数化结果。将一个向量从一个线
性空间的参数化表达转化为另一个线性空间参数化表达的过程被称为线性变换,并可
将一个线性变换参数化为一个矩阵。比如一个逆时针旋转 角度的旋转变换可以参数
化为
 
 
。
在图形学中,模型的每个顶点都需经过从模型空间不断变换到屏幕坐标的过程,依
次经过的空间变换有:i) 模型空间

世界空间;ii) 世界空间

观察空间;iii) 观
察空间

裁剪空间;iv) 裁剪空间

屏幕空间。
引入多个线性空间不仅便于参数化表达,更是因为一些概念只有在特定的坐标空
间下才有意义,才更容易理解。不同的线性空间参数化为不同的坐标空间,形成一个
层次结构,每个坐标空间都是另一个坐标空间的子空间。反过来,每个坐标空间都有
一个父坐标空间。对坐标空间的变换实际上是在父空间和子空间之间对点和矢量进行
变换。比如有父空间 以及一个子空间 ,满足
 

、
 

,其中,

表示子坐标空间变换到父坐标空间的变换矩阵;

是反向变换,即父坐标空间变换
到子坐标空间的变换矩阵,是

的逆矩阵


。
11
武汉大学硕士专业学位论文
下面简要介绍一下各个参数空间。
模型空间 (Model Space),有时候也是对象空间 (Object Space) 和局部空间 (Local
Space),一般为右手坐标系,自然方向为向右为 ,向下为 , 向前为 。一个简单三维模
型比如球体,一般以球心为模型空间中心,将球面上所有三维节点参数化为模型空间
中的向量 (即“点”),即可表达这个三维模型。模型空间可以嵌套,比如一张桌子可以
简单分解成桌面和桌腿,各自有自己的模型空间,节点分别依照局部的模型空间参数
化为一系列点位。子模型空间通过一个姿态矩阵将自己放置到父模型空间中,通常用
矩阵

来表达。可以将此变换分解成




,
看成常见的缩放、旋转和平移的组合。
有一个特殊的坐标系,建立了我们所关心的最大的空间。将这个最外层的模型空
间看成世界空间 (World Space)。通过模型变换 (Model Transform) 来将模型空间中的
物体层层变换到世界空间,这样,每个模型空间都有一个世界坐标系下的姿态矩阵,用

来表达。世界空间的选择取决于所研究问题的尺度和范围。一个全景漫游系统
的世界坐标系可以选择全景球的自身的坐标系,也可以选择为一个包含几张全景站点
的房间,也可以是一层楼,一栋建筑。如果全景系统需要和地理信息系统联合,世界
坐标还可以选取常用的地理空间坐标系,用经纬度来表达。
(a)
透视投影视锥体
(b)
视锥体到归一化的设备坐标
图 2.6 从观察空间到屏幕空间
观察空间 (View Space) 也被称为摄像机空间 (Camera Space),是一个特殊的模
型空间 – 摄像机的模型空间。裁剪空间 (Clip Space,也被称为齐次裁剪空间) 用来去
掉不需渲染的图元。裁剪矩阵 (Clip Matrix),也被称为投影矩阵 (Projection Matrix),
可以用视椎体来表达裁剪的方案:i) 完全位于这块空间内:保留;ii) 完全位于这块空
间外:剔除;iii) 与这块空间边界相交:裁剪。通过透视投影和正交投影将渲染图元从
观察空间投影到裁剪空间。如图 2.6(a),观察空间到裁剪空间可用视锥体来表达。
12
室内 360 度全景浏览场景无缝过渡技术研究
透视投影满足:
 

 

















(2.8)
经过投影后的坐标为

。如果  、 且
    ,图元保留。否则需要被剔除或者裁剪。如图 2.6(b),裁剪矩阵改变了空
间的旋向性 (从右手坐标系的观察空间到左手坐标系的屏幕空间)。正交投影的情况类
似,这里不做赘述。
如图 2.6(b),将裁剪空间的视锥体通过齐次除法 (Homogeneous Division) 转化为
归一化的设备坐标 (NDC, Normalized Device Coordinates),这就是屏幕空间。将裁剪
空间转化到二维屏幕上完成节点的显示:
 
 
 
(2.9)
经过齐次除法后,透视投影和正交投影的视锥体都变换到同一立方体内。OpenGL
中的这个立方体内空间满足   ,将此空间内的点 (参数化为





) 转化成屏幕坐标



,即完成了节
点从模型到屏幕的坐标变化过程。即:










(2.10)
其中 、 分别是屏幕宽度和高度 (单位:像素)。z 分量 
被用于深度缓冲,意为重绘屏幕时只有更靠近屏幕的点才可更新屏幕像素。
13
武汉大学硕士专业学位论文
2.2.2 旋转矩阵与四元数
研究三维空间中一个物体的运动,应该给出物体上每一个点的运动轨迹,即将物
体上每一个点的位置坐标表示成时间的函数 X(t)。但是对于刚体来说,只要指定一个
旋转基点并建立局部坐标系便可以描述整个刚体的运动。这是因为刚体运动可以保证
物体不变形,即其上任何两点之间的距离不随时间改变 (如图 2.7(a))。
(a) 刚体运动保持点之间的距离 (b) 欧拉角来表示刚体的旋转
图 2.7 刚体的旋转运动及其欧拉角表示
旋转前后刚体上同一点前后的坐标转换可以看做是一个正交变换:
 。在三
维欧氏空间中,这样的正交变换可用一个 的正交矩阵来表示,即
 
 









(2.11)
且 R 中元素满足六个独立的约束条件:
   
   
   (2.12)
所以 R 只有三个自由度,可以参数化为三个值来表示任意一个旋转。实际上应用
中,常用欧拉角和四元数来表示旋转姿态,而不直接使用旋转矩阵。只有在进行坐标
变换时,才将旋转姿态转化为矩阵进行运算。
14
室内 360 度全景浏览场景无缝过渡技术研究
2.2.2.1 欧拉角
欧拉角由 Leonhard Euler 引入,用来描述刚体在三维欧氏空间的姿态。刚体的旋
转变换可以分解并看成绕着三个轴旋转,表示为 
,但变换顺序会影响旋转
效果,因而需要指定旋转的次序。另一方面,旋转轴是旋转前的坐标轴,还是旋转后
的坐标轴,也会影响旋转效果。旋转的顺序,以及每次旋角两轴的的指定,并没有统
一的规范,常用的组合就有 6 种,各个学科采取的默认标准也不同。所以在使用欧拉
角来表达旋转时,应明确指定旋转顺序以及每次旋转的转轴。
如图 2.7(b),定 xyz 坐标系是全局坐标系,XYZ 坐标系是局部坐标系。刚体旋转
时前者保持不动,后者牢嵌于刚体随刚体一起旋转。记 xy 平面和 XY 平面的交点线
为 N,ZXZ 顺序的欧拉角可参数化成三个数,为 ,其中 是 x/X 轴与 N 轴
的夹角, 是 z 轴与 Z 轴的夹角, 是 X 轴与 N 轴的夹角。具体旋转规则为:
1)绕 Z/z 轴旋转 度,使 X 轴与 N 轴重合;
2)绕 N 轴旋转 度,得到 Z 轴;
3)绕 Z 轴旋转 度,得到 X 轴。
可用旋转矩阵表示为:
R
 
 
 
 
 
 
    
    
  
(2.13)
反向旋转用其逆矩阵 R
1
可表示为:
R

    
    
  
(2.14)
可见,依照欧拉角的定义顺序可方便地将欧拉角表示的旋转变换转化为旋转矩阵
表示,方便对向量做旋转变换。
15
武汉大学硕士专业学位论文
2.2.2.2 欧拉角表达下的万向节锁问题
欧拉角表示旋转时,严格规定旋转顺序,且旋转顺序在外层的轴会影响内层轴,而
内层轴不会影响内层轴。这样,当中间轴旋转  与外层轴处于同一个平面时,旋转
便失去了一个自由度,即出现万向节锁现象。
如图 2.8 所示,定坐标系旋转顺序为:Z 轴 → Y 轴 → X 轴。当绕 Y 轴旋转 90
度,再绕 X 轴旋转时会发现,实际上此时旋转的 YZ 平面与绕 Z 轴时旋转的 XY 平
面是一个平面。此种情况下,旋转 X 轴和 Z 轴的效果一样,丧失了一个自由度。
(a) 绕 轴旋转角度 (b) 绕 轴旋转 =  后发生死锁
图 2.8 死锁现象
用旋转矩阵表示也可以发现这个问题:
 
 
 
 
 
 
令
 
 

 
 
 
 
(2.15)
16
室内 360 度全景浏览场景无缝过渡技术研究
2.2.2.3 四元数
四元数是哈密顿创造的超复数。四元数所在的空间 由实轴以及另外三个两两
正交的轴  张成,其中  是特殊的复数单位,满足
 
 
  。
将四元数定义为
  ,参数化为  或者
(其中
 
)。如果四元数可以表达为  




,
且满足
 ,则称这样的四元数为单位四元数。
四元数满足如下定义的加法和乘法运算:
    
 
  

(2.16)
其乘法不可交换,特殊地,有:
     
     
     
(2.17)
从几何意义上,可以将 、、 理解为三种旋转。其中 旋转代表 X 轴与 Y 轴相
交平面中 X 轴正向向 Y 轴正向的旋转, 旋转代表 Z 轴与 X 轴相交平面中 Z 轴正向
向 X 轴正向的旋转, 旋转代表 Y 轴与 Z 轴相交平面中 Y 轴正向向 Z 轴正向的旋
转,、、 分别代表 、、 旋转的反向旋转。
常数分量 为 0 的四元数被称为纯四元数。存在于四维空间 的三维超平面上
的一个向量  与三维欧氏空间中的三维向量
 一一对应。这
样我们就能用纯四元数来表示三维空间里的点
[40]
。
又有
 

,其中 为一个单位四元数,当输入 为纯四元数时,输
出的四元数
 也是一个纯四元数,这时可将
看成一个旋转,它将 对应的
三维空间点旋转到了
 对应的三维空间点处
[40]
。这样一来,单位四元数 可以
用于表示三维空间的旋转
,它与上述的正交矩阵和欧拉角是等价的。单位四元数




的几何意义为一个绕着轴   
旋转
角的变换。相比欧拉角,它避免了万向节死锁问题。相比正交旋转矩阵,它的参数化
17