3D场景中基于最小费用最大流的层次结构构建方法与流程

文档序号:16120893发布日期:2018-11-30 23:11阅读:325来源:国知局

本发明涉及一种3d场景中基于最小费用最大流的层次结构构建方法。

背景技术

近年来,随着深度摄像头和3d扫描仪的快速发展,人们获取3d数据越来越容易。3d数据的类型包括深度数据、点云数据、3d模型等。对于有标注的3d模型,计算机能够很好的识别场景中的物体。但是3d场景并不仅仅是单个物体的简单集合,缺乏对场景中各个物体之间关系的描述,会成为计算机对场景高层次理解或者进一步使用的障碍。为了解决这个问题,之前的做法很多都是依赖单个对象的label和它们之间关系的平面图(flattengraph)。这种类型的图结构已经广泛应用于场景建模,基于上下文的对象检索,场景检索等。但通常这类平面图缺乏针对组或局部区域的表示,往往需要进行分割或特征提取等进一步处理才能够用于比较和检索。分层结构既包含了场景中的物体、物体间的关系,又对场景中的局部结构有更清晰地表示,已被广泛用于模型分析。层次结构已经被证明在场景解析,场景检索和基于功能的对象检索中非常有用。liu等人提出了一种基于学习的算法。虽然他们的系统可以产生一致的场景层次,但是训练需要大量的人工标签。zhao等人提出了基于对象之间的亲密度测量的分层凝聚聚类方算法法。该算法的合并速度由合并参数控制,然而该合并参数难以针对所有类型的数据进行优化。hu等人为场景的每个中心对象构建分层结构,其中树的节点是单个对象。相比之下,他们的算法更适合小规模的场景。

对于已经分割为实体且有标注的3d场景,一种构建层次结构的方法是以每个实体或者模型为顶点构建场景的图,利用基于图论的分割算法对场景迭代分割,构建场景的层次结构。这种方法在普通场景中能够获得较好的结果,但是当场景中包含多个具有相同语义的重复结构时,不能保证准确识别出这些重复结构。



技术实现要素:

本发明的目的在于克服上述现有技术的缺点,提供一种3d场景中基于最小费用最大流的层次结构构建方法,能够快速找到场景的重复结构,构建场景的重复结构。

为达到上述目的,本发明采用以下技术方案予以实现:

步骤1,对于输入3d模型,本发明使用ibs算法计算各个模型之间的空间关系,构建整个场景的空间关系;

步骤2,根据各个模型之间的空间关系,融合场景的label信息,使用重复率和覆盖率找到场景的基本单元的构成;

步骤3,将重复单元中所有的对象按照label分为两组,费用流中也仅仅存在跨类别的边,同一label内的对象之间不存在边。在网络中假设一个原点s和t,运行最小费用最大流算法计算场景的最佳匹配,找到场景的基本单元及依据此基本单元的分割结果;

步骤4,对于除去重复单元的剩余部分,运用最小生成树算法将场景连成一棵树。求取任何两个值之间的斜率,找到斜率的峰值,也就是边的值变化最大的位置,即为阈值t的位置,将大于阈值t的边都去掉,就将剩余部分的场景给分割开来,即得到分割的结果;

步骤5,根据步骤3与步骤4的分割结果构建层次结构,得到最终的结果。

与现有技术相比,本发明具有以下有益效果:

对于包含重复结构的场景来说,构建层次结构时应该先找到场景的重复单元。在寻找场景基本单元时,本发明在几何信息的基础上融合场景的label信息,通过重复率和覆盖率找到场景基本单元的构成,将寻找场景基本单元的问题转化为最小费用最大流的问题。找到场景中的基本单元后,对于除去重复单元的部分,由于剩余模型一般较少,且模型之间的相似度也较小,本发明就使用了基于最小生成树的分割算法对剩余部分进行分割。

具体的本发明具有以下优点:

第一:本发明自适应地结合了场景的几何信息和语义信息。这两种信息是3d场景的最重要的两个属性。

第二:使用全局优化的算法来寻找重复单元。这种方法能够保证寻找到最优重复单元,而已有的基于局部分析的算法不能保证。而最优的重复单元避免了场景的过分割或欠分割,有利于获得更合理的层次结构。

第三:对于除去重复单元的剩余部分,由于剩余部分之间的联系较为稀疏,我们选择最小生成树算法进行分割。

附图说明

图1为本发明的流程图;

图2为本发明的基于ibs相似度示意图;

图3为本发明的示例场景权值示意图;其中,(a)为示例场景所有脊的权重,(b)为为示例场景的权值图;

图4为本发明的包含重复组合的室内场景图;

图5为本发明的网络流示意图;

图6为本发明的最大流示意图;

图7为本发明的费用流的示意图;

图8为本发明的保证最小费用最大流时场景的流图;

图9为本发明的场景的各个基本单元图;

图10为本发明的场景层次结构图;其中,(a)为原始场景,(b)为具体层次结构。

具体实施

下面结合附图对本发明做进一步详细描述:

参见图1,本发明3d场景中基于最小费用最大流的层次结构构建方法,需要对输入场景的包含重复单元部分和其他部分分别进行处理。整个发明的流程如图1所示。

本发明使用平分交互面(ibs)来计算模型之间的相似程度,ibs是一种设计用于定量表示空间关系的结构,这个结构由于两个元素等距离的多边形(成为‘脊’)组成。具体定义如图2所示。

ibs上的脊t到对象1和对象2上的采样点p1,p2的距离相等。然后定义一个向量v,它将t上的一个点t连接到p1,并且n是t的法向量。那么d是v的长度,α是n和v之间的角度。当前脊的权重t,即p1和p2之间的相似度,通过脊上的权重w(t)的表面积来计算如公式1和公式2所示。

wt=∫w(t)ds(1)

w(t)=wdistance(t)n×wangle(t)(2)

wangle和wdistance定义如公式(3)和公式(4)所示。

其中d=ddiag/2,ddiag是整个场景的边界框的对角线的长度。d是d的上界。由于wangle和wdistance在不同的范围,n用于调整两部分之间的影响。在实验中通常设置为55。

距离和方向定义t(从ibs)到点p1,p2(来自对象)之间的相对位置。这两个函数是相互独立的,当ibs上的点t有很大wdistance时可能有很大或者很小的wangle,反之亦然。本发明就通过公式(1)用离散法来估计脊t的表面积分,如公式5所示。

其中,t'是脊t上s上的随机点。当max(δs)足够小时,w't是wt的良好近似值。然后模型i和物体j之间的权重通过属于ibs(i,j)的脊的权重之和来计算如公式(6)所示。

其中ibs(i,j)是顶点i和顶点j之间的ibs。另外,并非所有对象都在它们之间产生ibs。如果ibs(i,j)不存在,则将w(i,j)设置为0。图3显示了一个简单场景权重计算示意图,也可视化的脊的权重。从图中可以看出,当两物体接触时,w(i,j)特别大。

通过计算所有顶点之间的相似度,建立所有顶点的相似度矩阵w。对于包含了大量重复单元的场景构建层次结构,首要任务就是寻找场景的基本单元。寻找场景的基本单元时,要根据场景的相似度矩阵w罗列场景所有重复组合的重复率,并且计算各个重复组合的覆盖率。找到覆盖率最大的组合即为场景基本单元的构成。如果重复组合的覆盖率相同,就判断覆盖率最高的几个重复组合的重复率,重复率最高的重复组合就是场景基本单元的构成。如图4的场景的基本单元的构成为‘椅子,椅子,课桌’。

寻找基本单元的工作就转化成了寻找场景中所有label为‘课桌’和‘椅子’的匹配问题了。并且由于最大的重复组合的条件下,每个‘课桌’对应的两个‘椅子’。于是就把寻找重复单元的问题就转化成了基于最小费用最大流的问题。先在网络中假设一个原点s和一个终点t,然后把组合里几种不同的label分为不同的类。同一组内不存在相互连接的边。跨组的情况下,根据求得的相似度矩阵w,如果两对象之间的相似度不为零,则两顶点之间的权值设为1。于是寻找重复单元的问题就转化成了如下图5所示流图在保证最小费用最大流的情况下,点与点之间的匹配问题。

为了寻找各个不同的重复单元,本发明把重复组合的所有label的元素按照label的不同分为几类,构造场景的流图。在构造流图时,仅仅存在跨越组的边,同label数据之间不存在相互关系。由于本发明是构造室内场景的层次构建,在普林斯顿的数据库中,一般每个重复单元仅仅存在两种类型的label,所以本发明面向的就是两种label的场景。将重复组合中出现次数少的label数据放在靠近源点一边,根据组合中,两种label出现次数的比率,分配权值,把出现次数多的label数据放在靠近汇点一侧,对应于汇点的权值都为1,与另外一边之间的边也为1。例如:图4例子中的‘课桌’放在u的位置,‘椅子’放在v点所在位置,每个‘课桌’对应的两个‘椅子’,最大流的示意如图6所示。

对于最小费用流来说,同最大流的算法,还是将所有的对象按照label分为两组,费用流中也仅仅存在夸类别的边,同一label内的对象之间不存在边。在网络中假设一个原点s和t,重复组内各种label对象同最大流矩阵的位置一样。原点s与汇点t到连接边之间的可能性完全相同。则源点s与汇点t与相连接点之间的边的权值都设置为1,构建层次结构时的理想情况就是将相似度更近的两类数据分为一个组合,即相似度越大的两点之间的费用越小,即满足反比的关系,在最小费用流中,让相似度大的两个点连接在一起。

根据上述问题,两点之间的费用值与相似度之间存在一个负相关的关系。则得到费用值矩阵w'如公式(7)所示。

w'=exp(-w)(7)

通过上式使得费用流与相似度之间呈负相关的关系且保证任意两点之间的费用值都在0~1之间,也方便后续的计算,越类别的边的值也就对应的是费用矩阵里边的值。对于图4的场景构建的费用流示意图如图7所示。

算法思想就是假设场景的可行流v0,由场景的有向图g中流值小于v0,且费用最小的可行流(比如零流)开始,通过沿费用最小的增广链增广得到另一个流值增加且费用最小的可行流,直至获得流值等于v0且费用最小的可行流,即最小费用流,如果在得到v0流之前,某个流的剩余网络中已经没有s到t的路,则表明g中不存在(最小费用)v0流。

因此,如果在最小费用流算法的过程中考虑最大流的问题,用最大流的思想,不存在s→t的路即流值为最大值。这样也不难想象在最小费用路算法中开始设定了一个流值(一般从零流开始),寻找最小费用路,然后流值开始增大,依次下去,那么网络中一定会不存在s→t的路,此时的流值也不再增大,即为最大值。在保证最大流的情况下,按照流图得到3d场景的基本单元。对于图4的场景按照最小费用最大流的算法,得到的流图8所示,即得到场景的基本单元如图9所示。

对于3d场景,需要构造剩余部分(除去重复单元的3d场景的剩余模型)的最小生成树。构建最小生成树时,初始最小生成树的边树为0,将所有顶点之间边的权值进行从小到大的排序;将图中的n个顶点看成n棵不同的树,按权值从小到大选择,所选的边连接的两个顶点应属于两颗不同的树,则成为最小生成树的一条边,并将这两颗树合并作为一颗树;重复上述过程直到所有顶点都在一颗树内就得到了场景的最小生成树。

根据上述步骤构成场景的最小生成树,e'为所有最小生成树的边。对于剩余场景的分割,关键点就在于设定一个阈值t,去掉生成树中大于t的边,就将剩余部分分成若干部分。

对于剩余场景来说,由于去掉了场景中的大多数元素,剩下的元素比较散乱,所以之间的边的值一般都比较集中,于是就根据将e'中所有的边从小到大排序,求取任何两个值之间的斜率,找到斜率的峰值,也就是边的值变化最大的位置,即为阈值t的位置,将大于阈值t的边都去掉,就将剩余部分的场景给分割开来,即得到分割的结果。从而按照分割的步骤构建场景的层次结构(如图10所示)。

本发明对于包含重复结构的场景来说,构建层次结构时应该先找到场景的重复单元。本发明在几何信息的基础上融合场景的label信息,通过重复率和覆盖率找到场景基本单元的构成,将寻找场景基本单元的问题转化为最小费用最大流的问题。找到场景中的基本单元后,对于除去重复单元的部分,由于剩余模型一般较少,且模型之间的相似度也较小,本发明就使用了基于最小生成树的分割算法对剩余部分进行分割。最终,包含重复结构部分的层次结构与剩余部分的层次结构共同构建了整个场景的层次结构。

以上内容仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明权利要求书的保护范围之内。

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