英语原文共 130 页
通过实时3D重建,在训练中使用基于游戏扩展的虚拟现实
作者:Zhou Zhang
2.3.2.5摄像机姿态估计概述
可以从2D图像或3D点云执行3D重建。在手持2D相机的情况下,运动算法用于从二维图像序列估计三维物体。这些图像集是从移动的2D相机获得的。在获得一组图像之后,提取图像中的视觉特征并在多个视角上进行匹配。之后,可以使用束调整来估计相机姿态和来自稀疏3D数据的模型[103,104,105]。密集3D重建旨在仅从一组提供的图像确定静态环境的完整3D几何形状。密集重建解决了从更大的图像集合中获得完整3D几何的更普遍的问题[106],并且它可以在2D图像和3D点云情况下使用。此外,像Microsoft Kinect这样的深度传感器的出现为密集3D重建的方法开辟了新的可能性,因为它们直接输出密集的深度图像[107]。
对于2D图像和3D点云情况,相机的位置跟踪是重建的核心。有两种基本的跟踪算法用于跟踪相机姿态:(i)本地搜索匹配和(ii)全局搜索匹配。局部搜索是一种用于解决计算上难以优化问题的启发式方法。它可以用于找到在许多候选解决方案中最大化标准的解决方案。通过应用局部变化,局部搜索算法在候选解决方案(搜索空间)的空间中,从一个解决方案移动到另一个解决方案,直到找到最优的解决方案或已达到时间限制。当两个后续帧之间的相机移动很小时,本地搜索方法很快并且可以成功。基于局部搜索的跟踪方法可以在“迭代局部搜索”[108],“在匹配空间中搜索”[109]和“迭代最近点[42,110]”中看到。局部搜索方法的性能高度依赖于初始位置。基本过程如图24所示。在扫描仪捕获的先前帧和当前帧之间进行比较。然后,估计具有4个参数的扫描仪的弱投影矩阵。该估计是迭代实现的。在每个迭代循环中执行错误估计。一旦误差小于预设阈值,则假定迭代已经收敛。然后,在本地搜索空间中实现最佳匹配。算法结构描述如下:
输入两帧:当前帧(f1)和前一帧(f2)。将要估计的变换T初始化为标识=。这个初始转换不会改变点的位置。迭代次数也被初始化:k=1.然后,执行以下步骤直到在预设阈值(tau;,tau;gt;0)下收敛:
(i)将前一步骤中估计的变换应用于当前帧至获得变换后的帧。
(ii)变换帧中的每个点与最接近的先前帧几何图元配对。计算该迭代中的均方误差(),显示变换后的帧与前一帧接近。
(iii)通过使用最小二乘近似法,估计与有关的参数来更新变换矩阵T。每个当前帧点(在它的原始位置)矩阵T转换到它与几何图元匹配的地方上一步中的帧。
(iv)如果均方误差的变化小于预设,则终止迭代阈值tau;:。
这种方法有几个重要的缺点:
bull;它对异常值的存在很敏感。
bull;在处理帧之间的重要变形时,匹配的初始状态非常关键。
bull;初始状态的估计不是一项微不足道的任务。
bull;如果即使是低百分比的闭塞,本地调整的成本也很重要。
图24:本地搜索匹配的流程图
全局搜索匹配是全局优化的分支之一。它实现了一个根据某些标准对一个函数或一组函数进行全局优化。典型地,提供了一组边界和更一般的约束,以及根据约束对决策变量进行优化。与本地搜索匹配相比,全局搜索匹配较少依赖于其初始位置。全局搜索可以在搜索空间中的任何位置找到最优值,而不是在相邻域中找到局部最优值。本地搜索技术针对附近的局部最优值,而全局搜索技术应该能够搜索空间的任何位置找到最优值。当然,全球搜索是比本地搜索慢,但相机在两个后续帧之间移动很大情况下更容易成功。
与单一方法相比,本地和全局搜索相结合的匹配应该会获得更加理想的结果:两个后续帧运动很小时使用局部搜索,并且两个后续帧运动很大或者跟踪丢失和相机的当前位置必须再次找到使用全局搜索。
除了搜索匹配方法,几何的表示也影响相机姿态估计的效率。在[111]中,有符号距离函数(SDFs)用于表示场景几何和迭代最近点(ICP)算法用于获得手持相机的姿态。在[112]中,[111]中提出的方法扩展了滚动重建体积和颜色融合,并且评估了视觉测距估计的替代方法。在[113]中,引入一种估计相机姿态的方法,其中获得相机运动直接来自符号距离函数。这种方法的优点是每个体素到表面的距离被编码到符号距离函数中。与迭代最近点算法相比,如果不知道正确的对应关系,通常不可能在一个步骤中确定最佳的相对旋转和平移。即使在与k-d-tree组合的修改的迭代最近点算法中,也必须在当前扫描的帧和先前帧之间提供显式数据关联。此外,一旦发生错误的对应关系,则需要更大的搜索域,因此在实现迭代最近点算法时需要下采样以实现实时表达。
为了保持像机姿态估计的效率,与此同时使得该方法更加通用,新的算法需要用于估计相机姿态并记录模型的形状信息。在讨论这些先进的算法之前,首先提供了相关工作的一般概述。众所周知,相机姿态估计和环境的映射通常是用于同步定位和映射(SLAM)。估计姿态的效率和地图优化基本上取决于表示形式模型的选择。迭代最近点通常是估计像机运动的首选算法[114]。在基于图形的同时定位和映射中,迭代最近点算法用于估计机器人的路径并优化安装在机器人上的像机的姿态。生成的地图通常表示为占用网格地图[115,116,117]或八叉树[118,119,120]。此外,[121]中介绍了将图形同步定位和映射集成到RGBD数据中的一种实现方式,以及视觉特征和迭代最近点的组合。一个与[121]类似系统[122]最近提出并广泛用于评估公共基准[123]。为了实现实时重建,符号距离函数[124]和迭代最近点用于在使用Microsoft Kinect开发Kinect Fusion期间执行对象姿态和对象形状的粗略到精确估计[42]。在这项工作中,算法首先使用前一个姿态从符号距离函数渲染点云光线跟踪并随后将其与下一个深度图像对齐。使用投影数据关联和点到平面距离[125]找到点对应关系。此外,KinectFusion用于3D重建,同时使用迭代最近点来最小化点云的误差和光度误差[126,127,128]。
在[129]中,符号距离函数用于跟踪相机的姿态以执行物体检测和识别。在[130]中,讨论了用符号距离函数估计相机的姿态。在[131]中,提出了符号距离函数的另一个应用。演示了基于符号距离函数的对象跟踪,假设已知对象模型。基于此,生成了随后用于对象跟踪的符号距离函数。通过使用稳健的成本函数,可以实现对快速相机运动和部分遮挡的鲁棒性。
目前,Kinect有两个流行的实时重建研究成果。一个是#39;KinectFusion#39;[42],另一个是#39;Reconstructme#39;。不幸的是,它们都遇到了同样的问题:两个后续帧之间的相机移动必须足够小,以避免失去跟踪。因此,这个问题应该通过先进的相机姿态估计算法来克服。
2.3.2.6基于博弈的虚拟环境中的网格划分,纹理提取与生成
扫描对象的形状由体素表示,但游戏环境中的虚拟模型和地图由纹理和顶点表示。因此,在从体素中的形状信息中提取纹理的同时,必须生成相应的顶点,并且这些顶点被分组为点云。然后,由点云表示的表面相应地网格化。网格化是面对面进行的,直到对象的所有面都被处理完毕(参见图25)。在完成网格划分之后,对象的所有面都由一组三角形表示,其中每个三角形定义唯一的域。落在三角形域内的颜色像素点和位于该域边界上的颜色像素点存储在VTF纹理文件中。然后将此VTF纹理文件保存在游戏文件夹中。
图25:网格划分和纹理提取
而且,为了表示GBVR中使用的模型,有必要生成它们的纹理。用于生成对象的颜色纹理的方法在别处讨论[112]。该纹理由RGB像素组成,并且这些像素对应于由符号距离函数表示的表面的点。三角形网格和纹理之间的关系如图26所示。
图26:三角形网格和纹理之间的关系
为了在GBVR环境中应用纹理,必须将纹理转换为GE接受的格式。这里介绍的GBVR是基于GMod实现的。GMod是“源”游戏引擎的多玩家计算机游戏修改[72,132]。通常,游戏引擎为开发人员提供各种基本功能,如图形渲染,声音生成,物理建模,游戏逻辑,人工智能,用户交互和网络[13,14]。由此产生的GBVR实施是沉浸式,分布式和协作式的。此外,该GBVR已被证明是传统动手实验室的有效替代品[74,75]。
GMod中使用的纹理格式是VTF。用于创建即用型纹理的方法可分为两个步骤,如图27所示。第一步是从相应的体素中提取RGB纹理,然后生成BMP格式图片。第二步是使用VTFEdit将BMP格式转换为VTF格式纹理[133]。
图27:从形状信息生成纹理
2.3.2.7周期性噪声和准周期性噪声降低
去噪是点云处理的挑战之一。原始点云中存在周期性和准周期性噪声会削弱扫描对象重建的准确性。周期性噪声通常由点云采集期间的电信号或机电信号的干扰引起。频域滤波可以最有效地降低这种类型的噪声,从而隔离频率被噪声占据并使用带阻滤波器抑制它们。
图29a中描绘了具有明显周期性噪声的点云。另外,周期性噪声包括基频及其谐波部分。然后,空间域中的周期性噪声可以由具有与点云的频率和相位变化的3D正弦曲线来表示。
(5)
其中(x,y,z)是一个点的相对空间位置,s(x,y,z)是一系列周期(,,)和相位移(,,)的三维正弦曲线的总和,A是系数(噪声的谐波部分的大小)。[134,135]提供了对控制周期性鼻子的方法的广泛调查。当前方法中存在的缺陷包括:
bull;噪声频率的确定是不方便的。
bull;用于设置过滤窗口大小的常量阈值难以识别。
bull;算法的复杂性很高。
bull;算法太具体而不能推广。
作为用于降低周期性噪声的不同类型方法的性能的折衷,这里设计了基于谱直方图阈值的完全自适应方法。在实施之前,重要的是使噪声更明显,以便于识别和分类。噪声的频谱幅度小于常数系数和正常信号的相应低频区域。因此,有必要在应用阈值之前屏蔽低频区域以分割噪声频率的幅度。这里,在对嘈杂点云进行傅里叶变换后,采用以下方程对整个谱域进行归一化:
(6)
其中是点的幅度的归一化值,是点的幅度,是特定点附近的幅度的平均值,K是邻域中的点数。这里使用的邻域是3D晶格结构,如图28所示。
在归一化之后,确定用于滤除噪声频谱分量的阈值。为此,获得归一化的谱直方图和点云的谱的梯度。光谱直方图分布和相应的梯度是第一光谱间隙中的非增加函数[136]。噪声具有更高的幅度和更少的出现,并且这些特性使得正常数据中的噪声明显。从理论上讲,直方图和梯度的非递减特性将被噪声的存在所破坏。然后,噪声谱中出现局部最小值。当出现局部最小值时,会发生凹陷之间的过渡。然后,可以基于转变数确定阈值Th。该过程的流程图如图30所示。用所提出的方法计算的如图31所示,转换次数为1。然后,应用具有所选阈值的滤波器以去除点云的相应谐波部分。去除噪声后点云的最终状态如图29b所示。
图28:最多具有26个相邻的3D晶格结构
图29:去噪处理的图示
图30:阈值的自适应选择的流程图
图31:测试点云中的转换数
2.3.3具有符号距离函数的Kinect姿态估计和曲面重建算法
2.3.3.1符号,分析模型和基本符号距离函数概念
正如前面章节中提到的,相机的姿态估计是使用手持相机进行3D重建的核心主题。不幸的是,用于跟踪摄像机位置的现有方法效率不高:
首先,基于迭代最近点的算法受到当前帧和参考帧(前一帧)之间的小差异的约束,因为它们是基于局部搜索匹配方法开发的。
其次,基于特征的匹配方法以及基于特征和迭代最近点方法的组合是复杂且资源密集的,因此它们不适合在实时应用中使用。
第三,迭代最近点和带符号距离函数(符号距离函数)组合的应用也很重要,因为当前帧和参考帧之间的对应关系仍然高度依赖于初始位置。
为了克服这些缺点,本文设计了一种用符号距离函数实现摄像机跟踪的直接方法。此外,讨论是基于没有失真的针孔相机模型[137]。作为相机的一种形式,Kinect具有外在和内在参数。外部参数表示摄像机在世界坐标中的位置和方向。内在参数表示相机坐标和图像坐标之间的关系(参见方程1,方程2和方程3)。这两个参数都构成投影矩阵P(见公式7)。相机的固有参数表示为:-水平方向上的焦距,-垂直方向上的焦距,以及()-世界坐标中相机的光轴坐标。
在欧几里得空间中,3D点根据其笛卡尔世界坐标表示为X=(x,y,z)。以摄像机为中心的坐标中的点的坐标是X#39;=(x#39;,y#39;,z#39;)。点X和X#39;属于3D实际坐标空间,分别表示为Xisin;和X#39;isin;。图像坐标中的点的坐标是U=(u,v),表示为Uisin;。属于3D旋转组SO(3),表示为Risin;SO(3)。属于3D平移空间,表示为tisin;。世界坐标中具有同质坐标的点表示为X=(x,y,z,1)。在以摄像机为中心的坐标中具有同质坐标的点表示为X#39;=(x#39;,y#39;,z#39;,1)。图像坐标中的点表示为x=(u,v,w)。投影矩阵如公式7所示。
(7)
内部参数由3times;3矩阵表示。以摄像机为中心的坐标中的点被映射到2D图像坐标。2D图像坐标以同质坐标系的形式表示。获得这些图像坐标的过程可以用方程8表示。
(8)
I是3times;3单位矩阵。
外部参数由3times;4矩阵表示[137]。从世界坐标(x,y
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。