基于深度图的实时三维重建方法技术

技术编号:19695897 阅读:42 留言:0更新日期:2018-12-08 12:13
本发明专利技术公开了一种基于深度图的实时三维重建方法,包括:利用深度相机获得拍摄场景的深度图和RGB彩色图;对每一帧深度图进行如下处理:对深度信息进行补全,然后其像素点转换第一类三维坐标点,并计算每一个像素点处的法向量;将深度图对应的第一类三维坐标点转换为第二类三维坐标点;为深度图所对应的每一个第二类三维坐标点分配体素块,并利用哈希表索引体素块;通过对体素块加权融合更新体素块中每一个体素的sdf值,然后提取场景表面;获得场景表面的纹理信息,并计算场景表面每一个体素处的表面法向量。本发明专利技术能够有效提高重建速度和重建质量,并且能够适用于大规模的场景重建。

【技术实现步骤摘要】
基于深度图的实时三维重建方法
本专利技术属于计算机视觉
,更具体地,涉及一种基于深度图的实时三维重建方法。
技术介绍
三维重建技术一直是计算机图形学和计算机视觉领域的一个热点课题。早期的三维重建技术通常以二维图像作为输入,重建出场景中的三维模型,受限于输入数据,重建出的三维模型通常不够完整,而且真实感较低。近年来,随着各种面向普通消费者的深度相机的出现,基于深度相机的三维重建技术得到飞速发展。深度相机造价低廉,体积适当,操作方便,并且易于研究者和工程师进行开发,近期工作重点利用这种消费者深度相机实现实时表面重建。三维重建技术也是增强现实技术的基础,经过扫描重建后的三维模型可以运用到增强现实(AugmentedReality,AR)或虚拟现实(VirtualReality,VR)场景中。实时重建可以将许多重叠深度图进行融合并表示成一个不断更新的3D场景,但是在不牺牲重建质量和空间规模的前提下保证较好的实时性能,是十分具有挑战性的。许多先进的实时技术使用了不同类型的图形硬件加速底层数据结构,然而,这些在重建速度、规模和质量方面有一定的权衡,一些研究者提出完全体积的数据结构来隐式地存储连续函数的样本,在这些方法中,深度图预处理为带符号的距离场,并累积加权为一个规则的体素网格,最后利用光线投射算法提取距离函数值为0的等值面,从而构建待重建场景表面。这虽然是一种高质量的重建方法,但它使用固定体积的网格模型表示重建的三维场景,导致重建的时候只能重建固定大小的场景,并且当重建体积较大或网格的空间分辨率较高时十分消耗显存。
技术实现思路
针对现有技术的缺陷和改进需求,本专利技术提供了一种基于深度图的三维重建方法,旨在解决现有的三维重建方法中重建质量拙劣、重建速度缓慢并且重建规模受内存局限的问题。为实现上述目的,本专利技术提供了一种基于深度图的三维重建方法,包括如下步骤:(1)利用深度相机获得拍摄场景的深度图和RGB彩色图;深度图用于表示场景表面到深度相机的距离,彩色图用于给出深度图中对应像素点的颜色信息;(2)对于当前帧的深度图I,针对深度信息缺失,对深度图I的深度信息进行补全,然后将深度图I的像素点转换第一类三维坐标点,并根据第一类三维坐标点计算深度图I中每一个像素点处的法向量;其中,第一类三维坐标点为相机坐标系下的三维坐标点;深度信息缺失可能表现为深度图中存在孔洞与黑色斑点等;(3)若深度图I为第一帧深度图,则将由深度图I中的像素点转换得到的第一类三维坐标点作为第二类三维坐标点;否则,将由深度图I中的像素点转换得到的第一类三维坐标点转换为第二类三维坐标点;其中,第二类三维坐标点为世界坐标系下的三维坐标点;(4)对于深度图I所对应的每一个第二类三维坐标点,在其周围为其分配一个以该第二类三维坐标点为中心的体素块,得到当前帧的体素块;为当前帧的体素块中的每一个体素块分配存储空间,并利用哈希表索引体素块;其中,每一个体素块存储8*8*8个体素,每一个体素存储sdf值、color信息以及weight信息;sdf值表示体素到场景表面的有符号距离,sdf值为0的体素位于场景表面,且sdf值为正值的体素和sdf值为负值的体素分别位于场景表面的两侧;color信息表示体素的RGB颜色信息,其值根据RGB彩色图得到,weight信息表示对体素所属的体素块进行加权融合时的权重;(5)利用哈希表索引对于深度图I可见的体素块,并通过对体素块加权融合更新体素块中每一个体素的sdf值,然后根据体素的sdf值提取场景表面;(6)获得场景表面的纹理信息,使得重建场景经过渲染后具有色彩信息;计算场景表面每一个体素处的表面法向量,使得重建场景经过渲染后具有层次感;(7)依次遍历每一帧深度图,将其作为当前帧的深度图,并重复执行步骤(2)~(6),直至场景重建完成。进一步地,步骤(2)包括:(21)针对深度信息缺失,利用联合双边滤波对深度图I进行去噪,从而在保留前景与背景边缘的前提下,对深度图I的深度信息进行补全;(22)将深度图I的像素点转换为第一类三维坐标点;对于深度图I中位于(x,y)处的像素点u,将其转换为第一类三维坐标点V(x,y),计算公式为:V(x,y)=D(x,y)K-1(x,y,1);其中,D(x,y)为像素点u的深度值,K为深度相机内参数;(23)根据第一类三维坐标点计算深度图I中每一个像素点处的法向量;其中,对于像素点u,计算其法向量n(u)的计算公式为:n(u)=(V(x+1,y)-V(x,y))×(V(x,y+1)-V(x,y))。进一步地,步骤(3)中将由深度图I中的像素点转换得到的第一类三维坐标点转换为第二类三维坐标点,包括:(31)将由前一帧深度图转换得到的第二类三维坐标点作为源点云,将由深度图I中的像素点转换得到的第一类三维坐标点作为目标点云;(32)对于源点云中的第二类三维坐标点pi,计算其在深度图I中的投影坐标(xi,yi);计算公式如下:(cxi,cyi,c)=KTpi;其中,T为当前帧的相机位姿,包含旋转矩阵和平移矩阵,初始时刻,当前帧的相机位姿为上一帧的相机位姿;c为常数;K为深度相机内参数;根据投影坐标(xi,yi),得到对应的第一类三维坐标点qi';若投影坐标(xi,yi)中,坐标值xi和坐标值yi均为整数,则将第一类三维坐标点qi'作为第二类三维坐标点pi的投影匹配点qi;否则,在目标点云中寻找与第一类三维坐标点qi'的欧式距离最近的第一类三维坐标点并将其作为第二类三维坐标点pi的投影匹配点qi;其中,i的取值范围为1~m,m为源点云中的三维坐标点的个数;由于连续两帧深度图间相机位姿变化比较小,通过投影方法计算匹配点,能够提高匹配速度;(33)计算源点云中每一个第二类三维坐标点到对应的投影匹配点处切平面的距离的平方,并将计算结果累加作为目标函数E;目标函数E的表达式为:其中,R和t分别是此次迭代需要计算的旋转矩阵和平移矩阵;ni是投影匹配点qi对应的像素点处的法向量;(34)若目标函数E的函数值小于预设的阈值,或者迭代次数达到预设的次数,则停止迭代,输出当前的旋转矩阵R和平移矩阵t作为当前帧的相机位姿,并转入步骤(35);否则,求解目标函数的函数值极小化时对应的旋转矩阵R和平移矩阵t以更新当前帧的相机位姿T,并转入步骤(32),开始下一轮的迭代;(35)根据当前帧的相机位姿T,将由深度图I中的像素点转换得到的第一类三维坐标点转换为第二类三维坐标点。进一步地,步骤(4)中用于索引体素块的哈希表由哈希桶组成;每个哈希桶对应一个哈希值,并且包含相同数量的哈希体;每个哈希体用于索引一个体素块,每个哈希体存储的信息包括:体素块中心的空间坐标,哈希冲突时用于解决哈希冲突的偏移值,以及指向体素块实际存储空间的地址;哈希表中,每一个体素块的哈希值H(x,y,z)根据其中心空间坐标(x,y,z)计算得到,计算公式如下:其中,mod是求余运算,是异或运算,p1,p2,p3均为大于10万的质数,s表示整个哈希表的长度;由于p1,p2,p3均为大于10万的质数,根据上述公式计算体素块的哈希值能够有效减少哈希冲突;为体素块分配哈希体的方法为:为体素块vb分配哈希体时,计算体素块vb的哈希值,然后在哈希表中查找被体素块vb占用的本文档来自技高网...

【技术保护点】
1.一种基于深度图的三维重建方法,其特征在于,包括如下步骤:(1)利用深度相机获得拍摄场景的深度图和RGB彩色图;所述深度图用于表示场景表面到深度相机的距离,所述彩色图用于给出所述深度图中对应像素点的颜色信息;(2)对于当前帧的深度图I,针对深度信息缺失,对所述深度图I的深度信息进行补全,然后将所述深度图I的像素点转换第一类三维坐标点,并根据第一类三维坐标点计算所述深度图I中每一个像素点处的法向量;其中,所述第一类三维坐标点为相机坐标系下的三维坐标点;(3)若所述深度图I为第一帧深度图,则将由所述深度图I中的像素点转换得到的第一类三维坐标点作为第二类三维坐标点;否则,将由所述深度图I中的像素点转换得到的第一类三维坐标点转换为第二类三维坐标点;其中,所述第二类三维坐标点为世界坐标系下的三维坐标点;(4)对于所述深度图I所对应的每一个第二类三维坐标点,在其周围为其分配一个以该第二类三维坐标点为中心的体素块,得到当前帧的体素块;为所述当前帧的体素块中的每一个体素块分配存储空间,并利用哈希表索引体素块;其中,每一个体素块存储8*8*8个体素,每一个体素存储sdf值、color信息以及weight信息;所述sdf值表示体素到场景表面的有符号距离,sdf值为0的体素位于场景表面,且sdf值为正值的体素和sdf值为负值的体素分别位于场景表面的两侧;所述color信息表示体素的RGB颜色信息,其值根据所述RGB彩色图得到,所述weight信息表示对体素所属的体素块进行加权融合时的权重;(5)利用哈希表索引对于所述深度图I可见的体素块,并通过对体素块加权融合更新体素块中每一个体素的sdf值,然后根据体素的sdf值提取场景表面;(6)获得所述场景表面的纹理信息,使得重建场景经过渲染后具有色彩信息;计算所述场景表面每一个体素处的表面法向量,使得重建场景经过渲染后具有层次感;(7)依次遍历每一帧深度图,将其作为当前帧的深度图,并重复执行步骤(2)~(6),直至场景重建完成。...

【技术特征摘要】
1.一种基于深度图的三维重建方法,其特征在于,包括如下步骤:(1)利用深度相机获得拍摄场景的深度图和RGB彩色图;所述深度图用于表示场景表面到深度相机的距离,所述彩色图用于给出所述深度图中对应像素点的颜色信息;(2)对于当前帧的深度图I,针对深度信息缺失,对所述深度图I的深度信息进行补全,然后将所述深度图I的像素点转换第一类三维坐标点,并根据第一类三维坐标点计算所述深度图I中每一个像素点处的法向量;其中,所述第一类三维坐标点为相机坐标系下的三维坐标点;(3)若所述深度图I为第一帧深度图,则将由所述深度图I中的像素点转换得到的第一类三维坐标点作为第二类三维坐标点;否则,将由所述深度图I中的像素点转换得到的第一类三维坐标点转换为第二类三维坐标点;其中,所述第二类三维坐标点为世界坐标系下的三维坐标点;(4)对于所述深度图I所对应的每一个第二类三维坐标点,在其周围为其分配一个以该第二类三维坐标点为中心的体素块,得到当前帧的体素块;为所述当前帧的体素块中的每一个体素块分配存储空间,并利用哈希表索引体素块;其中,每一个体素块存储8*8*8个体素,每一个体素存储sdf值、color信息以及weight信息;所述sdf值表示体素到场景表面的有符号距离,sdf值为0的体素位于场景表面,且sdf值为正值的体素和sdf值为负值的体素分别位于场景表面的两侧;所述color信息表示体素的RGB颜色信息,其值根据所述RGB彩色图得到,所述weight信息表示对体素所属的体素块进行加权融合时的权重;(5)利用哈希表索引对于所述深度图I可见的体素块,并通过对体素块加权融合更新体素块中每一个体素的sdf值,然后根据体素的sdf值提取场景表面;(6)获得所述场景表面的纹理信息,使得重建场景经过渲染后具有色彩信息;计算所述场景表面每一个体素处的表面法向量,使得重建场景经过渲染后具有层次感;(7)依次遍历每一帧深度图,将其作为当前帧的深度图,并重复执行步骤(2)~(6),直至场景重建完成。2.如权利要求1所述的基于深度图的实时三维重建方法,其特征在于,所述步骤(2)包括:(21)针对深度信息缺失,利用联合双边滤波对所述深度图I进行去噪,从而在保留前景与背景边缘的前提下,对所述深度图I的深度信息进行补全;(22)将所述深度图I的像素点转换为第一类三维坐标点;对于所述深度图I中位于(x,y)处的像素点u,将其转换为第一类三维坐标点V(x,y),计算公式为:V(x,y)=D(x,y)K-1(x,y,1);其中,D(x,y)为所述像素点u的深度值,K为深度相机内参数;(23)根据第一类三维坐标点计算所述深度图I中每一个像素点处的法向量;其中,对于所述像素点u,计算其法向量n(u)的计算公式为:n(u)=(V(x+1,y)-V(x,y))×(V(x,y+1)-V(x,y))。3.如权利要求1所述的基于深度图的实时三维重建方法,其特征在于,所述步骤(3)中将由所述深度图I中的像素点转换得到的第一类三维坐标点转换为第二类三维坐标点,包括:(31)将由前一帧深度图转换得到的第二类三维坐标点作为源点云,将由所述深度图I中的像素点转换得到的第一类三维坐标点作为目标点云;(32)对于所述源点云中的第二类三维坐标点pi,计算其在所述深度图I中的投影坐标(xi,yi);计算公式如下:(cxi,cyi,c)=KTpi;其中,T为当前帧的相机位姿,包含旋转矩阵和平移矩阵,初始时刻,所述当前帧的相机位姿为上一帧的相机位姿;c为常数;K为深度相机内参数;根据所述投影坐标(xi,yi),得到对应的第一类三维坐标点qi';若所述投影坐标(xi,yi)中,坐标值xi和坐标值yi均为整数,则将所述第一类三维坐标点qi'作为所述第二类三维坐标点pi的投影匹配点qi;否则,在所述目标点云中寻找与所述第一类三维坐标点qi'的欧式距离最近的第一类三维坐标点并将其作为所述第二类三维坐标点pi的投影匹配点qi;其中,i的取值范围为1~m,m为源点云中的三维坐标点的个数;(33)计算所述源点云中每一个第二类三维坐标点到对应的投影匹配点处切平面的...

【专利技术属性】
技术研发人员:李丹胡迎松邹春明袁凌谭琪蔚孙钰可刘爽
申请(专利权)人:华中科技大学
类型:发明
国别省市:湖北,42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1