本发明涉及三维模型重建技术领域,尤其涉及一种针对大场景的空间隐函数建模方法。
背景技术:
在三维模型重建领域,空间隐函数重建技术是一种表面重建技术,用于将无结构的三维有向点云转化成局部平滑的空间隐函数。空间隐函数能够反映三维有向点云表面的细节形状,通过对空间隐函数进行三角剖分之后可以得到具有拓扑结构的三维网格,从而对三维模型进行高质量的渲染。空间隐函数灵活性高,可以描述各种复杂形状的场景;由于采用了全局的约束,空间隐函数对噪声鲁棒,能够平滑地处理有向点云中的空洞。
但是空间隐函数的重建方法也存在一定的缺陷:
1、空间隐函数重建方法对于大规模场景十分耗时;
2、空间隐函数重建方法容易对场景中的细节结构产生过平滑。
空间隐函数的重建方法通常是将输入的三维有向点云看作是空间隐函数的采样点,通过对三维有向点云进行拟合得到空间隐函数。由于获取的三维有向点云数据通常存在大量的噪声和缺失,为了使得重建的空间隐函数对数据缺陷具有一定的鲁棒性,通常采用全局约束的拟合方法。目前一种流行的方法是将三维有向点云看作是空间隐函数梯度的采样,在梯度域上进行约束,得到能够反映三维有向点云形状细节的空间隐函数。
但是由于采用全局约束,随着三维场景规模的增大,空间隐函数的重建变得十分耗时,普通计算机上亿万规模的三维有向点云通常需要几个到几十个小时的运算时间,远远不能满足现实的需求。除此之外,全局的约束会导致场景的形状细节被过平滑,直接影响重建模型的真实感再现。
综上所述,如何实现空间隐函数重建方法的并行加速运算,提高大规模场景空间隐函数的重建效率,同时使得重建的空间隐函数能够较好地保持场景的形状细节,仍是一个颇具挑战性的问题。
技术实现要素:
有鉴于此,本发明的目的在于提供一种针对大场景的空间隐函数建模方法,用以提高大规模场景空间隐函数的重建效率,同时使得重建的空间隐函数能够较好的保持三维场景的几何细节。
为达成上述目的,提供了以下技术方案:
一种针对大场景的空间隐函数建模方法,其特征在于,所述方法包括:
对所述大场景三维有向点云进行空间划分并构建八叉树,得到八叉树阵列,所述八叉树阵列包括一系列相互重叠的所述八叉树;
在各所述八叉树上独立地进行带有梯度约束和边界约束的空间隐函数重建。
优选地,所述对所述大场景三维有向点云进行空间划分并构建八叉树,得到八叉树阵列,具体包括:
利用所述三维有向点云的坐标信息以及预先设定的分区个数和相邻区域的重叠量,生成具有共享节点的八叉树阵列。
优选地,所述利用所述三维有向点云的坐标信息以及预先设定的分区个数和相邻区域的重叠量,生成具有共享节点的八叉树阵列,具体包括:
根据所述三维有向点云的坐标信息,计算所述三维有向点云的轴向包围盒;
根据所述预先设定的分区个数和所述相邻区域的重叠量,计算每一区域的尺寸;
基于所述轴向包围盒和所述每一区域的尺寸,对所述大场景均匀划分,得到立方体块区域;
在每一所述立方体块区域中建立所述八叉树,从而得到具有共享节点的所述八叉树阵列。
优选地,所述在每一所述立方体块区域中建立所述八叉树,从而得到具有共享节点的所述八叉树阵列,具体包括:
将包含在所述立方体块区域中的所有三维点逐一添加到所述八叉树中;
将包含三维点的八叉树节点不断进行细分,直到所述节点的树深值达到阈值,从而得到具有共享节点的所述八叉树阵列。
优选地,所述在各所述八叉树上独立地进行带有梯度约束和边界约束的空间隐函数重建,具体包括:
利用所述八叉树不同树深的多尺度特征,在每一节点上创建基函数,并基于所述基函数构建多尺度函数空间,得到所述空间隐函数的多尺度线性表达;
利用节点重构向量场的梯度对所述空间隐函数的散度进行约束,得到描述所述三维有向点云形状细节的空间隐函数;
利用所述共享节点产生边界约束,得到无缝对接的空间隐函数。
优选地,所述利用所述八叉树不同树深的多尺度特征,在每一节点上创建基函数,并基于所述基函数构建多尺度函数空间,得到所述空间隐函数的多尺度线性表达,具体包括:
对于所述八叉树的各有向节点,利用所述八叉树不同树深的所述多尺度特征,在每一所述有向节点上创建所述基函数;
根据所述有向节点的宽度和中心对所述基函数进行尺度和平移变化,得到尺度函数空间;
基于所述尺度函数空间,利用所述基函数对所述八叉树上的所述空间隐函数进行表示,得到所述空间隐函数的所述多尺度线性表达。
优选地,所述利用节点重构向量场的梯度对所述空间隐函数的散度进行约束,得到描述所述三维有向点云形状细节的空间隐函数,具体包括:
利用所述三维有向点云的法向量信息和所述多尺度函数空间对节点向量场进行重构,得到所述重构向量场的多尺度线性表达;
在每一所述八叉树上独立地利用所述重构向量场的梯度对所述空间隐函数的散度进行约束,得到所述描述三维有向点云形状细节的空间隐函数。
优选地,所述利用所述三维有向点云的法向量信息和所述多尺度函数空间对节点向量场进行重构,得到所述重构向量场的多尺度线性表达,具体包括:
根据所述八叉树上每一所述节点邻域内的所有三维有向点的法向量信息,得到所述节点的法向量;
将空间中任一所述节点的重构向量表示成节点重构向量的线性和,得到所述重构向量场的所述多尺度线性表达。
优选地,所述利用所述共享节点产生边界约束,得到无缝对接的空间隐函数,具体包括:
基于任意两棵相邻的所述八叉树和它们之间的重叠区域,产生所述空间隐函数的边界约束,从而生成无缝对接的空间隐函数。
与现有技术相比,本发明可以具有以下有益效果:
本发明提供一种针对大场景的空间隐函数建模方法。该方法包括:对大场景三维有向点云进行空间划分并构建八叉树,得到八叉树阵列,八叉树阵列包括一系列相互重叠的八叉树;在各八叉树上独立地进行带有梯度约束和边界约束的空间隐函数重建。通过该技术方案实现了空间隐函数重建的并行化,实现了对空间隐函数重建的并行加速,提高空间隐函数的重建效率,提高了大规模场景表面重建的效率,而且能够保持重建三维场景的表面几何细节,增强了模型渲染的真实感,提升了重建的效率并降低计算资源的消耗,还可以实现数字化城市模型的线下更新,提高了城市数字化的灵活性和高效性。
附图说明
图1是根据本发明实施例的针对大场景的空间隐函数建模方法的流程示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面参照附图来描述本发明的优选实施方式,以对本发明进一步详细说明。应指出的是,本领域技术人员应当理解的是,这些实施方式仅仅用于解释本发明的技术原理,并非旨在限制本发明的保护范围,对其不起任何限定作用。
本发明实施例的基本构思是对三维有向点云进行空间划分并构建八叉树,得到由一系列相互重叠的八叉树组成的八叉树阵列;以及在每棵八叉树上独立地进行带有梯度约束和边界约束的空间隐函数重建。
本发明实施例提供一种针对大场景的空间隐函数重建方法,该方法可以包括:
s100:对大场景三维有向点云进行空间划分并构建八叉树,得到八叉树阵列,该八叉树阵列包括一系列相互重叠的八叉树。
具体地,本步骤可以包括:
利用三维有向点云的坐标信息以及预先设定的分区个数和相邻区域的重叠量,生成具有共享节点的八叉树阵列。
进一步地,本步骤可以通过以下方式来实现:
s101:根据场景三维有向点云的坐标信息,计算场景三维有向点云的轴向包围盒。
s102:根据预先设定的分区个数和相邻区域的重叠量,计算每个区域的尺寸。
s103:基于轴向包围盒和每个区域的尺寸,对大场景均匀划分,得到立方体块区域。
s104:在每一个立方体块区域中建立八叉树,从而得到具有共享节点的八叉树阵列。
在本步骤中,任意相邻的八叉树在重叠区域内具有相同的节点,从而生成具有共享节点的八叉树阵列。
具体地,步骤s104还可以包括:
s1041:将包含在立方体块区域中的所有三维点逐一添加到八叉树中。
s1042:将包含三维点的八叉树节点不断进行细分,直到节点的树深值达到阈值,从而得到具有共享节点的八叉树阵列。
其中,上述阈值为预先设定的树深值。任意相邻的八叉树在重叠区域包含相同的点云,因此任意相邻的八叉树在重叠区域内具有相同的节点。
下面以一优选实施例来详细说明得到八叉树阵列的过程:
步骤a1:根据场景三维有向点云的坐标信息,计算场景三维有向点云的轴向包围盒。
步骤a2:根据预先设定的分区个数和相邻区域的重叠量,计算每个区域的尺寸。
步骤a3:对整个场景均匀划分,得到mn个立方体块区域
步骤a4:将包含在区域bi中的所有三维点逐一添加到八叉树oi中。
步骤a5:将包含三维点的八叉树oi节点不断进行细分,直到节点的树深值达到预先设定的树深值,从而得到具有共享节点的八叉树阵列;其中,任意相邻的八叉树oi在重叠区域包含相同的点云。
s110:在每棵八叉树上独立地进行带有梯度约束和边界约束的空间隐函数重建。
具体地,本步骤可以包括:
s111:利用八叉树不同树深的多尺度特征,在每个节点上创建基函数,并基于基函数构建多尺度函数空间,得到空间隐函数的多尺度线性表达。
具体地,本步骤可以包括:
s1111:对于八叉树的各有向节点,利用八叉树不同树深的多尺度特征,在每个有向节点上创建基函数。
s1112:根据有向节点的宽度和中心对基函数进行尺度和平移变化,得到尺度函数空间。
s1113:基于尺度函数空间,利用基函数对八叉树上的空间隐函数进行表示,得到空间隐函数的多尺度线性表达。
下面以一优选实施例详细说明得到八叉树上空间隐函数的多尺度线性表达的过程:
步骤b1:对于八叉树oi的所有|oi|个有向节点,在每个有向节点oij上建立基函数
步骤b2:根据有向节点的宽度和中心对基函数进行尺度和平移变化,得到尺度函数空间。
步骤b3:基于尺度函数空间,利用节点上的基函数对该八叉树上的空间隐函数进行表示,得到如下空间隐函数的多尺度线性表达:
其中,χi(p)表示p点在第i颗八叉树上的隐函数值;
s112:利用节点重构向量场的梯度对空间隐函数的散度进行约束,得到描述三维有向点云形状细节的空间隐函数。
具体地本步骤可以进一步包括:
s1121:利用三维有向点云的法向量信息和多尺度函数空间对节点向量场进行重构,得到重构向量场的多尺度线性表达。
其中,三维有向点云的法向量信息可以预先输入而获得。
具体地,本步骤进一步可以包括:
步骤c1:根据八叉树上每个节点邻域内的所有三维有向点的法向量信息,得到该节点的法向量。
步骤c2:将空间中任一节点的重构向量表示成节点重构向量的线性和,得到重构向量场的多尺度线性表达。
下面以一优选实施例来详细说明得到重构向量场的多尺度线性表达的过程:
步骤d1:对于八叉树oi上的每个节点oij收集其邻域内的所有三维有向点s∈ngbr(oij)的法向量信息
步骤d2:将空间中任意一节点的重构向量表示成节点重构向量的线性和,得到重构向量场的多尺度线性表达
其中,
s1122:在每棵八叉树上独立地利用重构向量场的梯度对空间隐函数的散度进行约束,得到描述三维有向点云形状细节的空间隐函数。
本步骤利用立方体块区域内的重构向量场对空间隐函数进行约束,保证重构向量场的梯度和空间隐函数的散度保持一致,从而得到能够描述三维有向点云形状细节的空间隐函数。
s113:利用共享节点产生边界约束,得到无缝对接的空间隐函数。
其中,该共享节点也即相邻八叉树的共享节点。
具体地本步骤可以进一步包括:
基于任意两棵相邻的八叉树和它们之间的重叠区域,产生空间隐函数的边界约束,使得相邻八叉树重叠区域上的空间隐函数保持一致,从而生成无缝对接的空间隐函数。
本步骤中,基于任意两棵相邻的八叉树和它们之间的重叠区域,产生空间隐函数的边界约束,使得相邻八叉树重叠区域上的空间隐函数保持一致,本发明实施例利用相邻八叉树重叠区域ωij内的空间隐函数必须保持一致的约束,产生空间隐函数的边界约束χi|ωi,j-χj|ωi,j≡0,从而生成无缝对接的空间隐函数χi和χj。
本发明实施例利用场景三维有向点云的坐标信息构建由一系列相互重叠的八叉树组成的八叉树阵列;然后分别在每棵八叉树上独立地进行梯度约束的空间隐函数重建,使得重建的空间隐函数能够反映三维有向点云的形状细节;同时保持空间隐函数的边界约束,使得相邻八叉树上的空间隐函数能够无缝对接,实现了空间隐函数重建的并行化,能够对空间隐函数重建的并行加速,提高了空间隐函数的重建效率,有助于提高大规模场景表面重建的效率,而且能够保持重建场景的表面几何细节,增强模型渲染的真实感,提升了重建的效率并降低计算资源的消耗,还可以实现数字化城市模型的线下更新,提高了城市数字化的灵活性和高效性。
本发明实施例适用于大规模场景三维有向点云的表面重建,可以用于将激光雷达扫描或基于图像的方法得到的三维有向点云转换成空间隐函数,用于基于激光雷达扫描设备和基于图像序列的三维重建获取的大规模场景的三维有向点云的空间隐函数重建,还可以用于大规模场景三维有向点云的表面重建和真实感再现。
需要说明的是,虽然本文以上述顺序描述了本发明的实施例,但是,本领域技术人员应能理解,本发明实施例还可以其他诸如并行或与上述描述顺序相反的顺序进行,这些均在本发明的保护范围之内,在此不再赘述。
需要说明的是,本发明实施例提供的方法既可以在个人计算机、工控机及服务器上以软件的形式安装并执行,也可以硬件的形式来体现。例如:本发明的各个步骤可以用通用的计算装置来实现,例如,它们可以集中在单个的计算装置上,例如:个人计算机、服务器计算机、工控机、手持设备或便携式设备、平板型设备或者多处理器装置,也可以分布在多个计算装置所组成的网络上,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。因此,本发明不限于任何特定的硬件和软件或者其结合。
至此,已经结合附图所示的优选实施方式描述了本发明的技术方案,但是,本领域技术人员容易理解的是,本发明的保护范围显然不局限于这些具体实施方式。在不偏离本发明的原理的前提下,本领域技术人员可以对相关技术特征作出等同的更改或替换,这些更改或替换之后的技术方案都将落入本发明的保护范围之内。