首页 / 专利库 / 电脑图像 / 局部集束调整 / 一种同时定位与稠密三维重建方法

一种同时定位与稠密三维重建方法

阅读:858发布:2020-05-08

专利汇可以提供一种同时定位与稠密三维重建方法专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种同时 定位 与稠密 三维重建 方法,该方法能够鲁棒的处理快速运动和频繁回路闭合,在较大规模的场景下可以无限时间运行。该方法除了可以用来扫描高 质量 的三维模型,还可以满足 虚拟现实 和 增强现实 的需求。该方法提出了一种基于关键 帧 的同时定位与地图构建的 框架 。首先,同时利用深度和 颜色 信息,基于关键帧的定位可以在CPU上高速运行,并且可以鲁棒地运行在具有挑战性的场景下。为减少累计误差,本发明引入了增量集束调整,可以极大的减少运算量,同时将局部和和全局集束调整在一个统一的框架下完成。其次,本发明提出了基于关键帧的一种融合方法,可以在线生成模型并在关键帧 姿态 调整时实时更新三维模型。,下面是一种同时定位与稠密三维重建方法专利的具体信息内容。

1.一种同时定位与稠密三维重建方法,其特征在于包括如下步骤:
1)通过RGB-D对准估计相机初始姿态,使用基于单应性的特征匹配优化相机姿态;
2)运行“增量集束调整”算法,自适应地更新、优化关键的相机姿态;
所述的步骤2)具体为:
当有新的关键帧加入或者检测到闭合回路的时候,运行如下增量集束调整:
将当前相机运动参数定义为 Ci∈SE(3),nc是相机个数,将当前三
维点位置定义为 Xj∈R3,np为三维点的个数,将相机i可见的三维点的集c
合定义为Vi,将三维点j可见的相机集合定义为 用高斯-顿算法迭代优化:
每次迭代,将当前相机运动参数定义为 将当前三维点位置定义为
将相机运动参数的增量定义为 将三维点位置的
增量定义为 将e(Ci,Xj)在 处线性展开:
其中, 表示在 上叠加一个 对应的se(3)增量,定义法向方程:
U、V分别是nc×nc、np×np的对矩阵
对每个子矩阵Ui∈R6×6,Vj∈R3×3,W为nc×np的块矩阵:
每个子矩阵Wij∈R6×3,法向方程右侧向量:
每个子向量ui∈R6,vj∈R3,定义舒尔补方程
其中,
S=U-WV-1WT
g=u-WV-1v
S为nc×nc的块矩阵:
每个子矩阵Sij∈R6×6,舒尔补方程右侧向量
对每个子向量gi∈R6,定义辅助向量 其中
i=1,...,nc,j∈Vic,定义辅助变量 其中j=1,...,np,
初始时刻,令U=0,V=0,W=0,u=0,v=0,S=0,g=0,
每次迭代,运行以下步骤:
a)对每个三维点j及其可见的相机 如果 或 上次迭代被更新,则计算 处的 并由下式更新各变量:
b)对每个三维点j,如果Vj在本次迭代中被更新,则对每个三维点j可见的相机由下式更新各变量:
Yij=WijVj-1
并对三维点j可见的相机对 由下式更新各变量:
c)使用预处理共轭梯度算法求解上述的舒尔补方程,得到相机增量 对每个相机i,如果 则用 更新
d)对每个三维点j,如果Vj本次迭代被更新,或相机 中存在 本次迭代被更新,则计算 如果 则用 更新
e)如果本次迭代没有任何相机或三维点被更新,或达到最大迭代次数,则结束循环,否则,重复步骤a);
3)将非关键深度图融合到关键帧,基于关键帧的深度图重建三维模型,通过重融合在相机姿态改变时更新三维模型。
2.如权利要求1所述的一种同时定位与稠密三维重建方法,其特征在于所述的步骤1)具体为:
对每个当前帧Fi,使用RGB-D对准在小模糊图上估计相机从上一帧到当前帧的相对姿态T(i-1)→i,相应相机姿态估计为Ci=T(i-1)→iCi-1;
使用单应性决定搜索区域 同时用深度信息zk以及相机姿态估计Ci决定搜索区域在搜索区域上寻找3D-2D特征匹配的集合χ={(Xj,
xj)},其中Xj∈R3,xj∈R2分别为三维点与二维点,K为相机内参;
在确定了相对姿态T(i-1)→i以及3D-2D特征匹配的集合χ={(Xj,xj)}后,通过最小化相对误差与重投影误差来优化相机姿态Ci:
其中,log(T)将
3D刚性变换T∈SE(3)映射到se(3),并返回R6中的向量表示, 是标准氏距离, 是投影函数,K是已知并且固定的相机内参,z(X)从X中提取出z分
量,zj是xj在当前帧的深度,||∈||δ是Huber范数:
如果追踪失败,则使用基于关键帧的重定位方法重新跟踪特征,否则,使用新特征的深度信息,用贝叶斯方法对特征的深度进行滤波;
对关键帧Fk和当前帧Fi的每一对特征匹配(xk,xi),更新xk深度的倒数ρk:
这里, 通过ρi→k,滤波器不断更新ρk和其内点的联合分布;
最后,在每一新帧到来时决定是否选作关键帧。
3.如权利要求 1所述的一种同时定位与稠密三维重建方法,其特征在于所述的步骤3)具体为:
采用基于体素的三维模型表示,每个体素保存其截断的到最近表面带符号距离,采用空间哈希方法管理体素在GPU上的存储;
如果当前帧Fi被选为关键帧,则直接将其对应的深度图Di融合到模型上,对每个体素v,其截断带符号最近表面距离用D(v)表示,权重用W(v)表示,对Fi中的每个像素x,采用如下方法更新其对应的体素v:
其中wi(x)是像素x的融合权重;
如果当前帧Fi未被选为关键帧,则首先寻找与Fi最匹配的关键帧,记为 首先反融合关键帧 所对应的深度图,对每个像素x,采用如下方法更新其对应的体素v:
其中wi(x)是像素x的融合权重;
随后,通过深度图Di投影到 将其融合到 对Fi的每个像素x,用y表示其投影在的坐标,如果y对应的深度的倒数 与x投影点深度的倒数 小于阈值τd,则更新y的深度为:
对每个关键帧 记录其被融合的次数 当 大于某一阈值时,停止融合;否则,创建一个点集Vi保存未融合的三维点并将其关联到 之后,将更新后的关键帧深度图融合到模型上;如果Vi非空,则将Vi中的三维点投影到 将其融合到模型,如果 较大并且关键帧的数目不再增加,则丢弃Di;
如果当前帧Fi被选为关键帧,则选择关联到相邻关键帧的若干点云集,融合到当前帧,如果融合后VI剩余的点数较少,则将其从模型中反融合并丢弃,否则,将融合到当前帧的点从模型中反融合;
最后,限制每一帧重融合的次数,将所有重融合操作分摊到每一帧。

说明书全文

一种同时定位与稠密三维重建方法

技术领域

[0001] 本发明涉及一种可应用于增强现实虚拟现实机器人导航等领域的同时定位与稠密三维重建方法,尤其涉及一种同时定位与稠密三维重建方法。

背景技术

[0002] 同时定位与地图构建(SimultaneouslyLocatingandMapping,SLAM)是机器人和计算机视觉领域的一个基本问题。在过去的几时年来 ,实时运 动结 构学(StructurefromMotion)和视觉SLAM有很多成功的应用。然而,视觉SLAM难以处理无纹理的场景,而且要做到实时稳定地恢复稠密三维结构也比较困难。使用深度传感器可以帮助解决这两个问题。随着深度传感器(如微软Kinect和英特尔RealSense 3D相机)的流行,大量基于RGB-D的SLAM方案得到提出。
[0003] 大多数稠密的SLAM方法使用到帧或帧到模型的对准方法,这类方法很容易累计误差,在具有挑战性的场景下容易失败。一些方法提出使用非刚性网格变形优化模型,减小累积误差。然而由于不精确的对准导致的模型误差无法得到消除,并且会进一步增大对准误差。
[0004] 最近,BundleFusion[A.Dai,M.Nieβner,M. S.Izadi,and C.Theobalt.BundleFusion:Real-time globally consistent 3d reconstruction using online surface re-integration.arXiv preprint arXiv:1604.01093,2016.]提出了端到端的实时重建系统。BundleFusion使用所有的RGB-D输入数据,层次化的优化所有的相机姿态和三维模型。不同于前面的帧到模型的对准方法,BundleFusion采用每一帧和所有帧的暴匹配求解相机姿态。为此,BundleFusion使用两颗强GPU(NVIDIA GeForce GTX Titan X和GTX Titan Black)以达到实时运行。同时,它保存所有的输入数据,有极大的内存消耗从而限制了其运行场景大小和运行时间。
[0005] 近年来,许多研究者提出了不同的基于RGB-D相机进行稠密三维重建和实时同事定位与地图构建的方法。Huang[A.S.Huang,A.Bachrach,P.Henry,M.Krainin,D.Maturana,D.Fox,and N.Roy.Visual odometry and mapping for autonomous flight using an RGB-D camera.In Robotics Research-The 15th International Symposium ISRR,9-12 December 2011,Flagstaff,Arizona,USA,pages 235–252,2011.]等人提出使用RGB-D数据进行实时的运动测量,使用稀疏的BA进行离线稠密三维重建。Endres[F.Endres,J.Hess,J.Sturm,D.Cremers,and W.Burgard.3-d mapping with an rgb-d camera.IEEE Transactions on Robotics,30(1):177–187,2014.]等提出使用视觉特征结合深度信息估计相机姿态,用三维网格占据率表示场景。Kerl[C.Kerl,J.Sturm,and D.Cremers.Dense visual SLAM for RGB-D cameras.In 2013 IEEE/RSJ International Conference on Intelligent Robots and Systems,Tokyo,Japan,November 3-7,2013,pages 2100–2106,2013]等提出使用稠密的RGB-D数据,直接最小化光学误差和深度误差来实现相机姿态估计,这种方法比基于稀疏视觉特征的方法具有更高的精度。Newcombe[.R.A.Newcombe,S.Izadi,O.Hilliges,D.Molyneaux,D.Kim,A.J.Davison,P.Kohli,J.Shotton,S.Hodges,and A.W.Fitzgibbon.Kinectfusion:Real-time dense surface mapping and tracking.In 10th IEEE International Symposium on Mixed and Augmented Reality,ISMAR 2011,Basel,Switzerland,October 26-29,2011,pages 127–136,2011]等提出了KinectFusion,使用基于体素的表示重建三维模型,通过ICP算法将每一帧对准到模型上,实验表明其在小尺度下有很好的重建质量。然而,受制于GPU内存的限制,KinectFusion不适用于大尺度的场景重建。同时,KinectFusion也不能处理漂移问题和回路闭合。许多工作对KinectFusion进行了改进,这些工作主要集中在使用更有效的数据结构实现大尺度场景的重建。例如,Kintinuous[T.Whelan,J.McDonald,M.Kaess,M.Fallon,H.Johannsson,and J.Leonard.Kintinuous:Spatially extended Kinect-Fusion.In RSS Workshop on RGB-D:Advanced Reasoning with Depth Cameras,Sydney,Australia,Jul 2012.]使用移动体积的方法改进KinectFusion。Nieβner[M.Nieβner,M. S.Izadi,and 
M.Stamminger.Real-time 3d reconstruction at scale using voxel hashing.ACM Trans.Graph.,32(6):169:1–169:11,2013.]等提出用空间哈希的方法存储稀疏的体素信息。然而,这些方法都没有解决相机姿态估计的漂移问题和回路闭合所要求的模型调整。
[0006] 无漂移的相机姿态估计和稀疏重建在视觉SLAM中得到了大量的研究。许多单目SLAM方法可以在小场景甚至街道大小的场景进行实时相机跟踪与稀疏三维重建。一些方法也可以处理重定位与回路闭合。然而,这些方法都不能产生稠密的三维模型。一些可以实时重建稠密三维模型的方法大都受制于小的场景或没有考虑无漂移的三维稠密重建。
[0007] 一些离线方法可以通过回路闭合实现无漂移的稠密三维重建,然而其速度远达不到实时。最近,Whelan[T.Whelan,M.Kaess,H.Johannsson,M.F.Fallon,J.J.Leonard,and J.McDonald.Real-time large-scale dense RGB-D SLAM with volumetric fusion.I.J.Robotics Res.,34(4-5):598–626,2015.]等提出基于体素融合的RGB-D SLAM系统可以在大场景下检测到回路闭合,通过尽量刚性的模型表面变形纠正相机漂移带来的模型误差。ElasticFusion[T.Whelan,S.Leutenegger,R.F.Salas-Moreno,B.Glocker,and A.J.Davison.ElasticFusion:Dense SLAM without A pose graph.In Robotics:Science and Systems XI,Sapienza University of Rome,Rome,Italy,July 13-17,2015,2015.]使用面片来表示三维模型,在回路闭合的时同样采用尽量刚性的模型变换矫正三维模型。这些方法使用帧到模型的对准,对准时的误差会影响模型精度,而不精准的模型又会降低相机追踪的精度。在回路闭合时使用表面变形无法纠正模型错误,最终会导致在复杂场景下追踪失败。BundleFusion[A.Dai,M.Nieβner,M. S.Izadi,and 
C.Theobalt.BundleFusion:Real-time globally consistent 3d reconstruction using online surface reintegration.arXiv preprint arXiv:1604.01093,2016.]使用暴力匹配进行每一帧的对准,在调整姿态时重新集成,从而获得全局一致的模型。然而,BundleFusion保存所有的输入数据,限制了其在长序列数据上的运行。同时,即使用很强的GPU,在长序列输入时使用暴力匹配也是非常耗时的。本发明使用基于关键帧的表示和追踪框架,可以不断调整相机姿态并重新融合深度图。本发明的内存消耗是和关键帧的数据成线性的,因此在相当规模的场景下,由于关键帧的数目受限,可以无限长时间的运行。

发明内容

[0008] 本发明针对上述技术的不足,提出了一种同时定位与稠密三维重建方法,能够可靠的处理强烈旋转和快速运动,支持重定位并能实时地构建与调整稠密三维模型。
[0009] 本发明的同时定位与稠密三维重建方法包括如下步骤:
[0010] 1)通过RGB-D对准估计相机初始姿态,使用基于单应性的特征匹配优化相机姿态;
[0011] 2)运行“增量集束调整”算法,自适应地更新、优化关键帧的相机姿态;
[0012] 3)将非关键深度图融合到关键帧,基于关键帧的深度图重建三维模型,通过重融合在相机姿态改变时更新三维模型。
[0013] 通过RGB-D对准估计相机初始姿态,使用基于单应性的特征匹配优化相机姿态的具体步骤为:
[0014] 对每个当前帧Fi,首先使用RGB-D对准估计相机从上一帧到当前帧的相对姿态T(i-1)→i,这里只需要一个相对粗糙的估计,因此使用小模糊图(SBI)估计两帧相对姿态以在CPU上达到实时运行。其中参考文献列举的方法为可选用的现有方法。
[0015] 精确的相机姿态是通过特征匹配获得的,为处理剧烈旋转和快速运动,本发明使用基于单应性的特征匹配方法求解相机姿态。在剧烈旋转和快速运动下,两帧之间的透视变形可能会很大,以至于基于特征的匹配不能鲁棒运行。单应性可以用来纠正图片的透视变形,从而使零均值的SSD可行。单应性也可以用来决定一个较小的搜索区域 避免沿着整个对极线搜索。在本发明中,由于有深度信息zk以及使用RGB-D对准的相机姿态估计Ci=T(i-1)→iCi-1,因此将搜索区域定为 以及
[0016] 在确定了相对姿态T(i-1)→i以及3D-2D特征匹配的集合χ={(Xj,xj)}后,通过最小化相对误差与重投影误差来估计相机姿态Ci:
[0017]
[0018] 这里,log(T)将3D刚性变换T∈SE(3)映射到se(3),并返回R6中的向量表示。是标准氏距离。 是投影函数,K是已知并且固定的相
机内参。z(X)从X中提取出z分量,zj是xj在当前帧的深度。||∈||δ是Huber范数:
[0019]
[0020] 如果追踪失败,则重新跟踪特征。否则,则使用新特征的深度信息,用贝叶斯方法对特征的深度进行滤波。对关键帧Fk和当前帧Fi的每一对特征匹配(xi,xj),获取xk深度的倒数ρk:
[0021]
[0022] 这里, 通过ρi→k,滤波器不断更新ρk和其内点的联合分布。
[0023] 最后,本发明在每一新帧到来时决定是否选作关键帧。
[0024] 所述的运行“增量集束调整”算法,自适应地更新、优化关键帧的相机姿态,其具体步骤为:
[0025] 当有新的关键帧加入或者检测到闭合回路的时候,需要运行BA。在前一种情形下,由于只有局部地图调整,没有必要运行全局BA。然而,仅运行局部BA倾向于生成次优的解,尤其在局部地图有较大偏差的情况下。因此,需要在BA中引入更多的变量,否则误差无法得到完全消除。本发明提出的增量BA可以获得和全局BA相近的解,同时运行时间和BA中改变的变量数目线性相关,因此可以大幅减少运行时间。其具体方法如下:
[0026] 将当前相机运动参数定义为 Ci∈SE(3),nc是相机个数,将当3
前三维点位置定义为 Xj∈R,np为三维点的个数,将相机i可见的三维点的集合定义为 将三维点j可见的相机集合定义为 用高斯-顿算法迭代优化:
[0027]
[0028] 每次迭代,将当前相机运动参数定义为 将当前三维点位置定义为将相机运动参数的增量定义为 将三维点位置的增量定义为 将e(Ci,Xj)在 处线性展开:
[0029]
[0030] 其中, 表示在 上叠加一个 对应的se(3)增量,定义法向方程:
[0031]
[0032] U、V分别是nc×nc、np×np的对矩阵块
[0033]
[0034]
[0035] 对每个子矩阵Ui∈R6×6,Vj∈R3×3,W为nc×np的块矩阵:
[0036]
[0037] 每个子矩阵Wij∈R6×3,法向方程右侧向量:
[0038]
[0039]
[0040] 每个子向量ui∈R6,vj∈R3,定义舒尔补方程
[0041]
[0042] 其中,
[0043] S=U-WV-1WT
[0044] g=u-WV-1v
[0045] S为nc×nc的块矩阵:
[0046]
[0047] 每个子矩阵Sij∈R6×6,舒尔补方程右侧向量
[0048]
[0049] 对每个子向量gi∈R6,定义辅助向量其中i=1,…,nc, 定义辅助变量 其中j=1,…,np,
初始时刻,令U=0,V=0,W=0,u=0,v=0 ,S=0,g=0,
每次迭代,运行以下步骤:
[0050] a)对每个三维点j及其可见的相机 如果 或 上次迭代被更新,则计算处的 并由下式更新各变量:
[0051]
[0052]
[0053]
[0054]
[0055]
[0056] f)对每个三维点j,如果Vj在本次迭代中被更新,则对每个三维点j可见的相机由下式更新各变量:
[0057]
[0058]
[0059]
[0060]
[0061] 并对三维点j可见的相机对 由下式更新各变量:
[0062]
[0063]
[0064]
[0065] g)使用预处理共轭梯度算法求解上述的舒尔补方程,得到相机增量 对每个相机i,如果 则用 更新
[0066] b)对每个三维点j,如果Vj本次迭代被更新,或相机 中存在 本次迭代被更新,则计算 如果 则用 更新
[0067] c)如果本次迭代没有任何相机或三维点被更新,或达到最大迭代次数,则结束循环,否则,重复步骤a)。
[0068] 本发明采用基于体素的三维模型表示,每个体素保存其截断的到最近表面带符号距离(TSDF),为提高GPU显存利用率以及可重建场景尺度,采用空间哈希方法。
[0069] 当相机姿态发生调整时,相应的,需要调整重建的三维模型。一种简单的方法是存储所有的深度图,并在每一深度图对应的相机姿态调整时重新融合进三维模型。然而,这种方法有着内存消耗高、计算量大的不足。为此,本发明提出基于关键帧的深度图表示和融合、反融合方法,有效的解决了这一问题。具体的:
[0070] 如果当前帧Fi被选为关键帧,则直接将其对应的深度图Di融合到模型上。对每个体素v,其截断带符号最近表面距离(TSDF)用D(v)表示,权重用W(v)表示,对Fi中的每个像素x,采用如下方法更新其对应的体素v:
[0071]
[0072] 其中wi(x)是像素x的融合权重。
[0073] 如果当前帧Fi未被选为关键帧,则首先寻找与Fi最匹配的关键帧,记为 首先反融合关键帧 所对应的深度图。反融合过程与融合过程相似,对每个像素x,采用如下方法更新其对应的体素v:
[0074]
[0075] 其中wi(x)是像素x的融合权重。
[0076] 随后,通过深度图Di投影到 将其融合到 对Fi的每个像素x,用y表示其投影在 的坐标。如果y对应的深度的倒数 与x投影点深度的倒数(用 表示)小于阈值τd(本发明设置为0.1),则更新y的深度为:
[0077]
[0078]
[0079] 对每个关键帧 记录其被融合的次数 当 大于某一阈值时,停止融合。由于Fi与 的视角重合较大,除了一些在 视角之外的点,通常当前帧的大多数深度都能融合到 上。因此该融合策略可以有效地减少深度的冗余性。如果当前帧融合后残余的深度点数目小于τ(例如2000),则将这些点丢弃。否则,创建一个点集Vi保存未融合的三维点并将其关联到 之后,将更新后的关键帧深度图 融合到模型上。如果Vi非空,则将Vi中的三维点投影到 将其融合到模型。因此,每个非关键帧,将会执行两次融合与一次反融合。由于未融合的点数目相对很少,因此其需要的融合时间也较少。因此,本发明计算量基本上略大于通常的融合方法的两倍。如果 较大并且关键帧的数目不再增加,这意味着RGB-D相机没有扫描新的信息,在这种情况下,简单的丢弃Di。
[0080] 为进一步减少深度数据的冗余,如果当前帧Fi被选为关键帧,则选择关联到相邻关键帧的若干点云集,融合到当前帧。如果融合后VI剩余的点数小于τ(例如2000),则将其从模型中反融合并丢弃。否则,将融合到当前帧的点从模型中反融合。
[0081] 当关键帧的姿态被BA调整时,需要重新融合关键帧对应的深度图以及与其关联的点云集。然而,如果被调整的关键帧数目较大,重融合会耗费大量的时间而不能满足实时性的要求。因此,本发明限制每一帧重融合的次数,将所有重融合分摊到每一帧。特别的,姿态变化比较大的关键帧对应的深度图及其关联的点云集将会被首先重融合。此策略可以保证在BA发生时重建部分以恒定的速率运行。
[0082] 为进一步加速,可以每两帧或更多融合一帧到模型,此方法可以极大地加速融合过程,在笔记本电脑上可以达到实时运行。附图说明
[0083] 图1是本发明的系统框架。
[0084] 图2是本发明基于关键帧的相机追踪框架。
[0085] 图3是本发明提出的增量BA与标准BA的性能比较,可以看到,相对于标准BA,在保留相当精度的同时,本发明可以极大的加快BA速度。
[0086] 图4是本发明在使用华硕Xtion Pro Live拍摄的数据集上运行所生成的三维模型。

具体实施方式

[0087] 本发明的系统架构如图1。系统的相机追踪部分和三维模型重建部分并行运行。对每个包含RGB图像与深度图的输入帧,相机追踪部分首先结合RGB-D对准和基于单应性的特征追踪方法计算相机姿态,实现了鲁棒的相机跟踪。同时,提取关键帧的ORB特征并进行匹配以检测全局回路闭合。最后,周期性的在后台运行增量BA以优化相机姿态。重建部分在输入帧追踪相机姿态可靠时将输入深度融合到关键帧的深度图上。为在线调整稠密的三维表面,系统会对关键帧进行反融合与在融合。此策略使得在相机姿态调整时,仅需要重融合关键帧的深度以及一些额外的点云集。由于在相当规模场景下的关键帧数目是有限的,本系统可以无限长时间运行。
[0088] 本发明同时结合图片强度和深度信息跟踪相机运动,结合基于稠密RGB-D和基于稀疏特征的方法使相机跟踪更为准确和鲁棒。其基本框架如附图2所示。对每个当前帧Fi,首先使用RGB-D对准[C.Kerl,J.Sturm,and D.Cremers.Dense visual SLAM for RGB-D cameras.In 2013 IEEE/RSJ International Conference on Intelligent Robots and Systems,Tokyo,Japan,November 3-7,2013,pages 2100–2106,2013.]估计相机从上一帧到当前帧的相对姿态T(i-1)→i,这里只需要一个相对粗糙的估计,因此我们使用小模糊图(SBI)[G.Klein and D.W.Murray.Improving the agility of keyframe-based SLAM.In 10th European Conference on Computer Vision,Part II,pages 802–815.Springer,
2008.]估计两帧相对姿态以在CPU上达到实时运行。
[0089] 精确的相机姿态是通过特征匹配获得的,为处理剧烈旋转和快速运动,本发明使用基于单应性[H.Liu,G.Zhang,and H.Bao.Robust keyframe-based monocular SLAM for augmented reality.In IEEE International Symposium on Mixed and Augmented Reality,ISMAR 2016.]的特征匹配方法求解相机姿态。在剧烈旋转和快速运动下,两帧之间的透视变形可能会很大,以至于基于特征的匹配不能鲁棒运行。单应性可以用来纠正图片块的透视变形,从而使零均值的SSD[G.Klein and D.W.Murray.Parallel tracking and mapping for small AR workspaces.In 6th IEEE/ACM International Symposium on Mixed and Augmented Reality,pages 225–234,2007.]可行。单应性也可以用来决定一个较小的搜索区域 避免沿着整个对极线搜索。在本发明中,由于有深度信息zk以及使用RGB-D对准的相机姿态估计Ci=T(i-1)→iCi-1,因此将搜索区域定为 以及[0090] 在确定了相对姿态T(i-1)→i以及3D-2D特征匹配的集合χ={(Xj,xj)}后,通过最小化相对误差与重投影误差来估计相机姿态Ci:
[0091]
[0092] 这里,log(T)将3D刚性变换T∈SE(3)映射到se(3),并返回R6中的向量表示。是标准马氏距离。 是投影函数,K是已知并且固定的相
机内参。z(X)从X中提取出z分量,zj是xj在当前帧的深度。||∈||δ是Huber范数:
[0093]
[0094] 如果追踪失败,则使用[G.Klein and D.W.Murray.Improving the agility of keyframe-based SLAM.In 10th European Conference on Computer Vision,Part II,pages 802–815.Springer,2008.]所述的方法重新跟踪特征。否则,则使用新特征的深度信息,用贝叶斯方法[G.Vogiatzis and C.Hernández.Video-based,real-time multi-view stereo.Image Vision Comput.,29(7):434–441,2011.]对特征的深度进行滤波。对关键帧Fk和当前帧Fi的每一对特征匹配(xi,xj),获取xk深度的倒数ρk:
[0095]
[0096] 这里, 通过ρi→k,滤波器不断更新ρk和其内点的联合分布。
[0097] 最后,本发明在每一新帧到来时决定是否选作关键帧。
[0098] 当有新的关键帧加入或者检测到闭合回路的时候,需要运行BA。在前一种情形下,由于只有局部地图调整,没有必要运行全局BA。然而,仅运行局部BA倾向于生成次优的解,尤其在局部地图有较大偏差的情况下。因此,需要在BA中引入更多的变量,否则误差无法得到完全消除。本发明提出的增量BA可以获得和全局BA相近的解,同时运行时间和BA中改变的变量数目线性相关,因此可以大幅减少运行时间。其具体方法如下:
[0099] 将当前相机运动参数定义为 Ci∈SE(3),nc是相机个数,将当前三维点位置定义为 Xj∈R3,np为三维点的个数,将相机i可见的三维点的集合定义为 将三维点j可见的相机集合定义为 用高斯-牛顿算法迭代优化:
[0100]
[0101] 每次迭代,将当前相机运动参数定义为 将当前三维点位置定义为将相机运动参数的增量定义为 将三维点位置的增量定义为 将e(Ci,Xj)在 处线性展开:
[0102]
[0103] 其中, 表示在 上叠加一个 对应的se(3)增量,定义法向方程:
[0104]
[0105] U、V分别是nc×nc、np×np的对角矩阵块
[0106]
[0107]
[0108] 对每个子矩阵Ui∈R6×6,Vj∈R3×3,W为nc×np的块矩阵:
[0109]
[0110] 每个子矩阵Wij∈R6×3,法向方程右侧向量:
[0111]
[0112]
[0113] 每个子向量ui∈R6,vj∈R3,定义舒尔补方程
[0114]
[0115] 其中,
[0116] S=U-WV-1WT
[0117] g=u-WV-1v
[0118] S为nc×nc的块矩阵:
[0119]
[0120] 每个子矩阵Sij∈R6×6,舒尔补方程右侧向量
[0121]
[0122] 对每个子向量gi∈R6,定义辅助向量其中i=1,…,nc, 定义辅助变量 其中j=1,…,np,
初始时刻,令U=0,V=0,W=0,u=0,v=0,S=0 ,g=0,
每次迭代,运行以下步骤:
[0123] a)对每个三维点j及其可见的相机 如果 或 上次迭代被更新,则计算处的 并由下式更新各变量:
[0124]
[0125]
[0126]
[0127]
[0128]
[0129] h)对每个三维点j,如果Vj在本次迭代中被更新,则对每个三维点j可见的相机由下式更新各变量:
[0130]
[0131]
[0132]
[0133]
[0134] 并对三维点j可见的相机对 由下式更新各变量:
[0135]
[0136]
[0137]
[0138] i)使用预处理共轭梯度算法求解上述的舒尔补方程,得到相机增量 对每个相机i,如果 则用 更新
[0139] b)对每个三维点j,如果Vj本次迭代被更新,或相机 中存在 本次迭代被更新,则计算 如果 则用 更新
[0140] c)如果本次迭代没有任何相机或三维点被更新,或达到最大迭代次数,则结束循环,否则,重复步骤a)
[0141] 同KinectFusion,本发明采用基于体素的三维模型表示,每个体素保存其截断的到最近表面带符号距离(TSDF),为提高GPU显存利用率以及可重建场景尺度,采用了Nieβner[M.Nieβner,M. S.Izadi,and M.Stamminger.Real-time 3d reconstruction at scale using voxel hashing.ACM Trans.Graph.,32(6):169:1–169:11,2013.]等提出的空间哈希方法。
[0142] 当相机姿态发生调整时,相应的,需要调整重建的三维模型。一种简单的方法是存储所有的深度图,并在每一深度图对应的相机姿态调整时重新融合进三维模型。然而,这种方法有着内存消耗高、计算量大的不足。为此,本发明提出基于关键帧的深度图表示和融合、反融合方法,有效地解决了这一问题。具体的:
[0143] 如果当前帧Fi被选为关键帧,则直接将其对应的深度图Di融合到模型上。对每个体素v,其截断带符号最近表面距离(TSDF)用D(v)表示,权重用W(v)表示,对Fi中的每个像素x,采用如下方法更新其对应的体素v:
[0144]
[0145] 其中wi(x)是像素x的融合权重。
[0146] 如果当前帧Fi未被选为关键帧,则首先寻找与Fi最匹配的关键帧,记为 首先反融合关键帧 所对应的深度图。反融合过程与融合过程相似,对每个像素x,采用如下方法更新其对应的体素v:
[0147]
[0148] 其中wi(x)是像素x的融合权重。
[0149] 随后,通过深度图Di投影到 将其融合到 对Fi的每个像素x,用y表示其投影在 的坐标。如果y对应的深度的倒数 与x投影点深度的倒数(用 表示)小于阈值τd(本发明设置为0.1),则更新y的深度为:
[0150]
[0151]
[0152] 对每个关键帧 记录其被融合的次数 当 大于某一阈值时,停止融合。由于Fi与 的视角重合较大,除了一些在 视角之外的点,通常当前帧的大多数深度都能融合到 上。因此该融合策略可以有效的减少深度的冗余性。如果当前帧融合后残余的深度点数目小于τ(例如2000),则将这些点丢弃。否则,创建一个点云集Vi保存未融合的三维点并将其关联到 之后,将更新后的关键帧深度图 融合到模型上。如果Vi非空,则将Vi中的三维点投影到 将其融合到模型。因此,每个非关键帧,将会执行两次融合与一次反融合。由于未融合的点数目相对很少,因此其需要的融合时间也较少。因此,本发明计算量基本上略大于通常的融合方法的两倍。如果 较大并且关键帧的数目不再增加,这意味着RGB-D相机没有扫描新的信息,在这种情况下,我们简单的丢弃Di。
[0153] 为进一步减少深度数据的冗余,如果当前帧Fi被选为关键帧,则选择关联到相邻关键帧的若干点云集,融合到当前帧。如果融合后VI剩余的点数小于τ(例如2000),则将其从模型中反融合并丢弃。否则,将融合到当前帧的点从模型中反融合。考虑到实时计算的需求,本实施例只融合5个点云集。
[0154] 当关键帧的姿态被BA调整时,需要重新融合关键帧对应的深度图以及与其关联的点云集。然而,如果被调整的关键帧数目较大,重融合会耗费大量的时间而不能满足实时性的要求。因此,本发明限制每一帧重融合的次数,将所有重融合分摊到每一帧。特别的,姿态变化比较大的关键帧对应的深度图及其关联的点云集将会被首先重融合。此策略可以保证在BA发生时重建部分以恒定的速率运行。
[0155] 为进一步加速,可以每两帧或更多帧融合一帧到模型,此方法可以极大地加速融合过程,在笔记本电脑上可以达到实时运行。
[0156] 在实验中测试了本发明的性能。在配置Intel i7 3.6GHz CPU,8GB内存,GTX960显卡的PC环境下,无GPU加速的相机跟踪可以达到10~25毫秒每帧,在融合每个输入帧的情况下稠密的重建部分需要50毫秒每帧,整个系统运行速率大概位20fps。在配置为i7 2.6GHz CPU,16GB内存,GTX960M显卡的笔记本电脑上,如果每三帧融合一帧,运行速度可以达到20fps。
[0157] 在用华硕Xtion Pro Live拍摄的多个数据集上测试了算法性能。如附图4所示,本发明可以构建出高质量的模型。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈