一种基于GPU及面向深度图像的实时三维重构方法与流程

文档序号:12127736阅读:366来源:国知局
一种基于GPU及面向深度图像的实时三维重构方法与流程

本发明涉及计算机图形学领域,尤其涉及一种基于GPU及面向深度图像的实时三维重构方法。



背景技术:

实时三维重构技术用于实时获取现实空间中物体的三维模型,三维重构技术广泛用于在涉及计算机技术的多个方向,包括计算机动画、计算机辅助设计、机器人、虚拟现实、增强现实、3D打印等。经过多年的发展,三维重构技术取得了很大进步,但是三维重构仍然有一些问题没有解决,比如在重建速度、重建范围、重建精度方面。

一个有效的实时三维重构方法最主要的困难在于在保持重建精度的情况下达到实时处理的效果,同时重建范围还要足够大。在三维重构的过程中涉及到大量运算,比如在数据配准阶段以前无法做到实时处理。深度相机未出现之前,三维图像生成大多是使用多幅图通过计算对应特征点的方式合成,三维图像的生成需要大量运算,而且精度也不够精确。随着硬件技术的发展,深度相机随之出现,深度相机可以获取较高精度的深度图像数据,而且获取速率也非常快,非常适合用于三维重构技术。虽然深度相机的出现可以获取到较高精度的深度数据,实时三维技术还是存在很多问题,如实时三维重构技术涉及到大量运算,在CPU上是无法达到实时处理的要求,但随着GPU技术的发展,三维技术中涉及到的大量运算开始在GPU上进行操作,才使实时三维重构技术看到了一丝曙光,但还是存在问题,比如由于三维重构要处理大量数据,对显存的要求非常大,所以在处理非常大的场景是还是存在问题。

因此,本领域的技术人员致力于开发一种基于GPU及面向深度图像的实时三维重构方法,不仅能够达到实时处理的需要,还可以重建较大的场景。



技术实现要素:

有鉴于现有技术的上述缺陷,本发明所要解决的技术问题是开发一种基于GPU及面向深度图像的实时三维重构方法,不仅能够达到实时处理的需要,还可以重建较大的场景,保证精度的前提下,实现实时三维重构。

为实现上述目的,本发明提供了一种基于GPU及面向深度图像的实时三维重构方法,方法的计算在GPU上进行,包括数据预处理阶段、数据配准阶段、数据融合阶段和三维模型提取阶段;其中,

数据预处理阶段包括数据截断、数据滤波和数据分层;

数据配准阶段设置为用于求解深度图像数据在全局坐标下的位姿;

数据融合阶段设置为用于将深度图像数据融合到改进的三维截断有向距离场模型中;

三维模型提取阶段设置为从改进的三维截断有向距离场模型中提取出三维网格模型。

进一步地,数据截断设置为将不在最大范围值和最小范围值的范围内的深度图像数据中的像素点设置为0;

数据滤波设置为过滤深度图像数据中的噪点;

数据分层设置为将深度图像数据分为三层,其中每层是上层数据量的四分之一。

进一步地,数据配准阶段使用高斯牛顿方法解误差方程,得到迭代公式,求取位姿。

进一步地,数据滤波设置为采用双边滤波过滤深度图像数据中的噪点。

进一步地,数据融合阶段采用改进的三维截断有向距离场存储三维模型数据。

进一步地,改进的三维截断有向距离场将有向距离场均匀分成N个部分,当深度图像数据的范围超过改进的三维截断有向距离场模型时,更新存储模型。

进一步地,更新储存模型是将最久没有使用过的部分中的三维数据提取出来,用于储存新的三维数据。

进一步地,数据融合阶段使用数据配准阶段求到的位姿转换到局部坐标下,使用小孔成像原理转换到成像平面所在的平面中,并且计算临时距离值,当临时距离值在设定的范围内时,更新体素的距离值。

进一步地,三维模型提取阶段将体素转换为三维点,获得三维点之后使用移动立方体方法网格化。

进一步地,GPU使用多线程并行计算。

技术效果

有效地利用GPU多线程并行处理的特点,在GPU上实现实时三维重构,在保证高精度的前提下实现实时三维模型重构。

有效利用GPU显存,可以用于构建大场景的三维模型。

以下将结合附图对本发明的构思、具体结构及产生的技术效果作进一步说明,以充分地了解本发明的目的、特征和效果。

附图说明

图1是本发明的一个较佳实施例的一种基于GPU及面向深度图像的实时三维重构方法的流程示意图;

图2是本发明的一个较佳实施例的一种基于GPU及面向深度图像的实时三维重构方法的深度图像数据格式示意图;

图3是本发明的一个较佳实施例的一种基于GPU及面向深度图像的实时三维重构方法的改进的三维截断有向距离场模型格式示意图;

图4是本发明的一个较佳实施例的一种基于GPU及面向深度图像的实时三维重构方法的改进的三维截断有向距离场模型中的计算距离值的方式示意图;

图5是本发明的一个较佳实施例的一种基于GPU及面向深度图像的实时三维重构方法的改进的三维截断有向距离场模型变换示意图。

具体实施方式

如图所示,本发明的一较佳实施例提供一种基于GPU及面向深度图像的实时三维重构方法,所有计算都在GPU上进行。区别于串行计算,GPU可以并发处理大量计算,即进行多线程并行处理。为了使GPU的计算性能发挥到最大,需要考虑:1、合理分配线程以保证处理速度达到最大,GPU中的线程数量虽然很多,但是也要采用合理的分配方式才可以达到合理利用的目的;2、合理分配显存以及寄存器达到高效处理,GPU中的显存有限,有效存储数据更加关键,至于GPU中的高速寄存器,数量更是小,使用时要更加注意;3、合理分配线程的处理任务,由于GPU中的每个线程的处理速度没有CPU中的快,且对分支非常敏感,只有同一线程组内的线程执行的分支越少,性能就越高。本发明的一较佳实施例提供的一种基于GPU及面向深度图像的实时三维重构方法在保证精度的前提下,实现实时三维重构。

本发明的一较佳实施例中,以深度图像X和改进的三维截断有向距离场模型S为例,对一种基于GPU及面向深度图像的实时三维重构方法进行详细说明,在本实施例中,输入流为一帧深度图像数据X以及改进的三维截断有向距离场S,本发明的计算在GPU进行,面向深度图像的实时三维重构分为数据预处理阶段、数据配准阶段、数据融合阶段和三维模型提取阶段四个阶段。

其中数据预处理包括数据截断、数据滤波和数据分层。获取一帧深度图像之后,首先将深度图像数据上传至显存。数据截断操作将不在最大最小范围值范围内的深度图像数据中的像素点设置为0,执行下一步骤;数据滤波操作采用双边滤波过滤掉深度图像数据中的噪点,执行下一步骤;数据分层操作将深度图像数据分成三层,其中每层是上层的数据量的四分之一,执行下一步骤。

具体步骤为:首先获取一帧深度图像数据X,深度数据格式如图2所示,其中每个方格代表一个深度点,深度数据的大小是640*480个像素点,也就是X有640*480个数据点,标记xi表示X中第i个像素点,并且深度图像可以按照小孔成像原理转换成三维点云数据。将深度图像数据上传至GPU进行数据截断处理,在该阶段首先设置最大值cut_far和最小值cut_near,将深度图像数据中不在cut_far与cut_near之间的深度图像像素点的值设置为0,此步骤中在GPU上处理,并且为每个深度数据像素分配一个线程进行处理,对于X,则要分配640*480个线程,处理结束之后进行下一步数据滤波操作;在数据滤波操作过程中采用双边滤波算法,同样在GPU上进行处理,并为每个深度数据像素分配一个线程,处理结束之后进行下一步数据分层操作。在数据分层操作步骤中,标记深度图像数据为第一层深度数据,首先在GPU上申请两张二维数据表,分别标记为第二层深度数据与第三层深度数据,大小分别是第一层深度数据的四分之一和八分之一,既第二层深度数据表的长宽大小是第一层深度数据表的二分之一,第三层深度数据表的长宽大小是第二层深度数据表的四分之一,对于深度图像X,第一层就是X,标记为X1,第二层标记为X2,第三层标记为X3,那么X1的大小是640*480,X2的大小是320*240,X3的大小是160*120。第二层深度数据和三层深度数据初始化在GPU上完成,为第二深度数据表中的每个数据分配一个线程,用于为第二层深度数据表赋值,在第一层深度数据每行中每隔一个数据取一个数据赋值给第二层深度数据,完成第二层深度数据赋值。为第三次深度数据表中的每个数据分配一个线程,在第二层深度数据每行中每隔一个数据取一个数据赋值给第三层深度数据,完成第三次深度数据处理化,进行下一步骤。

数据配准阶段用于求解深度图像数据在全局坐标下的位姿。初始化位姿是上一帧深度数据的位姿,使用高斯牛顿方法解误差方程,可以得到迭代公式,通过计算迭代公式优化位姿,当位姿迭代一定次数后,或者位姿发生的变化在一定范围内,则停止迭代,如果求到的位姿与上一帧深度数据的位姿相比,发生的变化在设定范围内,则认为成功求取位姿,在成功求取位姿的情况下,执行下一步。

具体步骤为:数据配准阶段用于求解当前深度图像在改进的三维截断有向距离场的位姿,首先本发明采用改进的三维截断有向距离场存储三维模型数据,如图3所示,在本示例中S即是改进的三维截断有向距离场。有向距离场是将三维重建空间分成很多相等的小立方体空间,每个小空间称为体素,使用公式将三维点P(px,py,pz)转换为体素T(tx,ty,tz),其中lx表示体素在x轴上代表的距离大小,ly表示体素在y轴上代表的距离大小,lz表示体素在z轴上代表的距离大小。每个体素存储两个值,一个用于存储到三维重建空间中物体表面的最近距离d,另一个存储权重值w,两个值都是用short类型表示,最近距离d和权重值w的初始值都是零,其中d为零时,表示体素在物体上,为正负时表示体素在物体的两面。在二维图像中的表示如图4所示,在图中每个原点表示体素,黑色实线表示物体表面,在计算体素存储值时,只计算两条虚线范围内的体素值,在三维模型中是当距离值小于设定范围时更新体素距离值。在本发明中使用改进方法存储三维模型数据,如图3所示,虚线表示将有向距离场分成K部分,这K部分可以组合移动,当新的深度数据的范围超过三维数据存储模型时,将最久没有使用过的部分移动到前面,如图5所示,三维存储模型分成abcdef六部分,当新的深度图像数据加入且超过存储模型的范围,从f中提取出三维网格模型并初始化f,然后将f放到a的前面,三维存储模型变成fabcde,当下次出现超出范围的情况时,按照上述方法操作。

数据配准阶段在GPU上迭代执行,为每个深度数据分配一个线程,也就是分配640*480个线程,初始时将上一帧深度数据的位姿作为当前深度数据的初始位姿。在一次迭代过程中按照下列步骤计算,并且从高层深度图像数据X3开始计算:首先将深度图像数据按照小孔成像原理转换成三维点云数据,将三维点云按照当前位姿转换到全局坐标,求取该点的体素值,然后求该三维点在三个方向上的梯度值向量,接着求梯度值向量与梯度值向量倒数的乘积a,然后将所有深度数据点求得的a累加到A中,体素中距离值和梯度值向量的乘积b,然后将所有深度数据点求得的b累加到B中,然后按照公式ξk+1=ξk-A-1B求解,将ξ加入到初始位姿中,其中ξ表示六维向量,每次迭代初始值是零,按照上述步骤迭代计算,当ξk+1k<α或者迭代一定次数时结束迭代,其中α是设置的界限值。如果求到的位姿相对于上一帧数据的移动位置在一定范围内,则认为成功求到当前深度图像数据的位姿,否则处理下一帧深度图像。进行下一步操作。

数据融合阶段用于将深度图像数据融合到已有的改进的三维截断有向距离场模型中,在融合的过程中,如果当前深度图像数据的位姿不在改进的三维截断有向距离场模型中,更新改进三维截断有向距离场模型,然后再存储数据。其中三维网格模型提取阶段在扫描结束后用于从改进的三维截断有向距离场模型中提取出三维网格模型。

具体步骤为:数据融合阶段用于将当前深度图像数据融合进改进的三维截断有向距离场模型中,具体操作如下:在GPU上执行,图3为三维模型存储结构,将三维空间分为相等的小立方体,如在xyz轴上小立方体的个数分别cx、cy和cz,首先分配线程数量是cx*cy,每个线程按照从0到cz访问每个体素,使用数据配准阶段求到的位姿的逆矩阵将体素转换到局部坐标下,接着使用小孔成像原理将体素转换到成像平面所在的平面中,如果转换后的位置在成像平面上,则计算当前体素的距离值,将该位置上的深度值减去体素到该位置的距离作为该体素的临时距离值,如果该临时距离值在设定的范围内,更新该体素的距离值,更新方法按照公式进行,其中di为体素i的距离值,dnew为该体素的临时距离值,wi为体素中存储的权重值,wnew为新的权重值,其中wi公式wi=min(wnew+wi,wmax)进行更新。所有体素执行上步操作之后,进行下一步操作。

三维模型提取阶段用于从改进的三维截断有向距离场模型中提取出三维网格模型。本发明采用改进的三维截断有向距离场作为三维数据存储模型,改进的三维截断有向距离场将有向距离场均匀分成几部分,当深度图像数据融合进改进的三维截断有向距离场模型时,如果深度图像数据的范围超过改进的三维截断有向距离场模型,则更新存储模型,更新方法是将最久没有使用过的部分中的三维数据提取出来,然后用于存储新的三维数据。改进的三维截断有向距离场中每个体素存储的距离值表示该体素到物体的最近距离,如果距离值为零,表示该体素被物体占据;如果为正,表示该体素在物体的外面;如果为负,表示该体素在物体的外面。相邻体素的乘积小于或等于零,且该体素的权重值不为零,则从该体素中提取三维数据点。

具体步骤为:三维模型提取阶段用于从改进的三维截断有向距离场模型中提取三维网格模型,使用的方法在GPU上执行,首先分配线程数量是cx*cy,每个线程按照从0到cz访问每个体素,当前体素中存储的距离值与下一个要访问的体素的距离值的乘积小于或等于零,且该体素的权重值不为0时,将该点作为一个三维点,然后按照公式α(tx,ty,tz)=(tx·lx,ty·ly,tz·lz)将体素T(tx,ty,tz)转换为三维点P(px,py,pz),获得三维点之后可以使用移动立方体方法网格化。

本发明的一较佳实施例中的一种基于GPU及面向深度图像的实时三维重构方法,能够有效地利用GPU多线程并行处理的特点,在GPU上实现实时三维重构,在保证高精度的前提下实现实时三维模型重构。

以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术人员无需创造性劳动就可以根据本发明的构思作出诸多修改和变化。因此,凡本技术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。

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