高效利用内存的高精度三维重建方法与系统及设备与流程

文档序号:15494204发布日期:2018-09-21 21:18阅读:256来源:国知局

本发明涉及计算机视觉领域的三维重建方法,具体涉及一种高效利用内存的高精度三维重建方法与系统及设备。



背景技术:

对小型物体或者大型场景的高精度三维扫描是机器人及增强现实应用的关键环节。近些年伴随着例如microsoftkinect的深度传感器及cpu、gpu等处理设备的发展,三维扫描技术取得了长足的进步。学者们提出了许多能够在线处理的三维重建方法。其中,kinectfusion是一个以深度图作为输入,能够实时生成高精度稠密三维模型的有代表性的方法。这种方法将深度图融合进一个体数据中,这种体数据融合的方式具有计算高效而且算法简单的优势。

尽管kinectfusion具有许多优点,但是它在体数据表示及相机跟踪方面也有一些缺点。体数据表示方法需要较高的内存占用,并且体数据是预先定义的,这就意味着内存占用随整个扫描空间的增加而增加,而不是随被扫描的表面区域的增加而增加。同时kinectfusion的相机跟踪存在漂移累积问题。之前学者提出了许多方法来克服这些问题,kintinuous通过动态改变体数据的方式减少内存占用,其他的方法只分配实际表面附近的体素并采用八叉树或哈希表检索这些已分配的体素。为了减小漂移累积的问题,一些学者利用其他的传感器比如彩色相机。dvo通过最小化rgb-d及icp组合代价函数的方式估计相机姿态。其他的学者借助线特征或者平面特征来提高姿态估计的准确性和鲁棒性。

上述方法尽管能够提高相机跟踪精度和模型重建精度,但它们没能解决许多分配的体素对应于深度噪声的问题。这些占用浪费了许多内存资源,也限制了在内存资源有限的设备上的应用。



技术实现要素:

为了解决现有技术中的上述问题,本发明提出了一种高效利用内存的高精度三维重建方法与系统及设备,实现了在内存资源有限的设备上进行高精度三维重建。

本发明的一方面,提出一种高效利用内存的高精度三维重建方法,包括以下步骤:

步骤s1,获取一幅当前的深度图像,计算所述当前的深度图像中各像素在相机坐标系下的三维点坐标和法向量;并计算各像素的深度噪声的标准差和深度梯度;

步骤s2,根据各像素对应的所述三维点坐标和法向量,以及所述深度噪声的标准差和所述深度梯度,对所述当前的深度图像进行降噪处理;

步骤s3,通过icp算法配准所述当前的深度图像和对三维模型在前一帧视角下进行光线投影生成的深度图,计算出所述当前的深度图像对应的相机姿态;

步骤s4,基于tsdf算法,根据所述当前的深度图像对应的相机姿态,以及各像素对应的所述三维点坐标和法向量、所述深度噪声的标准差,将所述当前的深度图像融合到当前的三维模型中;

步骤s5,基于光线投影算法从当前的三维模型中抽取表面点集,并根据所述表面点集进行场景渲染;所述表面点集还用于计算下一帧深度图像对应的相机姿态。

优选地,步骤s2中“根据各像素对应的所述三维点坐标和法向量,以及所述深度噪声的标准差和所述深度梯度,对所述当前的深度图像进行降噪处理”,进一步包括:

步骤s21,根据各像素点的所述深度梯度,检测局部平面,并将所述局部平面合并到全局平面;

步骤s22,根据各像素对应的所述三维点坐标和法向量,以及所述深度噪声的标准差,计算各像素对应的射线与其对应的全局平面之间的交点,从而对所述当前的深度图像进行降噪处理;

优选地,步骤s21中“根据各像素点的所述深度梯度,检测局部平面,并将所述局部平面合并到全局平面”,进一步包括:

步骤s211,将所述当前的深度图像平均分成大小为w×w的多个子窗口,根据各像素点的所述深度梯度,计算每一个子窗口中像素的平均梯度;

步骤s212,对每一个子窗口,判断其中各像素点的所述深度梯度与该子窗口中像素的所述平均梯度之差是否小于预设的梯度差阈值,若是,则将该像素点对应的三维点加入局部平面的内点集;

步骤s213,若所述局部平面的内点集中内点数大于预设的点数阈值,则进行局部平面的拟合;

步骤s214,若拟合得到的局部平面π与全局平面πj的法向距离与欧拉距离分别满足下列预设的条件:

|p·nj+dj|<ψ

则合并局部平面π与全局平面πj的内点集,并根据合并后的内点集重新拟合全局平面;否则,将局部平面π添加为一个全局平面;

其中,n、nj分别为平面π与全局平面πj的法向量;p为平面π上任一三维点;dj为平面πj到坐标原点的距离;ψ均为预设阈值。

优选地,步骤s22中“根据各像素对应的所述三维点坐标和法向量,以及所述深度噪声的标准差,计算各像素对应的射线与其对应的全局平面之间的交点,从而对所述当前的深度图像进行降噪处理”,具体为:

判断所述当前的深度图像中像素u对应的三维点v(u)与全局平面πj之间是否满足条件:

|v(u)·nj+dj|<ε(u)

若是,则将像素u的深度值优化为其对应的射线与全局平面之间的交点的深度;

其中,距离阈值ε(u)由深度噪声自适应确定:

ε(u)=βσ(u)

β为权重系数;σ(u)为像素u的深度噪声标准差。

优选地,步骤s4中“基于tsdf算法,根据所述当前的深度图像对应的相机姿态,以及各像素对应的所述三维点坐标和法向量、所述深度噪声的标准差,将所述当前的深度图像融合到当前的三维模型中”,进一步包括:

步骤s41,对所述当前的深度图像中每一个像素u对应的深度值d(u),判断d(u)是否大于l,且对应的三维点v(u)不在全局平面上;若是,则不分配像素u对应的体素块;否则,构建d(u)±μ的线段并分配该线段上的体素块;

其中,l为深度阈值,μ为tsdf截断距离;

步骤s42,将所分配的体素块存储在堆空间中,并构建稀疏哈希表用于索引;

其中,体素块的哈希值通过下式计算:

(bx,by,bz)为体素块的整数坐标;(p1,p2,p3)为素数,p1=73856093,p2=19349669,p3=83492791;k为哈希表所能存储的最大数目;mod和分别为取余和异或操作符;

步骤s43,计算各体素对应的sdf值:

sdfi=di(u)-v(z)(u)

其中,di(u)为i时刻采集的深度图像上像素u对应的深度值;v(z)(u)为像素u对应的三维点v(u)的z分量;

步骤s44,若sdfi>-μ(u),则计算各体素对应的tsdf值:

从而将所述当前的深度图像融合到tsdf表示的三维模型中;

其中,wi-1为i-1时刻该体素被观察到的次数。

优选地,步骤s1中,在“获取一幅当前的深度图像”之后,“计算所述当前的深度图像中各像素在相机坐标系下的三维点坐标和法向量”之前,还包括:

对所述当前的深度图像进行双边滤波。

优选地,所述阈值l由所述深度噪声的标准差及所述tsdf截断距离确定;对于microsoftkinect传感器设置l=3560mm,对于occipitalstructuresensor传感器设置l=2580mm。

优选地,步骤s214中,阈值和ψ与深度图像噪声大小有关,深度图像噪声越大,选取的和ψ也越大。

优选地,所述子窗口大小w用来确定局部平面的大小,若图像分辨率越大则选取的w也越大。

本发明的另一方面,提出一种存储设备,其存储有程序,所述程序适于由处理器加载并执行,以实现上面所述的高效利用内存的高精度三维重建方法。

本发明的第三方面,提出一种处理设备,包括:处理器和存储器;

所述处理器,适于执行程序;

所述存储器,适于存储该程序;

所述程序适于由所述处理器加载并执行,以实现上面所述的高效利用内存的高精度三维重建方法。

本发明的第四方面,提出一种高效利用内存的高精度三维重建系统,包括:深度图像转换模块、平面区域检测及降噪模块、相机跟踪模块、体数据融合模块、三维渲染模块;

所述深度图像转换模块,配置为:获取一幅当前的深度图像,计算所述当前的深度图像中各像素在相机坐标系下的三维点坐标和法向量;并计算各像素的深度噪声的标准差和深度梯度;

所述平面区域检测及降噪模块,配置为:根据各像素对应的所述三维点坐标和法向量,以及所述深度噪声的标准差和所述深度梯度,对所述当前的深度图像进行降噪处理;

所述相机跟踪模块,配置为:通过icp算法配准所述当前的深度图像和对三维模型在前一帧视角下进行光线投影生成的深度图,计算出所述当前的深度图像对应的相机姿态;

所述体数据融合模块,配置为:基于tsdf算法,根据所述当前的深度图像对应的相机姿态,以及各像素对应的所述三维点坐标和法向量、所述深度噪声的标准差,将所述当前的深度图像融合到当前的三维模型中;

所述三维渲染模块,配置为:基于光线投影算法从当前的三维模型中抽取表面点集,并根据所述表面点集进行场景渲染;所述表面点集还用于计算下一帧深度图像对应的相机姿态。

本发明的有益效果:

本发明所提出的高效利用内存的高精度三维重建方法,能够基于深度梯度检测深度图中的平面并根据检测的平面信息对深度图降噪,之后根据平面信息分配体素并将深度图融合入tsdf模型中,而且在分配体素时,只分配实际表面附件的体素。本方法计算复杂度低,最终得到的三维模型合理可靠,有效降低了内存占用,能够用于内存资源有限的设备上的高精度三维重建。

附图说明

图1是本发明的高效利用内存的高精度三维重建方法实施例的流程示意图;

图2是本发明的高效利用内存的高精度三维重建方法实施例中深度图像降噪示意图;

图3(a)-(d)是本发明的高效利用内存的高精度三维重建方法实施例在office数据集下输出的稠密三维模型的示意图;

其中,图3(a)左右两侧分别是office1序列彩色图、深度图;图3(b)左右两侧分别是infinitamv2算法重建结果和本实施例方法重建结果;图3(c)左右两侧分别是office2序列彩色图、深度图;图3(d)左右两侧分别是infinitamv2算法重建结果和本实施例方法重建结果。

图4是本发明的高效利用内存的高精度三维重建方法实施例与infinitamv2方法的内存占用比较示意图;

图5是本发明的高效利用内存的高精度三维重建系统实施例的构成示意图。

具体实施方式

下面参照附图来描述本发明的优选实施方式。本领域技术人员应当理解的是,这些实施方式仅用于解释本发明的技术原理,并非旨在限制本发明的保护范围。

消费级的深度传感器采集到的深度图包含较大噪声,深度噪声受与被扫描的表面的距离及夹角影响。更进一步说,深度噪声的标准差相对于深度值粗略的成二次方关系。此外,人造室内场景包含许多的平面区域,这些平面区域易于被检测及建模。这些特性有助于对深度图降噪并节省内存占用。本发明是为了实现在内存资源有限的设备上的高精度三维重建而设计的。

图1是本发明的高效利用内存的高精度三维重建方法实施例的流程示意图。如图1所示,本实施例的高精度三维重建方法包括以下步骤:

在步骤s1中,获取一幅当前的深度图像,对所述当前的深度图像进行双边滤波,计算所述当前的深度图像中各像素在相机坐标系下的三维点坐标和法向量;并计算各像素的深度噪声的标准差和深度梯度。

在步骤s2中,根据各像素对应的所述三维点坐标和法向量,以及所述深度噪声的标准差和所述深度梯度,对所述当前的深度图像进行降噪处理。该步骤可以进一步包括步骤s21-s22:

在步骤s21中,根据各像素点的所述深度梯度,检测局部平面,并将所述局部平面合并到全局平面。该步骤又可以进一步包括步骤s211-s224:

在步骤s211中,将所述当前的深度图像平均分成大小为w×w的多个子窗口,根据各像素点的所述深度梯度,计算每一个子窗口中像素的平均梯度。

子窗口边长w用来确定局部平面的大小,若图像分辨率越大则选取的w也越大。本实施例中对分辨率为320×240的深度图设置w=20,对分辨率为640×480的深度图设置w=40。

在步骤s212中,对每一个子窗口,判断其中各像素点的所述深度梯度与该子窗口中像素的所述平均梯度之差是否小于预设的梯度差阈值θ(u),若是,就认为其对应的三维点为平面上的内点,则将该像素点对应的三维点加入局部平面的内点集。

其中,θ(u)=ασ(u);α为权重,本实施例中设置为3;σ(u)为像素u的深度噪声标准差。

在步骤s213中,若所述局部平面的内点集中内点数大于预设的点数阈值n,则进行局部平面的拟合。

本实施例中采用最小二乘拟合平面,内点的平均值作为平面上的三维点pπ。n设置为窗口内有效像素数目乘以一个比例,设置该比例为0.5来产生较多的局部平面。平面表示为π=(nx,ny,nz,px,py,pz)t,其中nπ=(nx,ny,nz)t是单位平面法向,pπ=(px,py,pz)t是平面上三维点,平面到坐标原点的距离为d=-nπ·pπ。

在步骤s214中,若拟合得到的局部平面π与全局平面πj的法向距离与欧拉距离分别满足公式(1)、(2)所示的预设条件:

|p·nj+dj|<ψ(2)

则合并局部平面π与全局平面πj的内点集,并根据合并后的内点集重新拟合全局平面;否则,将局部平面π添加为一个全局平面;

其中,n、nj分别为平面π与全局平面πj的法向量;p为平面π上任一三维点;dj为平面πj到坐标原点的距离;ψ均为预设阈值。阈值和ψ与深度图像噪声大小有关,深度图像噪声越大,选取的和ψ也越大。本实施例中设置ψ=5mm。

在步骤s22中,根据各像素对应的所述三维点坐标和法向量,以及所述深度噪声的标准差,计算各像素对应的射线与其对应的全局平面之间的交点,从而对所述当前的深度图像进行降噪处理。具体为:

判断所述当前的深度图像中像素u对应的三维点v(u)与全局平面πj之间是否满足公式(3)所示的条件:

|v(u)·nj+dj|<ε(u)(3)

若是,则将像素u的深度值优化为其对应的射线与全局平面之间的交点的深度,由此减少深度图像噪声;

其中,距离阈值ε(u)由深度噪声自适应确定,如公式(4)所示:

ε(u)=βσ(u)(4)

β为权重系数,本实施例中设置为3;σ(u)为像素u的深度噪声标准差。

图2是本发明的高效利用内存的高精度三维重建方法实施例中深度图像降噪示意图。如图2所示,曲线表示被扫描表面的一部分,直线表示拟合该部分表面的平面。将叉号所示位置像素点的深度值由点b的深度值更改为点a的深度值来对深度图降噪。

在步骤s3中,通过icp算法配准所述当前的深度图像和对三维模型在前一帧视角下进行光线投影生成的深度图,计算出所述当前的深度图像对应的相机姿态。

在步骤s4中,基于tsdf算法,根据所述当前的深度图像对应的相机姿态,以及各像素对应的所述三维点坐标和法向量、所述深度噪声的标准差,将所述当前的深度图像融合到当前的三维模型中。该步骤可以进一步包括步骤s41-s44:

在步骤s41中,对所述当前的深度图像中每一个像素u对应的深度值d(u),判断d(u)是否大于l,且对应的三维点v(u)不在全局平面上;若是,则不分配像素u对应的体素块,通过这种方式节省由噪声占用的内存,并保持场景中的平面信息;否则,构建d(u)±μ的线段并分配该线段上的体素块。

通过上述方法,我们分配并更新实际表面附近的体素块,每个体素块包含m×m×m个体素。

其中,l为深度阈值,μ为tsdf截断距离。阈值l由所述深度噪声的标准差及所述tsdf截断距离确定;对于microsoftkinect传感器设置l=3560mm,对于occipitalstructuresensor传感器设置l=2580mm。

在步骤s42中,将所分配的体素块存储在堆空间中,并构建稀疏哈希表用于索引。

其中,体素块的哈希值通过公式(5)计算:

(bx,by,bz)为体素块的整数坐标;(p1,p2,p3)为非常大的素数,本实施例中p1=73856093,p2=19349669,p3=83492791;k为哈希表所能存储的最大数目;mod和分别为取余和异或操作符。

在步骤s43中,计算各体素对应的sdf值,如公式(6)所示:

sdfi=di(u)-v(z)(u)(6)

其中,di(u)为i时刻采集的深度图像上像素u对应的深度值;v(z)(u)为像素u对应的三维点v(u)的z分量。

在步骤s44中,若sdfi>-μ(u),则计算各体素对应的tsdf值,如公式(7)所示:

从而将所述当前的深度图像融合到tsdf表示的三维模型中。

其中,wi-1是i-1时刻该体素被观察到的次数,如果v(u)在平面上,设置wi-1=3;其他情况设置wi-1=1。

在步骤s5中,基于光线投影算法从当前的三维模型中抽取表面点集,并根据所述表面点集进行场景渲染;所述表面点集还用于计算下一帧深度图像对应的相机姿态。

图3(a)-(d)是本发明的高效利用内存的高精度三维重建方法实施例在office数据集下输出的稠密三维模型的示意图。其中,图3(a)左右两侧分别是office1序列彩色图、深度图;图3(b)左右两侧分别是infinitamv2算法重建结果和本实施例方法重建结果;图3(c)左右两侧分别是office2序列彩色图、深度图;图3(d)左右两侧分别是infinitamv2算法重建结果和本实施例方法重建结果。对比上述图中圆圈标出的部分可以看出,本发明生成的三维模型噪声更小,准确度更高。

本发明方法与infinitamv2内存占用比较如图4所示,横坐标表示深度图序列,纵坐标表示内存占用,黑色柱子表示infinitamv2内存占用,浅灰色柱子表示本发明的内存占用。本发明的方法在icl-nuimlivingroom数据集上能够节省10%的内存占用,在office数据集上能够节省30%的内存占用。

与现有技术相比,本发明能够充分借助场景中的平面信息进行高精度、高效率的稠密三维重建。本发明通过多种类型的数据实验,比如公开数据集、使用occipitalstructuresensor采集的数据集等证明了它的高效率和高精度。本发明主要针对解决许多分配的体素对应于深度噪声的问题,利用深度图像中的平面信息对深度图像降噪并分配相应的体素,从而减少内存占用并得到高精度的三维模型。本发明适合用于内存资源有限的设备上的高精度三维重建。

本发明的一种存储设备的实施例,其存储有程序,所述程序适于由处理器加载并执行,以实现上面所述的高效利用内存的高精度三维重建方法。

本发明的一种处理设备的实施例,包括:处理器和存储器;

所述处理器,适于执行程序;所述存储器,适于存储该程序;所述程序适于由所述处理器加载并执行,以实现上面所述的高效利用内存的高精度三维重建方法。

图5是本发明的一种高效利用内存的高精度三维重建系统实施例的构成示意图。如图5所示,本实施例的高精度三维重建系统100包括:深度图像转换模块110、平面区域检测及降噪模块120、相机跟踪模块130、体数据融合模块140、三维渲染模块150。

所述深度图像转换模块110,配置为:获取一幅当前的深度图像,计算所述当前的深度图像中各像素在相机坐标系下的三维点坐标和法向量;并计算各像素的深度噪声的标准差和深度梯度;

所述平面区域检测及降噪模块120,配置为:根据各像素对应的所述三维点坐标和法向量,以及所述深度噪声的标准差和所述深度梯度,对所述当前的深度图像进行降噪处理;

所述相机跟踪模块130,配置为:通过icp算法配准所述当前的深度图像和对三维模型在前一帧视角下进行光线投影生成的深度图,计算出所述当前的深度图像对应的相机姿态;

所述体数据融合模块140,配置为:基于tsdf算法,根据所述当前的深度图像对应的相机姿态,以及各像素对应的所述三维点坐标和法向量、所述深度噪声的标准差,将所述当前的深度图像融合到当前的三维模型中;

所述三维渲染模块150,配置为:基于光线投影算法从当前的三维模型中抽取表面点集,并根据所述表面点集进行场景渲染;所述表面点集还用于计算下一帧深度图像对应的相机姿态。

上述各模块的具体工作情况,可分别参看本文中关于步骤s1-s5及其展开的描述,此处不再赘述。

本领域技术人员应该能够意识到,结合本文中所公开的实施例描述的各示例的方法步骤和模块,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明电子硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以电子硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

至此,已经结合附图所示的优选实施方式描述了本发明的技术方案,但是,本领域技术人员容易理解的是,本发明的保护范围显然不局限于这些具体实施方式。在不偏离本发明的原理的前提下,本领域技术人员可以对相关技术特征做出等同的更改或替换,这些更改或替换之后的技术方案都将落入本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1