一种血管数字模型的编辑方法及系统与流程

文档序号:12805069阅读:210来源:国知局
一种血管数字模型的编辑方法及系统与流程

本发明是关于虚拟手术模型技术,具体地,是关于一种血管数字模型的编辑方法及系统。



背景技术:

虚拟手术是利用医学影像数据,使用虚拟现实技术在计算机中建立虚拟环境,使医生能够借助虚拟环境中的信息进行手术计划、训练,以及实际手术中引导手术。传统的手术过程存在风险高,病人痛苦大,术后效果不理想等缺点,手术效果受医生个人业务水平影响很大。采用增强现实技术可以使医务工作者沉浸于虚拟的场景内,通过视觉、听觉、触觉感知并学习各种手术实际操作,体验并学习如何应付临床手术中的实际情况。这样节约了培训医务人员的费用和时间,使非熟练人员进行手术的风险性大大降低,对提高医学教育与训练的效率和质量以及改善医学手术水平的发展不平衡的现状有着特殊的意义。

利用虚拟现实技术模拟实际手术过程,帮助医务工作者进行手术技能培训的过程中,模拟所采用的病例模型的丰富程度非常重要。第一,从训练者的角度来讲,在丰富的病例模型上进行训练,可以帮助受训者适应在不同病理特征下的手术操作流程和技巧,为其日后在实际手术过程中遇到类似病例时做好充足的准备工作。第二,从医生的角度来讲,拥有对血管病变位置的自主控制权,可以预防性地对将来可能出现的罕见病例进行事前模拟,同时可以丰富对新手医生的训练资源。第三,从手术器械厂商角度来讲,可以对任何血管病变位置进行新的手术器械研发及试验,避免了在单一仿体模型试验的不足。

目前的虚拟手术过程中所采用的血管数字模型来源主要有以下两种:

1、三维重建

此方法基于实际病例的ct/mri/dsa等扫描图像,进而采用三维重建技术获得三维血管数字模型。然而通过该方法获得的血管模型往往是粗糙的,要经过人工干预 的后期处理才能用在虚拟手术过程中。该方法获取病例模型的前提是拥有该病例的图像,并且掌握对三维重建获得的粗糙模型的后期处理方法。

基于扫描影像、三维重建获取病例模型,必须首先获取该实际病例的扫描图像。而对于某些病理结构比较罕见的特殊病例,其病人数据往往是难以获取的。尤其在考虑到病人隐私的前提下,某些病人的病例数据通常是受保护且不予公开的。因此,这种丰富病变血管模型库的方法从数据来源方面就受到了极大的限制。此外,三维重建获得的血管数字模型往往需要投入大量的人力去进行手工的处理和调校才能达到虚拟手术的使用标准,这项工作的人力物力成本同样也很高昂,且周期较长。

2、三维编辑软件。

此方法建立在已经获取了经过三维重建和后期处理后的三维血管数字模型的基础之上。通过3dmax或者maya等三维编辑软件,对三维血管数字模型进行编辑,进而获取不同类型的病变模型。该方法可以在健康血管数字模型上编辑获得病理特征种类丰富的病例模型。

通过三维软件编辑健康血管模型来得到病变血管模型,要求操作人员熟练使用3dmax或maya等三维编辑软件,这类型的软件需要使用者对血管三维模型的格式有一定了解,且操作方法复杂,上手较慢。



技术实现要素:

本发明实施例的主要目的在于提供一种血管数字模型的编辑方法及系统,以提供一种操作步骤简单、容易上手的血管数字模型的编辑工艺。

为了实现上述目的,本发明实施例提供一种血管数字模型的编辑方法,所述的编辑方法包括:获取血管数字模型的多个三角形面片;分析并获取各所述三角形面片的邻接面信息;接收用户在屏幕坐标中选择的第一点及第二点,并分别确定所述第一点及第二点对应的血管数字模型中的第一端点、第二端点及所在的三角形面片的索引信息;根据所述第一端点、第二端点所在的三角形面片的索引信息及邻接面信息确定多个血管圆环组成的目标血管段;根据各所述血管圆环中三角形面片的中点确定各所述血管圆环的中心点;根据各所述血管圆环中三角形面片的顶点与各自的中心点的相对位置编辑所述目标血管段。

在一实施例中,上述的分析并获取各所述三角形面片的邻接面信息,包括:对于 所述血管数字模型上的每个顶点vi,获取所述血管数字模型上所有包含所述顶点vi的三角形面片,并将其面索引信息存入与各所述顶点vi对应的数组ai中,其中,i为正整数;对所述血管数字模型上的每一个三角形面片ti的每一个顶点vj,在所述顶点vj对应的数组aj中获取包含所述三角形面片ti的下一个顶点a(j+1)%3的三角形面片t′i的面索引信息;将所述三角形面片t′i的面索引信息存入与所述三角形面片ti对应的数组bi中,所述数组bi为所述三角形面片ti所邻接的三角形面片的索引信息,其中,j=0,1,2。

在一实施例中,上述的分别确定所述第一点及第二点对应的血管数字模型中的第一端点、第二端点及所在的三角形面片的索引信息,包括:将所述第一点及第二点在屏幕坐标系中的坐标转化至三维空间坐标中,生成第一点三维坐标及第二点三维坐标;确定所述第一点三维坐标及第二点三维坐标分别与虚拟基准坐标组成的第一射线及第二射线;将所述第一射线与所述血管数字模型中三角形面片的交集作为所述第一端点,将所述第二射线与所述血管数字模型中三角形面片的交集作为所述第二端点,并获取所述第一端点及第二端点所在的三角形面片的索引信息。

在一实施例中,上述的将所述第一射线与所述血管数字模型中三角形面片的交集作为所述第一端点,将所述第二射线与所述血管数字模型中三角形面片的交集作为所述第二端点,包括:通过八叉树分割法对所述血管数字模型进行分割,将所述血管数字模型划分为多个子空间,各所述子空间中三角形面片的数量小于一阈值;所述第一射线与子空间中的三角形面片的交集为所述第一端点,所述第二射线与子空间中的三角形面片的交集为所述第二端点。

在一实施例中,上述的根据所述第一端点、第二端点所在的三角形面片的索引信息及邻接面信息确定多个血管圆环组成的目标血管段,包括:步骤a:第一端点a及第二端点b构成向量确定过所述第一端点a且垂直于所述向量的平面c,所述平面c与包含所述第一端点a的第一三角形面片相交;步骤b:将所述第一三角形面片的索引信息存入数组0中,并标记所述第一三角形面片;步骤c:获取所述第一三角形面片两侧的邻面中,与所述平面c相交且未被标记的第一邻面,将所述第一邻面的索引信息存入所述数组0中,并标记所述第一邻面;步骤d:获取所述第一邻面的邻面中,与所述平面c相交且未被标记的第二邻面,将所述第二邻面的索引信息存入所述数组0中,并标记所述第二邻面;步骤e:将所述第二邻面作为新的第一邻面,循环执行所述步骤d,直至两所述第二邻面重合;步骤f:将所述数组0中 保存的三角形面片组成血管圆环a0;步骤g:将数组n中的三角形面片的邻面中沿所述向量扩展的邻面的索引信息存入数组n+1中,并将所述数组n+1中保存的三角形面片组成血管圆环an+1,n为非负整数,且n的初始值为0;步骤h:若数组n+1中包含所述第二端点b所在的三角形面片,则执行步骤i;若数组n+1中不包含所述第二端点b所在的三角形面片,则将n加1,并返回执行所述步骤g;步骤i:将所述数组0~数组n+1对应组成的血管圆环a0~血管圆环an+1组成所述目标血管段。

在一实施例中,若第一端点a的坐标为(xa,ya,za),第二端点b的坐标为(xb,yb,zb),则所述平面c的方程表示为:(x-xa)nx+(y-ya)ny+(z-za)nz=0,其中,(nx,ny,nz)是向量的方向向量:

在一实施例中,上述的根据各所述血管圆环中三角形面片的顶点与各自的中心点的相对位置编辑所述目标血管段,包括:根据各所述血管圆环上的顶点p及中心点cn的位置确定由顶点p向中心点cn的向量根据公式p=p+tpcn,t∈(0,1)使点p沿着的方向移动t*l大小的距离,使所述血管圆环an向中心点cn的方向移动。

本发明实施例还提供一种血管数字模型的编辑系统,该编辑系统包括:三角形面片获取单元,用于获取血管数字模型的多个三角形面片;邻接面信息获取单元,用于分析并获取各所述三角形面片的邻接面信息;索引信息确定单元,用于接收用户在屏幕坐标中选择的第一点及第二点,并分别确定所述第一点及第二点对应的血管数字模型中的第一端点、第二端点及所在的三角形面片的索引信息;目标血管段确定单元,用于根据所述第一端点、第二端点所在的三角形面片的索引信息及邻接面信息确定多个血管圆环组成的目标血管段;中心点确定单元,用于根据各所述血管圆环中三角形面片的中点确定各所述血管圆环的中心点;目标血管段编辑单元,用于根据各所述血管圆环中三角形面片的顶点与各自的中心点的相对位置编辑所述目标血管段。

在一实施例中,上述的邻接面信息获取单元具体用于:对于所述血管数字模型上的每个顶点vi,获取所述血管数字模型上所有包含所述顶点vi的三角形面片,并将其面索引信息存入与各所述顶点vi对应的数组ai中,其中,i为正整数;对所述血管数字模型上的每一个三角形面片ti的每一个顶点vj,在所述顶点vj对应的数组aj中获取包含所述三角形面片ti的下一个顶点a(j+1)%3的三角形面片t′i的面索引信息;将所述三角形面片t′i的面索引信息存入与所述三角形面片ti对应的数组bi中,所述数组bi为所述三角形面片ti所邻接的三角形面片的索引信息,其中,j=0,1,2。

在一实施例中,上述的索引信息确定单元具体用于:接收用户在屏幕坐标中选择的第一点及第二点,将所述第一点及第二点在屏幕坐标系中的坐标转化至三维空间坐标中,生成第一点三维坐标及第二点三维坐标;确定所述第一点三维坐标及第二点三维坐标分别与虚拟基准坐标组成的第一射线及第二射线;将所述第一射线与所述血管数字模型中三角形面片的交集作为所述第一端点,将所述第二射线与所述血管数字模型中三角形面片的交集作为所述第二端点,并获取所述第一端点及第二端点所在的三角形面片的索引信息。

在一实施例中,上述的将所述第一射线与所述血管数字模型中三角形面片的交集作为所述第一端点,将所述第二射线与所述血管数字模型中三角形面片的交集作为所述第二端点,包括:通过八叉树分割法对所述血管数字模型进行分割,将所述血管数字模型划分为多个子空间,各所述子空间中三角形面片的数量小于一阈值;所述第一射线与子空间中的三角形面片的交集为所述第一端点,所述第二射线与子空间中的三角形面片的交集为所述第二端点。

在一实施例中,上述的目标血管段确定单元具体用于执行以下步骤:步骤a:第一端点a及第二端点b构成向量确定过所述第一端点a且垂直于所述向量的平面c,所述平面c与包含所述第一端点a的第一三角形面片相交;步骤b:将所述第一三角形面片的索引信息存入数组0中,并标记所述第一三角形面片;步骤c:获取所述第一三角形面片两侧的邻面中,与所述平面c相交且未被标记的第一邻面,将所述第一邻面的索引信息存入所述数组0中,并标记所述第一邻面;步骤d:获取所述第一邻面的邻面中,与所述平面c相交且未被标记的第二邻面,将所述第二邻面的索引信息存入所述数组0中,并标记所述第二邻面;步骤e:将所述第二邻面作为新的第一邻面,循环执行所述步骤d,直至两所述第二邻面重合;步骤f:将所述数组0中保存的三角形面片组成血管圆环a0;步骤g:将数组n中的三角形面片的邻面中沿所述向量扩展的邻面的索引信息存入数组n+1中,并将所述数组n+1中保存的三角形面片组成血管圆环an+1,n为非负整数,且n的初始值为0;步骤h:若数组n+1中包含所述第二端点b所在的三角形面片,则执行步骤i;若数组n+1中不包含所述第二端点b所在的三角形面片,则将n加1,并返回执行所述步骤g;步骤i:将所述数组0~数组n+1对应组成的血管圆环a0~血管圆环an组成所述目标血管段。

在一实施例中,若第一端点a的坐标为(xa,ya,za),第二端点b的坐标为 (xb,yb,zb),则所述平面c的方程表示为:(x-xa)nx+(y-ya)ny+(z-za)nz=0,其中,(nx,ny,nz)是向量的方向向量:

在一实施例中,上述的目标血管段编辑单元具体用于:根据各所述血管圆环上的顶点p及中心点cn的位置确定由顶点p向中心点cn的向量根据公式p=p+tpcn,t∈(0,1)使点p沿着的方向移动t*l大小的距离,使所述血管圆环an向中心点cn的方向移动。

本发明实施例的有益效果在于,通过本发明实施例,可对现有的血管数字模型在任何位置添加血管病变情况,并且可以控制病变部位的病变范围以及病变程度。本发明实施例的血管数字模型的编辑方法及系统对血管数字模型进行编辑,可以极大的丰富虚拟手术领域可采用的病例模型库。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为根据本发明实施例的血管数字模型的编辑方法的流程图;

图2为根据本发明实施例的血管网格模型示意图;

图3为根据本发明实施例的三角形面片不同邻面数量示意图;

图4a及图4b为根据本发明实施例的射线与血管数字模型求交选取三角形面片过程示意图;

图5为根据本发明实施例的迭代寻找目标血管段的三角形面片过程示意图;

图6为根据本发明实施例的求取血管圆环中心点过程示意图;

图7为根据本发明实施例的目标血管段的血管圆环编辑过程示意图;

图8为根据本发明实施例的目标血管段狭窄编辑结果示意图;

图9为根据本发明另一实施例的血管瘤编辑示意图;

图10为根据本发明实施例的血管数字模型的编辑的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例提供一种血管数字模型的编辑方法和系统。以下结合附图对本发明进行详细说明。

本发明实施例提供一种血管数字模型的编辑方法,如图1所示,该编辑方法主要包括以下各步骤:

步骤s101:获取血管数字模型的多个三角形面片;

步骤s102:分析并获取各三角形面片的邻接面信息;

步骤s103:接收用户在屏幕坐标中选择的第一点及第二点,并分别确定第一点及第二点对应的血管数字模型中的第一端点、第二端点及所在的三角形面片的索引信息;

步骤s104:根据第一端点、第二端点所在的三角形面片的索引信息及邻接面信息确定多个血管圆环组成的目标血管段;

步骤s105:根据各血管圆环中三角形面片的中点确定各血管圆环的中心点;

步骤s106:根据各血管圆环中三角形面片的顶点与各自的中心点的相对位置编辑目标血管段。

通过上述步骤s101至步骤s106,本发明实施例的血管数字模型的编辑方法,可对现有的血管数字模型在任何位置添加血管病变情况,并且可以控制病变部位的病变范围以及病变程度。本发明实施例的血管数字模型的编辑方法的操作步骤简单,容易上手。本发明实施例的血管数字模型的编辑方法对血管数字模型进行编辑,可以极大的丰富虚拟手术领域可采用的病例模型库。

以下结合具体示例对本发明实施例的血管数字模型的编辑方法进行详细说明。

上述步骤s101,获取血管数字模型的多个三角形面片。

血管数字模型(网格模型)由小的三角形面片组成,如图2所示,每个三角形面片有1至3个邻面。如图3所示,当模型非闭合且三角形面片位于开口边缘时,有1个(图中白色三角形)或者2个邻面(图中灰色三角形),否则有3个邻面(图中黑 色三角形)。虚拟手术中所采用的模型文件多为obj或stl格式,而该文件格式只提供组成血管模型的顶点信息以及三角形面片组装时必要的顶点索引信息,并不提供每个三角形面片的邻面信息。因此,需首先计算索引为i的三角形面片的邻面信息。

步骤s102,分析并获取各三角形面片的邻接面信息。

计算三角形的邻面信息,主要分为以下两个步骤:

1、对组成血管数字模型的每个顶点vi,找出所有包含该顶点的三角形面片的索引,将其放在与每个顶点对应的数组ai中。

2、血管数组模型上的任意三角形面片ti,对该三角形面片上的每一个顶点vj(j=0,1,2),在其对应的数组aj中寻找包含该三角形面片下一个顶点a(j+1)%3的三角形的索引,并将该索引放到ti对应的数组bi中。最后数组bi中的结果就是三角形面片ti所邻接的三角形面片的索引。

步骤s103,接收用户在屏幕坐标中选择的第一点及第二点,并分别确定第一点及第二点对应的血管数字模型中的第一端点、第二端点及所在的三角形面片的索引信息。

用户可以通过鼠标点选的方式,在待处理的血管数组模型上选取两个位置:端点a和端点b。端点a和端点b之间的血管段即是在后续处理过程中进行编辑的目标血管段。

三维血管数字模型的可视化是将三维空间的几何数据变换到二维空间的显示屏幕上。从二维到三维的映射经历了物体坐标系、世界坐标系、相机坐标系、裁剪坐标系和屏幕坐标系等一系列坐标系的矩阵变换。用户在二维的屏幕上看到的血管模型是从物体坐标系到屏幕坐标系的坐标变换的结果。

当用户在二维屏幕上进行鼠标点选时,选取的是屏幕坐标系上的点,因此需要确定用户选取的该点究竟位于血管模型的哪一个三角形面片上。假设用户点选的点坐标为p(x,y),经过逆向的坐标变换,可将该点变换到世界坐标系中的点pw(xw,yw,zw)上。然而,只通过该点的位置来确定其所在的三角形面片是十分困难的。根据计算机图形学基础可知,屏幕上的每一个像素点实际上都对应着从“虚拟相机”的虚拟基准坐标发出的到血管数字模型的一条射线。因此,如图4a及图4b所示,根据点pw(xw,yw,zw)和“虚拟相机”在世界坐标系中的虚拟基准坐标pwc(xwc,ywc,zwc),可以得到一条射线,计算这条射线与哪个三角形面片相交,从而获取相交三角形面片的索引。

组成血管数字模型的三角形面片数量往往是十分庞大的,采用射线与每一个三角形面片迭代求交的方法是十分耗时的,而且随着三角形面片数量的增加,其时间消耗成线性增长。为了提高这种相交检测的速度,可将组成血管数字模型的三角形面片进行八叉树空间分割,即把包围了血管数字模型的三维空间分割成与坐标平面平行的八个子空间,然后递归地把每个子空间继续分割,直至八叉树的深度达到指定值或者每个子空间内的三角形数量达到某指定值。其中,八叉树的深度的指定值一般在5~10之间,具体数值根据模型复杂度而定;每个子空间内的三角形数量的指定值一般10~20之间,同样依模型复杂度不同而浮动,本发明并不以此为限。建立八叉树之后再进行射线与三角形面片的求交检测可以快速排除大量的不可能相交的三角形面片子集,从而达到快速计算的目的。

步骤s104,根据第一端点、第二端点所在的三角形面片的索引信息及邻接面信息确定多个血管圆环组成的目标血管段。

1、寻找目标血管段内的所有三角形。

如图5所示,将上述步骤s103确定的包含端点a及端点b的血管段截取出来,将其剖开,平铺在一个平面上。在用户指定的始末位置的端点a及端点b在其所在的三角形面片中标注出来。更精确地,可将端点a及端点b分别定位于对应三角形面片的中心处。由端点a到端点b可以得到一个向量必定存在一平面c过端点a且垂直于向量假设a点坐标为(xa,ya,za),b点坐标为(xb,yb,zb),那么该平面c的方程可表示为:

(x-xa)nx+(y-ya)ny+(z-za)nz=0

其中,(nx,ny,nz)是向量的方向向量:

平面c必定与血管的多个三角形面片相交,且包含a点的三角形必定是其中之一。首先将a所在的三角形面片的索引放入数组0中,并给该三角形面片做标记,表示已经对其进行过相交检测。然后获取a点的邻面,并将其与平面c求交,如果相交且该面未被标记过,那么该面的索引同样应该放入数组0中,并进行标记。如图5所示,该过程同时向a的左右两侧两个方向展开,当两个方向相遇时(即没有新的面索引加入数组0时),循环结束。此时,数组0中保存的三角形面片组成了血管的 一个血管圆环,该血管圆环包含点a,且该血管圆环上的所有三角形面片与面c相交。

然后,以数组0中的三角形面片为基础,一环一环地沿着向量的方向寻找三角形面片,直到找到的血管圆环中包含b点所在的三角形面片为止。

具体地,对数组0中的三角形面片,可寻找到的邻面组成的血管圆环有两个,一个在平面c的上方(向量)的方向,另一个在平面c的下方。将位于c上方的血管圆环中的所有三角形面片的索引放入数组1中,并检测数组1中是否包含b点所在的三角形面片,如果包含,那么数组0和数组1中的所有三角面片即为目标血管段的三角形面片;如果不包含,那么就以数组1中的三角形面片为基础继续沿着向量的方向寻找,直到数组i中包含b点所在的三角形面片为止。值得注意的一点是,每次找到一个三角形并加入对应的数组中时,都需要将该三角形面片进行标记。通过这种方法,从数组1开始寻找邻面时,只要对该标记进行检测就可以剔除一个方向上的环,剩下的环必定是沿着向量扩展的。也就是说,血管圆环与平面c的方向判断只在数组0时进行一次。

当所有三角形面片都被找到时,得到数组0,数组1,…,数组i,一共i个索引数组。每个数组内的三角形面片分别组成一个血管圆环,这些血管圆环连接成了目标血管段。

步骤s105,根据各血管圆环中三角形面片的中点确定各血管圆环的中心点。

如图6所示,对每一个血管圆环,可以计算得到组成该血管圆环的每个三角形面片的中点(图中圆点所示)。对这些中点求平均可以得到该血管圆环的中心点ci。每个血管圆环都有这样一个中心点,将i个中心点连接起来,即可得到该目标血管段的中心线。

步骤s106,根据各血管圆环中三角形面片的顶点与各自的中心点的相对位置编辑目标血管段。

在上述步骤s105获取i个血管圆环的中心点位置ci。对每个血管圆环上三角形面片的顶点p,存在由顶点p向中心点ci的向量的长度为l,如图7所示,根据公式:p=p+tpci,t∈(0,1)让点p沿着的方向移动t*l大小的距离,即可让该血管圆环上向中心的方向移动,从而可形成血管狭窄的效果,如图8中(a)、(b)、(c)三组对比图所示。

由于相邻的两个血管圆环之间共享某些顶点,对同一个顶点进行两次移动会造成错误的结果,因此,需要对顶点p进行标记。如此在对每个顶点进行移动之前,检测该标记,如果已标记,则不必再移动,否则进行移动。

并且,可以通过参数t来使血管的收缩显得比较平滑,不突兀。靠近边缘位置(目标血管段的始末位置)的血管圆环可以采用较小的t值,随着远离边缘位置,t值增加。

由以上内容可知,本发明实施例的血管数字模型的编辑方法可以在血管的任意位置生成狭窄程度不同的病变,且狭窄部位与健康部分的过渡相对平滑,不突兀。

在另一实施例中,本发明同样可以用于血管其他病变部位的选取和编辑。以血管瘤为例,如图9所示,在血管瘤与血管的接合处选择起始点a,沿着与血管方向垂直并指向血管瘤内部的方向在血管瘤上取任意一点b,则可以确定与一个平面,该平面沿着血管壁将血管瘤整个切割,获取与该平面相交的所有三角形面片,并沿着指向血管瘤的方向寻找邻面,即可获取所有组成血管瘤的三角形面片。根据选取到的所有三角形面片计算血管瘤的中心点之后,可以通过控制血管瘤上各顶点与中心点的相对位置,达到对血管瘤的半径进行缩放的目的。可见,通过本发明实施例提供的血管数字模型的编辑方法,可以修改已经存在的血管瘤病变的病变程度(血管瘤的大小)。

本发明实施例还提供一种血管数字模型的编辑系统,如图10所示,该编辑系统主要包括:三角形面片获取单元1、邻接面信息获取单元2、索引信息确定单元3、目标血管段确定单元4、中心点确定单元5及目标血管段编辑单元6等。

其中,三角形面片获取单元1,用于获取血管数字模型的多个三角形面片;邻接面信息获取单元2,用于分析并获取各三角形面片的邻接面信息;索引信息确定单元3,用于接收用户在屏幕坐标中选择的第一点及第二点,并分别确定第一点及第二点对应的血管数字模型中的第一端点、第二端点及所在的三角形面片的索引信息;目标血管段确定单元4,用于根据第一端点、第二端点所在的三角形面片的索引信息及邻接面信息确定多个血管圆环组成的目标血管段;中心点确定单元5,用于根据各血管圆环中三角形面片的中点确定各血管圆环的中心点;目标血管段编辑单元6,用于根据各血管圆环中三角形面片的顶点与各自的中心点的相对位置编辑目标血管段。

通过上述各组成部分,本发明实施例的血管数字模型的编辑系统,可对现有的血管数字模型在任何位置添加血管病变情况,并且可以控制病变部位的病变范围以及病 变程度。本发明实施例的血管数字模型的编辑系统对血管数字模型进行编辑,可以极大的丰富虚拟手术领域可采用的病例模型库。

以下结合具体示例对本发明实施例的血管数字模型的编辑系统中的各组成部分进行详细说明。

上述三角形面片获取单元1,用于获取血管数字模型的多个三角形面片。

血管数字模型(网格模型)由小的三角形面片组成,如图2所示,每个三角形面片有1至3个邻面。如图3所示,当模型非闭合且三角形面片位于开口边缘时,有1个(图中白色三角形)或者2个邻面(图中灰色三角形),否则有3个邻面(图中黑色三角形)。虚拟手术中所采用的模型文件多为obj或stl格式,而该文件格式只提供组成血管模型的顶点信息以及三角形面片组装时必要的顶点索引信息,并不提供每个三角形面片的邻面信息。因此,需首先计算索引为i的三角形面片的邻面信息。

邻接面信息获取单元2,用于分析并获取各三角形面片的邻接面信息。

计算三角形的邻面信息,主要分为以下两个步骤:

1、对组成血管数字模型的每个顶点vi,找出所有包含该顶点的三角形面片的索引,将其放在与每个顶点对应的数组ai中。

2、血管数组模型上的任意三角形面片ti,对该三角形面片上的每一个顶点vj(j=0,1,2),在其对应的数组aj中寻找包含该三角形面片下一个顶点a(j+1)%3的三角形的索引,并将该索引放到ti对应的数组bi中。最后数组bi中的结果就是三角形面片ti所邻接的三角形面片的索引。

索引信息确定单元3,用于接收用户在屏幕坐标中选择的第一点及第二点,并分别确定第一点及第二点对应的血管数字模型中的第一端点、第二端点及所在的三角形面片的索引信息。

用户可以通过鼠标点选的方式,在待处理的血管数组模型上选取两个位置:端点a和端点b。端点a和端点b之间的血管段即是在后续处理过程中进行编辑的目标血管段。

三维血管数字模型的可视化是将三维空间的几何数据变换到二维空间的显示屏幕上。从二维到三维的映射经历了物体坐标系、世界坐标系、相机坐标系、裁剪坐标系和屏幕坐标系等一系列坐标系的矩阵变换。用户在二维的屏幕上看到的血管模型是从物体坐标系到屏幕坐标系的坐标变换的结果。

当用户在二维屏幕上进行鼠标点选时,选取的是屏幕坐标系上的点,因此需要确定用户选取的该点究竟位于血管模型的哪一个三角形面片上。假设用户点选的点坐标为p(x,y),经过逆向的坐标变换,可将该点变换到世界坐标系中的点pw(xw,yw,zw)上。然而,只通过该点的位置来确定其所在的三角形面片是十分困难的。根据计算机图形学基础可知,屏幕上的每一个像素点实际上都对应着从“虚拟相机”的虚拟基准坐标发出的到血管数字模型的一条射线。因此,如图4a及图4b所示,根据点pw(xw,yw,zw)和“虚拟相机”在世界坐标系中的虚拟基准坐标pwc(xwc,ywc,zwc),可以得到一条射线,计算这条射线与哪个三角形面片相交,从而获取相交三角形面片的索引。

组成血管数字模型的三角形面片数量往往是十分庞大的,采用射线与每一个三角形面片迭代求交的方法是十分耗时的,而且随着三角形面片数量的增加,其时间消耗成线性增长。为了提高这种相交检测的速度,可将组成血管数字模型的三角形面片进行八叉树空间分割,即把包围了血管数字模型的三维空间分割成与坐标平面平行的八个子空间,然后递归地把每个子空间继续分割,直至八叉树的深度达到指定值或者每个子空间内的三角形数量达到某指定值。其中,八叉树的深度的指定值一般在5~10之间,具体数值根据模型复杂度而定;每个子空间内的三角形数量的指定值一般10~20之间,同样依模型复杂度不同而浮动,本发明并不以此为限。建立八叉树之后再进行射线与三角形面片的求交检测可以快速排除大量的不可能相交的三角形面片子集,从而达到快速计算的目的。

目标血管段确定单元4,用于根据第一端点、第二端点所在的三角形面片的索引信息及邻接面信息确定多个血管圆环组成的目标血管段。

1、寻找目标血管段内的所有三角形。

如图5所示,将上述索引信息确定单元3确定的包含端点a及端点b的血管段截取出来,将其剖开,平铺在一个平面上。在用户指定的始末位置的端点a及端点b在其所在的三角形面片中标注出来。更精确地,可将端点a及端点b分别定位于对应三角形面片的中心处。由端点a到端点b可以得到一个向量必定存在一平面c过端点a且垂直于向量假设a点坐标为(xa,ya,za),b点坐标为(xb,yb,zb),那么该平面c的方程可表示为:

(x-xa)nx+(y-ya)ny+(z-za)nz=0

其中,(nx,ny,nz)是向量的方向向量:

平面c必定与血管的多个三角形面片相交,且包含a点的三角形必定是其中之一。首先将a所在的三角形面片的索引放入数组0中,并给该三角形面片做标记,表示已经对其进行过相交检测。然后获取a点的邻面,并将其与平面c求交,如果相交且该面未被标记过,那么该面的索引同样应该放入数组0中,并进行标记。如果图5所示,该过程同时向a的左右两侧两个方向展开,当两个方向相遇时(即没有新的面索引加入数组0时),循环结束。此时,数组0中保存的三角形面片组成了血管的一个血管圆环,该血管圆环包含点a,且该血管圆环上的所有三角形面片与面c相交。

然后,以数组0中的三角形面片为基础,一环一环地沿着向量的方向寻找三角形面片,直到找到的血管圆环中包含b点所在的三角形面片为止。

具体地,对数组0中的三角形面片,可寻找到的邻面组成的血管圆环有两个,一个在平面c的上方(向量)的方向,另一个在平面c的下方。将位于c上方的血管圆环中的所有三角形面片的索引放入数组1中,并检测数组1中是否包含b点所在的三角形面片,如果包含,那么数组0和数组1中的所有三角面片即为目标血管段的三角形面片;如果不包含,那么就以数组1中的三角形面片为基础继续沿着向量的方向寻找,直到数组i中包含b点所在的三角形面片为止。值得注意的一点是,每次找到一个三角形并加入对应的数组中时,都需要将该三角形面片进行标记。通过这种方法,从数组1开始寻找邻面时,只要对该标记进行检测就可以剔除一个方向上的环,剩下的环必定是沿着向量扩展的。也就是说,血管圆环与平面c的方向判断只在数组0时进行一次。

当所有三角形面片都被找到时,得到数组0,数组1,…,数组i,一共i个索引数组。每个数组内的三角形面片分别组成一个血管圆环,这些血管圆环连接成了目标血管段。

中心点确定单元5,用于根据各血管圆环中三角形面片的中点确定各血管圆环的中心点。

如图6所示,对每一个血管圆环,可以计算得到组成该血管圆环的每个三角形面片的中点(图中圆点所示)。对这些中点求平均可以得到该血管圆环的中心点ci。每 个血管圆环都有这样一个中心点,将i个中心点连接起来,即可得到该目标血管段的中心线。

目标血管段编辑单元6,用于根据各血管圆环中三角形面片的顶点与各自的中心点的相对位置编辑目标血管段。

在上述中心点确定单元5获取i个血管圆环的中心点位置ci。对每个血管圆环上三角形面片的顶点p,存在由顶点p向中心点ci的向量的长度为l,如图7所示,根据公式:p=p+tpci,t∈(0,1)让点p沿着的方向移动t*l大小的距离,即可让该血管圆环上向中心的方向移动,从而可形成血管狭窄的效果,如图8中(a)、(b)、(c)三组对比图所示。

由于相邻的两个血管圆环之间共享某些顶点,对同一个顶点进行两次移动会造成错误的结果,因此,需要对顶点p进行标记。如此在对每个顶点进行移动之前,检测该标记,如果已标记,则不必再移动,否则进行移动。

并且,可以通过参数t来使血管的收缩显得比较平滑,不突兀。靠近边缘位置(目标血管段的始末位置)的血管圆环可以采用较小的t值,随着远离边缘位置,t值增加。

由以上内容可知,本发明实施例的血管数字模型的编辑系统可以在血管的任意位置生成狭窄程度不同的病变,且狭窄部位与健康部分的过渡相对平滑,不突兀。

在另一实施例中,本发明同样可以用于血管其他病变部位的选取和编辑。以血管瘤为例,如图9所示,在血管瘤与血管的接合处选择起始点a,沿着与血管方向垂直并指向血管瘤内部的方向在血管瘤上取任意一点b,则可以确定与一个平面,该平面沿着血管壁将血管瘤整个切割,获取与该平面相交的所有三角形面片,并沿着指向血管瘤的方向寻找邻面,即可获取所有组成血管瘤的三角形面片。根据选取到的所有三角形面片计算血管瘤的中心点之后,可以通过控制血管瘤上各顶点与中心点的相对位置,达到对血管瘤的半径进行缩放的目的。可见,通过本发明实施例提供的血管数字模型的编辑系统,可以修改已经存在的血管瘤病变的病变程度(血管瘤的大小)。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读取存储介质中,比如rom/ram、磁碟、光盘等。

以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详 细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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