前言
本文为北京理工大学学堂在线上的慕课——虚拟现实与增强现实技术的学习笔记,仅供学习,不做商用,如有侵权,联系我删除即可。
一、绪论
1.1 什么是虚拟现实/增强现实
- 虚拟现实:Virtual Reality(VR)
- 增强现实:Augment Reality(AR)
1.1.1 虚拟现实的定义
虚拟现实有着多种定义,较为常用的有以下定义:
- 美国罗格斯大学Grigore Burdea教授在其著作《Virtual Reality Technology》中给出如下定义:A high-end user-computer interface that involves real-time simulation and interactions through multiple sensorial channels(visual auditory, tactile, smell, taste)。 翻译成中文就是:虚拟现实是一种高端人机接口,包括通过视觉、听觉、触觉、嗅觉和味觉等多种感觉通道的实时模拟和实时交互。
- 钱学森院士翻译为“灵境”。
- 北航虚拟现实技术与系统国家重点实验室首席科学家赵沁平院士指出:虚拟现实是以计算机技术为核心,生成与一定范围真实环境在视、听、触感等方面近似的数字化环境。它是人类在探索自然、认识自然过程中创造产生、逐步形成的一种用户认识自然、模拟自然,进而更好地适应和利用自然的科学方法和技术。用户借助必要的装备与其进行交互,可获得如临其境的感受和体验。
虚拟现实是典型的交叉学科,涉及图形图像学、计算机视觉、实时分布系统、光学、电子学、控制学、心理学等多个学科。
1.1.2 虚拟现实的特征
虚拟现实的特征曾被Burdea和Langrana概括为著名的VR三角形,或称3I。
- Immersion(沉浸感):用户作为主角存在于虚拟环境中的真实程度。
- Interaction(交互性):用户对虚拟环境内物体的可操作程度和从环境得到反馈的自然程度。
- Imagination(构想性):用户在崭新的环境中获取新的知识,提高感性和理性认识,从而产生新的构思。
-
Intelligence(智能化):随着时代的发展,引进第四个I,即智能化。
1.1.3 增强现实技术
增强现实是虚拟现实的一个重要分支,与虚拟现实的区别在于增强现实不是把使用者与真实世界隔离开,而是将计算机生成的虚拟物体或其他信息叠加到真实场景中,从而实现对现实的“增强”。
![](https://i-blog.csdnimg.cn/blog_migrate/68c1fa271cef35b644fd60d377c0f186.png)
图源:学堂在线,北京理工大学,虚拟现实与增强现实技术1.1节视频
1.2 虚拟现实与增强现实的应用
课程主要在军事、航空、航海、航天、科研、工业、医疗、文化、生活领域简单介绍了一些应用实例。
二、虚拟现实软件技术基础
2.1 虚拟现实中的一些常见概念
2.1.1 碰撞检测
碰撞检测可分为近似检测和精确检测两类。
近似检测又称为包围盒碰撞检测,使用三维区域进行检测,测试三维空间两个包围盒是否相交。
包围盒:包围给定三维图像所有顶。包围盒可分为方向包围盒和轴向包围盒。
- 方向包围盒(DBB):沿着对象主轴方向的六面体,当对象旋转式会动态改变方向。
- 轴向包围盒(AABB):沿着世界坐标系轴方向的包围盒,特例是固定大小的包围盒。
2.1.2 表面变形
发生碰撞时,除了发生碰撞的位置发生变化外,表面形体也要发生弯曲或者凸起的变化。
改变顶点的位置,但不改变顶点之间的关系。
2.1.3 表面切割
改变顶点位置的同时,改变顶点之间的关系。
2.1.4 各种效果
粒子效果等物理效果仿真可以极大的提高人在虚拟环境中的真实感和沉浸感。
2.1.5 角色行为建模
随着深度学习和强化学习技术的发展,当前很多行为建模是通过网络计算的方式实现的。
2.1.6 几何建模
当场景比较简单时,可以使用美工手绘的方式,但是当要创造一个更为真实的场景的时候,手工创建量就会变得非常大,一般会采用三维扫描的形式来进行数据获取。由于三维扫描的数据量非常大,实际使用时都是用三角面构成的几何体。
需要把三维点云首先进行数据清理,把一些多余的点进行去除,剩下一些关键的三维点,根据他们的相邻关系,构建成一个个的三角面,并最终根据一些表面的优化(如平面可以优化为几个点的表示形式,球面剔除中间的部分等),根据精度的要求再进行一次简化,最终就可以得到几何体。
2.2 虚拟现实中三维物体的几何描述
2.2.1 构造实体几何表示法(CSG)
通过对体素进行集合运算而得到的新的形体的一种表示方法。体素可以是长方体、柱体、锥体、球、环或封闭的自由曲面等等,也可以是半空间;其运算为几何变换或正则集合运算;通过对物体的正则并、交或差集合运算生成一个新物体。
2.2.2 基于特征的表示法
通过传统的几何造型系统来实现,如螺纹等,可以用更加复杂的三维函数表达。
该方法适合创建人工的对象,但不太适合创建基本的像岩石、人脸的对象。
2.2.3 三维模型的参数化表示(几何体的NURBS曲面表达方式)
通过贝叶斯函数来表达一个贝塞尔表面来构建几何体的。
贝塞尔表面的好处是可以构建一个无缝的完全光滑的表面。
在表达非光滑表面时会变得复杂,即存在不能在光滑和非光滑之间来回切换的问题。
2.2.4 三维模型的多边形表示
由于三角形是最小的表示图形,对一个复杂图形无论怎么切分,最后都可以看作是三角形的拼接。因此,可以把任何一个物体的表面全部用差值的方式切分成三角面。
对物体的精致程度的要求不同,采用不同的三角剖分。无论是光滑还是非光滑,都可以表示。
在数据存储时,可以连续的存储三角形的序列,从而可以少存一些点,把重复的顶点进行优化。
2.3 计算机图形学
2.3.1 计算机图形学
计算机图形学是虚拟现实技术的核心基础,它是一门将我们的三维世界进行数据化,并且进行渲染和呈现的技术,主要是使用数学的方法将二维或三维的图形转化为计算机显示器的栅格形式的科学。计算机图形学的主要研究内容就是研究如何在计算机中表示图形、以及利用计算机进行图形的计算、处理和显示的相关原理和算法。
2.3.2 计算机图形学的研究范围
虚拟现实在一般情况下理解为把我们的真实世界1:1的浮现在虚拟世界中,但实际上在做计算机图形学的渲染时,不一定完全按照真实世界的情况来渲染,而是可以超越我们的真实世界,甚至可以创造出一个如梦如幻的风格的世界。
计算机图形学的研究范围可以大致分为四点:
- 建模(Modeling):主要完成对环境里面的数据获取,以及把真实世界的场景表达为一个三维数据的过程。获取到的数据是以数据文件的形式保存在计算机的内存和硬盘中的,日常情况下不可见,如果需要让用户看到这些数据,需要以点阵光栅图的形式呈现在二维屏幕上,即渲染。
- 渲染(Rendering):将三维数据呈现在二维屏幕上的一个过程。
- 动画(Animation):让虚拟世界中的三维数据能够准确地运动,表达出一种真实的运动过程。
- 模拟(Simulation):让虚拟世界能够进行虚拟互动并且看起来非常像真实世界,就需要对真实世界整个的物理场景进行高精度的仿真和模拟,即模拟就是将真实世界中的物理现象搬迁到虚拟世界中。
2.3.3 计算机图形学中的一些术语和概念
- 像素(Pixel):计算机中的二维图像由网格状排列的离散图元组成,这些图元被称为像素。
- 体素(Voxel):体素是体素网格(Voxel Grids)的基本图元。体素可以看作是三维空间中的像素。体素具有固定的尺寸,通过网格状排列构成三维图像。在处理医学三维数据或是使用专门的体三维显示设备时,常会用体素来表示三维模型。但是实际使用时,考虑到运算量、表面光滑度及精度等问题,并不使用体素作为基本构建单元,而是使用面片作为基本构建单元。
- 顶点(Vertex):顶点用于储存三维空间上一点的各种属性。顶点信息中至少会包含该点的三维坐标信息(x,y,z),也可能包含这个顶点所呈现的颜色(RGB)、物理特性、反馈特性
- 三角面(Triangle):三个顶点组成一个三角面,三角面是实时系统中构成各种复杂三维物体的最小图元。在计算机图形学中,为了减少计算量,只会绘制三角面的一个面,因此三角面具备正面和反面之说,在三角面的正面上,在它上面任意一点,做一个垂直于这个面的矢量,将这个矢量称之为法线,法线代表了正面所指的方向。
- 多边形(Polygons):三维模型的一种最常用表达方式是多边形表达,在这种表达下,物体被近似的表示为:一个由多个相连三角面组成的网格面(Mesh)。
- 点云(Point Cloud):点云是顶点的数据集。点云数据仅包含点的序列,而不包括点的顺序等信息。在初期用激光扫描器扫描物体时,只能一次性的测量单点的三维位置,得到的是大量的点云数据,后期会对点云进行优化,选择一些更重要的点,并让这些点构建成三角形,最终在实时引擎中还是使用的多边形的表示方式。
- 纹理(Texture):纹理是保存三维物体表面信息的基本单元,一般是以二维图像的形式出现,表达的时物体表面的细节图像。纹理一般附着在三维物体上。纹理还可以增加更多的信息,比如反照率、吸收等物理特性。
- 材质(Material):所有的纹理和这些物理特性合集在一起。材质包含纹理,纹理是材质的一部分。
2.4 三维渲染技术
2.4.1 渲染与渲染管线
渲染:将储存在计算机中的三维数据生成一个二维图像,让用户看到的过程
早期只用CPU进行渲染操作,现在使用显卡进行渲染,显卡的核心是GPU,GPU最开始设计的时候就是为了能够实现并行处理以及大量的浮点运算。
渲染管线:固化下来的渲染的过程。
固化下来的最基本的渲染过程为:
- 从内存中读取三维数据
- 对三维数据进行处理
- 再把它投影到二维平面上
- 最后生成在显示器上
渲染管线:
- 顶点生成
- 顶点处理(程序可控制)
- 光栅化计算(程序不可控制,由显卡决定)
- 像素处理(片段化处理,fragment processing,可以编程,可以逐个像素的对最终输出的图像进行处理,如光照计算、颜色计算、透明值运算、复杂的粒子运算等)
- 最终输出
前两步为三维数据,光栅化计算后为二维数据。其中顶点处理和像素处理是最关键的两个环节。
Shading Language:专门在GPU上跑的语言
2.4.2 纹理映射
把三维空间三角形上面的所有信息填充到二维三角形对应的每一个像素上。这些信息包括三角形上每个位置对应的颜色以及它的纹理坐标。
纹理填充:在保存数据的时候在三角形的内部是没有保存它的颜色的,只是在顶点上保存了它的颜色,内部的颜色是不确定的,一般来说是由计算机采用双线性插值的方式获得颜色,但这样会导致色彩不够丰富。因此使用纹理贴图来解决这个问题。
纹理贴图:构建的三角形的顶点包含颜色和纹理坐标,纹理坐标表达的是这个顶点在一幅二维贴图上的位置,通过拉伸变换,可以实现纹理从纹理空间到屏幕空间的映射。当所有三角形的内部纹理依次填充完了之后,就会得到最终生成的图像。
通过纹理映射的方式,可以补齐所有顶点之间三角形内部的像素颜色,最终实现三维数据到二维空间的渲染。
2.5 高逼真数字人技术
虚拟现实中经常会用到数字人和我们的环境进行互动的。
希望能够通过摄影测量的方式,能够在场景中创建一个和真人完全一致的、具有智能的数字人。
当前数字人技术存在三个主要的难点:
- 逼真外貌难:当我们创建一个机械物体的时候,它本身人和它的情感会随着它更像人而提升。使机器人不断地更加像人,当其非常像人的时候,会变得非常吓人,这就是我们所说的恐怖谷。如果想要突破恐怖谷效应,需要数字人的创建精度做的非常高,完全和一个真人一样才能实现。
- 智能交互难:数字人需要理解用户的语音、动作、眼神,这些需要强大的人工智能的计算。
- 流程标准化难:数字人的创建过程很长,一般为6个月到一年,由一个几十人甚至上百人的团队来进行构建。
为了解决以上难点,提出采用摄影测量学的方式:通过光场采集设备,对一个演员的各种表情进行获取,当对这个演员的多个表情进行采集之后,可以基于这些数据进行分析,通过深度学习的方式,把他的一些肌肉变化、脸部变化进行提取,重新再组合之后就可以得到一个高逼真数字人。
除了对几何形状的获取,还需要得到纹理表面非常细节的信息,甚至是毛孔等的信息,这种我们需要用光学测量的方式来获得。
让人物动起来的方式采用的是演员驱动的方式。
而像数字人身上穿着的衣物,还有一些交互的内容,需要通过基于物理的方式对它进行建模,这样当它做出特定动作时,它的衣服会随着它的动作产生真实的褶皱以及一些变化。
数字人的功能和智能:第三方的大脑(第三方AI云服务)+数字人的小脑(通过深度学习进行训练,将标准的文本接口转化为数字人的动作)
在虚拟现实和增强现实中,我们的需求主要是实现把数字人以实时可交互的形式放到虚拟世界中。
2.6 虚拟现实软件体系介绍
2.6.1 VR引擎
三维引擎(或叫虚拟现实引擎),是构建虚拟现实系统最重要的一个软件基础。
任务:从软硬件的输入输出设备中读取到数据、访问与任务相关的数据库以及模型、能够实时的更新以及渲染三维世界,最终把结果反馈给用户(输出显示设备)。
构建一个实时的三维系统,至少应该有30帧左右的刷新速度。
常见的三维引擎:unity3D(开发快速内容)、UNIGINE(早期影视内容)、Unreal(虚幻引擎或UE引擎,当前主流开发大型游戏),所有的三维引擎的底层都是帮助我们去和硬件打交道。
早期所有的游戏和可视化程序的开发者都需要自己去和显卡打交道。通过在显卡里面编程完成整个数据处理和渲染的过程。
- OpenGL(Open Graphics Library):工业标准,能够提供一个完整的开发接口,让用户只需要开发OpenGL的程序,就可以在不同的显卡上面进行运行。
- DirectX(Direct eXtension,简称DX):微软自己提供的平台,更多偏向于游戏开发,因此其集成了更多的有关视频、音像、输入、输出设备以及网络和相关的一些开发内容。
即便如此,开发者依然需要学习大量基础编程的内容,同时要对硬件底层有非常大的了解,才能去开发一些复杂的程序。
因此,三维引擎的出现主要是为了减低开发者的主要的工作强度。
如今虚拟现实的内容构建时,更多的时候需要程序员和开发者考虑的是场景的表现,包括它的美术风格,不能让程序员花费大量的精力在技术实现上。所以为了简化整个开发过程,整个三维引擎起到的就是将我们之前的所有软硬件基础开发内容进行封装,通过一种非常方便的工具化的方式呈现给开发者。
2.6.2 内容创建工具(DCC工具)
常见的DCC工具包括:
- 建模工具:3DSMax,Maya等
- 纹理素材:图像处理软件,如Photoshop
还有像声音素材、文字素材、视频素材、材质素材等,都是由DCC工具辅助完成。由DCC工具创建的所有内容都是在引擎中进行一个完整的结合的。
2.6.3 游戏引擎架构
对于一个引擎的架构来说,最核心的内容是场景管理模块。
- 场景管理模块:主要在构建一个三维虚拟场景,需要把不同的资产(如地面、天空、岩石、建筑物)摆放在不同的位置,从而构成一个用户可见的世界。
- 三维数据处理模块:让引擎能够读取各种各样的三维数据格式。
- 渲染模块:将三维的内容绘制到屏幕上,实现渲染流程。
- 物理学模拟模块:将物体的刚体动力学、柔性、切割等等,进行准确的物理模拟。
- 声音处理模块、人工智能模块:提供角色里面的更多交互内容。
- 所见即所得的开发工具(沙壳工具):用户可以通过拖拽的方式,非常简便的组织资产,并且创建一些资产的行为,简化构建虚拟世界的过程。
![](https://i-blog.csdnimg.cn/blog_migrate/f00207c06b5c31d8e8360d9a496b3ad2.png)
三、增强现实技术基础
3.1 增强现实技术及其特点
3.1.1 增强现实:Augmented Reality(AR)
增强现实是虚拟现实技术自身不断发展过程中延伸出的一个重要分支,也是近年来的一个研究热点。增强现实就是增强用户对现实的感知和认知的一种技术。
现实-虚拟连续统一体
最左端是人类所处的现实世界,依次是增强现实、增强虚拟,最终到达最右端的由计算机渲染绘制的虚拟世界,即虚拟现实。
增强现实和增强虚拟合在一起,被称为混合现实。
![](https://i-blog.csdnimg.cn/blog_migrate/409a75a6afffce7e053e5de646aafe31.png)
对增强现实而言,计算机渲染绘制的信息是对用户真实场景的一种补充。
增强现实从原理上来说,就是对现实的增强,而不是对真实环境的取代。
3.1.2 增强虚拟:Augmented Virtuality(AV)
增强信息是服务于虚拟世界的。
AR和AV所强调的重点不同。
AR强调计算机绘制渲染的信息服务于现实世界;而在AV中,现实世界的信息是服务于虚拟场景的。
AR和AV都属于MR的范畴,即允许真实元素和虚拟元素在不同程度上叠加。
3.1.3 AR的特点
1997年,北卡大学的罗纳德·阿祖玛教授概括了AR的三个典型特点:
- 虚实融合(Combines real and virtual):实现虚实融合,需要能够将虚拟和真实场景进行完美融合的显示设备。
- 实时交互(Interaction in real time):在AR领域中用的比较多的交互方式包括语音、触控、手势、眼动,未来可能还会有脑机交互。
- 三维注册(Registered in 3D):将虚拟和真实场景在几何空间上去对准,主要指的是空间属性上的注册。
- 三维空间注册包括静态注册和动态注册,静态注册主要是由标定技术实现,动态注册主要是由跟踪定位技术实现。
- AR系统中的标定一般是指估算系统中各固定坐标系之间的空间关系,以及测量传感器设备的非空间参数(例如光学透视式头盔显示器的标定、摄像机内部参数的标定等)。
- AR系统中的跟踪定位(Tracking)是实时估计用户和真实场景间的六自由度位姿(三自由度的旋转、三自由度的平移)。
- 有了跟踪定位,当用户看到真实场景中的位姿发生变化的时候,计算机渲染的虚拟物体也要产生相对应的运动变化,从而使人类感觉虚拟和实际的物体是一体的,进而实现高度的融合。利用标定和跟踪技术才能实现虚实场景在三维空间上的对准,即三维注册。
3.2 增强现实系统的分类及其各自的特点
3.2.1 AR的技术难点
由于AR是VR的分支,因此具有和VR相同的技术难点,此外,还有AR自身所具有的挑战性的技术难点:
- 能够将虚拟场景和真实环境融为一体的新型显示设备
- 能够将虚拟和真实环境精确对准的跟踪定位手段
增强现实对跟踪定位技术的要求不仅包括跟踪定位的精度、数据的刷新率以及系统的延时,更重要的是要实现精确标定虚拟环境坐标系、真实环境坐标系以及用户本身视觉坐标系之间的关系,实现它们之间的精确对准,以及在运动过程中正确的维持这种关系。
虚实场景的融合显示是增强现实系统的核心技术之一。
虽然AR系统对融合显示设备的要求不再局限于虚拟环境的浸没感,但也不是要将虚拟环境和真实环境简单地进行叠加,它还需要解决虚拟和真实环境间的光照一致性、遮挡一致性以及头盔显示器自身的显示分辨率、视场角等多种因素。
3.2.2 AR显示系统的分类
按融合显示方式:视频透视式AR、光学透视式AR,以头戴头盔显示器为例进行说明。
视频透射式AR:是由相机获取真实环境的图像或者视频流,计算机通过跟踪定位、融合渲染等技术将所要添加的虚拟信息叠加在相机所拍摄的实时信号之上,从而实现虚拟场景和真实场景的融合,最后在显示屏上呈现给用户。
![](https://i-blog.csdnimg.cn/blog_migrate/1cee40f00584a87dc08c8841fb7ca440.png)
光学透视式AR:真实场景是用户透过安装在眼前的半反半透镜直接看到的。虚拟场景是将微型显示器上的图像经过光学系统放大,再通过半反半透镜反射进入到用户的眼睛。
![](https://i-blog.csdnimg.cn/blog_migrate/d702bd6b42a6602b4a39d38ef88e5121.png)
从技术原理的角度来看,视频透视式AR和光学透视式AR是完全不同的。
3.2.3 两种显示的优缺点对比
在合成场景的灵活性方面
- 光学透视式显示的一个主要问题是计算机生成的虚拟物体不能够完全遮挡住真实环境中的物体。由于光学透射式头盔显示器的光学模组允许来自真实和虚拟环境中的光线同时通过,此时虚拟场景无法完全遮住位于它后面的真实景物,从而出现漂浮的现象,破坏了真实景象和虚拟场景融合的真实感以及由于遮挡而提供给人的各种深度信息。
- 视频透视式显示由于在真实和虚拟环境中的物体都是由计算机处理后在头盔上进行显示的,此时真实场景的分辨率就降低到了摄像机分辨率的水平,真实场景和虚拟场景的匹配就很容易通过各种视频融合的方式来实现。但是由于摄像机和人眼的实际观察视点在物理上是不可能完全重合的,所以这种形式就会使摄像机的观察视点与人眼的实际视点不重合,使得用户看到的视频景象和真实场景存在偏差。
在显示视场角方面
- 对于光学透射式AR系统,由于光学系统一般都会有畸变,因此研发具有比较大视场角的AR的头显就必须综合考虑光学系统畸变所带来的各种潜在的显示问题。
- 视频透射式头盔显示器可以通过图像处理的方法,能够矫正光学系统存在的畸变。
在时间延时的匹配方面
- 光学透视式AR系统中,用户可以实时的看到真实世界的景象,而虚拟场景往往需要经过一系列的计算延时才能够叠加显示在真实场景之上,容易造成系统的动态注册误差,使增强信息在真实场景中产生“游移”现象。
- 视频透射式AR系统可以将拍摄真实场景的时间与绘制虚拟场景的系统延时进行匹配,来减小动态注册误差,提高注册精度。
在光强度匹配方面
- 光学透视式AR系统存在真实与虚拟场景光强度难以达到最佳匹配的缺点。
- 视频透视式系统由于无论是真实还是虚拟场景,均在头盔显示器上显示输出,因此不存在此方面的问题。
- 未来在视网膜上直接成像有望解决该问题。
在安全性方面
- 光学透射式AR显示可以带来更大的安全感,因为真实场景用户可以直接用眼睛看到。
- 视频透射式AR显示,一旦断电或是相机发生故障,用户的眼前将是一片漆黑。
3.3 增强现实头盔的标定技术-SPAAM
增强现实系统中所需要解决的关键问题之一是视觉一致性问题。
视觉一致性包括几何一致性、光照一致性等,缺少任何一种一致性,都会削弱用户的体验感。
3.3.1 光学透射式AR头盔的标定
对光学透射式AR头盔的显示设备
- 几何一致性主要是指将虚拟信息以几何的方式与真实物体“对齐”,简单来说就是将虚拟信息渲染在与用户视网膜所看到的真实物体完美匹配的二位显示位置上,所强调的是虚实物体在空间位置上的匹配。
- 光照一致性主要是虚实场景融合时候的真实感光线绘制要求。
为了实现空间位置上的对准,首先需要对用户的眼睛以及AR显示设备所组成的整个系统进行标定。由于光学透射式AR头盔可以直接透过光学的系统用眼睛看到真实世界的场景,计算机是没有办法获取用户视网膜上的图像进行处理的,所以要对光学透射式头盔显示器进行标定,需要额外的借助摄像机,来获得真实场景的图像。
因此,光学透射式头盔显示器的标定技术要解决的就是用户的眼睛、头盔显示器的跟踪系统以及显示系统三者之间坐标系的转换以及模型参数求解的问题。
3.3.2 SPAAM标定
最经典的手动标定方法是单点主动对准方法(SPAAM:Single Point Active Alignment Method)
SPAAM算法是将头盔显示器的透镜组和用户的眼睛组合在一起作为一个系统来处理,使用的是针孔相机模型来参数化整个标定的过程。用户可以通过控制头显像面上的二维图像点和真实场景坐标系下的三位点进行多角度的匹配来获取标定数据,最后使用多组3D-2D匹配点,来求解一个3×4的投影矩阵参数。
首先,标准的SPAAM是在环境中放置平面靶标来作为被跟踪的目标,靶标中央位置设置一个十字叉,来作为标定数据获取阶段的真实靶标点。SPAAM算法就是为了实现虚拟像面上的十字叉与真实场景中靶标上的十字叉对齐。
![](https://i-blog.csdnimg.cn/blog_migrate/2f73fd7d421ff0957bfd178a2a62ebe5.png)
四个坐标系:世界坐标系W,头显(跟踪相机)坐标系C,头显像平面坐标系,人眼和头盔显示器光学镜片组合在一起而形成的虚拟相机坐标系E
要实现虚拟像面上的十字叉与真实场景中靶标上的十字叉对齐,需要明确虚拟像面上的十字叉在头盔显示器像面坐标下的二维坐标是如何跟空间中的三维坐标去对齐的。
![](https://i-blog.csdnimg.cn/blog_migrate/3042091c20fc860360058d264bdef971.png)
PE和K是待求解的,将PE和K合在一起,用PG代替表示。
SPAAM就是采用手工对齐Xs和Xw的方式来求解出PG,这样一旦知道了匹配的空间点的坐标,就可以通过跟踪定位的方式知道Pc,进而PG就可以求出来了。
3.4 增强现实跟踪定位技术的分类
是
3.5 增强现实SLAM跟踪定位
是
3.6 增强现实的标注技术
是
3.7 脑机接口技术
是
3.8 深度感知技术
是
四、信息获取和显示技术
4.1 全景信息获取技术
4.1.1 全景信息获取的需求
在虚拟现实和增强现实的应用过程当中,用户带着头戴式显示进行转动,对应视角的图像信息就可以呈现给用户,当用户在虚拟空间中进行移动,也需要对环境信息进行全面感知。
传统四五十度视场角的相机无法满足虚拟现实和增强现实应用的需求。
4.1.2 机械扫描全景
实现360°成像的一个简单的方案就是使用一台普通相机,绕它的光心进行旋转,可以在三脚架上或者手持使用,在算法上可以通过图像匹配、计算单应、图像投影、图像融合,将一系列照片拼接形成全景图像。
缺点:无法实现动态的视频、拼接过程存在曝光不同、渐晕差异或者是由于抖动而导致的光心不对齐的问题。
4.1.3 传统镜头
传统相机镜头的根据视场角的大小可以分为远摄(长焦)镜头、标准镜头、广角(短焦)镜头(80°以上)。实现更大的视场角的镜头被称为鱼眼镜头。进一步优化,扩大相机的视场角超过180°,达到210°甚至310°,就可以覆盖水平的360°视场。
在透射式镜头前面加入反射表面同样可以实现水平360°成像。反射面型可以是抛物面、双曲面、球面以及高次非球面。
4.1.4 折返式全景成像
还有一种方案是将反射表面引入光学系统进行优化,并增加反射表面,形成折返式的全景成像系统。
折返式全景系统往往存在中央盲区,除了水平环带的区域、垂直南北极的区域的信息无法获取。针对中央盲区成像,在反射结构件中心区域镀半透半反膜,在成像CCD或CMOS中间区域获得中央盲区的信息,而四周是环形水平的360°的信息。两个区域在视场上有所重叠,以方便图像的拼接。
4.1.5 双相机全景成像
为了实现全部4Π立体角空间信息的获取,单个相机是不够用的。
可以将两个视场角超过180°的鱼眼镜头背靠背来使用,两个相机交叠的区域要进行拼接融合。
理想情况下全景信息的获取是从一个视点出发,但是通过两个鱼眼镜头进行拼接,两个鱼眼镜头的视点并不重合,会导致不同深度下拼接参数不同,因此,在拼接过程当中,需要预先计算重叠区域场景的深度和视点的位置,针对不同深度场景,用不同的参数进行图像融合,否则就会出现全景图像的缺失或者重复。
但这样的过程会耗费大量的计算资源,因此,在消费产品中,往往选择一个特定的深度,直接使用查找表的方式来进行全景的拼接,而在真实世界当中不在该深度的物体就会出现缺失和重复,因此,在光学系统设计过程中,两个相机的视点之间的距离越小,拼接的效果就会越好。
拼接的过程就是选择一个深度球面,通过空间场景和相机像素之间的对应关系,建立查找表,实现拼接。这些相机可以实现视频的拍摄和实时的拼。
4.1.6 多相机拼接全景成像
为了获得更高的分辨率,更多的相机被使用进行全景的拼接。
在虚拟现实应用过程当中,深度信息的获取也很重要,在获得全景信息的过程当中,通过设计,使得每个视场范围的场景都有至少两个相机拍到,利用立体视觉的基本原理,实现全景深度的重建,也可以简单地将相机分为两组或多组,组和组之间的光心距离固定,每个组的图像分别进行拼接形成全景图,这样就可以形成多个视点的全景信息。
为了获得更多视角、更逼真的全景信息,光场的概念也被引入到全景的拍摄当中,在获取全景信息的同时,获取空间场景不同视点的信息。
4.2 三维显示原理和技术
如何实现高逼真三维显示一直以来是虚拟现实增强现实领域的重要技术之一。
真实场景通过人眼成像在视网膜上,再经过人类的视觉感知系统,处理形成三维的深度感知。这种可以引起视觉感知呈现深度感的信息被称为深度暗示。
4.2.1 深度暗示
深度暗示可以分为心理暗示和生理暗示。
- 生理暗示是指三维场景对于人眼视觉系统产生的生理刺激形成的感知。
- 生理感知包括四种机制:
- 双目深度感知:包括双眼视差,三维场景在左右眼视网膜上形成相对位置有差异的图像,利用这种差异可以形成三维感知。
- 会聚暗示:观察点和每只眼睛之间的连线形成的夹角,也称为辐辏。
- 焦点调节:人眼观察不同深度的三维场景,通过睫状肌调节晶状体来改变人眼聚焦的位置使得物体在视网膜上进行清晰的成像。
- 运动视差:观察运动物体的时候,场景不同深度,物体相对运动的速度是不一样的,利用这种差异来形成深度感知。
- 心理深度暗示是指人类由于后天的经验假象,对于成像在视网膜上的平面物体,感觉形成的深度感,包括线性透视、像的大小、重叠、阴影、结构梯度和面积透视等。
4.2.2 三维显示技术
三维显示技术就是通过深度暗示来实现用户对三维的感知。
目前,单深度悬浮显示广泛运用于舞台、广告和展览展示当中,这种显示被称为佩珀尔幻想或者是佩珀尔投影,通过一个半透半反镜的反射,使得显示器上的物体形成一个二维的虚像,让用户产生一个悬浮的感觉。半透半反镜的悬浮成像技术,虚像往往是在镜子后边,距离用户比较远。
目前也有很多学者提出用不同的技术手段,实现单深度悬浮显示,如通过旋转的LED阵列快速进行刷新显示,实现图像的呈现;利用回反射的设备或者结构,实现光线的折转。
实际上,生理暗示是人类进行视觉感知的直接要求,而且生理暗示在三维深度呈现的作用方面远大于心理暗示,因此,在探索和研究三维信息获取和显示方法的过程当中,更多地会考虑生理暗示。
在生理暗示的方式当中,双目视差对深度的感知影响最大,因此,目前绝大部分的商用三维显示技术都是基于双目视差的。
原理上,三维显示设备通过系统设计,分别提供给左眼和右眼不同的视差图象,具体实现方法上又分为主动式和被动式。
- 主动式是在眼镜上有一个快速切换的液晶光阀,显示器和眼镜的光阀进行同步切换,每个时刻眼镜只有一个眼睛打开,显示器呈现对应的图像。
- 日常生活中使用更多的是被动式的视差图象的分离,可以通过在眼镜上渡红蓝滤光片,或者偏振膜,来实现图像的分离。目前电影院实现的3D电影,都是通过偏振的投影机、保偏的屏幕以及偏光的眼镜来实现3D效果的。
- 头戴式显示是通过两块互不干涉的屏幕,提供给相应的左右眼的图像,来实现三维的显示。
为了实现裸眼3D显示的效果,需要使用类似于视差栅栏或者柱面光栅的结构,将空间分成不同的视区,在每个视区中,能看到的像素并不重叠,这样可以将对应视差的图像呈现给正确的视区,观看者在正确的位置上就能体验到三维显示的效果。相比于二维显示,分辨率会有所降低。
基于双目视差的深度显示并不能完全实现全部深度暗示,并不完全符合人眼观察真实世界的过程,这样就催生了真实感三维显示的研究工作。
4.3 真实感裸眼三维显示技术
物体处在不同的深度上,人眼聚焦的平面以及双目视差的辐辏获得的深度平面应该是一致的,目前商用的视差型的三维显示系统在空间当中只构建了一个深度平面。眼睛会聚焦到这个屏幕上,三维显示物体通过视差作用让用户双目通过辐辏感知在不同的深度上,这样会导致眼睛的聚焦和辐辏的位置是不一致的。这是人目前观察三维显示获得疲劳感的主要原因。
4.3.1 真实感三维显示
- 体三维显示(体积显示):三维场景是由点构成的,在空间当中通过构建三维体素,来实现三维的物体呈现。
- 实现方式包括:
- 通过旋转机构体素构建的方式实现三维显示
- 通过多层屏幕的体素构建的方式实现三维显示。
- 实现方式包括:
- 光场显示:观察到的场景是通过接受物体产生的光线。光场三维显示的雏形是Nobel物理学奖获得者Lippmann在1908年提出的,称为集成成像技术。通过重建空间上各个点元朝向各个方向发出的光线来再现三维场景。
- 光线的构建可以采用微透镜阵列(每一个像素通过每一个微透镜,形成一束光线,屏幕上的像素进行组合就构成了空间光场)、投影机阵列(每一个投影机每一个像素也可以构成空间当中的一束光线,多个投影机组合就形成了空间光场)。
- 全息显示:通过重建三维场景振幅和相位的全部波前信息。全息术通过物光波和参考光波干涉的方式记录物光波的振幅和相位信息。全息显示就是利用这个原理,通过再现全部的振幅和相位信息来实现三维场景的显示。全息显示在原理上就是通过计算在动态全息元件上形成的对于光调制的图像,使得特定照明光照射在动态全息元件之后,在空间中形成待显示三维物体的波前信息。全息三维显示系统提供了三维场景光的强度、相位的全部信息,是真实感的三维显示。然而全息三维显示的显示数据量巨大,数据动态刷新量也很大,因此全息三维显示一直在实验室中进行,还没有面向商用的产品产生。
4.3.2 悬浮三维显示技术
将真实感三维显示和悬浮成像相结合,可以实现更好的呈现效果。
基于体三维显示、全息显示以及光场显示,结合光学成像,通过大尺寸的光学成像系统,可以将构建的真实感场景成像在空中。
4.3.3 周视三维显示技术
通过定向散射屏或者偏光光线元件,可以实现水平周视的悬浮显示。
4.4 头戴式显示的原理与分类
4.4.1 VR/AR头戴显示的设计要求
头戴式显示(近眼显示)由光学目镜和显示源构成。
光学目镜:将显示源的图像放大成像到远处。
在设计参数上,出瞳越大可以保证眼球在较大范围内移动,出瞳距离决定佩戴的舒适性,视场角、分辨率以及光学目镜的成像质量决定显示的效果。
所以在头戴式显示的设计过程中,我们的目标是在于大的出瞳,长的出瞳距离,大的视场角和高的成像质量。
4.4.2 VR头戴显示的分类
VR头戴式显示在结构上可分为半沉浸式和全沉浸式。
- 半沉浸式头戴显示设备由很小的视场角,遮挡了一部分视场,在不影响日常观看的时候提供了虚拟的图像信息,目前大部分用的虚拟现实头戴显示设备都是全沉浸式的显示结构,真实的世界会被完全遮挡,用户也会全沉浸在一个虚拟的空间。
- 全沉浸式的头戴式结构目镜的系统在实现上也有不同的光学形式。目前市场上大多的全沉浸式头戴式显示设备只用一片光学镜片来作为目镜,使用树脂材料(可以减轻重量),使用菲涅尔镜的结构形式,这样的话光学成像的质量往往不高。可以通过其他方式改善光学成像的质量。
4.4.3 AR头戴显示的分类
AR头戴显示根据光学目镜的结构不同,可分为:
- Bird bath:结构小巧便携,但视场角和清晰度显得不足。
- 自由空间耦合面:配合大的显示屏幕,是实现大视场角低成本头戴显示的一个有效结构,结构会显得比较笨重。
- 自由曲面棱镜:通过引入自由曲面,增加了设计的自由度,在实现更高性能的同时可以实现更便携的结构,
- 光波导:进一步缩小系统在眼前的厚度。
光波导的结构:
- 光学目镜是有光学耦入端、光波导和耦出端三部分组成。虚拟图像从显示器产生,利用投影系统,将图像成像在无穷远,光线通过耦入端进入到光波导,光波导利用光线在波导结构中全反射,增加光学的长度,从而减小了系统的厚度。耦出端将包含虚拟信息图像的光线进行调整,进入用户的人眼,同时,耦出端也具有光学透视式的一个功能,使得用户可以在看到虚拟空间的同时,看到真实的世界。
根据耦出端的不同,光波导的结构可以分为四种形式:
- 曲面反射耦合结构
- 微棱镜耦合结构:在这种结构中,有部分位置的光波导是完全透过的,不进行虚拟图像的光线调整,用户可以透过这些位置看到真实世界,有些结构是不具备半透半反功能的,这些结构可以将虚拟的图像光线进行耦出,由于这些结构的尺寸小于人眼的瞳孔尺寸,从而实现真实感世界和虚拟世界的耦合效果。
- 级联半透半反耦合结构:采用多个半透半反的结构组成,光线每经过一个半透半反结构,就有部分的光线进行耦出,这样实现了出瞳直径的扩展和出瞳距离的提升。
- 衍射表面耦合结构:不同的产品采用不同的微纳表面加工的工艺来实现,都共同实现了光线的耦出,达到了出瞳直径的扩展和出瞳距离的提升。
4.5 真实感头戴式显示技术
4.5.1 视差立体显示的缺陷
与裸眼三维显示技术类似,绝大部分商业化的头戴式显示产品,在空间中都仅构建了一个显示深度平面,在使用过程中,眼睛就会聚焦到这个屏幕上,通过双目视差的方式,让用户通过辐辏感知在不同的深度上,这样会导致眼睛的聚焦和辐辏的位置是不一致的,与人们观察真实世界是不同的。这是人们目前产生疲劳感的主要因素。
人眼在进行聚焦调节的时候,没有聚焦在物体的深度位置,就会出现离焦模糊。如果让虚拟物体直接成像在视网膜上,无论人眼聚焦到什么位置,虚拟场景的清晰程度不会发生改变,这样可以作为缓解聚焦和辐辏失配难题的方案。
4.5.2 视网膜投影头戴显示
有学者提出一种方案是通过改变光源或者照明系统,使得进入人眼的光束特别细,在人眼晶状体进行调节的时候,离焦模糊并不敏感,似乎是光线不经过人眼晶状体成像,直接投影在视网膜上。这种方案的结构和眼科学的麦克斯韦观察法相似,因此也被称为麦克斯韦观察法头戴式显示技术。
由于视网膜投影的方案在人眼入瞳位置形成的光斑远小于人眼的瞳孔大小,因此,当使用过程中,如果人眼没有对准这个光斑,或者眼球转动,就会导致虚拟图像发生缺失。
学者提出很多方案来解决这个问题,如通过眼球跟踪设备来追踪眼瞳的位置;或者通过机械或电子控制将这个聚焦广版移动到眼瞳的位置;也可以在空间中通过时分复用或者空分复用的方式,形成多个聚焦光斑,通过每一个聚焦光斑,都可以看到全部的虚拟图像。
多焦面头戴显示
时分复用的多焦面显示:通过动态元件快速刷新深度位置实现了多个深度的重建。
空分复用的多焦面显示:多屏通过半透半反结构在眼前实现多深度呈现。
通过多深度焦面的方式,实现体三维成像的效果,只有两三个深度平面只能缓解辐辏聚焦失配的问题,如果想要真正实现真实感呈现,需要更多的深度重建。
光场头戴显示
在出瞳位置重建三维场景的密集光场,通过微透镜阵列或者微孔阵列等元件调制形成光场。
在光场头戴式显示方法的实现过程中,显示器上的像素不仅用于空间分辨率的呈现,而且为了重建深度,也需要实现角度分辨率的再现。分辨率并不高,有学者使用迭代优化多层液晶显示的方式来优化空间光场,来提高显示分辨率或引入动态光学元件,通过时分复用的方式来提高分辨率。
全息头戴显示
目前,全息显示元件的显示面积和衍射角度都较小,而这两个物理量的乘积在实现真实感头戴显示的过程中往往不会增加,因此,想要获得较大的视场角,往往它的出瞳直径就很小,目前还很难得到一个商业化的效果。
在光学目镜的设计过程当中,不仅要考虑到人眼的观察区域(出瞳),而且需要优化三维场景的成像质量。
总结
未完待续