一种牙齿三维网格模型的自动分割方法
技术领域
本发明涉及牙齿模型数字化技术领域,特别涉及一种牙齿三维网格模型的自动分割方法。
背景技术
随着人们美学观念的提高以及对外表完美形象的追求,越来越多的人们开始整形和美容,而牙齿错颌畸形不仅影响自信,也妨碍社交、工作。正畸的主要目的就是将牙齿排列整齐,建立良好的咬合功能,美化容貌,最终使患者拥有一付健康、整齐、美白的牙齿。当前,口腔正畸学已被认为是口腔保健治疗中的一个必不可少的重要部分。
在传统牙齿正畸治疗中,治疗设备需要反复调整以达到正确矫正牙齿的目的,患者不能自行取戴,不仅周期较长,代价昂贵,而且容易引起口腔疾病。目前开发出一种新型无托槽隐形矫正技术,利用了计算机三维成型技术。新治疗方法将与牙颌形状有一定差别的弹性矫正装置配戴于被矫治牙齿上,产生约束力使牙齿向矫正方向移动。该矫正技术实施的过程中需要测量牙齿参数、模拟牙齿移动以及重新排列牙齿,而这些操作都需要预先分离出单颗牙齿。
目前提出的牙齿分割算法大多是通过交互选择一个种子点,然后将种子点周围的相似像素合并到种子点像素所属的区域中,再使用区域增长方法对牙齿模型进行分割,分割出单颗牙齿。但这样操作方法,交互过程太多,十分繁琐,很影响工作效率。有鉴于此,本发明意在提出一种全自动的牙齿分割方法,减少人机交互,简化操作过程,减少医务人员的工作量。
发明内容
为了解决背景技术中所述问题,本发明提供一种牙齿三维网格模型的自动分割方法,针对于目前常用的牙齿分割方法,人机交互多,操作过程繁琐的问题。本发明自动化程度高,仅需输入牙齿个数,就可以完整的将牙齿模型中的每个牙齿分割出来,极大的减轻了医务工作者的工作压力。
为了达到上述目的,本发明采用以下技术方案实现:
一种牙齿三维网格模型的自动分割方法,包括如下步骤:
步骤一、将牙齿3D模型数据导入系统内存当中,进行可视化显示;
步骤二、检测牙齿模型当中每一个顶点的信息,包括:三角面片的法向量、三角网格顶点的法向量以及三角网格顶点和曲面的曲率,设置一个初始曲率阈值;
步骤三、根据曲率阈值,将牙齿模型中符合要求的区域进行统一标记,得到特征区域;
步骤四、对由步骤三中得到特征区域,通过形态学操作,进行修补;
步骤五、对由步骤四中得到特征区域经过骨架化操作对特征区域细化处理,得到特征骨架线;
步骤六、对由步骤五中得到的特征骨架线进行修剪操作,去除骨架线中的多余分支;
步骤七、由步骤六中得到的光滑特征骨架线将牙齿模型中的部分牙齿边界勾勒出来,形成封闭的区域;对这些封闭的区域分配不同的颜色;
步骤八、通过判断特征骨架线两侧的颜色(不包括白色)是否相同,若相同则删除该部分特征骨架线;此时,每个色块中的多余分支被剔除;
步骤九、构建距离场,将距离特征线3毫米的区域定义为连接区域,所有的闭合操作都被限制在这个范围内;
步骤十、确定特征骨架线中的连接点,在构建的连接区域内,连接点之间不断的通过一环邻域,二环邻域向外扩展,找到连接点之间的中间点;
步骤十一、将链接点与中间点之间的搜索路径添加到特征骨架线当中,将特征骨架线闭合,实现不相交区域的封闭,此时牙齿模型被分为一个个独立区域;
步骤十二、对步骤十一中的独立区域分配不同的颜色;删除特征骨架线中两侧的颜色(包括白色)相同的部分;
步骤十三、计算各个色块的面积,删除面积小于第二大色块四分之一的小色块;
步骤十四、对步骤十三中的部分色块,通过面积约束和距离约束方式进行处理,合并对半分割的牙齿;
步骤十五、将步骤十四操作后的色块重新按照顺序编号,将欠分割的牙齿提取出来;
步骤十六、对步骤十五中提出的欠分割牙齿,根据其标号单独进行再次区域增长操作,直到发生曲率突变,停止增长,得到完整的牙齿分割结果;
步骤十七、对步骤十六得到的分割结果中的色块(不包括白色)进行计数,若数量等于用户输入的牙齿数,结束分割,显示结果;
步骤十八、若数量与用户输入牙齿数不同,调整曲率阈值;如果步骤十六中的色块(不包括白色),数小于用户输入牙齿数,则在当前曲率阈值上加0.01;反之在当前曲率阈值上减0.01;再次执行步骤三到步骤十七;
步骤十九、当步骤十八不再执行时,得到完整的分割结果。
与现有技术相比,本发明的有益效果是:
本发明为一种牙齿三维网格模型的自动分割方法,针对于目前常用的牙齿分割方法,人机交互多,操作过程繁琐的问题。本发明自动化程度高,仅需输入牙齿个数,就可以完整的将牙齿模型中的每个牙齿分割出来,极大的减轻了医务工作者的工作压力。
附图说明
图1为本发明的牙齿3D数字模型自动分割算法流程图;
图2为本发明的形态学操作后的特征骨架线;
图3为本发明设置的距离场;
图4为本发明的距离场闭合特征骨架线;
图5为本发明给每个封闭区域上色;
图6为本发明最终分割结果。
具体实施方式
以下结合附图对本发明提供的具体实施方式进行详细说明。
一种牙齿三维网格模型的自动分割方法,包括如下步骤:
步骤一、将牙齿3D模型数据导入系统内存当中,进行可视化显示;
步骤二、检测牙齿模型当中每一个顶点的信息,包括:三角面片的法向量、三角网格顶点的法向量以及三角网格顶点和曲面的曲率,设置一个初始曲率阈值;
步骤三、根据曲率阈值,将牙齿模型中符合要求的区域进行统一标记,得到特征区域;
步骤四、对由步骤三中得到特征区域,通过形态学操作,进行修补;
步骤五、对由步骤四中得到特征区域经过骨架化操作对特征区域细化处理,得到特征骨架线;
步骤六、对由步骤五中得到的特征骨架线进行修剪操作,去除骨架线中的多余分支;
步骤七、由步骤六中得到的光滑特征骨架线将牙齿模型中的部分牙齿边界勾勒出来,形成封闭的区域;对这些封闭的区域分配不同的颜色;
步骤八、通过判断特征骨架线两侧的颜色(不包括白色)是否相同,若相同则删除该部分特征骨架线;此时,每个色块中的多余分支被剔除;
步骤九、构建距离场,将距离特征线3毫米的区域定义为连接区域,所有的闭合操作都被限制在这个范围内;
步骤十、确定特征骨架线中的连接点,在构建的连接区域内,连接点之间不断的通过一环邻域,二环邻域向外扩展,找到连接点之间的中间点;
步骤十一、将链接点与中间点之间的搜索路径添加到特征骨架线当中,将特征骨架线闭合,实现不相交区域的封闭,此时牙齿模型被分为一个个独立区域;
步骤十二、对步骤十一中的独立区域分配不同的颜色;删除特征骨架线中两侧的颜色(包括白色)相同的部分;
步骤十三、计算各个色块的面积,删除面积小于第二大色块四分之一的小色块;
步骤十四、对步骤十三中的部分色块,通过面积约束和距离约束方式进行处理,合并对半分割的牙齿;
步骤十五、将步骤十四操作后的色块重新按照顺序编号,将欠分割的牙齿提取出来;
步骤十六、对步骤十五中提出的欠分割牙齿,根据其标号单独进行再次区域增长操作,直到发生曲率突变,停止增长,得到完整的牙齿分割结果;
步骤十七、对步骤十六得到的分割结果中的色块(不包括白色)进行计数,若数量等于用户输入的牙齿数,结束分割,显示结果;
步骤十八、若数量与用户输入牙齿数不同,调整曲率阈值;如果步骤十六中的色块(不包括白色),数小于用户输入牙齿数,则在当前曲率阈值上加0.01;反之在当前曲率阈值上减0.01;再次执行步骤三到步骤十七;
步骤十九、当步骤十八不再执行时,得到完整的分割结果。
如图1所示,将上述步骤概括为以下步骤:1.初始特征区域提取;2.形态学操作;3.移除初始分割中的多余分支;4.闭合特征骨架中的间隙;5.过度分割的处理。
具体实施过程如下:
步骤1:对读入的牙齿3D模型中的各个顶点信息进行读取,计算得出各个顶点的曲率值。设定一个初始的曲率阈值ε,将所有曲率值低于ε的顶点定义为特征区域。
曲率计算采用Mark Meyer在2002年发表的2流形三角离散微分几何算子的曲率估算方法,在代码中将曲率存储为kh(v)。使用R.Vergne等人的缩放函数,曲率值映射从[-∞,∞]缩小到[-1,1]。缩放函数的定义如下:ζ(x)=tan h(x(k/α)),K为其中B控制精度设置为8。特征区域F被定义如下:F={v∈V|kh(v)<ε}。将识别出的特征区域标为蓝色,当曲率阈值ε选取合适时,蓝色的区域将勾勒出牙齿的边界,并分离出每一颗牙齿,此时得到蓝色区域较宽且充满孔洞和间隙。
步骤2:对特征区域进行形态学操作,骨架化操作,修剪操作得到较为光滑的特征骨架。将被特征骨架切割出来的不相交集合分配不同的颜色,如图2所示。
处理步骤1中得到的特征区域,先进行形态学扩张操作,扩张操作公式是:扩张操作后,虽然特征区域的孔和间隙已经被填满,但是它的尺寸也变大了。为了恢复原始特征区域之前的尺寸,下一步我们进行腐蚀操作。腐蚀操作公式为:执行骨架化操作,迭代删除特征区域的最外层,同时保持其特征区域形状和拓扑结构不变。骨架化操作的公式为:每次迭代移除都是特征区域的圆盘点,当一个特征区域的经过多次骨架化操作后顶点数不再改变时,完成骨架化操作。执行修剪操作,将特征骨架线打磨光滑。修剪操作的数学公式为:prune(S)=S\C。修剪操作的每一次迭代都从一个分支的末端移除一个顶点。
步骤3:将被特征骨架线包裹起来的不相交集合分配不同的颜色,通过判断特征线两侧颜色(不包括白色)是否相同,将初始分割结果中特征骨架的多余分支去除。此部分仅仅去除被上色的不相交集合中的多余骨架分支。
上色过程调用VCGLib库中的inline static Color4Scatter(int range,intvalue,float Sat=.3f,float Val=.9f)方法,根据每个不相交集合的大小,自动分配不同的颜色。这些颜色值作为属性存储在每个顶点上。
步骤4:寻找特征骨架上的连接点,建立距离场,距离场为距离特征骨架3毫米一个带状区域。通过连接点之间在距离场范围内相互向外扩张,找到两点之间的中点,将该点与两点之间的搜索路径添加到特征骨架当中,实现特征骨架的间隙闭合。此时再次将被特征骨架切割出来的不相交集合分配不同的颜色,并且判断特征线两侧颜色(包括白色)是否相同,除去分割结果中特征骨架的多余分支。
距离场构建过程:从特征骨架的顶点开始向外迭代探索,计算当前顶点与特征骨架上顶点的距离,将距离值存储在顶点v中(一个从顶点u开始搜索过程中的点),其中v是u的邻点,并且距离小于到其他点的距离,将当前距离存储在这个顶点。从u到特征线的距离与u和v之间的欧氏距离和为:δ(v)←min(δ(u)+||u-v||,δ(v))。在每一次迭代中,从当前最小顶点进行搜索。当最小距离探索超过3毫米时,距离场构建完成,如图3所示。
寻找特征骨架线上的连接点,并标记为黄色。连接点的条件为非复杂的顶点,一般顶点的复杂度为2。
连接点被确定后,在每个连接点之间同时发起搜索来找到两个连接点之间的最短路径。首先,将在各连接点的1环附近进行探索。接着,对各连接点的2环附近进行探索。在搜索的每个迭代中,数据存储在每个标识返回到连接点的最短路径的顶点中。当一个之前被访问过得顶点通过源于不同的连接点被探索到,它被定义为在两个连接点之间的新的连接路径的中点,标为紫色,搜索被限制在先前建立的距离场中。
对中点的搜索被执行后,连接点之间的路径通过存储在从中点回到相应的连接点的顶点的数据来追踪。然后,将新的路径添加到特征线中。
再次给每个不相交的集合分配不同的颜色,并且判断特征线两侧颜色(包括白色)是否相同,除去分割结果中特征骨架的多余分支,如图4所示。
步骤5:计算每种色块面积(该面积指色块中所含顶点数量)。将面积小于第二大色块面积四分之一的部分去除,如图5所示。对于分割结果中出现的半牙情况,采用面积约束和距离约束结合,将属于同一颗牙齿的半牙进行合并。对于牙齿分割不完全,有缺失的牙齿,采用区域增长方法,并设置曲率突变为约束条件,将牙齿完整的分割出来。
小色块去除的原理:对于每个小色块,在那个色块的特征线中的每个顶点都被遍历,并且记录相邻顶点的色块的数字。小的色块和最频繁出现的邻点色块之间的边界线被去除,而其他所有的边界被留下。
重新为每个色块被分配一个数字编号,并且对每个色块的面积,进行分析统计,编号顺序为从后向前,从左到右依次进行的。色块面积与牙齿模型中原本的牙齿所占面积进行对比。经过实验计算,得到牙齿面积的大概范围是1500到2200之间,而分割不好的牙齿面积会有缺失或多余。
将面积小于1500和面积大于2200的牙齿筛选出来,计算出筛选得到的半牙的几何中心;然后计算几何中心间的欧式距离;接着将得到的欧式距离进行比较,取欧式距离最小的两个半牙作为同一个牙齿处理;最后将这两颗半牙上同一种颜色,完成操作。对于在合并时有一个范围约束,只有欧式距离小于7毫米时,我们才将两颗半牙进行合并。
对当前的分割结果中,每个牙齿重新标号,通过牙齿面积筛选出欠分割的牙齿,将这些欠分割的牙齿按照标号,进行区域增长,直到发生曲率突变(因为牙齿边缘曲率变化很大,造成曲率突变),停止增长,这样可以将欠分割的牙齿较为完整的分割出来,如图6所示。
本发明提出的牙齿3D模型自动分割算法,包括自动化的曲率阈值选取操作,特征区域骨架化操作,利用距离场约束方法闭合特征区域间隙,以及将分割出的不相交集合分配不同的颜色四大特色功能。算法大致分为五大步骤:初始特征区域提取,形态学操作,移除初始分割中的多余分支,闭合特征骨架中的间隙,过度分割的处理。使用本发明的分割算法,自动化程度高,仅需输入牙齿个数,就可以完整的将牙齿模型中的每个牙齿分割出来,极大的减轻了医务工作者的工作压力。
以上实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于上述的实施例。上述实施例中所用方法如无特别说明均为常规方法。