[0001]
本发明涉及高精度工业测量领域,尤其涉及一种网格孔洞修补方法。
背景技术:[0002]
随着光学三维技术的快速发展,基于三维扫描技术来获取空间中物体的三维模型已经成为几何建模最主要的技术手段,其在众多领域得到了广泛的应用。但是,由于受到扫描设备硬件与算法自身的限制,三维扫描获得的点云数据重建出的网格模型中经常会存在退化三角形、孔洞等缺陷,这将导致网格模型质量差,不美观。因此,快速检测和高精度修补三角网格模型中的复杂孔洞成为三维扫描几何建模研究方向的一个具有挑战性的技术问题。
[0003]
现有的三角网格模型孔洞修补算法对平面孔洞或周围网格曲率小的孔洞有较好补洞效果,对于周围网格曲率较大的孔洞处理效果尚不理想。如比较有代表性的波前法,其在针对一些复杂孔洞时会经常出现自相交的问题;并且在处理大型孔洞时存在效率偏低的问题。因此开发一种保特征、高效率的网格孔洞修复算法对于三维光学建模有着至关重要的作用。
[0004]
以上背景技术内容的公开仅用于辅助理解本发明的构思及技术方案,其并不必然属于本专利申请的现有技术,在没有明确的证据表明上述内容在本专利申请的申请日已经公开的情况下,上述背景技术不应当用于评价本申请的新颖性和创造性。
技术实现要素:[0005]
针对现有技术中孔洞修复特征保持效果差、处理大型孔洞计算效率低的缺点,本发明提出一种保特征、高效率的网格孔洞修补方法。
[0006]
为了达到上述目的,本发明采用以下技术方案:
[0007]
本发明公开了一种网格孔洞修补方法,包括以下步骤:
[0008]
s1:提取输入的原始网格数据的网格上的所有孔洞;
[0009]
s4:将所述孔洞的边界点按照delaunay四面体优化法建立四面体网格;
[0010]
s5:采用四面体网格的面片子集对所述孔洞进行填充,得到填充后的孔洞;
[0011]
s6:在所述填充后的孔洞上新增空间点以进行网格细分;
[0012]
s7:根据网格细分时的每个新增空间点分别建立局部多阶拉普拉斯算子,让每一个局部多阶拉普拉斯算子等于0以获得多阶的拉普拉斯矩阵,通过求解拉普拉斯矩阵求得每个所述新增空间点变形后的三维坐标,获得网格孔洞修补的结果。
[0013]
优选地,所述的网格孔洞修补方法还包括以下步骤:s2:根据每个所述孔洞的边界点数n将所有孔洞分为大型孔洞和小型孔洞,当n≤10时判定为小型孔洞,当n>10时则判定为大型孔洞;其中针对所述大型孔洞,执行步骤s4~s7以对所述孔洞进行修补。
[0014]
优选地,步骤s2还包括,针对所述小型孔洞,执行步骤s3以对所述孔洞进行修补;步骤s3包括:求出所述孔洞的所有边界点的质心点,将质心点与所有边界点依次相连,每相
邻两个所述边界点分别与所述质心点相连以得到一个新增面片,将所有边界点都连接完成,得到网格孔洞修补的结果。
[0015]
优选地,步骤s1具体包括:读取输入的原始网格数据,使用半边数据结构来表示所述原始网格数据的三角网格,以提取所述原始网格数据的三角网格上的所有孔洞。
[0016]
优选地,步骤s4具体包括:逐一遍历所述孔洞的所有边界点,不在同一平面上的四个边界点可以构建成一个四面体,通过判断新遍历的边界点与已构建好的四面体的位置关系,将该边界点与已构建好的四面体的顶点相连以构建成新的四面体,当遍历完所有边界点时,建立得到所述四面体网格。
[0017]
优选地,步骤s5具体包括:依据使得所有填充面的面积加和最小的原则,采用四面体网格的面片子集对所述孔洞进行填充。
[0018]
优选地,依据使得所有填充面的面积加和最小的原则,采用四面体网格的面片子集对所述孔洞进行填充具体包括:采用w(d)表示所述孔洞的区域面积加和,从所述孔洞的任意一条边界开始,令该边界与另一边界点组成三角面片t,则该三角面片t将所述孔洞的区域分为d1和d2两个子区与三角面片t自身,w(d)表示为:其中w(d1)表示子区d1的面积,w(d2)表示子区d2的面积,w(t)表示三角面片t的面积;从所述孔洞的任意一条边界递归下去,按照w(d)最小的优化准则,将所述孔洞的所有区域填充完毕。
[0019]
优选地,步骤s6具体包括:统计所述孔洞的所有边界边的平均边长遍历新增的每一个三角面片,计算三角面片的三条边长的均值如果则将该三角面片的质心与该三角面片的三个顶点分别相连以将一个三角形分解为三个三角形。
[0020]
优选地,步骤s6中在将对应的三角面片进行细分后还包括:判断相邻的两个三角形是否满足delaunay三角剖分准则,如果不满足,则进行边交换操作,直到所有三角面片均满足条件,停止分割,获得网格细分后的结果。
[0021]
优选地,网格细分的新增空间点是指将三角面片进行细分时新增的三角面片的质心。
[0022]
本发明还公开了一种电子设备,包括处理器和存储器,所述存储器存储有能够被所述处理器执行的计算机可执行指令,所述处理器执行所述计算机可执行指令以实现上述的网格孔洞修补方法的步骤。
[0023]
本发明另外还公开了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令在被处理器调用和执行时,所述计算机可执行指令促使处理器实现上述的网格孔洞修补方法的步骤。
[0024]
与现有技术相比,本发明的有益效果在于:本发明提出的网格孔洞修补方法,通过在网格补洞时,先将提取出的孔洞边界点进行delaunay四面体化,使用四面体的面片子集填充原始孔洞,提升了孔洞粗补的效率;在获得初始的填充面片后,利用网格细分技术获得与边界边长相似的三角面片,再对利用新增空间点通过求解拉普拉斯算子等于0来获得其变形后的空间三维坐标,最大限度地保证了修补后可以恢复网格原始特征,从而克服了现有技术中存在的孔洞修复特征保持效果差、处理大型孔洞计算效率低等缺陷。
附图说明
[0025]
图1是本发明实施例一的网格孔洞修补的流程图;
[0026]
图2是本发明实施例二的网格孔洞修补的流程图;
[0027]
图3是半边数据结构示意图;
[0028]
图4是质心法填充孔洞示意图;
[0029]
图5是四面体数据结构示意图;
[0030]
图6a是孔洞粗补步骤中的一个孔洞区域的示意图;
[0031]
图6b是孔洞粗补步骤中孔洞区域分为多个区域的示意图;
[0032]
图7a是网格细分的操作示意图;
[0033]
图7b是边交换的操作示意图;
[0034]
图8a是进行孔洞修补前的木雕网格孔洞模型示意图;
[0035]
图8b是进行了孔洞粗补后的木雕网格孔洞模型示意图;
[0036]
图8c是进行了网格细分后的木雕网格孔洞模型示意图;
[0037]
图8d是进行了拉普拉斯变形后的木雕网格孔洞模型示意图。
具体实施方式
[0038]
下面对照附图并结合优选的实施方式对本发明作进一步说明。
[0039]
如图1所示,本发明实施例一公开了一种网格孔洞修补方法,包括以下步骤:
[0040]
s1:提取输入的原始网格数据的网格上的所有孔洞;
[0041]
s4:将所述孔洞的边界点按照delaunay四面体优化法建立四面体网格;
[0042]
s5:采用四面体网格的面片子集对所述孔洞进行填充,得到填充后的孔洞;
[0043]
s6:在所述填充后的孔洞上新增空间点以进行网格细分;
[0044]
s7:根据网格细分时的每个新增空间点分别建立局部多阶拉普拉斯算子,让每一个局部多阶拉普拉斯算子等于0以获得多阶的拉普拉斯矩阵,通过求解拉普拉斯矩阵求得每个所述新增空间点变形后的三维坐标,获得网格孔洞修补的结果。
[0045]
如图2所示,本发明实施例二公开了一种基于delaunay四面体优化加速的网格孔洞修补方法,包括以下步骤:
[0046]
s1:输入原始网格数据,建立半边拓扑关系,查找所有孔洞边界。
[0047]
读取原始网格数据,使用半边数据结构如图3所示,来表示输入的原始网格数据的三角网格,所有孔洞均可由连续的封闭的半边来表示,利用半边数据结构特性,提取出网格上的所有孔洞,将所有孔洞边界信息存储到计算机存储容器中。
[0048]
s2:按孔洞边界点数将孔洞分为大型孔洞与小型孔洞。
[0049]
遍历存储容器中的每一个孔洞,根据每个孔洞的边界点数n,将孔洞分为大型孔洞和小型孔洞,当n≤10时认定为小型孔洞,当n>10时则认定为大型孔洞。针对小型孔洞,执行步骤s3以对孔洞进行修补,针对大型孔洞,执行步骤s4~s7以对孔洞进行修补。
[0050]
s3:使用质心法,连接边界点质心与所有边界点,组成新的三角面片。
[0051]
将所有小型孔洞采用质心法进行修补,如图4所示。首先求出所有边界点的质心o,然后将质心点与所有边界点顺次相连,相邻两个顶点分别与质心点相连便可得到一个新增面片,所有边界点均连接完毕,便可得到网格孔洞修补的结果,实现快速修补上小型孔洞。
[0052]
s4:建立四面体网格:将边界点建立delaunay四面体结构。
[0053]
通过大型孔洞的所有边界点按照delaunay四面体优化法建立四面体网格,如图5所示,每四个不在同一平面上的边界点(例如边界点a、b、c、d)可以组成一个四面体,将所有边界点逐点加入到计算机存储容器,判断新增的边界点与已有的四面体的位置关系,将新增的边界点与已有四面体顶点相连组成新的四面体,直到所有边界点添加完毕,获得最终的空间四面体结构。
[0054]
s5:孔洞粗补:选取四面体面片子集填充孔洞。
[0055]
对于一个孔洞区域d如图6a所示,使用四面体的面片子集对该孔洞区域进行填充,本实施例中采取的优化目标为所有填充面的面积加和最小,以保证填充区域尽量不会出现自相交等问题。
[0056]
使用w(d)表示整个孔洞区域加和,从一条边界边开始,假设其与另一顶点组成三角面片t,则该面片将整个孔洞区域分为d1和d2两个子区与t面片自身,如图6b所示。w(d)可表示为:
[0057][0058]
从一条边界边递归下去,便可按照总面积最小的优化准则,将孔洞的所有区域填充完毕。
[0059]
s6:网格细分:对新增面片进行细分,使新增面片大小与边界面片大小相似。
[0060]
新增的三角面片需要进行细分操作,保证其面片大小与边界面片大小相似。首先统计所有边界边的平均边长遍历新增的每一个面片,如果三角面片的三条边长均值则将三角形细分如图7a所示,将面片的质心与三个顶点相连,将一个三角形分解为三个三角形;而如果三角面片的三条边长均值为三个三角形;而如果三角面片的三条边长均值则不进行任何操作。当相邻两个三角形不满足delaunay三角剖分准则,则对其进行边交换操作,如图7b所示直到所有三角面片均满足条件,停止分割,获得网格细分后的结果;而如果相邻的两个三角形满足delaunay三角剖分准则,则不进行任何操作。
[0061]
s7:拉普拉斯变形:利用拉普拉斯变形恢复新增点的曲率,获得最终曲率恢复的结果。
[0062]
将所有新增空间点(细分时增加的面片质心点)存储到计算机存储容器,遍历所有新增空间点,并寻找新增空间点的二环邻域点(指以某一新增空间点为中心找到其周围两圈点),利用递归的方式建立局部二阶拉普拉斯算子l2(v),其中v即表示新增空间点,使得l2(v)=鲀以保证局部区域的平滑与曲率连续。
[0063]
将m个新增空间点所列的m个二阶拉普拉斯算子等式联立起来,可以获得一个m*m的拉普拉斯矩阵,通过求解拉普拉斯矩阵,可以解得每个新增空间点变形后的三维坐标,获得最终曲率恢复后的补洞结果。
[0064]
在本实施例中根据每个新增空间点建立的是局部二阶拉普拉斯算子,在其他实施例中,也可以建立局部多阶拉普拉斯算子,例如局部三阶拉普拉斯算子、局部四阶拉普拉斯算子等等。
[0065]
s8:通过步骤s3和步骤s7分别对小型孔洞和大型孔洞进行修补,可以输出完整网格。
[0066]
本发明上述实施例提出的基于delaunay四面体优化加速的网格孔洞修补方法,通过在网格补洞时,先将提取出的孔洞边界点进行delaunay四面体化,使用四面体的面片子集填充原始孔洞,提升了孔洞粗补的效率;在获得初始的填充面片后,利用网格细分技术获得与边界边长相似的三角面片,再对利用新增空间点通过求解拉普拉斯算子等于0来获得其变形后的空间三维坐标,最大限度地保证了修补后可以恢复网格原始特征,从而克服了现有技术中存在的孔洞修复特征保持效果差、处理大型孔洞计算效率低等缺陷。
[0067]
下述采用本发明实施例二的基于delaunay四面体优化加速的网格孔洞修补方法对图8a所示的木雕网格孔洞模型进行孔洞修补,经过孔洞粗补处理后的网格模型如图8b所示,经过孔洞网格细分处理后的网格模型如图8c所示,经过孔洞拉普拉斯变形后的网格模型如图8d所示,从图8d可以看出,本发明实施例的网格孔洞修补方法在对孔洞修补时,复杂的孔洞经过孔洞粗补、网格细分、拉普拉斯变形三步操作之后,其很好的恢复了孔洞区域的形貌特征,并保证了孔洞边界区域的曲率连续。
[0068]
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的技术人员来说,在不脱离本发明构思的前提下,还可以做出若干等同替代或明显变型,而且性能或用途相同,都应当视为属于本发明的保护范围。