一种用于义齿数字化修复的网格模型区域划分方法与流程

文档序号:13686579阅读:230来源:国知局
一种用于义齿数字化修复的网格模型区域划分方法与流程

本发明涉及义齿数字化技术领域,尤其涉及一种用于义齿数字化修复的网格模型区域划分方法。



背景技术:

在义齿修复系统中,常常需要对牙齿模型进行编辑,例如对一部分区域进行变形,或者删除一部分区域等。要实现对模型上一块区域的编辑,首先就需要求出区域。区域的获取是以交线为界,对模型表面进行划分而来:根据一条交线可以将模型划分为两个区域,当模型上存在n条交线时,模型则会被划分成n+1个区域。根据交线划分模型区域要求划分之后的每一个区域自成一体,不会包含另一个区域,也不会被另一个区域所包含。在实际的算法操作如义齿桥模型融合过程中,牙齿模型和连接体模型彼此相交,为了能够准确进行缝合,就需要沿着模型的相交线删除模型上被另一个包含的区域,这也涉及到模型区域的划分。

现有技术中的方法中区域划分还涉及到了相交实体模型的嵌套拓扑关系的建立,依照这个拓扑关系来处理情况相交三角形的区域划分,而实际上很多情况下已知的是模型上的交线,而实体模型的相交关系并不清楚,实体模型的嵌套拓扑关系无法建立,这也就变相限制了算法的应用范围。还有一种方法,但是它只能适用于模型上存在一条交线的情况,以交线为界将模型一分为二;当存在多条交线时划分达不到预期效果。



技术实现要素:

为了解决上述技术问题,本发明的目的是提供一种能多区域划分,且快速准确的一种用于义齿数字化修复的网格模型区域划分方法。

本发明所采取的技术方案是:

一种用于义齿数字化修复的网格模型区域划分方法,包括以下步骤:

a、根据预设的正方向,对牙齿模型中所有交线的方向进行调整处理;

b、计算每条交线的包围区域;

c、对各包围区域进行运算处理,得出划分区域并输出。

作为所述的一种用于义齿数字化修复的网格模型区域划分方法的进一步改进,所述步骤a包括:

a1、将当前处理的交线上的点存储于对应的交线数组中,并计算该交线的顶点数量;

a2、从交线数组中获取三个离散点;

a3、计算获取的三个离散点所构成的平面的中垂线的方向向量,得到中垂线方向向量;

a4、计算牙齿模型的中心点坐标和当前交线上点集的中心点坐标,并计算从牙齿模型的中心点到交线的中心点的方向向量;

a5、计算中垂线方向向量和中心点方向向量之间夹角的余弦值;

a6、判断计算得到的余弦值是否大于0,若是,则不需进行调整;反之,则将交线数组中的元素重新反向排列并存储;

a7、对下一条未调整的交线进行调整处理,直到所有交线处理完毕。

作为所述的一种用于义齿数字化修复的网格模型区域划分方法的进一步改进,所述步骤b包括:

b1、取当前处理的交线对应的交线数组的前两个元素构成第一条半边,查找出该半边所对的三角面片face_s,创建一个种子面片数组in_faces,并将三角面片face_s添加到种子面片数组in_faces中;

b2、对当前处理的交线进行反向,即将其对应的交线数组中的元素的顺序从后向前重新排列;

b3、对反向处理后的交线中的每相邻两个点构成一条半边,根据每条半边查找一个三角面片,并将所查找到的三角面片全部添加到数组out_faces中,得到交线外的一圈三角面片;

b4、以种子面片数组in_faces中的逐个三角面片开启查找包围区域,根据当前三角面片的三条半边查找到它的三个邻域三角面片,依次判断得到的三个邻域三角面片是否存在于数组out_faces中,若存在,则说明该邻域三角面片位于交线的外面,不满足要求;若不存在,说明该邻域三角面片位于交线的包围区域之内,若其不在种子面片数组in_faces中,则将其添加到种子面片数组in_faces中;然后对种子面片数组中的下一个三角面片进行查找处理,直到种子面片数组in_faces中所有的种子面片都参与查找,则输出种子面片数组in_faces中的三角面片,得到当前交线对应的包围区域;

b5、对下一条未处理的交线进行计算处理,直到所有交线处理完毕,得到每条交线的包围区域。

作为所述的一种用于义齿数字化修复的网格模型区域划分方法的进一步改进,所述步骤c包括:

c1、根据得到每一条交线的包围区域,计算包围区域的总数量n,并将所有的包围区域都存储在数组regions中;

c2、定义辅助操作区域reg,并初始化为数组regions的第一个元素,即reg=regions[0],同时将regions[0]标记为已访问,并存储到数组regions_ed中;

c3、定义当前操作区域的id号为i,分别判断辅助操作区域reg与数组regions中当前包围区域regions[i]的包含关系;

c4、根据辅助操作区域reg与当前包围区域regions[i]的包含关系,对当前包围区域regions[i]进行处理;

c5、当前操作区域的id号i进行自加1,并返回执行执行步骤c3,直到数组regions中所有的包围区域均处理完毕;

c6、对辅助操作区域reg进行区域求反,并添加到已访问数组regions_ed中;

c7、输出已访问数组regions_ed中所有的区域,即得到划分好的区域。

作为所述的一种用于义齿数字化修复的网格模型区域划分方法的进一步改进,所述步骤c4包括:

若辅助操作区域reg被当前包围区域regions[i]包含,则对regions[i]进行区域求反,即求牙齿模型上除了区域regions[i]剩下的全部区域;将求反后的区域合并到区域reg中,然后再次返回判断合并后的reg与regions[i]的包含关系;

若辅助操作区域reg包含当前包围区域regions[i],在已访问数组regions_ed中查找包含当前包围区域regions[i]的区域,记为regions_ed[j],再计算regions_ed[j]与regions[i]的差值,将得到的差值存入regions_ed[j];

若辅助操作区域reg与当前包围区域regions[i]是相离关系,则将当前访问区域regions[i]添加到已访问数组regions_ed,并将regions[i]合并到区域reg中。

作为所述的一种用于义齿数字化修复的网格模型区域划分方法的进一步改进,所述步骤c3包括:

c31、计算辅助操作区域reg中包含的点的数量c1,及当前包围区域regions[i]中包含的点的数量c2;

c32、将辅助操作区域reg和当前包围区域regions[i]中所包含的点全部合并在一起,去除重复部分,得到其数量为c;

c33、判断c1、c2和c的数量关系,即可得到辅助操作区域reg和当前包围区域regions[i]之间的包含关系。

作为所述的一种用于义齿数字化修复的网格模型区域划分方法的进一步改进,所述步骤c33具体包括:

若c=c1=c2,则辅助操作区域reg和当前包围区域regions[i]相同;

若c=c1,则辅助操作区域reg包含当前包围区域regions[i];

若c=c2,则辅助操作区域reg被当前包围区域regions[i]包含;

若c<c1+c2,则辅助操作区域reg与当前包围区域regions[i]相交;

若c=c1+c2,则辅助操作区域reg与当前包围区域regions[i]相离。

本发明的有益效果是:

本发明一种用于义齿数字化修复的网格模型区域划分方法通过对于每一条交线,通过交线上的三个离散点求出中垂线方向,再结合模型中心到交线中心构成的方向向量,对每一条交线的方向进行调整,然后根据交线内的一种子面片发散查找出交线的包围区域,最后通过对交线的包围区域进行运算操作来进行处理,得到独立的区域。本发明有效解决了模型多区域的划分问题,在模型表面存在多条交线时依然能够快速准确地将模型划分成一个个彼此相互独立的区域,而且无需理会模型实体的嵌套关系这个条件,只要确定一个模型的交线就能划分区域,大大提高适用范围,摆脱了只能根据一条交线来划分区域的限制。

附图说明

下面结合附图对本发明的具体实施方式作进一步说明:

图1是本发明一种用于义齿数字化修复的网格模型区域划分方法的步骤流程图;

图2是本发明一种用于义齿数字化修复的网格模型区域划分方法中交线调整的步骤流程图;

图3是本发明一种用于义齿数字化修复的网格模型区域划分方法中区域计算的步骤流程图;

图4是本发明一种用于义齿数字化修复的网格模型区域划分方法中区域划分的步骤流程图;

图5是本发明实施例的三角网格模型的示意图;

图6是本发明实施例的划分区域后的示意图。

具体实施方式

参考图1,本发明一种用于义齿数字化修复的网格模型区域划分方法,包括以下步骤:

a、根据预设的正方向,对牙齿模型中所有交线的方向进行调整处理;

b、计算每条交线的包围区域;

c、对各包围区域进行运算处理,得出划分区域并输出。

参考图2,进一步作为优选的实施方式,所述步骤a包括:

a1、将当前处理的交线上的点存储于对应的交线数组中,并计算该交线的顶点数量;

a2、从交线数组中获取三个离散点;

a3、计算获取的三个离散点所构成的平面的中垂线的方向向量,得到中垂线方向向量;

a4、计算牙齿模型的中心点坐标和当前交线上点集的中心点坐标,并计算从牙齿模型的中心点到交线的中心点的方向向量;

a5、计算中垂线方向向量和中心点方向向量之间夹角的余弦值;

a6、判断计算得到的余弦值是否大于0,若是,则不需进行调整;反之,则将交线数组中的元素重新反向排列并存储;

a7、对下一条未调整的交线进行调整处理,直到所有交线处理完毕。

其中,交线实际是一圈空间点集,前后两个点相连构成的封闭曲线,根据点的存储顺序,这条线会有一个方向,即逆时针方向和顺时针方向,三角网格模型中添加三角形的顺序是逆时针方向,为了保证根据边查找的三角面片不存在歧义,需要保证交线方向的一致性,这里统一设置正方向为逆时针方向。

参考图3,进一步作为优选的实施方式,所述步骤b包括:

b1、取当前处理的交线对应的交线数组的前两个元素构成第一条半边,查找出该半边所对的三角面片face_s,创建一个种子面片数组in_faces,并将三角面片face_s添加到种子面片数组in_faces中;

b2、对当前处理的交线进行反向,即将其对应的交线数组中的元素的顺序从后向前重新排列;

b3、对反向处理后的交线中的每相邻两个点构成一条半边,根据每条半边查找一个三角面片,并将所查找到的三角面片全部添加到数组out_faces中,得到交线外的一圈三角面片;

b4、以种子面片数组in_faces中的逐个三角面片开启查找包围区域,根据当前三角面片的三条半边查找到它的三个邻域三角面片,依次判断得到的三个邻域三角面片是否存在于数组out_faces中,若存在,则说明该邻域三角面片位于交线的外面,不满足要求;若不存在,说明该邻域三角面片位于交线的包围区域之内,若其不在种子面片数组in_faces中,则将其添加到种子面片数组in_faces中;然后对种子面片数组中的下一个三角面片进行查找处理,直到种子面片数组in_faces中所有的种子面片都参与查找,则输出种子面片数组in_faces中的三角面片,得到当前交线对应的包围区域;

b5、对下一条未处理的交线进行计算处理,直到所有交线处理完毕,得到每条交线的包围区域。

参考图4,进一步作为优选的实施方式,所述步骤c包括:

c1、根据得到每一条交线的包围区域,计算包围区域的总数量n,并将所有的包围区域都存储在数组regions中;

c2、定义辅助操作区域reg,并初始化为数组regions的第一个元素,即reg=regions[0],同时将regions[0]标记为已访问,并存储到数组regions_ed中;

c3、定义当前操作区域的id号为i,分别判断辅助操作区域reg与数组regions中当前包围区域regions[i]的包含关系;

c4、根据辅助操作区域reg与当前包围区域regions[i]的包含关系,对当前包围区域regions[i]进行处理;

c5、当前操作区域的id号i进行自加1,并返回执行执行步骤c3,直到数组regions中所有的包围区域均处理完毕;

c6、对辅助操作区域reg进行区域求反,并添加到已访问数组regions_ed中;

c7、输出已访问数组regions_ed中所有的区域,即得到划分好的区域。

进一步作为优选的实施方式,所述步骤c4包括:

若辅助操作区域reg被当前包围区域regions[i]包含,则对regions[i]进行区域求反,即求牙齿模型上除了区域regions[i]剩下的全部区域;将求反后的区域合并到区域reg中,然后再次返回判断合并后的reg与regions[i]的包含关系;

若辅助操作区域reg包含当前包围区域regions[i],在已访问数组regions_ed中查找包含当前包围区域regions[i]的区域,记为regions_ed[j],再计算regions_ed[j]与regions[i]的差值,将得到的差值存入regions_ed[j];

若辅助操作区域reg与当前包围区域regions[i]是相离关系,则将当前访问区域regions[i]添加到已访问数组regions_ed,并将regions[i]合并到区域reg中。

进一步作为优选的实施方式,所述步骤c3包括:

c31、计算辅助操作区域reg中包含的点的数量c1,及当前包围区域regions[i]中包含的点的数量c2;

c32、将辅助操作区域reg和当前包围区域regions[i]中所包含的点全部合并在一起,去除重复部分,得到其数量为c;

c33、判断c1、c2和c的数量关系,即可得到辅助操作区域reg和当前包围区域regions[i]之间的包含关系。

进一步作为优选的实施方式,所述步骤c33具体包括:

若c=c1=c2,则辅助操作区域reg和当前包围区域regions[i]相同;

若c=c1,则辅助操作区域reg包含当前包围区域regions[i];

若c=c2,则辅助操作区域reg被当前包围区域regions[i]包含;

若c<c1+c2,则辅助操作区域reg与当前包围区域regions[i]相交;

若c=c1+c2,则辅助操作区域reg与当前包围区域regions[i]相离。

本发明的具体实施例如下:

s1、牙齿模型当前交线上的点存储在数组line中,以line表示当前交线,计算line中顶点的数量n:n=line.size(),

定义i为交线当前顶点的id号,即line[i]表示当前为交线的第i个顶点,且i∈[0,n);

s2、取交线的三个离散点v1、v2、v3:

v1=line[0];

v2=line[n/3];

v3=line[2*n/3];

s3、计算法向量dir1、dir2,并进行叉乘,求出v1、v2、v3构成的平面的中垂线方向dir_axis,这个方向近似作为交线的中垂线方向;

dir1=v2-v1;

dir2=v3-v2;

dir_axis=dir1xdir2;

s4、计算出牙齿模型的中心点坐标o1,当前交线的中心点o2,以及方向向量dir_cent:

其中pi表示牙齿模型上顶点的三维坐标,num表示牙齿模型上所有顶点的数量;

qi表示交线上顶点的三维坐标,n即交线上顶点数量;

方向向量计算:

dir_cent=o2-o1;

s5、计算方向dir_axis与方向dir_cent的夹角f:

f=dir_axis*dir_cent;

判断f是否大于0,如果f的值大于0,说明点两个方向向量dir_axis与dir_cent朝向一致。根据右手坐标法则,知v1、v2、v3满足正方向(逆时针方向),那么line上所有的点都满足正方向;如果f的值小于0,则说明line的点不满足正方向,要进行反向,反向可以通过把数组line的元素反向排列来实现。

s6、按照s1~s5步骤调整牙齿模型上所有交线的方向,使其满足正方向要求。

s7、取交线line的第0个点line[0]和第1个点line[1]所构成的第一条半边,查找出该半边所对的三角面片face_s,创建一个种子面片数组in_faces,并将三角面片face_s添加到种子面片数组in_faces中;

s8、对当前交线line进行反向,可以通过将数组line中的元素的顺序从后向前排列重新排列来实现;

s9、反向处理后的交线中,每前后相邻两个点构成一条半边,根据每条半边查找一个三角面片,最后将所查找到得三角面片全部添加到数组out_faces中,得到交线外的一圈三角面片;

s10、以种子面片in_faces[i]开启查找包围区域:根据面片in_faces[i]的三条半边查找到它的三个邻域三角面片face1、face2、face3;

s11、依次判断face1、face2、face3是否存在于数组out_faces中,若存在,则说明该面片位于交线的外面,不满足要求;若不存在,说明该面片位于交线的包围区域之内,若其不在种子面片数组in_faces中,则将其添加到种子面片数组in_faces中;

s12、循环进行步骤s10和s11,直到数组in_faces中所有的种子面片都参与查找,循环结束,输出in_faces中的三角面片,就是被交线包围的区域;

s13、根据步骤b得到每一条交线的包围区域,记为regioni,计算包围区域的总数量n,并将所有的包围区域都存储在数组regions中;

s14、定义辅助操作区域reg,并初始化为数组的第一个元素,即reg=regions[0],同时将regions[0]添加到已访问,用数组regions_ed表示;

s15、定义当前操作区域的id号为i,判断辅助操作区域reg与当前包围区域regions[i]的包含关系:

如果reg被当前包围区域regions[i]包含,对regions[i]进行区域求反,也就是求模型上除了区域regions[i]剩下的全部区域;将求反后的区域合并到区域reg中,然后再次判断reg与regions[i]的包含关系;

如果reg包含当前区域regions[i],在已访问区域的数组regions_ed中查找包含当前区域regions[i]的区域,记为regions_ed[j];再进行区域求差;

s16、将当前访问区域regions[i]添加到已访问数组regions_ed;

s17、重复步骤s15和s16,继续操作数组regions中的下一个区域,直到数组regions中所有的包围区域都被访问,循环结束;

s18、对reg进行区域求反,再添加到已访问数组regions_ed;

s19、输出regions_ed中所有的区域即为划分好的区域。

如下图5和图6所示:图5中三角网格模型上存在2条交线,可知模型被划分成3个区域。根据算法流程,首先求出每一个区域的包围区域,完成包围区域求解,再进行包围区域的操作运算,其中涉及到区域之间的包含关系的判断;在完成区域运算之后区域就被准确地划分出来。如图6中所示,3个区域分别表示被2条交线划分出来的3个的区域。

从上述内容可知,本发明一种用于义齿数字化修复的网格模型区域划分方法通过对于每一条交线,通过交线上的三个离散点求出中垂线方向,再结合模型中心到交线中心构成的方向向量,对每一条交线的方向进行调整,然后根据交线内的一种子面片发散查找出交线的包围区域,最后通过对交线的包围区域进行运算操作来进行处理,得到独立的区域。本发明有效解决了模型多区域的划分问题,在模型表面存在多条交线时依然能够快速准确地将模型划分成一个个彼此相互独立的区域,而且无需理会模型实体的嵌套关系这个条件,只要确定一个模型的交线就能划分区域,大大提高适用范围,摆脱了只能根据一条交线来划分区域的限制。

以上是对本发明的较佳实施进行了具体说明,但本发明创造并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做作出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。

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