一种基于同构模型表示的三维模型生成方法与流程

文档序号:13513955阅读:488来源:国知局
一种基于同构模型表示的三维模型生成方法与流程

本发明属于计算机图形学技术领域,尤其涉及一种基于同构模型表示的三维模型生成方法。



背景技术:

三维建模是计算机图形学的重要任务,是满足其他后续研究和应用的基础。三维建模往往需要用户进行交互且耗费大量时间,而许多应用对三维模型的数量有一定的要求,因此,如何快速有效地构建出大规模的三维模型,是三维建模的一个重要研究方向。

事实上,三维建模方向已经产生了许多相关的技术和方法。传统的cad建模方法,需要建模者从底层的顶点和面片开始,进行大量的交互,如顶点坐标输入,面片移动等来完成建模过程。

由于传统方法交互负担重,因此出现了由现实物体重建出数字模型的方法。如文献1:baosy,savareses.semanticstructurefrommotion[c]//computervisionandpatternrecognition(cvpr),2011ieeeconferenceon.ieee,2011:2025-2032.他们利用视频序列,通过邻近的视频帧估计摄像机参数,从而重建出三维点云帧,再将多帧重建出的三维点云融合,得到重建出的三维模型。这种方法完全自动地生成三维模型,不需要交互,但只能构建现实中存在的真实物体,难以满足构建大规模三维模型数据的要求。

通过对已有的三维模型进行编辑,也可以构建新的三维模型。如文献2:sorkineo,alexam.as-rigid-as-possiblesurfacemodeling[c]//symposiumongeometryprocessing.2007,4.他们对已有的一个三维模型,定义表面形变点和固定点,在改变操作点位置的同时,保持固定点位置不变,再计算出模型所有顶点的位置,从而构建出新模型。这种方法需要较为简单的交互,通过对已有模型进行编辑,构建新的三维模型。虽然这种方法可以构建出与原模型不同的新模型,但构建出新模型的数量较少,且构建出的模型之间差异较小。

随着三维模型集合规模的增长,一些研究者提出了模型集驱动的模型生成方法。文献3:chaudhuris,kalogerakise,guibasl,etal.probabilisticreasoningforassembly-based3dmodeling[c]//acmtransactionsongraphics(tog).acm,2011,30(4):35.提出了一种使用部件装配来进行三维建模的方法。首先对模型集合进行分割和分析,得到部件集合和部件间的关系。之后,用户通过选择不同的部件,将部件组合起来,构建出新的三维模型。这种方法可以生成差异较大的模型,但建模过程中,用户交互十分频繁,构建一个模型需要花费大量时间,因此这种方法也难以生成大量的三维模型。总而言之,现有技术主要存在缺陷:第一,建模过程耗费时间长,难以构建一定数量的模型集;第二,建模结果差异性小,生成的结果模型集合较为单调;第三,需要较多的交互,用户负担重。



技术实现要素:

发明目的:本发明所要解决的技术问题是针对现有技术的不足,提供一种基于同构模型对模型集进行统一表示,通过简单交互,自动生成新的三维模型的方法,进行计算机三维建模。

为了解决上述技术问题,本发明公开了一种基于同构模型的三维模型生成方法,包括以下步骤:

步骤1,同构模型表示生成:通过分析给定的同类别三维模型集合内三维模型的结构关系,以及对单个三维模型进行形状拟合,将模型集合内所有三维模型进行同构的统一表示,得到单个三维模型的统一表示向量;

步骤2,模型表示编码:通过全连接神经网络,将每个三维模型的统一表示向量转换为低维编码,形成编码空间;

步骤3,构建可视空间:在计算出模型表示的低维编码的基础上,判断编码空间内每个数据点对应模型的有效性,并将编码空间的有效性分布情况进行可视化。

步骤4,交互生成三维模型:用户通过对步骤3中的可视化编码空间进行点击交互,选取编码空间内的数据实例,并根据选取的数据实例进行解码,生成出三维模型。

步骤1包括以下步骤:

步骤1-1,模型集合统一结构表示生成:模型集合的统一结构表示为无向图g={v,e},其中v为所有节点集合,每个节点代表每个部件类型,设模型集合所有模型共有n类部件,v={v1,v2…vn},其中vi表示第i类部件,i取值范围为1~n;e为所有边集合,每条边代表每两类部件间的关系,设模型集合共有m种部件邻接情况,则e={e1,e1…em},其中ej表示第j种邻接情况,j取值范围为1~m;

步骤1-2,单个三维模型结构表示生成:使用长度为n+m的向量l作为单个三维模型的结构表示,提取单个三维模型部件存在情况与邻接关系,表示为无向图g={v,e},根据无向图g={v,e},判断v的每个成员和e的每个成员是否属于g,v的第i个成员属于g,则令向量l的第i个分量li为1,否则li为0;e的第j个成员属于g,则令向量l的第j+n个分量lj+n为1,否则lj+n为0;

步骤1-3,单个模型形状拟合:对单个三维模型,考虑其包含的每个部件a,其形状拟合向量为geoa:

geoa=[boxa,gca],

其中,boxa为a的包围盒参数,gca为a的广义圆柱参数,包围盒参数boxa如下:

boxa=[ca,l1,l2,l3,d1,d2,d3],

其中ca为包围盒中心坐标,l1,l2,l2分别为包围盒长度从大到小的三个主轴的长度,d1,d2,d3为长度从大到小三个主轴的朝向向量;广义圆柱,指通过轴线和半径可自适应形变的变体圆柱来拟合任意形状的三维体,在广义圆柱的表面进行点采样,用所有采样点的坐标集合{p}作为广义圆柱参数。为了计算部件a的广义圆柱,首先提取部件的骨架线。骨架线指与原部件形状连通性和拓扑结构相一致的细曲线。提取骨架线后,在骨架线上均匀采样,得到骨架线采样点,然后,在每两个相邻骨架线采样点ske1,ske2之间,计算采样点ske2的法平面与所有三角面片的交点,法平面法向为:

其中,(sx1,sy1,sz1),(sx2,sy2,sz2)分别为ske1的三维坐标和ske2的三维坐标;

由法平面法向及采样点ske2坐标,求出法平面方程为:

(sx1-sx2)*(x-sx2)+(sy1-sy2)*(y-sy2)+(sz1-sz2)*(z-sy2)=0,

对于三角面片fi,计算其三条边的直线方程分别:

其中(x1,y1,z1),(x2,y2,z2),(x3,y3,z3)分别为三角面片fi的三个顶点空间三维坐标;

联合法平面方程与任意一条直线方程求解,设解为(x,y,z),假设使用第一个直线方程求解:

若方程无解,则该法平面与直线平行,表示该法平面在fi的第一条边上无交点;

若方程有解,判断:

(x-x1)*(x-x2)<0,

(y-y1)*(y-y2)<0,

(z-z1)*(z-z2)<0,

若三个式子都成立,则法平面与直线的交点的坐标(x,y,z)在fi的第一条边上,因此判定为有交点,否则(x,y,z)在fi的第一条边的范围外,判定为无交点;

计算所有判定为三角面片某条边的范围内的交点(x,y,z),为部件a的广义圆柱采样点,即:

gca={xi,yi,zi};

其中(xi,yi,zi)表示第i个判定为在某个三角面片一条边的范围内的交点坐标,gca为所有符合条件的交点坐标的集合。

步骤1-4,统一表示向量生成:由步骤1-2中和步骤1-3中的单个三维模型结构表示g和单个三维模型形状拟合,构建单个模型的统一表示向量l:将单个三维模型结构表示g加入向量l,根据步骤1-1中的无向图g={v,e},判断v的每个成员vi是否属于g,属于则将vi对应部件的形状拟合向量geoa加入向量l,否则将同长度的全0向量加入向量l,再计算单个三维模型的任意两个相邻部件a部件和b部件的连接点局部坐标cona,b:

cona,b=[cona,ba,cona,bb],

其中cona,b为a,b部件的连接点在各自局部坐标系下的坐标向量,cona,ba为连接点在部件a的局部坐标系下的坐标,cona,bb为连接点在部件b的局部坐标系下的坐标;

判断e的每个成员ej是否属于g,属于则将ej对应的连接点局部坐标cona,b表示加入统一表示向量l,否则将同长度的全0向量加入统一表示向量l;

步骤1-5,模型部件对称关系分析:对模型集合中任意两个部件a,b,根据形状拟合向量,判断对称性,计算形状拟合向量差异度d(a,b):

d(a,b)=‖ga-gb‖2/max(‖ga‖2,‖gb‖2),

其中ga和gb分别为部件a的形状拟合向量和部件b的形状拟合向量,若d(a,b)<20%,判断为对称,并使用矩阵s表示,若部件类型a与部件类型b对称,则矩阵s中对应a,b的元素s(a,b)=1,否则s(a,b)=0。

步骤1-4中,通过如下公式分别计算cona,ba和cona,bb

其中,ca,l1a,l2a,l3a,d1a,d2a,d3a为部件a的包围盒参数,cb,l1b,l2b,l3b,d1b,d2b,d3b为部件b的包围盒参数,c为部件a,b的连接点在全局坐标系下的坐标。通过步骤1-3的方法计算得到。

步骤2包括以下步骤:

步骤2-1,构建神经网络模型:构建一个深度为5的神经网络模型,包括输入层,隐藏层一,隐藏层二,隐藏层三,输出层,相邻两层之间采用全连接方式连接;设步骤1-4中得到的统一表示向量l长度为s,则输入层全连接神经元个数为s,隐藏层一全连接神经元个数为1.2*s,隐藏层二全连接神经元个数为0.5*s,隐藏层三全连接神经元个数为0.25*s,输出层全连接神经元个数为2,神经网络模型中每一层的偏移神经元个数为1;

步骤2-2,采用反向传播和随机梯度下降法训练神经网络模型:每一个隐藏层需要训练的参数为wi和bi,输入为向量x,输出为向量y=x*wi+bi;当进行反向传播时,输入为向量y,输出为向量训练过程中,每三层进行训练,损失函数定义为重构误差其中为根据输入向量x,通过反向计算出的重构向量。对每个隐藏层,分别使用随机梯度下降法,最小化得到参数wi和bi;

步骤2-3,使用步骤2-2训练的神经网络模型,对表示向量进行编码,编码结果为二维向量,设表示向量为l,则通过三层隐藏层编码为l=((l*w1+b1)*w2+b2)*w3+b3。其中w1,w2,w3分别为第一、第二、第三隐藏层的权重系数,b1,b2,b3分别为第一、第二、第三隐藏层的偏移量。l为最终输出的二维编码。

步骤3包括以下步骤:

步骤3-1:取步骤2-3中的输出二维编码范围,乘以一个缩放系数,系数一般设置为1.2到1.5,得到二维数值空间。对二维数值空间内进行均匀采样,采样数据为l′;

步骤3-2:使用步骤3中训练出的神经网络模型进行解码,对采样数据进行解码,则解码结果为x′=((l′-b3)*w3t-b2)*w2t-b1)*w1t

步骤3-3:根据步骤3-2的解码结果,重建出网格模型:根据解码结果x′得到每个部件的形状拟合向量geo是否为全0以及每两个部件的连接点坐标con是否为全0,得到模型的部件存在情况和连接情况,根据存在的每个部件的形状拟合向量,重建出每个部件的网格,将各个部件网格合并,得到重建模型;

步骤3-4:判断步骤3-3重建模型的有效性:有效性标准分为两部分:连接性标准与对称性标准,若重建模型中任意某两类部件在步骤1-1中存在连接情况,而在重建模型中并未连接,判断为连接性失效;若重建模型中任意某两类部件在步骤1-5中存在对称性,而在重建模型中并不对称,判断为对称性失效,任一种标准失效,则重建模型的采样数据不具备有效性,否则重建模型的采样数据具备有效性;

步骤3-5:构建可视空间:为了将采样数据的有效性进行可视化,构建可视空间。首先构建一个二维的可视平面,平面上所有像素点置为白色。然后,在步骤3-4中判断具有有效性的二维数据点,其坐标在二维平面上对应的的像素点颜色设置为浅色;不具备有效性的采样数据,其坐标在二维平面上对应的的像素点颜色设置为深色。

步骤4包括以下步骤:

步骤4-1,当用户对可视空间进行点击操作时,获取用户点击坐标对应的二维数据;

步骤4-2,将步骤4-1获取的二维数据输入自编码器进行解码,得到模型表示向量;

步骤4-3,由步骤4-2得到的模型表示向量,重建出网格模型。

本发明基于已有模型集合,对模型集的部件构成、连接关系和部件形状进行分析,在构建了所有模型的统一表示后,利用神经网络,对表示进行编码,并对编码空间进行采用,判断采用数据的有效性。在有效性判断的基础上,对编码空间进行有效性分布的可视化,并根据用户对可视化空间的点击交互,对相应的二维数据进行解码和模型重建,生成新的三维模型。

有益效果:本发明具有以下优点:首先,本发明可以在仅需用户进行简单的鼠标点击操作,就完成三维建模过程。其次,本发明能够自动的保证建模结果的有效性。通过本发明的技术,可以实现对模型集合的可视化,并且允许用户通过简单的点击操作合成新的模型。

附图说明

下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述或其他方面的优点将会变得更加清楚。

图1是本发明的处理流程示意图。

图2是同构模型表示的示意图。

图3a是单个模型的渲染图。

图3b是单个模型的形状拟合示意图。

图4是同构表示映射到二维的示意图。

图5a是有效性检测后的有效空间示意图。

图5b是根据用户交互生成的新模型。

具体实施方式

下面结合附图及实施例对本发明做进一步说明。

如图1所示,本发明公开的是一种基于同构模型表示的三维模型生成方法,具体包括以下步骤:

步骤一:同构模型表示构建:通过分析模型集合内模型的结构关系,以及形状拟合,将具有结构差异和形状差异的三维模型,进行统一的同构结构表示。

步骤二,表示编码:在模型统一表示的基础上,通过全连接神经网络,将高维度的模型表示数据转换为低维编码。

步骤三,可视空间构建:在计算出模型表示的低维编码的基础上,判断编码空间内每个数据点对应模型的有效性,并将编码空间的有效性分布情况进行可视化。

步骤四,交互生成三维模型:用户通过对步骤三中的可视化编码空间进行点击交互,选取编码空间内的数据实例,并根据选取的数据实例进行解码,生成出三维模型。

下面具体介绍各个步骤的主要流程:

其中,步骤一包括以下步骤:步骤11,模型集统一结构表示生成:根据模型集合内所有模型的部件构成信息和部件对应信息,提取模型集的统一结构表示。模型集的统一结构表示为无向图g={v,e},v为所有节点集合,设模型集所有模型共有n类部件,v={v1,v2…vn}(vi表示第i类部件)。e为所有边集合,设模型集共有m种两类不同部件邻接情况,则e={e1,e1…em}(ej表示第j种邻接情况)。

步骤12,单个三维模型结构表示生成:提取单个模型部件存在情况与邻接关系,表示为无向图g={v,e}。然后对步骤11中提取的无向图g={v,e},判断v的每个成员和e的每个成员是否属于g。使用长度为n+m的向量l作为单个三维模型结构表示,v的第i个成员属于g,则li为1,否则li为0。若e的第j个成员属于g,则lj+n为1,否则lj+n为0。

步骤13,单个三维模型形状拟合:对每个单个三维模型,计算每个部件的包围盒与广义圆柱。

每个部件的包围盒使用包围盒中心c,包围盒三个主轴长l1,l2,l3和包围盒三个主轴向d1,d2,d3表示。本申请使用文献4:tagliasacchia,alhashimi,olsonm,etal.meancurvatureskeletons[c]//computergraphicsforum.blackwellpublishingltd,2012,31(5):1735-1744.的方法提取骨架线,对骨架线上的点进行采样,再计算每个采样点的切片。广义圆柱使用广义圆柱的表面切片点集合{p}表示。相邻两个部件的连接点使用连接点在各自局部坐标系下的坐标x1,y1,z1和x2,y2,z2表示。

步骤14,统一表示向量生成:由步骤12中和步骤13中的单个三维模型结构表示g和单个三维模型形状拟合,可以构建单个三维模型的统一表示向量l。首先将单个三维模型统一结构表示g加入向量l。根据步骤11中的无向图g={v,e},判断v的每个成员vi是否属于g,属于则将vi对应部件的形状拟合加入向量l,否则将同长度的全0向量加入向量l。判断e的每个成员ej是否属于g,属于则将ej对应的连接点表示加入向量l,否则将同长度的全0向量加入向量l。

步骤15,模型部件对称关系分析:对模型集中任意两类部件,根据形状拟合向量,判断对称性,若形状拟合向量差异度不超过20%,判断为对称,并使用矩阵s表示。若部件类型a与部件类型b对称,则s(a,b)=1,否则s(a,b)=1。

步骤二包括以下步骤:步骤21,构建神经网络模型。构建一个深度为5的神经网络模型。网络相邻两层之间采用全连接方式连接。设步骤14中向量l长度为s,则输入层全连接神经元个数为s,隐藏层一全连接神经元个数为1.2*s,隐藏层二全连接神经元个数为0.5*s,隐藏层三全连接神经元个数为0.25*s,输出层全连接神经元个数为2。每一层的偏移神经元个数为1。

步骤22,采用反向传播和随机梯度下降法训练神经网络模型。本申请使用文献5:hintonge,salakhutdinovrr.reducingthedimensionalityofdatawithneuralnetworks[j].science,2006,313(5786):504-507.的方法训练网络。每一个隐藏层需要训练的参数为wi和bi,输入为向量x,输出为向量y=x*wi+bi。当进行反向传播时,输入为向量y,输出为向量训练过程中,每三层进行训练,损失函数定义为重构误差对每个隐藏层,分别使用随机梯度下降法,最小化得到参数wi和bi。

步骤23,使用训练好的神经网络,对表示向量进行编码,编码结果为二维向量。设表示向量为x,则最终编码为l=((x*w1+b1)*w2+b2)*w3+b3。

步骤三中包括以下步骤:步骤31:对数据进行采样。对二维数值空间内进行均匀采样。

步骤32:对采样数据进行解码。使用步骤三中训练出的自编码器进行解码,设采样数据为l′,则解码结果为x′=((l′-b3)*w3t-b2)*w2t-b1)*w1t

步骤33:模型重建。由步骤32解码结果,得到的模型表示向量,重建出网格模型。重建过程,根据表示构成,得到模型的部件存在情况和连接情况。然后,根据单部件的形状拟合,重建出每个部件的网格。将各个部件网格合并,得到重建模型。

步骤34:重建模型有效性判断。判断步骤33重建模型的有效性。本申请使用文献6:averkioum,kimvg,zhengy,etal.shapesynth:parameterizingmodelcollectionsforcoupledshapeexplorationandsynthesis[c]//computergraphicsforum.2014,33(2):125-134.提出的有效性标准。标准分为两部分:连接性标准与对称性标准。若重建模型中两类部件在步骤11中存在连接情况,而在重建模型中并未连接,判断为连接性失效。若重建模型中两类部件在步骤15中存在对称性,而在重建模型中并不对称,判断为对称性失效。任一种标准失效,则重建模型不具备有效性,否则重建模型具备有效性。

步骤35:有效性分布情况可视化。根据步骤34中得到的所有采样数据的有效性,对二维数组空间进行有效性分布的可视化。将具备有效性的采样数据,对应的可视空间上的像素点颜色设置为浅色,将不具备有效性的采样数据,对应的可视空间上的像素的颜色设置为深色。

步骤四包括以下步骤:步骤41,根据用户对可视空间的点击操作,获取对应的二维数据。

步骤42:将步骤41获取的二维数据输入自编码器进行解码,得到模型表示向量。

步骤43:由步骤42得到的模型表示向量,重建出网格模型。

实施例

本实施例中,使用13个椅子三维模型作为系统输入模型库,对13个椅子进行统一的同构表示,并计算出各自的表示向量,将表示向量通过三层全连接神经网络进行二维编码,并在二维编码空间采样,检测有效性,将有效空间进行可视化后渲染出来,根据用户的点击操作,生成新的模型。

具体实施过程如下:

步骤一中,由用户导入模型集,之后执行步骤11中的统一结构图生成。首先提取每个模型的结构图,如图2中从左往右第二栏所示。之后,再进行统一结构图提取,提取的统一结构图示意在图2中从左往右第三栏。提取统一结构图后,对每个模型的结构进行同构化,每个模型的同构结构图示意为图2中从左往右第四栏。然后执行步骤执行步骤13中的单个三维模型形状拟合,使用包围盒和广义圆柱对每个模型进行拟合。单个模型及形状拟合结果如图3a和图3b所示。

步骤二中,对步骤一得到的模型表示向量,训练全连接的神经网络,并将每个模型的表示向量通过神经网络映射,得到二维编码结果,图4为13个椅子模型的二维编码向量,在空间中的分布示意图。

步骤三中,根据步骤二所有二维编码结果{x,y},分别求出x坐标和y坐标的最大值和最小值,设为xmax,xmin,ymax,ymin。则设定二维编码空间范围为{x,y|1.2*xmin-xmax<x<1.2*xmax-xmin,1.2*ymin-ymax<y<1.2*ymax-ymin}。将二维编码空间映射到屏幕上分辨率为500*500的区域,对区域中每一个像素点,分别求其对应的二维编码,作为均匀采样数据。将所有均匀采样点通过训练的神经网络,解码得到模型表示向量,并根据模型表示向量,重建出模型,判断重建模型的有效性。有效性标准分为连接有效性和对称有效性。若满足有效性标准,则对应像素点置为深色,否则对应像素点置为浅色,将所有像素点进行可视化。图5a是有效空间的渲染图,深色区域为有效区域,浅色区域为无效区域。

步骤四中,用户点击可视化空间内的任意一点,图5a中的白色点为用户点击点。根据用户点击位置,求出对应的二维编码,并通过神经网络,解码出模型表示向量。根据模型表示向量,重建出模型,并显示出来。重建模型结果如图5b所示。

本发明提供了一种基于同构模型表示的三维模型生成方法,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部分均可用现有技术加以实现。

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