CN115937072A 审中 一种基于VTK的口腔导板初提取方法
1.一种基于VTK的口腔导板初提取方法,其特征在于,包括以下步骤:
S10、距离和角度的测量,使用VtkDistanceWidgets对二维下颚骨切面数据图像中两牙齿之间距离的进行测量;使用vtkAngleWidget用于测量两条光线之间的角度;使用vtkWidgetRepresentation实现三维角度和距离的测量;
S20、套筒融合,利用布尔运算方法直接对STL三角面数据进行融合处理;
S30、牙齿区域分割,根据模型的阈值或是其他一些显著特征进行分割,设置模型的特征值进行分割或采用鼠标交互式进行三维分割,用户自定义将模型分割成若干区域;
S40、牙齿区域膨胀,基于VTK的图像膨胀变换采用向量的加法对两个数据集合进行合并,膨胀区域X⊕B是三角面中所有点的向量和的集合,向量加法的两个操作数分别来自于集合X和集合B,并且选取的是任意可能的集合组合。
2.根据权利要求1所述的基于VTK的口腔导板初提取方法,其特征在于,所述步骤S10包括以下步骤:
S101、二维距离测量,首先用户自定义设置,即选定两个端点,然后定义鼠标交互的方式,交互式移动两个端点,使用此Windows窗口的一些事件,实例化一个vtkDistanceWidget的实例和其构造形式vtkDistanceRepresentation的子类;该事件使用vtkHandleWidget的两个实例来实现,这两个实例用于确定所测区域的两端点,也是继承于vtkAbstractWidget类;
S102、二维角度测量,首先用户自定义设置,即选定两个端点和一个中心点,然后定义鼠标交互的方式,交互式移动两个端点和一个中心点,要使用此Windows窗口的一些事件,需要实例化一个vtkAngleWidget的实例和其构造形式,vtkAngleRepresentation的子类,这些实例用于定位这三个点,这些事件的表示由vtkAngleRepresentation提供,默认情况下,小部件将响应以下VTK事件,监视vtkRenderWindowInteractor中的这些事件:LeftButtonPressEvent-添加点或选择手柄,MouseMoveEvent-定位第二个或第三个点,或移动手柄LeftButtonReleaseEvent-释放选定的句柄;
S103、三维测量,此类用于为不同类型的窗口小部件定义API并实现表示形式,插件表示(vtkWidgetRepresentation)是一种类型的vtkProp;意味着它们与嵌入到场景中的vtkRenderer端关联,就像其他任何vtkActor一样,vtkWidgetRepresentation还定义了一个API,使其与vtkAbstractWidget子类配对,它由小部件驱动,在小部件响应已注册事件时表示小部件,此处定义的API被视为实现小部件和小部件表示的指南,小部件的行为复杂,表示形式对注册的小部件事件的响应方式也复杂,API因小部件而异,以反映这种复杂性,vtkDistanceRepresentation3D是为表示vtkDistanceWidget,该表示形式包括一条测量线和两个vtkHandleWidgets,以放置该线的端点。
3.根据权利要求1所述的基于VTK的口腔导板初提取方法,其特征在于,所述步骤S20包括以下步骤:
S201、两个STL数据分别是数据A、数据B,由几何学及计算机图形学的推导,模型A和模型B之间的布尔运算关系式为:
AinB的含义是数据A在数据B内部的集合数据,AoutB的含义是A在数据B外部的集合数据,(AinB)-1表示数据A在数据B内部的集合数据的差集,即将数据A在数据B内部的集合数据中三角面所有的法向量作相反方向的结果;(BinA)-1表示数据B在数据A内部的集合数据的差集,即将数据B在数据A内部的集合数据中三角面所有的法向量作相反方向的结果;BoutA的含义是B在数据A外部的集合数据,BinA的含义是数据B在数据A内部的集合数据;
S202、遍历下颚骨模型A和下颚骨模型B的每一个三角面顶点,找出每个下颚骨模型中每一个三角面中的顶点的x,y,z坐标的最大值和最小值,分别记为XBmin、XBmax、YBmin、YBmax、ZBmin、ZBmax和XAmin、XAmax、YAmin、YAmax、ZAmin、ZAmax,若坐标数据满足为XAmaxmin或XBmaxmin或YAmaxmin或YBmaxmin或ZAmaxmax或ZBmaxmin其中的任意一个条件,则下颚骨模型A和下颚骨模型B不会相交,否则会相交;
S203、下颚骨模型A和下颚骨模型B的表面被交线分割得到的每一个三角面数据域相对于另一个模型的位置关系以交线作为分界线,其临界要么在模型A的外部,要么在模型B的内部;布尔运算中所要面临的取舍问题就是判断模型下颚骨A和下颚骨模型B中一个实体沿着交线分割所得的各个区域相对于另一个实体的位置关系;要判断下颚骨模型A和下颚骨模型B的交线环分割得到的三角面片区域相对于另一个实体的位置关系,需找一个顶点,该顶点是三角面的非交点,然后检查这个顶点相对于另一实体模型的位置关系,由点到面,得到该点所在区域与另一个实体模型的位置关系,当顶点在另一下颚骨实体模型的外部,那么该三角面在另一实体的外部,若该顶点不在另一实体的外部,则该三角面在另一实体的内部;
S204、交线的求解方法采用Tomas Moller提出的两个三角形求交线算法来实现,两个三角面T1和T2,顶点分别是三角面T1和T2所在的平面分别是α和β,计算平面β方程:N2*X+d2=0,其中X是三角面上的点;从三角形T1到平面β的有向距离通过把点带入平面方程得到:
则说明T1在β的一侧,那么不会相交,同样对三角面T2做同样的处理;如果时,那么三角面会相交,如果三角面和直线形成的交区域相互重叠,那么三角面也会相交。
4.根据权利要求1所述的基于VTK的口腔导板初提取方法,其特征在于,所述步骤S30包括以下步骤:
S301、首先是平面坐标的确定,原则上坐标是可以任意确定的,在实际的测试中根据不同测试模型选取合适的坐标,将选取好的坐标用(xo,yo,zo)来表示,该坐标是切割面的中心点,通过自定义进行设置,是在下颚骨的牙齿骨骼数据内部选取;
S302、然后确定牙齿内部的法向量,根据牙齿骨骼模型的倾斜程度,通过自定义设置切割下颚骨的角度,即分离牙齿上表面数据时的方向,切割平面法向量的设置有两种方法:第一种方法是键盘输入直角坐标;第二种方法是设定极坐标;两者的对比显然是极坐标的形式,在代码是实际操作过程中选择的是空间面的点法式,也就是通过一定的公式将极坐标转化为直角坐标;
S303、假设法向量的极坐标为(r000),将该坐标转化为直角坐标通过公式(3)来完成,得到新的坐标设置为(i0,j0,k0),即该坐标是转换后牙齿切割表面的法向量形式,牙齿切割面的方向就是由该法向量确定的,由这两个条件根据空间平面点法式方程(4)确定切割面:
i0(x-xo)+j0(y-yo)+k0(z-zo)=0              (4)
S304、牙齿切割平面确定后,下步骤是切割面的映射,求切割面和三维模型的交集,将交集部分添加到三维模型中,将口腔牙齿的三维模型用这一平面进行分割,而当切割面的法向量确定后,得到的是口腔牙齿数据被分割后的两部分,牙齿表面着色处理,其余部分保留原始模样。
5.根据权利要求1所述的基于VTK的口腔导板初提取方法,其特征在于,所述步骤S40包括以下步骤:
S401、量的加法或集合加法,如(x,y,z)+(a,b,c)=(x+a,y+b,c+d))对两个数据集合进行合并,膨胀区域X⊕B是三角面中所有点的向量和的集合,向量加法的两个操作数分别来自于集合X和集合B,并且选取的是任意可能的集合组合:
S402、传统的图像膨胀处理存在着冗余运算,图像的三角面数据量越大、结构元素越复杂,冗余运算的结果越明显,冗余运算来源于两处:
(1)对三角面图像内部的膨胀处理,膨胀运算是递增的运算方式,对区域三维体数据进行膨胀运算时,对图像边界处理才对最终的结果有影响,膨胀算法将原图像边界进行膨胀运算,再与原图进行组合;
相邻三角面膨胀运算的重叠部分,相邻三角面的膨胀运算,前后两个操作之间有三角面重叠部分。
现在,一起体验智慧芽的产品和服务
自动注册,无需人工审核,即可立即开始查询专利
立即注册
澳门正版图库

AI助手