CN108961390B - 基于深度图的实时三维重建方法 - Google Patents
基于深度图的实时三维重建方法 Download PDFInfo
- Publication number
- CN108961390B CN108961390B CN201810586309.1A CN201810586309A CN108961390B CN 108961390 B CN108961390 B CN 108961390B CN 201810586309 A CN201810586309 A CN 201810586309A CN 108961390 B CN108961390 B CN 108961390B
- Authority
- CN
- China
- Prior art keywords
- hash
- voxel
- depth map
- dimensional coordinate
- value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Graphics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- Image Generation (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明公开了一种基于深度图的实时三维重建方法,包括:利用深度相机获得拍摄场景的深度图和RGB彩色图;对每一帧深度图进行如下处理:对深度信息进行补全,然后其像素点转换第一类三维坐标点,并计算每一个像素点处的法向量;将深度图对应的第一类三维坐标点转换为第二类三维坐标点;为深度图所对应的每一个第二类三维坐标点分配体素块,并利用哈希表索引体素块;通过对体素块加权融合更新体素块中每一个体素的sdf值,然后提取场景表面;获得场景表面的纹理信息,并计算场景表面每一个体素处的表面法向量。本发明能够有效提高重建速度和重建质量,并且能够适用于大规模的场景重建。
Description
技术领域
本发明属于计算机视觉技术领域,更具体地,涉及一种基于深度图的实时三维重建方法。
背景技术
三维重建技术一直是计算机图形学和计算机视觉领域的一个热点课题。早期的三维重建技术通常以二维图像作为输入,重建出场景中的三维模型,受限于输入数据,重建出的三维模型通常不够完整,而且真实感较低。近年来,随着各种面向普通消费者的深度相机的出现,基于深度相机的三维重建技术得到飞速发展。深度相机造价低廉,体积适当,操作方便,并且易于研究者和工程师进行开发,近期工作重点利用这种消费者深度相机实现实时表面重建。三维重建技术也是增强现实技术的基础,经过扫描重建后的三维模型可以运用到增强现实(Augmented Reality,AR)或虚拟现实(Virtual Reality,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)计算得到,计算公式如下:
为体素块分配哈希体的方法为:为体素块vb分配哈希体时,计算体素块vb的哈希值,然后在哈希表中查找被体素块vb占用的哈希体,若找到,则体素块vb已经被分配哈希体,无需重新分配,分配结束;若没有找到,则根据体素块vb的哈希值找到对应的哈希桶B;若哈希桶B中存在空闲的哈希体,则依次顺序地将哈希桶B的空闲哈希体分配给体素块vb;若哈希桶B中不存在空闲的哈希体且哈希桶B中末尾的哈希体E1存储的偏移值未设置,则在在哈希表中从哈希体E1相邻的下一个哈希体开始线性地查找一个空闲的哈希体E2,将哈希体E2分配给体素块vb,并将哈希体E1存储的偏移值设置为哈希体E2相对于哈希体E1的偏移量,从而形成一个链接列表;链接列表中每一个哈希体存储的偏移值设置为链表中下一个哈希体相对于当前哈希体的偏移量,链接列表末尾的哈希体存储的偏移值未设置;若哈希桶B中不存在空闲的哈希体且哈希桶B中末尾的哈希体E1存储的偏移值已设置,则查找链接列表最末尾的哈希体E3,然后在哈希表中从哈希体E3相邻的下一个哈希体开始线性地查找一个空闲的哈希体E4,将哈希体E4分配给体素块vb,并将哈希体E3存储的偏移值设置为哈希体E4相对于哈希体的偏移量E3。
进一步地,步骤(5)包括:
(51)线性遍历哈希表,若哈希体被当前帧的体素块占用,则将该哈希体标记为当前帧可见,否则,将该哈希体标记为当前帧不可见;
(52)利用并行数组前缀和算法查找出被标记为当前帧可见的哈希体,然后将当前帧可见哈希体依次顺序复制到连续数组A中;
(53)遍历连续数组A,索引找到当前帧的体素块;由于当前帧可见的哈希体在连续数组A中依次顺序存储,相比于利用哈希表索引体素块,利用连续数组A索引体素块能够有效提高索引体素块的效率;
(54)利用体素块中体素存储的weight信息,对当前帧的体素块中的每一个体素块利用TSDF(truncated signed distance function,截断有符号距离函数)模型进行加权融合,以更新体素块中每一个体素的sdf值;
(55)利用光线投影算法从当前帧的体素块中提取sdf值为0的等值面,从而得到场景表面。
进一步地,步骤(6)包括:获得场景表面上位于体素块顶点处的体素,将其存储的color信息作为场景表面的纹理信息,使得重建场景经过渲染后具有色彩信息;
计算场景表面每一个体素处的表面法向量,使得重建场景经过渲染后具有层次感;其中,对于场景表面的体素v=(x,y,z),利用如下公式计算其表面法向量:函数F为有符号距离函数,其对应的函数值即为加权融合后体素的sdf值;λ为缩放系数,用于对表面法向量n'(v)在每个维度上进行相同尺度的缩放,以确保在任意体素分辨率和任意重建维度下表面法向量n'(v)具有正确的各向同性。
总体而言,通过本发明所构思的以上技术方案,能够取得以下有益效果:
(1)本发明所提供的基于深度图的实时三维重建方法,通过投影的方法计算连续两帧深度图间的匹配点对,能够有效提高匹配速度;在划分体素块并为体素块分配存储空间后,利用哈希表索引体素块,能够有效提高后续需要使用体素块的步骤的处理速度;因此,本发明所提供的基于深度图的实时三维重建方法,能够有效提高重建速度,保证场景重建的实时性。
(2)本发明所提供的基于深度图的实时三维重建方法,获取到深度图在世界坐标系下的三维坐标点后,在每一个三维坐标点的周围分别为其分配体一个仅包含8*8*8个体素的体素块,然后再基于体素块进行加权融合和渲染;这种分配体素块的方式不受世界坐标系下三维坐标点的个数的限制,因此,本发明所提供的基于深度图的实时三维重建方法能够应用于大规模场景的重建,而且能够节约用于存储体素块的存储空间。
(3)本发明所提供的基于深度图的实时三维重建方法,获得场景表面后,会获取场景表面上位于体素块顶点处的体素,将其存储的color信息作为场景表面的纹理信息,使得重建场景经过渲染后具有色彩信息,并且计算场景表面每一个体素处的表面法向量,使得重建场景经过渲染后具有层次感;因此,本发明所提供的基于深度图的实时三维重建方法,能够获得具有真实感的重建场景,重建质量较高。
附图说明
图1为本发明实施例提供的基于深度图的实时三维重建方法示意图;
图2为本发明实施例提供的通过投影的方法计算匹配点的示意图;
图3为本发明实施例提供的为体素块分配哈希体的方法流程图;
图4为本发明实施例提供的哈希表删除操作示意图;
图5为本发明实施例提供的哈希表整合示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
如图1所示,本发明所提供的基于深度图的实时三维重建方法,包括如下步骤:
(1)利用深度相机获得拍摄场景的深度图和RGB彩色图;深度图用于表示场景表面到深度相机的距离,彩色图用于给出深度图中对应像素点的颜色信息;
(2)去噪与转换:
对于当前帧的深度图I,进行如下操作:
(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为第一帧深度图,则将由深度图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为源点云中的三维坐标点的个数;
如图2所示,由于连续两帧深度图间相机位姿变化比较小,相比于传统的基于kd-tree计算匹配点的方法,通过投影方法计算匹配点,能够提高匹配速度;
(33)计算源点云中每一个第二类三维坐标点到对应的投影匹配点处切平面的距离的平方,并将计算结果累加作为目标函数E;目标函数E的表达式为:
其中,R和t分别是此次迭代需要计算的旋转矩阵和平移矩阵;ni是投影匹配点qi对应的像素点处的法向量;
(34)若目标函数E的函数值小于预设的阈值,或者迭代次数达到预设的次数,则停止迭代,输出当前的旋转矩阵R和平移矩阵t作为当前帧的相机位姿,并转入步骤(35);否则,求解目标函数的函数值极小化时对应的旋转矩阵R和平移矩阵t以更新当前帧的相机位姿T,并转入步骤(32),开始下一轮的迭代;
(35)根据当前帧的相机位姿T,将由深度图I中的像素点转换得到的第一类三维坐标点转换为第二类三维坐标点;
(4)体素块分配:
对于深度图I所对应的每一个第二类三维坐标点,在其周围为其分配一个以该第二类三维坐标点为中心的体素块,得到当前帧的体素块;为当前帧的体素块中的每一个体素块分配存储空间,并利用哈希表索引体素块;其中,每一个体素块存储8*8*8个体素,每一个体素存储sdf值、color信息以及weight信息;sdf值表示体素到场景表面的有符号距离,sdf值为0的体素位于场景表面,且sdf值为正值的体素和sdf值为负值的体素分别位于场景表面的两侧;color信息表示体素的RGB颜色信息,其值根据RGB彩色图得到,weight信息表示对体素所属的体素块进行加权融合时的权重;
现有的三维重建方法中,将待重建场景划分为512*512*512固定大小的体素网格,其中极少部分体素表示场景表面点,这很浪费资源,且重建规模受限;本发明所提供的重建方法,只在待重建场景表面点周围分配体素块,且体素块的大小仅为8*8*8,这种分配体素块的方式不受世界坐标系下三维坐标点的个数的限制,而且能够节约用于存储体素块的存储空间;
其中,用于索引体素块的哈希表由哈希桶组成;每个哈希桶对应一个哈希值,并且包含相同数量的哈希体;每个哈希体用于索引一个体素块,每个哈希体存储的信息包括:体素块中心的空间坐标,哈希冲突时用于解决哈希冲突的偏移值,以及指向体素块实际存储空间的地址;
哈希表中,每一个体素块的哈希值H(x,y,z)根据其中心空间坐标(x,y,z)计算得到,计算公式如下:
如图3所示,为体素块分配哈希体的方法为:为体素块vb分配哈希体时,计算体素块vb的哈希值,然后在哈希表中查找被体素块vb占用的哈希体,若找到,则体素块vb已经被分配哈希体,无需重新分配,分配结束;若没有找到,则根据体素块vb的哈希值找到对应的哈希桶B;若哈希桶B中存在空闲的哈希体,则依次顺序地将哈希桶B的空闲哈希体分配给体素块vb;若哈希桶B中不存在空闲的哈希体且哈希桶B中末尾的哈希体E1存储的偏移值未设置,则在在哈希表中从哈希体E1相邻的下一个哈希体开始线性地查找一个空闲的哈希体E2,将哈希体E2分配给体素块vb,并将哈希体E1存储的偏移值设置为哈希体E2相对于哈希体E1的偏移量,从而形成一个链接列表;链接列表中每一个哈希体存储的偏移值设置为链表中下一个哈希体相对于当前哈希体的偏移量,链接列表末尾的哈希体存储的偏移值未设置;若哈希桶B中不存在空闲的哈希体且哈希桶B中末尾的哈希体E1存储的偏移值已设置,则查找链接列表最末尾的哈希体E3,然后在哈希表中从哈希体E3相邻的下一个哈希体开始线性地查找一个空闲的哈希体E4,将哈希体E4分配给体素块vb,并将哈希体E3存储的偏移值设置为哈希体E4相对于哈希体的偏移量E3;
在哈希表中,检索、插入与删除这三种基本操作分别如下;
检索:
根据体素块中存储的空间坐标计算哈希值,进而在哈希表中得到哈希桶的位置,通过比较哈希体中存储的体素块坐标值,和待索取的体素块的坐标值,可以判断当前哈希体存储的是否是待索取的体素块的信息,在哈希桶中遍历每个哈希体和待索取的体素块的坐标进行对比,即使碰到空的哈希体也需要继续向下寻找,直至找到为止;
插入:
根据体素块中存储的空间坐标计算哈希值,在哈希表对应的哈希桶中查找体素块是否已经分配,如果已经分配,则返回,如果没有分配,则在哈希桶中查找空闲的哈希体,如果存在空余的哈希体,则将该体素块分配哈希体,如果哈希桶占满,则在下一个哈希桶中查找空闲的哈希体,如果在下一个哈希桶中查找的哈希体不是哈希桶末尾的哈希体,则找到插入位置,否则再在下一个哈希桶寻找,解决哈希冲突的方式是每个哈希桶都有个偏移值,偏移值存储发生冲突时的链表信息,解决哈希冲突的方式,是在哈希桶邻近的下面的哈希桶中存储;
删除:
根据体素块中存储的空间坐标计算哈希值,如果待删除的哈希体在哈希值对应的哈希桶中,如果不是末尾元素直接删除;或者是末尾元素,但是末尾元素的偏移值是空,则在哈希桶直接将哈希体删除,如果是末尾元素且末尾元素的偏移值非空,则需要根据偏移值找到链接的下一个哈希体,并且将下一个哈希体移动到末尾的哈希体;如果待删除的哈希体在别的哈希桶中,删除该哈希体并且修改偏移值的值;
如图4所示,四个哈希值均为1的体素块b1~b4,中心的空间坐标分别是(0,-1,3)、(-1,2,3)、(2,3,5)和(8,7,-1),分配给这四个体素块的哈希体分别是e1~e4;其中,哈希体e1和哈希体e2均位于哈希值为1的哈希桶中并且哈希体e2位于哈希桶的末尾,哈希体e3位于哈希值为2的哈希桶中,哈希体e4位于哈希值为3的哈希桶中;哈希体e2的偏移值设置为哈希体e3相对于哈希体e2的偏移量,哈希体e3的偏移值设置为哈希体e4相对于哈希体e3的偏移量;删除哈希体e2时,由于哈希体e2位于哈希桶的末尾,且偏移值非空,根据该偏移值找到下一个哈希体e3,并将哈希体e3移动到哈希体e2的位置,同时更新的哈希体e3偏移值;
本发明所提供的重建方法,利用空间哈希技术实现对体素块的索引,能够在保持表面分辨率同时高效地压缩体积,且不需要分层空间数据结构,并能最大限度地减少冲突,同时回收哈希结构时不需要昂贵的数据结构重组代价;
(5)体素块更新融合及表面提取:
如图5所示,具体包括:
(51)线性遍历哈希表,若哈希体被当前帧的体素块占用,则将该哈希体标记为当前帧可见,否则,将该哈希体标记为当前帧不可见;
(52)利用并行数组前缀和算法查找出被标记为当前帧可见的哈希体,然后将当前帧可见哈希体依次顺序复制到连续数组A中;
(53)遍历连续数组A,索引找到当前帧的体素块;由于当前帧可见的哈希体在连续数组A中依次顺序存储,相比于利用哈希表索引体素块,利用连续数组A索引体素块能够有效提高索引体素块的效率;
(54)利用体素块中体素存储的weight信息,对当前帧的体素块中的每一个体素块利用TSDF模型进行加权融合,以更新体素块中每一个体素的sdf值;
(55)利用光线投影算法从当前帧的体素块中提取sdf值为0的等值面,从而得到场景表面
(6)渲染:
获得场景表面上位于体素块顶点处的体素,将其存储的color信息作为场景表面的纹理信息,使得重建场景经过渲染后具有色彩信息;
计算场景表面每一个体素处的表面法向量,使得重建场景经过渲染后具有层次感;其中,对于场景表面的体素v=(x,y,z),利用如下公式计算其表面法向量:函数F为有符号距离函数,其对应的函数值即为加权融合后体素的sdf值;λ为缩放系数,用于对表面法向量n'(v)在每个维度上进行相同尺度的缩放,以确保在任意体素分辨率和任意重建维度下表面法向量n'(v)具有正确的各向同性;
(7)依次遍历每一帧深度图,将其作为当前帧的深度图,并重复执行步骤(2)~(6),直至场景重建完成。
经过实验验证,本发明所提供的基于深度图的实时三维重建方法相对于传统的重建方法,具有如下优势:1、在相机跟踪过程中,采用光线投影算法寻找匹配点对,时间复杂度为o(1),寻找匹配点速度提高了26%;2、本发明对深度相机拍摄的场景可以实时重建,能够保证在30fps;3、本发明可以在保证实时性的同时,又能得到大尺度高质量的三维重建效果,重建尺度大约是传统方法2倍。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (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)计算所述源点云中每一个第二类三维坐标点到对应的投影匹配点处切平面的距离的平方,并将计算结果累加作为目标函数E;所述目标函数E的表达式为:
其中,R和t分别是此次迭代需要计算的旋转矩阵和平移矩阵;ni是所述投影匹配点qi对应的像素点处的法向量;
(34)若所述目标函数E的函数值小于预设的阈值,或者迭代次数达到预设的次数,则停止迭代,输出当前的旋转矩阵R和平移矩阵t作为当前帧的相机位姿,并转入步骤(35);否则,求解所述目标函数的函数值极小化时对应的旋转矩阵R和平移矩阵t以更新当前帧的相机位姿T,并转入步骤(32),开始下一轮的迭代;
(35)根据当前帧的相机位姿T,将由所述深度图I中的像素点转换得到的第一类三维坐标点转换为第二类三维坐标点。
4.如权利要求1所述的基于深度图的三维重建方法,其特征在于,所述步骤(4)中用于索引体素块的哈希表由哈希桶组成;每个哈希桶对应一个哈希值,并且包含相同数量的哈希体;每个哈希体用于索引一个体素块,每个哈希体存储的信息包括:体素块中心的空间坐标,哈希冲突时用于解决哈希冲突的偏移值,以及指向体素块实际存储空间的地址;
所述哈希表中,每一个体素块的哈希值H(x,y,z)根据其中心空间坐标(x,y,z)计算得到,计算公式如下:
为体素块分配哈希体的方法为:为体素块vb分配哈希体时,计算所述体素块vb的哈希值,然后在所述哈希表中查找被所述体素块vb占用的哈希体,若找到,则所述体素块vb已经被分配哈希体,无需重新分配,分配结束;若没有找到,则根据体素块vb的哈希值找到对应的哈希桶B;若所述哈希桶B中存在空闲的哈希体,则依次顺序地将所述哈希桶B的空闲哈希体分配给所述体素块vb;若所述哈希桶B中不存在空闲的哈希体且所述哈希桶B中末尾的哈希体E1存储的偏移值未设置,则在在所述哈希表中从所述哈希体E1相邻的下一个哈希体开始线性地查找一个空闲的哈希体E2,将所述哈希体E2分配给所述体素块vb,并将所述哈希体E1存储的偏移值设置为所述哈希体E2相对于所述哈希体E1的偏移量,从而形成一个链接列表;所述链接列表中每一个哈希体存储的偏移值设置为链表中下一个哈希体相对于当前哈希体的偏移量,所述链接列表末尾的哈希体存储的偏移值未设置;若所述哈希桶B中不存在空闲的哈希体且所述哈希桶B中末尾的哈希体E1存储的偏移值已设置,则查找所述链接列表最末尾的哈希体E3,然后在所述哈希表中从所述哈希体E3相邻的下一个哈希体开始线性地查找一个空闲的哈希体E4,将所述哈希体E4分配给所述体素块vb,并将所述哈希体E3存储的偏移值设置为所述哈希体E4相对于所述哈希体的偏移量E3。
5.如权利要求1所述的基于深度图的三维重建方法,其特征在于,所述步骤(5)包括:
(51)线性遍历所述哈希表,若哈希体被当前帧的体素块占用,则将该哈希体标记为当前帧可见,否则,将该哈希体标记为当前帧不可见;
(52)利用并行数组前缀和算法查找出被标记为当前帧可见的哈希体,然后将当前帧可见哈希体依次顺序复制到连续数组A中;
(53)遍历所述连续数组A,索引找到当前帧的体素块;
(54)利用体素块中体素存储的weight信息,对当前帧的体素块中的每一个体素块利用TSDF模型进行加权融合,以更新体素块中每一个体素的sdf值;
(55)利用光线投影算法从当前帧的体素块中提取sdf值为0的等值面,从而得到场景表面。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810586309.1A CN108961390B (zh) | 2018-06-08 | 2018-06-08 | 基于深度图的实时三维重建方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810586309.1A CN108961390B (zh) | 2018-06-08 | 2018-06-08 | 基于深度图的实时三维重建方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108961390A CN108961390A (zh) | 2018-12-07 |
CN108961390B true CN108961390B (zh) | 2020-05-19 |
Family
ID=64493874
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810586309.1A Active CN108961390B (zh) | 2018-06-08 | 2018-06-08 | 基于深度图的实时三维重建方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108961390B (zh) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109754397B (zh) * | 2019-01-03 | 2021-02-09 | 东软集团股份有限公司 | 血管段中心路径的提取方法、装置、终端设备及存储介质 |
CN109903372B (zh) * | 2019-01-28 | 2021-03-23 | 中国科学院自动化研究所 | 深度图超分辨率补全方法及高质量三维重建方法与系统 |
CN110458939B (zh) * | 2019-07-24 | 2022-11-18 | 大连理工大学 | 基于视角生成的室内场景建模方法 |
CN110706267B (zh) * | 2019-09-04 | 2022-11-15 | 五邑大学 | 一种基于采矿过程的矿石三维坐标获取方法及其装置 |
CN110751684B (zh) * | 2019-10-18 | 2023-09-29 | 中山大学 | 基于深度摄像模组的物体三维重建方法 |
CN111028304B (zh) * | 2019-12-16 | 2023-07-21 | 京东方科技集团股份有限公司 | 纹理数据压缩方法和装置、存储介质及电子设备 |
CN113494803B (zh) * | 2020-05-29 | 2022-09-20 | 海信集团有限公司 | 智能冰箱及冰箱门体内储物的存取操作检测方法 |
US11438628B2 (en) * | 2020-06-03 | 2022-09-06 | Tencent America LLC | Hash-based accessing of geometry occupancy information for point cloud coding |
CN112598778B (zh) * | 2020-08-28 | 2023-11-14 | 国网陕西省电力公司西咸新区供电公司 | 一种基于改进的纹理贴图算法的vr三维重建方法 |
CN112132972B (zh) * | 2020-09-29 | 2024-03-22 | 凌美芯(北京)科技有限责任公司 | 一种激光与图像数据融合的三维重建方法及系统 |
CN113126944B (zh) * | 2021-05-17 | 2021-11-09 | 北京的卢深视科技有限公司 | 深度图的显示方法、显示装置、电子设备及存储介质 |
CN113487739A (zh) * | 2021-05-19 | 2021-10-08 | 清华大学 | 一种三维重建方法、装置、电子设备及存储介质 |
CN113436220B (zh) * | 2021-05-28 | 2022-04-05 | 华东师范大学 | 一种基于深度图分割的图像背景估计方法 |
CN114666584B (zh) * | 2022-04-02 | 2023-05-09 | 中山大学 | 一种基于高频置零的编码方法、装置、设备及介质 |
CN114913287B (zh) * | 2022-04-07 | 2023-08-22 | 北京拙河科技有限公司 | 一种三维人体模型重建方法及系统 |
CN114998547B (zh) * | 2022-04-29 | 2023-04-28 | 北京数字绿土科技股份有限公司 | 电力线和杆塔点的网格随机采样方法、系统及存储介质 |
CN115601506B (zh) * | 2022-11-07 | 2024-05-28 | 上海人工智能创新中心 | 一种三维场景的重建方法、电子设备及介质 |
CN116363327B (zh) * | 2023-05-29 | 2023-08-22 | 北京道仪数慧科技有限公司 | 体素地图生成方法及系统 |
CN116823816B (zh) * | 2023-08-28 | 2023-11-21 | 济南正邦电子科技有限公司 | 一种基于安防监控静态存储器的检测设备及检测方法 |
CN116861023B (zh) * | 2023-09-01 | 2023-12-12 | 北京达美盛软件股份有限公司 | 一种在三维空间中确定相同几何对象的方法及系统 |
CN117994444B (zh) * | 2024-04-03 | 2024-06-18 | 浙江华创视讯科技有限公司 | 复杂场景的重建方法、设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102842148A (zh) * | 2012-07-10 | 2012-12-26 | 清华大学 | 一种无标记运动捕捉及场景重建方法及装置 |
CN105279786A (zh) * | 2014-07-03 | 2016-01-27 | 顾海松 | 物体三维模型的获取方法和系统 |
US9639166B2 (en) * | 2015-03-11 | 2017-05-02 | Microsoft Technology Licensing, Llc | Background model for user recognition |
CN107194984A (zh) * | 2016-03-14 | 2017-09-22 | 武汉小狮科技有限公司 | 移动端实时高精度三维建模方法 |
CN107833270A (zh) * | 2017-09-28 | 2018-03-23 | 浙江大学 | 基于深度相机的实时物体三维重建方法 |
CN107845134A (zh) * | 2017-11-10 | 2018-03-27 | 浙江大学 | 一种基于彩色深度相机的单个物体的三维重建方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20110116325A (ko) * | 2010-04-19 | 2011-10-26 | 삼성전자주식회사 | 영상 처리 장치 및 그 방법 |
US9117274B2 (en) * | 2011-08-01 | 2015-08-25 | Fuji Xerox Co., Ltd. | System and method for interactive markerless paper documents in 3D space with mobile cameras and projectors |
WO2016046212A1 (en) * | 2014-09-22 | 2016-03-31 | Foundation For Research And Technology - Hellas (Forth) | Apparatuses, method and systems for recovering a 3-dimensional skeletal model of the human body |
-
2018
- 2018-06-08 CN CN201810586309.1A patent/CN108961390B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102842148A (zh) * | 2012-07-10 | 2012-12-26 | 清华大学 | 一种无标记运动捕捉及场景重建方法及装置 |
CN105279786A (zh) * | 2014-07-03 | 2016-01-27 | 顾海松 | 物体三维模型的获取方法和系统 |
US9639166B2 (en) * | 2015-03-11 | 2017-05-02 | Microsoft Technology Licensing, Llc | Background model for user recognition |
CN107194984A (zh) * | 2016-03-14 | 2017-09-22 | 武汉小狮科技有限公司 | 移动端实时高精度三维建模方法 |
CN107833270A (zh) * | 2017-09-28 | 2018-03-23 | 浙江大学 | 基于深度相机的实时物体三维重建方法 |
CN107845134A (zh) * | 2017-11-10 | 2018-03-27 | 浙江大学 | 一种基于彩色深度相机的单个物体的三维重建方法 |
Non-Patent Citations (2)
Title |
---|
《3D scene reconstruction using a texture probabilistic grammar》;Li Dan;《Springer》;20180501;第77卷(第21期);第28417-28440页 * |
《Depth Camera in Computer Vision and Computer Graphics:An Overview》;XIANG Xueqin;《Journal of Frontiers of Computer Science and Technology》;20110615;第481-492页 * |
Also Published As
Publication number | Publication date |
---|---|
CN108961390A (zh) | 2018-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108961390B (zh) | 基于深度图的实时三维重建方法 | |
Lazova et al. | Control-nerf: Editable feature volumes for scene rendering and manipulation | |
CN108986195B (zh) | 一种结合环境映射和全局光照渲染的单镜头混合现实实现方法 | |
CN115082639B (zh) | 图像生成方法、装置、电子设备和存储介质 | |
Li et al. | Read: Large-scale neural scene rendering for autonomous driving | |
CN108010123B (zh) | 一种保留拓扑信息的三维点云获取方法 | |
CN117015806A (zh) | 高分辨率神经渲染 | |
CN111951368B (zh) | 一种点云、体素和多视图融合的深度学习方法 | |
CN112927359A (zh) | 一种基于深度学习和体素的三维点云补全方法 | |
Wang et al. | Synthetic data generation and adaption for object detection in smart vending machines | |
CN116363290A (zh) | 一种用于大规模场景三维重建的纹理贴图生成方法 | |
CN116912405A (zh) | 一种基于改进MVSNet的三维重建方法及系统 | |
CN107509067B (zh) | 一种高速高质量的自由视点图像合成方法 | |
CN115063485B (zh) | 三维重建方法、装置及计算机可读存储介质 | |
CN111899326A (zh) | 一种基于gpu并行加速的三维重建方法 | |
CN116958367A (zh) | 一种快速组合并渲染复杂神经场景的方法 | |
CN116228986A (zh) | 一种基于局部到全局补全策略的室内场景光照估计方法 | |
JP2021033682A (ja) | 画像処理装置、方法及びプログラム | |
Fu et al. | Dynamic shadow rendering with shadow volume optimization | |
Liu et al. | Image-based rendering for large-scale outdoor scenes with fusion of monocular and multi-view stereo depth | |
CN116310224B (zh) | 一种快速目标三维重建方法及装置 | |
CN113096248B (zh) | 基于共享显存优化的光子收集方法和光子映射渲染方法 | |
CN116883575B (zh) | 建筑群渲染方法、装置、计算机设备和存储介质 | |
Xu et al. | Dynamic voxel grid optimization for high-fidelity rgb-d supervised surface reconstruction | |
CN118037942A (zh) | 一种室内场景三维重建方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |