CN115937072A 审中 一种基于VTK的口腔导板初提取方法
技术领域 [0001]本发明涉及口腔图像测量、套筒融合、图像区域分割及图像的三维数据膨胀技术领域, 尤其涉及一种基于VTK的口腔导板初提取方法。 背景技术 [0002]随着人工智能技术、光学成像技术、三维图像处理技术、高分辨CT扫描技术、计算机 软件开发技术的日益成熟,以及口腔种植的临床分析与实验研究的不断深入,针对口腔种 植手术环境的显示与分析、术前模拟方案的预测与导航、三维数字化口腔导板的提取制作, 已经成为新的研究领域的一大热点,在国内这项技术发展尚未成熟,但口腔种植导板的需求 量却未曾削减。口腔种植手术成功的重要因素包括两方面,一方面是手术前为患者制定科 学、合理、安全的治疗方案;另一方面是对该方案进行模拟操作,预测结果。而口腔导板 提取系统具有良好的手术导航功能,在临床的手术中也得到了一定的测试试用,可以保证 手术的安全性、稳定性,降低手术的不可未知性,从而有效的提高种植手术的成功率。 [0003]口腔种植手术中对种植体的设计和放置有严格的要求,种植体与上腭骨、下槽牙神经 管之间的距离检测误差在2毫米以内,对颌骨缺损骨量评估、以及种植体与修复体的位置 关系要求严密,手术能否顺利完成取决于手术前所规划的方案。常规的根尖放射片、颚骨 曲面体层片虽然可以给临床医生提供一定的指导,但是由于这种常规的X线片是结构重叠 的二维影像,其密度分辨率较低,受摄影角度影响,局部的组织结构会有一定程度的变形 和缩小。总之,根据普通的X线片检查所作的术前规划设计,常常不能对颚骨密度和缺损 区域做出准确的测算,使得临床医生在口腔种植手术中陷入十分被动的局面,不仅达不到 有效的治疗效果,而且可能导致种植体的脱落,甚至出现严重的后遗症,如邻牙损伤、下唇麻木、颌骨吸收和上颌窦感染等症状,造成患者机体损伤和心理障碍。 [0004]以往的种植手术对医生的经验和技术水平要求极为严格,种植体植入不仅要考虑局部 颚骨的骨密度而且要进行解剖结构来设计,常常要在手术过程中翻开黏骨薄膜后才能人为 的下结论。手术之前设计好的植入位置、角度和实际手术植入的位置存在一定的偏差,不 仅会造成手术的失败而且还会带来一些后遗症。微创种植技术以其可以提高种植手术的精 准度并减少术中出血、减轻术后肿胀、避免牙槽骨吸收和减轻患者恐惧心理等优势被广泛 采用。种植导板的使用使得手术不翻瓣成为可能,和其他的一些手术导板类似,种植导板 也是种植手术的信息载体,是手术中的导航工具。 发明内容 [0005]本发明的目的在于提供一种基于VTK的口腔导板初提取方法,利用3D打印技术制作出 来的手术导板,通过三维测量技术,可以设计制作出种植体植入颚骨的深度、角度,避免 伤害了颚骨内的重要神经血管结构,即使是新任职的年轻医生,通过使用这种手术导板, 也可以顺利的完成种植手术。 [0006]为了实现上述发明目的,本发明采用技术方案具体为:一种基于VTK的口腔导板初提 取方法,包括以下步骤: [0007]S10、距离和角度的测量。使用VtkDistanceWidgets对二维下颚骨切面数据图像中两牙 齿之间距离的进行测量;使用vtkAngleWidget用于测量两条光线(由三个点所定义的)之 间的角度;使用vtkWidgetRepresentation实现三维角度和距离的测量。 [0008]S20、套筒融合。利用布尔运算方法直接对STL三角面数据进行融合处理,可以有效的 解决时间浪费的问题。 [0009]S30、牙齿区域分割。根据模型的阈值或是其他一些显著特征进行分割,通常设置模型 的特征值进行分割或采用鼠标交互式进行三维分割,用户自定义将模型分割成若干区域。 [0010]S40、牙齿区域膨胀。基于VTK的图像膨胀变换采用向量的加法对两个数据集合进行合 并。膨胀区域X⊕B是三角面中所有点的向量和的集合,向量加法的两个操作数分别来自于 集合X和集合B,并且选取的是任意可能的集合组合。 [0011]进一步地,所述步骤S10包括: [0012]S101、二维距离测量。首先,用户自定义设置(即选定两个端点),然后定义鼠标交互 的方式(交互式移动两个端点),使用此Windows窗口的一些事件,需要实例化(NEW) 一个vtkDistanceWidget的实例和其构造形式(vtkDistanceRepresentation的子类)。该事件使 用vtkHandleWidget的两个实例来实现,这两个实例用于确定所测区域的两端点,也是继承 于vtkAbstractWidget类; [0013]S102、二维角度测量。首先,用户自定义设置(即选定两个端点和一个中心点),然后 定义鼠标交互的方式(交互式移动两个端点和一个中心点)。要使用此Windows窗口的一些 事件,需要实例化(NEW)一个vtkAngleWidget的实例和其构造形式(vtkAngleRepresentation 的子类)。这些实例用于定位这三个点。这些事件的表示由vtkAngleRepresentation提供。默 认情况下,小部件将响应以下VTK事件(即,它监视vtkRenderWindowInteractor中的这些 事件):LeftButtonPressEvent-添加点或选择手柄,MouseMoveEvent-定位第二个或第三个点, 或移动手柄LeftButtonReleaseEvent-释放选定的句柄; [0014]S103、三维测量。此类用于为不同类型的窗口小部件定义API并实现表示形式。插件 表示(vtkWidgetRepresentation)是一种类型的vtkProp;意味着它们可以与嵌入到场景中 的vtkRenderer端关联,就像其他任何vtkActor一样。但是,vtkWidgetRepresentation还定 义了一个API,使其能够与vtkAbstractWidget子类配对,这意味着它可以由小部件驱动,在 小部件响应已注册事件时表示小部件。此处定义的API应该被视为实现小部件和小部件表 示的指南。小部件的行为很复杂,表示形式对注册的小部件事件的响应方式也很复杂,因 此API可能因小部件而异,以反映这种复杂性。vtkDistanceRepresentation3D是为表示 vtkDistanceWidget。该表示形式包括一条测量线(轴)和两个vtkHandleWidgets,以放置该 线的端点。 [0015]进一步地,所述步骤S20包括: [0016]S201、两个STL数据分别是数据A、数据B,由几何学及计算机图形学的推导,模型 A和模型B之间的布尔运算关系式为: [0017] [0018]AinB的含义是数据A在数据B内部的集合数据,AoutB的含义是A在数据B外部的集合数据,(AinB)-1表示数据A在数据B内部的集合数据的差集,即将数据A在数据B内部 的集合数据中三角面所有的法向量作相反方向的结果。(BinA)-1表示数据B在数据A内部 的集合数据的差集,即将数据B在数据A内部的集合数据中三角面所有的法向量作相反方 向的结果。BoutA的含义是B在数据A外部的集合数据,BinA的含义是数据B在数据A 内部的集合数据。 [0019]S202、遍历下颚骨模型A和下颚骨模型B的每一个三角面顶点,找出每个下颚骨模型 中每一个三角面中的顶点的x,y,z坐标的最大值和最小值,分别记为XBmin、XBmax、YBmin、YBmax、ZBmin、ZBmax和XAmin、XAmax、YAmin、YAmax、ZAmin、ZAmax,若坐标数据满足为 XAmaxmin或XBmaxmin或YAmaxmin或YBmaxmin或ZAmaxmax或ZBmax< ZAmin其中的任意一个条件,则下颚骨模型A和下颚骨模型B不会相交,否则会相交。 [0020]S203、下颚骨模型A和下颚骨模型B的表面被交线分割得到的每一个三角面数据域相 对于另一个模型的位置关系以交线作为分界线,其临界要么在模型A的外部,要么在模型 B的内部。布尔运算中所要面临的取舍问题就是判断模型下颚骨A和下颚骨模型B中一个实体沿着交线分割所得的各个区域相对于另一个实体的位置关系。所以,要判断下颚骨模型A和下颚骨模型B的交线环分割得到的三角面片区域相对于另一个实体的位置关系,可以找一个顶点,该顶点是三角面的非交点,然后检查这个顶点相对于另一实体模型的位置关系,由点到面,即可得到该点所在区域与另一个实体模型的位置关系,当顶点在另一下颚骨实体模型的外部,那么该三角面在另一实体的外部,若该顶点不在另一实体的外部,则该三角面在另一实体的内部。 [0021]S204、交线的求解方法采用Tomas Moller提出的两个三角形求交线算法来实现。两个 三角面T1和T2,顶点分别是三角面T1和T2所在的平面分别 是α和β,计算平面β方程:N2*X+d2=0,其中X是三角面上的点。从三角形T1到平面β的有向距离可以通过把点带入平面方程得到: [0022] [0023]则说明T1在β的一侧,那么不会相交。同样对三角面T2做同样的处理。如果时,那么三角面会相交。如果三角面和直线形成的交区域相互重叠,那么三角面也会相交。 [0024]进一步地,所述步骤S30包括: [0025]S301、首先是平面坐标的确定。原则上坐标是可以任意确定的,但是在实际的测试中 要根据不同测试模型选取合适的坐标。将选取好的坐标用(xo,yo,zo)来表示,该坐标是切割面的中心点,可通过自定义进行设置,是在下颚骨的牙齿骨骼数据内部选取; [0026]S302、然后确定牙齿内部的法向量,根据牙齿骨骼模型的倾斜程度,通过自定义设置 切割下颚骨的角度,即分离牙齿上表面数据时的方向,切割平面法向量的设置有两种方法: 第一种方法是键盘输入直角坐标;第二种方法是设定极坐标;两者的对比显然是极坐标的 形式更加直观,但是在代码是实际操作过程中更多选择的是空间面的点法式,也就是通过 一定的公式将极坐标转化为直角坐标; [0027]S303、假设法向量的极坐标为(r000),将该坐标转化为直角坐标可以通过公式(3) 来完成,得到的新的坐标设置为(i0,j0,k0),即该坐标是转换后牙齿切割表面的法向量形 式,牙齿切割面的方向就是由该法向量确定的,由这两个条件可以根据空间平面点法式方 程(4)确定切割面。 [0028] [0029]i0(x-xo)+j0(y-yo)+k0(z-zo)=0         (4) [0030]S304、牙齿切割平面确定后,下一关键步骤是切割面的映射,也就是求切割面和三维 模型的交集,将交集部分添加到三维模型中。将口腔牙齿的三维模型用这一平面进行分割, 而当切割面的法向量确定后,得到的是口腔牙齿数据被分割后的两部分,牙齿表面着色处 理,其余部分保留原始模样。 [0031]进一步地,所述步骤S40包括: [0032]S401、量的加法(或集合加法,如(x,y,z)+(a,b,c)=(x+a,y+b,c+d))对 两个数据集合进行合并。膨胀区域是三角面中所有点的向量和的集合,向量加法的两 个操作数分别来自于集合X和集合B,并且选取的是任意可能的集合组合。 [0033] [0034]S402、传统的图像膨胀处理大多存在着大量的冗余运算,图像的三角面数据量越大、 结构元素越复杂,冗余运算的结果越明显。冗余运算来源于两处: [0035](1)对三角面图像内部的膨胀处理。膨胀运算是一种递增的运算方式,对区域三维体 数据进行膨胀运算时,只有对图像边界处理才对最终的结果有影响,传统的膨胀算法会运 算图像内部的数据,这样会花费大量的时间,进而降低了算法的效率。实际上,膨胀算法可以将原图像边界进行膨胀运算,再与原图进行组合; [0036]2)相邻三角面膨胀运算的重叠部分。相邻三角面的膨胀运算,前后两个操作之间有大 量的三角面重叠部分,三角面越多,结构元素越大,相互直接就会重叠更多,算法的执行 时间越多,效率越低。 [0037]与现有技术相比,本发明的有益效果为: [0038](1)本发明提供的一种基于VTK的口腔导板初提取方法,实现了口腔CT图像和医学三维图像距离和角度的精确测量,套筒的布尔融合技术使得术前仿真更为真实。 [0039](2)本发明提供的一种基于VTK的口腔导板初提取方法,基于平面的三维图像分割技 术操作更为简单,无需实现数据的转换,读取牙齿数据后,设置切割面的坐标以及切割面 的法向量,即可完成图像分割。 [0040](3)本发明提供的一种基于VTK的口腔导板初提取方法,利用三维图像膨胀技术实现 口腔导板的初步提取,便于3D实物打印。 [0041](4)本发明通过采用口腔图像测量技术、套筒融合技术、图像区域分割技术、图像的 三维数据膨胀技术,最终实现口腔导板的初提取,在测量方面实现鼠标交互式二维、三维 图像的测量;套筒融合方面使用点拾取和布尔运算的方法实现自定义区域的套筒插入;区 域分割方面使用平面交互式分割方法。 附图说明 [0042]附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例 一起用于解释本发明,并不构成对本发明的限制。 [0043]图1为本发明提供的一种基于VTK的口腔导板初提取方法的流程图。 [0044]图2为本发明中下颚骨切面距离测量示意图。 [0045]图3为本发明中下颚骨切面角度测量示意图。 [0046]图4为本发明中三维口腔距离测量示意图。 [0047]图5为本发明中三维口腔角度测量示意图。 [0048]图6为本发明中的下颚骨和套筒数据的布尔并集运算示意图。 [0049]图7为本发明中的牙齿上表面标记示意图。 [0050]图8为本发明中的牙齿取表面示意图。 [0051]图9为本发明中的牙齿表面膨胀处理示意图。 [0052]图10为本发明中的牙套实物打印示意图。 具体实施方式 [0053]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本 发明进行进一步详细说明。当然,此处所描述的具体实施例仅用以解释本发明,并不用于 限定本发明。 [0054]实施例1 [0055]参见图1至图10,本实施例提供了一种基于基于VTK的口腔导板初提取方法,如图1所示,包括以下步骤: [0056]S10、距离和角度的测量。使用VtkDistanceWidgets对二维下颚骨切面数据图像中两牙 齿之间距离的进行测量;使用vtkAngleWidget用于测量两条光线(由三个点所定义的)之 间的角度;使用vtkWidgetRepresentation实现三维角度和距离的测量。 [0057]S20、套筒融合。利用布尔运算方法直接对STL三角面数据进行融合处理,可以有效的 解决时间浪费的问题。 [0058]S30、牙齿区域分割。根据模型的阈值或是其他一些显著特征进行分割,通常设置模型 的特征值进行分割或采用鼠标交互式进行三维分割,用户自定义将模型分割成若干区域。 [0059]S40、牙齿区域膨胀。基于VTK的图像膨胀变换采用向量的加法对两个数据集合进行合 并。膨胀区域X⊕B是三角面中所有点的向量和的集合,向量加法的两个操作数分别来自于 集合X和集合B,并且选取的是任意可能的集合组合。 [0060]优选地,所述步骤S10包括: [0061]S101、二维距离测量。首先,用户自定义设置(即选定两个端点),然后定义鼠标交互 的方式(交互式移动两个端点),使用此Windows窗口的一些事件,需要实例化(NEW) 一个vtkDistanceWidget的实例和其构造形式(vtkDistanceRepresentation的子类)。该事件使 用vtkHandleWidget的两个实例来实现,这两个实例用于确定所测区域的两端点,也是继承 于vtkAbstractWidget类; [0062]S102、二维角度测量。首先,用户自定义设置(即选定两个端点和一个中心点),然后 定义鼠标交互的方式(交互式移动两个端点和一个中心点)。要使用此Windows窗口的一些 事件,需要实例化(NEW)一个vtkAngleWidget的实例和其构造形式(vtkAngleRepresentation 的子类)。这些实例用于定位这三个点。这些事件的表示由vtkAngleRepresentation提供。默 认情况下,小部件将响应以下VTK事件(即,它监视vtkRenderWindowInteractor中的这些 事件):LeftButtonPressEvent-添加点或选择手柄,MouseMoveEvent-定位第二个或第三个点, 或移动手柄LeftButtonReleaseEvent-释放选定的句柄; [0063]S103、三维测量。此类用于为不同类型的窗口小部件定义API并实现表示形式。插件 表示(vtkWidgetRepresentation)是一种类型的vtkProp;意味着它们可以与嵌入到场景中 的vtkRenderer端关联,就像其他任何vtkActor一样。但是,vtkWidgetRepresentation还定 义了一个API,使其能够与vtkAbstractWidget子类配对,这意味着它可以由小部件驱动,在 小部件响应已注册事件时表示小部件。此处定义的API应该被视为实现小部件和小部件表 示的指南。小部件的行为很复杂,表示形式对注册的小部件事件的响应方式也很复杂,因 此API可能因小部件而异,以反映这种复杂性。vtkDistanceRepresentation3D是为表示 vtkDistanceWidget。该表示形式包括一条测量线(轴)和两个vtkHandleWidgets,以放置该 线的端点。 [0064]优选地,所述步骤S20包括: [0065]S201、两个STL数据分别是数据A、数据B,由几何学及计算机图形学的推导,模型 A和模型B之间的布尔运算关系式为: [0066] [0067]AinB的含义是数据A在数据B内部的集合数据,AoutB的含义是A在数据B外部的集合数据,(AinB)-1表示数据A在数据B内部的集合数据的差集,即将数据A在数据B内部 的集合数据中三角面所有的法向量作相反方向的结果。(BinA)-1表示数据B在数据A内部 的集合数据的差集,即将数据B在数据A内部的集合数据中三角面所有的法向量作相反方 向的结果。BoutA的含义是B在数据A外部的集合数据,BinA的含义是数据B在数据A 内部的集合数据。 [0068]S202、遍历下颚骨模型A和下颚骨模型B的每一个三角面顶点,找出每个下颚骨模型 中每一个三角面中的顶点的x,y,z坐标的最大值和最小值,分别记为XBmin、XBmax、YBmin、YBmax、ZBmin、ZBmax和XAmin、XAmax、YAmin、YAmax、ZAmin、ZAmax,若坐标数据满足为 XAmaxmin或XBmaxmin或YAmaxmin或YBmaxmin或ZAmaxmax或ZBmax< ZAmin其中的任意一个条件,则下颚骨模型A和下颚骨模型B不会相交,否则会相交。 [0069]S203、下颚骨模型A和下颚骨模型B的表面被交线分割得到的每一个三角面数据域相 对于另一个模型的位置关系以交线作为分界线,其临界要么在模型A的外部,要么在模型 B的内部。布尔运算中所要面临的取舍问题就是判断模型下颚骨A和下颚骨模型B中一个实体沿着交线分割所得的各个区域相对于另一个实体的位置关系。所以,要判断下颚骨模型A和下颚骨模型B的交线环分割得到的三角面片区域相对于另一个实体的位置关系,可以找一个顶点,该顶点是三角面的非交点,然后检查这个顶点相对于另一实体模型的位置关系,由点到面,即可得到该点所在区域与另一个实体模型的位置关系,当顶点在另一下颚骨实体模型的外部,那么该三角面在另一实体的外部,若该顶点不在另一实体的外部,则该三角面在另一实体的内部。 [0070]S204、交线的求解方法采用Tomas Moller提出的两个三角形求交线算法来实现。两个 三角面T1和T2,顶点分别是三角面T1和T2所在的平面分别 是α和β,计算平面β方程:N2*X+d2=0,其中X是三角面上的点。从三角形T1到平面β的有向距离可以通过把点带入平面方程得到: [0071] [0072]则说明T1在β的一侧,那么不会相交。同样对三角面T2做同样的处理。如果时,那么三角面会相交。如果三角面和直线形成的交区域相互重叠,那么三角面也会相交。 [0073]优选地,所述步骤S30包括: [0074]S301、首先是平面坐标的确定。原则上坐标是可以任意确定的,但是在实际的测试中 要根据不同测试模型选取合适的坐标。将选取好的坐标用(xo,yo,zo)来表示,该坐标是切割面的中心点,可通过自定义进行设置,是在下颚骨的牙齿骨骼数据内部选取; [0075]S302、然后确定牙齿内部的法向量,根据牙齿骨骼模型的倾斜程度,通过自定义设置 切割下颚骨的角度,即分离牙齿上表面数据时的方向,切割平面法向量的设置有两种方法: 第一种方法是键盘输入直角坐标;第二种方法是设定极坐标;两者的对比显然是极坐标的 形式更加直观,但是在代码是实际操作过程中更多选择的是空间面的点法式,也就是通过 一定的公式将极坐标转化为直角坐标; [0076]S303、假设法向量的极坐标为(r000),将该坐标转化为直角坐标可以通过公式(3) 来完成,得到的新的坐标设置为(i0,j0,k0),即该坐标是转换后牙齿切割表面的法向量形 式,牙齿切割面的方向就是由该法向量确定的,由这两个条件可以根据空间平面点法式方 程(4)确定切割面。 [0077] [0078] [0079]S304、牙齿切割平面确定后,下一关键步骤是切割面的映射,也就是求切割面和三维 模型的交集,将交集部分添加到三维模型中。将口腔牙齿的三维模型用这一平面进行分割, 而当切割面的法向量确定后,得到的是口腔牙齿数据被分割后的两部分,牙齿表面着色处 理,其余部分保留原始模样。 [0080]优选地,所述步骤S40包括: [0081]S401、量的加法(或集合加法,如(x,y,z)+(a,b,c)=(x+a,y+b,c+d))对 两个数据集合进行合并。膨胀区域是三角面中所有点的向量和的集合,向量加法的两 个操作数分别来自于集合X和集合B,并且选取的是任意可能的集合组合。 [0082] [0083]S402、传统的图像膨胀处理大多存在着大量的冗余运算,图像的三角面数据量越大、 结构元素越复杂,冗余运算的结果越明显。冗余运算来源于两处: [0084](1)对三角面图像内部的膨胀处理。膨胀运算是一种递增的运算方式,对区域三维体 数据进行膨胀运算时,只有对图像边界处理才对最终的结果有影响,传统的膨胀算法会运 算图像内部的数据,这样会花费大量的时间,进而降低了算法的效率。实际上,膨胀算法可以将原图像边界进行膨胀运算,再与原图进行组合; [0085]2)相邻三角面膨胀运算的重叠部分。相邻三角面的膨胀运算,前后两个操作之间有大 量的三角面重叠部分,三角面越多,结构元素越大,相互直接就会重叠更多,算法的执行 时间越多,效率越低。 [0086]以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则 之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
现在,一起体验智慧芽的产品和服务
自动注册,无需人工审核,即可立即开始查询专利
立即注册
澳门正版图库

AI助手