空间增强现实:融合现实和虚拟世界
2月18日 上海普陀区
翻译:Taylor Guo
目录
1增强现实简介... 5
1.1什么是增强现实?... 5
1.2目前的挑战... 5
1.3空间增强现实... 5
1.4本书框架... 5
2基础:从光电子到像素... 5
2.1简单介绍光... 5
2.2几何光学... 6
2.3视觉深度感知... 6
2.4渲染流程(管道)... 6
2.5本章总结和讨论... 6
3增强现实的显示技术... 6
3.1头戴显示... 6
3.2手持显示... 7
3.3空间显示... 7
3.4本章总结和讨论... 7
4几何投影... 7
4.1几何模型... 7
4.2渲染框架... 7
4.3校准的目标... 7
4.4显示环境和应用... 8
4.5本章总结和讨论... 8
5空间投影显示创建图像... 8
5.1二维显示(平面显示)... 8
5.2非二维显示... 8
5.3投影重叠 亮度混合 无缝拼接... 8
5.4曲面显示... 8
5.5物体光源照射... 8
5.6本章总结和讨论... 8
6光学叠加... 9
6.1透视屏幕... 9
6.2镜面图像合成... 9
6.3二维镜面图像合成... 9
6.4图像畸变... 9
6.5物体运动... 9
6.6多路二维图像合成... 9
6.7镜面图像合成矫正... 9
6.8本章总结和讨论... 9
7投影仪显示与图像增强... 10
7.1增强的图像的显示:改变外观... 10
7.2持续遮挡... 10
7.3持续光照显示... 10
7.4增强全息图像... 10
7.5增强平面和纹理外观... 10
7.6具有实际意义的几何增强纹理外观... 10
7.7本章总结和讨论... 10
8空间增强现实显示的实例... 10
A 投影仪或摄像头的校准...10
B OpenGL 变换流程的实现... 11
1增强现实简介
虚拟现实,增强现实技术已经变成博物馆的寓教于乐平台。很多艺术家已经在用这种技术举办个人艺术展。工业应用采用增强现实日渐兴起。然而,由于现有的显示技术,这些效果并不好。在许多非移动应用领域,可应用的显示技术开辟了增强现实的新道路。也有人提到增强现实应用于传统显示器以外的领域,如博物馆、寓教于乐、科学研究、工业领域还有艺术领域。这本书讨论了增强现实主要实现方法,包括光学元件、视频显示投影仪,交互式渲染算法、校准技术和实例。用简单易懂的描述了数学原理和公式、部分代码、具体的实现指令,使有兴趣的读者能够自己动手去做增强现实显示产品。
本章简短介绍增强现实技术和目前遇到的问题。并对其他章节也做简要介绍。
1.1 什么是增强现实?
当今“虚拟现实”和“信息空间”变得很流行。科幻小说已经将这些技术展示给观众,进一步促进了研究工作。其实,我们已经深陷一个基于计算机虚拟的环境中,像视觉、听觉、触觉、嗅觉等,都可以通过计算机技术控制。虚拟现实产品已经实现。
那么什么是增强现实呢?与虚拟现实有什么关系呢?有人认为增强现实是虚拟现实的一种,而有些人认为虚拟现实是增强现实的一个实例。我们在这里并不讨论增强现实到底怎么定义。与虚拟现实不同的是,增强现实里的真实环境仍然存在显现,并占主要地位。增强现实并不像虚拟现实那样把人们置身于完全合成的虚拟世界,而是将合成的部分嵌入到现实环境中或现实生活视频中。这样就会有个基本问题:真实环境远远要比完全虚拟的合成环境复杂。图1.1展示了增强现实的一些应用例子。
既然增强现实是把合成信息整合到真实环境中,那么动画片、流行音乐是否可以用增强现实来显示?显然是可以的。增强现实信息和真实环境有很强的链接,是一种空间上的联系,我们将这种联系称之为“注册”。
人们认为Ivan Sutherland在1965年创立了虚拟现实的理论基础,他描述了“终极现实技术”:
终极现实技术,是计算机控制可以控制物体的空间。在这个空间里呈现的物体近乎完美,像爱丽丝梦游仙境一般。
其实,技术方案的提出更早。1950年代后期,电影制作人Mort Heilig发明了一个单人演示机,集成了3D电影、立体声、机械振动、电扇和香气。
与当时的系统相比,Ivan 提出用户应该能和虚拟环境交互。他就开发了第一台功能头戴显示设备,标志着增强现实的诞生。因此,他的研究成为虚拟现实的理论基础。他用半透明的镜子作为图像显示,并同步合成了CRT显示器显示的计算机图像和真实环境。另外,他用机械方法和超声波传感器测量用户头部的位置。这能确保图像重叠和真实环境的正确注册。
1.2目前的挑战
如前所述,合成的虚拟信息(通常是三维图像)和真实环境的准确的、有效的注册非常重要。为了达到这个目的,对于正在移动的用户,系统必须持续地判断用户在环境中的实时位置。
因此,“追踪”和“注册”问题是增强现实技术的主要挑战。对增强现实应用来说,精确、快速、健壮地追踪观测物,并且很好地融合虚拟物体和现实世界非常重要。通常,我们可以通过全局坐标系下的绝对位置追踪来分辨从外到内或是从内到外。第一种是用环境中的固定传感器来追踪运动目标。第二种是用运动目标本身的传感器。这些传感器可以判断它们与环境中特定标记的相对位置。这两种方法通常是用是否使用摄像头来区分,但它们也可以用其它传感器来描述。
继机械和电磁定位,光学定位越来越流行。红外线方案,精度高、定位速度快,基于特性标记定位的传统摄像头方案是一种低成本的选择。不需要标记的方案,称之为无标记方案,目前面临很多挑战,但是最有前途的方案。图1.1(a)是一个无标记的脸部追踪实例。
2.3 景深感知
传感器通过芯片或菲林片感知光线,从而感知物体或图像。人眼将获取的光线信息发送到大脑来捕捉图像。双眼获取的同一景象的图像有大小尺寸上的细微差别,使得大脑能够重建景深。这种现象就是立体视觉。立体视觉可以通过立体镜子显示人工设计的虚拟世界的两幅图片给人们构建一个虚拟的环境。对真实世界来说,双眼看到的图片传到大脑后被融合成一个三维图片。
2.3.1人眼
人的眼睛是球状的,直径大约25毫米,里面充满了液体,对光的折射率大概1.336。
概要:本文主要讲在未知场景中,对摄像头位姿估计的方法。与机器人中采用SLAM类似,我们针对小型增强现实工作空间里手持式相机进行自主导航和定位。
自主导航和地图构建将分成两个线程:追踪相机的运动和从图像帧里处理3D导航地图的点特征。这里会涉及到优化技术和应用的实时性:本应用里面的地图在自主导航里面使用上千个地标,是最新的精确的健壮的系统。
1. 应用简介
增强现实使用给用户提供更多信息的环境。可以用于城市导航地图、零件的CAD模型、甚至是一些离散的信息。该应用可以使用户和静止的物体动态交互,如果模型或地图对机器或程序来说易于理解,那么增强现实应用的注册信息就可以直接执行,这其实也是基于相机的增强现实的主流方法。
不幸的是,机器程序易于理解的地图并不存在,它需要物体被标记。因此,需要传感器来获取这些特征,而传感器又有使用范围和质量的限制。信息的注册也就限制了追踪效果。那么,在增强现实应用中,就会使用扩展的追踪方法,就是在未知的场景里预先添加信息来获取最初需要的信息,这样就避免之前传感器检测不到某些未知地图的状况。最开始地图是一个比较小的点阵,后面的版本mono-SLAM算法已经可以不需要预先提供初始信息或地图了。
本文讨论使用校准过的相机在未知场景中构建环境地图。建立环境场景后,将虚拟物体放入场景中,在这个过程中可以精确地与真实物体关联。
我们并没有预先加入足够的信息到用户使用环境中,很多增强现实应用就不适用。我们的方法是通过远程专家提供有意义的提示和注解,本应用中采用预先虚拟模拟的沙盘。
我们从地图的云点估计一个飞机的模型,这可以推广到一般的物体的虚拟特征。如图所示。实际上,我们将平面物体(有纹理)转换成互动的立体的虚拟影像,在这个阶段,我们开发了简单的游戏。相机界面变成了同时观察和用户交互的工具。
为了能让用户更自由地与虚拟环境交互,我们需要快速、精确和健壮的相机追踪算法,当进入新场景时,能重构地图,那么这样就有一些限制,场景要尽可能小,要静止画面不能扭曲。小,意味着用户需要花更多的时间在同一个地方,如桌子、房间角落或单一建筑物前。我们也考虑到应用的扩展,扩展到大型的增强现实工作空间,如城市。
2. SLAM方法
方法总结:
a. 自主导航和地图构建分离,用两个并行的线程;
b. 地图构建基于关键帧,使用批处理方法(使用Bundle Adjustment 减小误差)
c. 地图的初始化采用立体匹配
d. 更新的点阵通过极值点获取
e. 获取大量的点用来构建地图
这里可以比较一下目前最新的方法。手持相机的同步导航和地图构建,EKF-SLAM和FAST SLAM,导航和地图构建紧密地关联,相机的位姿和图标的位置根据每幅图像帧同时更新。我们认为手持相机比移动的机器人更难追踪:机器人获取的数据可以测得距离;机器人可以以很慢的速度移动。相反,单目手持相机无法应用在这种场景中,数据融合产生错误,不可避免。而上面的两种方法,可能会加大这种错误。即使通过JCBB和RANSAC算法增强系统的健壮性,增强现实仍然无法使用。
这样自主导航和地图重构就要分开。两个功能分开后,导航就没有必要依赖于基于概率论的地图构建,健壮的自主导航方法就可以加入。实际上,两个功能之间并没有数据关联。由于计算机多线程处理能力,自主导航功能就贯穿于整个图像处理过程中,并增强性能。
当相机没有移动的时候,图像帧里包含足够多的信息,没有必要每一帧都拿来做地图构建。我们主要处理少量有用的关键帧。这些关键帧的能实时地处理,这个过程是在下一个关键帧进来之前完成。然后,用高度精确的批处理算法处理后面的地图构建,这个算法如Bundle Adjustment.
Bundle Adjustment 在视觉里程导航中被证明行之有效,我们觉得采用这个方法。首先,通过立体5点构建初始地图,然后用本地Bundle Adjustment追踪相机最近的N个位姿,以获取较长距离下的期望精度。当系统初始化后,我们使用本地地图更新,我们试图构建全局地图,那些特征点可以再次被访问,这样就可以提供全幅地图优化。最后,我们不采用2D追踪而使用极值特征搜索。
3. 更进一步工作
系统采用UKF,使用了很少的特征点构建地图。
还有采用了学习算法,预先标记点追踪,识别特征,在训练阶段采用经典的Bundle Adjustment 算法,追踪性能不错,但没有经过学习后,没有后续尝试。还有通过其他的估计方法发了论文,说更精确,更健壮,但牺牲了系统性能,处于不稳定状态。
还有采用了SfM方法,加入了惯性传感器和鱼眼透镜,从3D位姿估计中耦合了2D特征导航算法,健壮性增强。
4. 地图
地图由M个特征点构成,位于世界坐标w下。地图Pj中的j点,坐标为Pjw=(xjw,yjw,zjw,1)T。每个坐标由nj个像素点组成。
地图系列由N个关键帧。每个关键帧以相机为中心点的坐标系,第i个关键帧是ki.
世界坐标系与关键帧坐标系的转换为:Ekiw.
每个关键帧有4个8bpp灰度值的图像金字塔;第0层存了一幅640x480的照片,第3层子抽样分辨率是80x60。
并不是每个像素都单独存储,观察到每帧的特征点后,只存储这个帧的特征点。每个地图有一个关键帧,每个关键字有一个金字塔组合,像素位于金字塔的层级中。
在金字塔层级中,每块是8x8的像素方块;在世界坐标系下,块的大小取决于金字塔层数,到关键帧中心的距离,还有块的方位。
后面的例子里,每个地图上有2000到6000个特征点M,有关键帧N=40到120个。
5. 自主导航
在3D地图估计方法构建后,将设计基于特征点的自主导航系统。
导航系统获取图像,实时估计相机位姿构建地图。
基于这样的估计,虚拟的增强图像可以画在相机动画帧的上面。
每帧画面上,系统执行如下导航步骤:
1. 获取新的图像帧,根据运动模型预先估计位姿;
2. 根据图像帧的位姿估计,地图特征点投射到照片上;
3. 根据少量的(50)粗略的特征搜索图像;
4. 根据这些粗略匹配更新相机位姿;
5. 根据大量的(1000)特征点映射的图像再次搜索;
6. 在所有匹配后,最终的关键帧的位姿估计就计算出来了。
5.1 截取图像
相机可以提供640x480像素的图像帧,速率30Hz。这些帧可以转换成8bpp灰度,用于自主导航和增强现实显示。
导航系统构建4层图像金字塔,每层用FAST-10 conrner detector扫描。
相机位姿的估计模型:decaying velocity model. 有点像a-b constant velocity model,但缺少测量,预估过程速度会下降,最终停下来。
5.2 相机的位姿和映射
为了将地图上的点投影到飞机图片上,需要将世界坐标系转换成以相机为中心的坐标系C。
可以通过矩阵4x4 Ecw 与矩阵的相乘(线性变换与线性变换的乘积),获得相机的位姿: Pjc=Ecw x Pjw (1)
5.3 图块搜索
5.4 位姿更新
5.5 导航优化
为了增强导航系统对相机运动、图块搜索和位姿更新的适应能力,我们需要做两次。初步粗略搜索只搜索当前图像金字塔的当前帧的最上面一层50个点。这样搜索范围就比较大。新的位姿就可以计算出来。然后,1000个图像块继续搜索。更精细的搜索将在更高一级的金字塔图像块中。最终的位姿就是这样一个由从粗到细的过程。
5.6 导航功能质量与错误恢复
6 地图构建
6.1 地图初始化
6.2 关键帧插入和极值搜索
6.3 Bundle Adjustment
6.4 数据关联精细化
6.5 程序执行备注
7 结果
7.1 视频导航性能
7.2 地图构建状况
7.3 与EFK SLAM合成对比分析
7.4 与EFK SLAM子集对比分析
7.5 手持式相机AR
8 后续工作的不足
8.1 失败分析
8.2 地图构建不充分
9 结论