三维虚拟器官的体积计算方法、装置、存储介质及设备与流程

文档序号:15146510发布日期:2018-08-10 20:30阅读:193来源:国知局

本发明涉及计算机技术领域,特别涉及一种三维虚拟器官的体积计算方法、装置、存储介质及设备。



背景技术:

近年来,医生通过计算机辅助手术系统对包含肿瘤等病变组织的三维虚拟器官进行分析,从而制定针对该病变组织的临床手术方案。然而,由于该三维虚拟器官内部的脉管系统较为复杂,医生无法获取到血管与病变组织的三维空间关系,所以,医生只能依靠二维医学影像制定手术方案。

相关技术中,计算机辅助手术系统获取包含肿瘤等病变组织的三维虚拟器官的二维横截面ct(computedtomography,电子计算机断层扫描)图像,再在屏幕上逐张显示二维横截面ct图像,接收用户在每张二维横截面ct图像上利用鼠标绘制的切割曲线,并对所有二维横截面ct图像上的切割曲线进行拟合,得到切割曲面,并将切割曲面两侧的像素点的数量乘以像素点的单位体积,得到病变组织和非病变组织的体积。

由于医生手绘的切割曲面较为粗略,所以,切割曲面切分的两个部分的像素点的数量不准确,导致计算得到的体积不准确。



技术实现要素:

本发明实施例提供了一种三维虚拟器官的体积计算方法、装置、存储介质及设备,用于解决由于切割曲面粗略,导致体积的计算不准确的问题。所述技术方案如下:

第一方面,提供了一种三维虚拟器官的体积计算方法,所述方法包括:

生成与所述三维虚拟器官相交的贝塞尔曲面,由面片组成的所述三维虚拟器官包括被所述贝塞尔曲面分隔的病变组织和非病变组织;

根据在所述贝塞尔曲面上的映射点和与所述映射点映射的所述面片中顶点之间的深度,将所述顶点分类到在所述病变组织的面片中的第一顶点集合或在所述非病变组织的面片中的第二顶点集合中;

计算所述映射点与所述映射点映射的所述面片组成的棱柱的体积;

将所述第一顶点集合中所有顶点对应的体积相加得到所述病变组织的体积,将所述第二顶点集合中所有顶点对应的体积相加得到所述非病变组织的体积。

第二方面,提供了一种三维虚拟器官的体积计算装置,所述装置包括:

生成模块,还用于生成与所述三维虚拟器官相交的贝塞尔曲面,由面片组成的所述三维虚拟器官包括被所述贝塞尔曲面分隔的病变组织和非病变组织;

分类模块,用于根据在所述贝塞尔曲面上的映射点和与所述映射点映射的所述面片中顶点之间的深度,将所述顶点分类到在所述病变组织的面片中的第一顶点集合或在所述非病变组织的面片中的第二顶点集合中;

计算模块,用于计算所述映射点与所述映射点映射的所述面片组成的棱柱的体积;

所述计算模块,还用于将所述第一顶点集合中所有顶点对应的体积相加得到所述病变组织的体积,将所述第二顶点集合中所有顶点对应的体积相加得到所述非病变组织的体积。

第三方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如第一方面所述的三维虚拟器官的体积计算方法。

第四方面,提供了一种三维虚拟器官的体积计算设备,所述三维虚拟器官的体积计算设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如第一方面所述的三维虚拟器官的体积计算方法。

本发明实施例提供的技术方案的有益效果是:

由于生成的是贝塞尔曲面,而贝塞尔曲面是根据控制点生成的,所以,可以避免由用户手动绘制切割曲面时,得到的切割曲面较为粗略,导致体积的计算不准确的问题,以提高体积的准确性。

通过计算顶点在贝塞尔曲面上的映射点与面片组成的棱柱的体积,再将棱柱的体积相加即可得到病变组织的体积和非病变组织的体积,由于面片的数量远远小于像素点的数量,可以提高体积的计算效率。

附图说明

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

图1是本发明一个实施例提供的三维虚拟器官的体积计算方法的方法流程图;

图2是本发明另一实施例提供的三维虚拟器官的体积计算方法的方法流程图;

图3a和3b是本发明另一实施例提供的肝脏的三维虚拟器官的示意图;

图4是本发明另一实施例提供的贝塞尔曲线的示意图;

图5是本发明另一实施例提供的贝塞尔曲面的示意图;

图6是本发明另一实施例提供的贝塞尔曲面和控制杆的示意图;

图7是本发明另一实施例提供的包围盒的示意图;

图8是本发明另一实施例提供的第一种25个控制点的示意图;

图9是本发明另一实施例提供的第二种25个控制点的示意图;

图10a和10b是本发明另一实施例提供的贝塞尔曲面的形变示意图;

图11a至11h是本发明另一实施例提供的在三维虚拟器官中调整贝塞尔曲面的示意图;

图12是本发明一个实施例提供的三维虚拟器官的体积计算装置的结构框图;

图13是本发明再一实施例提供的三维虚拟器官的体积计算装置的结构框图;

图14是本发明一个实施例提供的计算机辅助手术系统的结构框图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

请参考图1,其示出了本发明一个实施例提供的三维虚拟器官的体积计算方法的方法流程图,该三维虚拟器官的体积计算方法可以应用于计算机辅助手术系统中。该三维虚拟器官的体积计算方法,包括:

步骤101,生成与三维虚拟器官相交的贝塞尔曲面,由面片组成的三维虚拟器官包括被贝塞尔曲面分隔的病变组织和非病变组织。

步骤102,根据在贝塞尔曲面上的映射点和与映射点映射的面片中顶点之间的深度,将顶点分类到在病变组织的面片中的第一顶点集合或在非病变组织的面片中的第二顶点集合中。

步骤103,计算映射点与映射点映射的面片组成的棱柱的体积。

步骤104,将第一顶点集合中所有顶点对应的体积相加得到病变组织的体积,将第二顶点集合中所有顶点对应的体积相加得到非病变组织的体积。

综上所述,本发明实施例提供的三维虚拟器官的体积计算方法,由于生成的是贝塞尔曲面,而贝塞尔曲面是根据控制点生成的,所以,可以避免由用户手动绘制切割曲面时,得到的切割曲面较为粗略,导致体积的计算不准确的问题,以提高体积的准确性。

通过计算顶点在贝塞尔曲面上的映射点与面片组成的棱柱的体积,再将棱柱的体积相加即可得到病变组织的体积和非病变组织的体积,由于面片的数量远远小于像素点的数量,可以提高体积的计算效率。

请参考图2,其示出了本发明另一实施例提供的三维虚拟器官的体积计算方法的方法流程图,该三维虚拟器官的体积计算方法可以应用于计算机辅助手术系统中。该三维虚拟器官的体积计算方法,包括:

步骤201,生成与三维虚拟器官相交的贝塞尔曲面,由面片组成的三维虚拟器官包括被贝塞尔曲面分隔的病变组织和非病变组织。

在生成贝塞尔曲面之前,需要先生成包含病变组织的三维虚拟器官,该三维虚拟器官由各个面片组成。其中,病变组织可以是器官中诸如肿瘤之类发生病变的组织。

其中,计算机辅助手术系统可以是对二维的医学图像序列进行三维重建得到的三维虚拟器官。具体地,计算机辅助手术系统可以通过gpu(graphicsprocessingunit,图形处理器)中的着色器生成一系列面片,并将所有的面片拼接成三维虚拟器官。由于gpu的处理能力较强,即,gpu可以处理大量的数据,所以,可以将面片设置得尽可能小,这样,生成的三维虚拟器官会比较光滑。其中,面片可以是三角面片,也可以是其他形状的面片,本实施例不作限定。

请参考图3a和3b,为了便于理解,本实施例以肝脏的三维虚拟器官为例进行说明,图3a是肝脏的线条图,图3b是肝脏的示意图,且三维虚拟器官中肝脏的左下方一块填充部分是病变组织。

在生成三维虚拟器官后,再生成与三维虚拟器官相交的贝塞尔曲面,确定各个面片的任意一个顶点在贝塞尔曲面上的映射点,确定贝塞尔曲面的控制点在贝塞尔曲面上的映射点。

贝塞尔曲面是由两组正交的贝塞尔(bezier)曲线设计形成的。

其中,贝塞尔曲线的定义为:给定空间中的n+1个点p0,p1,…pn,称为n阶的贝塞尔曲线。其中,且i∈[0,n]。p0,p1,…pn为c(t)的控制点,c(t)是对p0,p1,…pn的逼近。为了便于理解,以3阶贝塞尔曲线来举例说明,请参考图4,贝塞尔曲线经过p0和p3,逼近p1和p2。

在了解了贝塞尔曲线后,可以按照贝塞尔混合函数的张量积形式来描述贝塞尔曲面,则贝塞尔曲面的公式为且(u,v)∈[0,1],pi,j为(m+1)×(n+1)个控制点。请参考图5,其示出了一个贝塞尔曲面的示意图。

本实施例中,生成贝塞尔曲面的作用是模拟切割三维虚拟器官中包含的病变组织,以便于医生制定手术方案。所以,计算机辅助手术系统生成的贝塞尔曲面需要与三维虚拟器官相交,以便将病变组织和未病变组织相隔离。

本实施例中,计算机辅助手术系统还可以按照三维虚拟器官的大小生成自适应大小的贝塞尔曲面,避免了贝塞尔曲面太大时不容易修改贝塞尔曲面,贝塞尔曲面太小时不能完全隔离病变组织的问题。下面对生成自适应大小的贝塞尔曲面的流程进行介绍。

具体地,生成与三维虚拟器官相交的贝塞尔曲面,包括如下五个步骤:

步骤2011,根据三维虚拟器官中的面片的坐标计算得到包围盒。

本实施例中,由于三维虚拟器官是计算机辅助手术系统中的gpu生成的,所以,三维虚拟器官中每个面片的顶点的坐标都是已知的。计算机辅助手术系统可以在所有顶点的坐标中查找每个轴向的最小值和最大值,并将三个轴向的最小值作为包围盒的最小点,将三个轴向的最大值作为包围盒的最大点,来生成一个包围盒。

可选的,在生成包围盒之后,计算机辅助手术系统还可以在包围盒的一条对角线上选取中间点,并将中间点到对角线的端点之间的线段显示为控制杆,该控制杆用于更新贝塞尔曲面相交于三维虚拟器官的位置和角度。其中,控制杆的方向可以是任意方向。请参考图6,图中控制杆垂直于贝塞尔曲面。

步骤2012,从位于包围盒的边中选取基准点,并计算基准点的坐标。

当基准点是包围盒的各条边中选取的4个点时,计算机辅助手术系统在包围盒的各条边中选取4个点,由于包围盒的各个顶点坐标是已知的,所以,计算机辅助手术系统可以根据各个顶点坐标计算出这4个点的坐标。

计算机辅助手术系统选取的4个点可以位于同一平面,也可以不在同一平面内,本实施例不作限定。

三维虚拟器官的包围盒可能是任何形状的,本实施例仅以包围盒的形状是正方体为例进行说明,请参考图7,其示出了选择的4个点,且假设这4个点分别是vertex_1、vertex_2、vertex_3、vertex_4。

步骤2013,根据基准点的坐标确定控制点的坐标。

其中,计算机辅助手术系统可以利用pca(principalcomponentanalysis,主元分析法)生成n个控制点,n为正整数,生成过程如下:首先求取点集(vertex_1、vertex_2、vertex_3、vertex_4)的协方差矩阵;再根据协方差矩阵的特征值e_values和对应的特征向量e_vectors,最后,根据控制杆的长度的一半(length)、控制杆的中点的坐标、特征值e_values和特征向量e_vectors和包围盒生成n个控制点。其中,协方差矩阵用于进行降维,使得4个点的坐标由三维坐标降为二维坐标。

在一种实现方式中,可以通过以下代码计算位于原点的控制点的坐标。

glm::vec3corigin_new

=vec3((corigin_old.x-length*e_vector[1].x-length*e_vector[2].x),

(corigin_old.y-length*e_vector[1].y-length*e_vector[2].y),

(corigin_old.z-length*e_vector[1].z-length*e_vector[2].z))

其中,e_vector[1]和e_vector[2]是两个较大的特征向量,即,e_vector[1]可能是x轴、y轴、z轴方向上的向量,且e_values为其在该方向上的数值;e_vector[2]可能是x轴、y轴、z轴方向上的向量,且e_values为其在该方向上的数值.

在得到原点的坐标后,计算机辅助手术系统可以在m×m的网格中等距排列n个控制点,此时网格的长和宽均为控制杆长度的一半(length),计算机辅助手术系统可以通过以下代码计算出剩余n-1个控制点的坐标,m×m=n。

fori1to5do

forj1to5do

ci,j=corigin_new+i*(length/4)*e_vector[1]+j*(length/4)*e_vector[2]

请参考图8,其以n为25为例,示出了25个控制点的位置关系。

步骤2014,设置横坐标u和纵坐标v变化的步长,将u和v按照步长变化,并将每次得到的u、v和n个控制点的坐标输入公式

其中,u和v的变化步长越小,生成的贝塞尔曲面上的点越多,生成的内塞尔曲面越光滑。在一种可能的实现方式中,u和v的变化步长为0.01,本实施例不对步长作限定。

计算机辅助手术系统将各个控制点的坐标和(u,v)输入上述贝塞尔曲面的公式,得到一系列的(x,y,z)的坐标点。

步骤2015,对公式输出的各个坐标点进行渲染,得到贝塞尔曲面。

计算机辅助手术系统将这一些列离散的(x,y,z)的坐标点按照顺序生成各个面片,再对所有的面片进行渲染,得到贝塞尔曲面。

由于这部分的计算量较大,为了保证显示的实时性,可以通过gpu生成贝塞尔曲面。

在生成贝塞尔曲面后,由于贝塞尔曲面的部分控制点在贝塞尔曲面的上方,所以,还需要确定贝塞尔曲面的控制点在贝塞尔曲面上的映射点,包括如下四个步骤:

步骤2016,在m×m的网格中等距排列控制点。

其中,计算机辅助手术系统可以先获取n个控制点,再在m×m的网格中等距排列这n个控制点,其中,m×m=n。

步骤2017,根据网格的顶点坐标计算网格的长度和宽度,并根据长度、宽度和等距的比例关系计算网格中剩余控制点的坐标。

已知第1个控制点的坐标为(u=0,v=0),第5个控制点的坐标为(u=1,v=0),第20个控制点的坐标为(u=0,v=1),第25个控制点的坐标为(u=1,v=1),请参考图9,则可以计算出网格的长度length_u和宽度length_v。当然,n还可以为其他数值,本实施例不作限定。

下面计算网格中剩余n-4个控制点的坐标:

length_u=length(ctrl_points[4]-ctrl_points[0]);length为求长度的函数

length_v=length(ctrl_points[20]-ctrl_points[0]);

un/1=dot(ctrl_points[n]-ctrl_points[0],ctrl_points[4]-ctrl_points[0])/length_u;dot为两向量点乘的函数

vn/1=dot(ctrl_points[n]-ctrl_points[0],ctrl_points[20]-ctrl_points[0])/length_v;

这样,可以得到控制点ctrl_points[n]对应的参数值un和vn,(un,vn)∈[0,1]。

步骤2018,将剩余控制点的坐标分别带入公式

步骤2019,将公式的输出作为映射点。

若将ctrl_points[n]对应的参数值un和vn输入公式,则公式的输出s(un,vn)就是控制点ctrl_points[n]在贝塞尔曲面上的映射点map_points[n]。

在生成贝塞尔曲面后,还可以确定各个面片的任意一个顶点在贝塞尔曲面上的映射点,包括如下四个步骤:

步骤2091,在m×m的网格中等距排列控制点。

步骤2092,根据网格的顶点坐标计算网格的长度和宽度,并根据长度、宽度和等距的比例关系计算面片的任意一个顶点的坐标。

已知第1个控制点的坐标为(u=0,v=0),第5个控制点的坐标为(u=1,v=0),第20个控制点的坐标为(u=0,v=1),第25个控制点的坐标为(u=1,v=1),请参考图9,则可以计算出网格的长length_u和宽length_v。当然,n还可以为其他数值,本实施例不作限定。

下面计算网格中剩余面片的任意一个顶点的坐标:

length_u=length(ctrl_points[4]-ctrl_points[0]);length为求长度的函数

length_v=length(ctrl_points[20]-ctrl_points[0]);

其中一个面片的一个顶点为data_vertex[i]对应的参数值为un和vn,(un,vn)∈[0,1];

则un/1=dot(data_vertex[m]-ctrl_points[0],ctrl_points[4]-ctrl_points[0])/(length_u*length_u);dot为两向量点乘的函数

vn/1=dot(data_vertex[m]-ctrl_points[0],ctrl_points[20]-ctrl_points[0])/(length_v*length_v);

这样,可以得到顶点data_vertex[i]对应的参数值(un,vn)。

步骤2093,将顶点的坐标分别带入公式

步骤2094,将公式的输出作为映射点。

步骤202,根据在贝塞尔曲面上的映射点和与映射点映射的面片中顶点之间的深度,将顶点分类到在病变组织的面片中的第一顶点集合或在非病变组织的面片中的第二顶点集合中。

其中,第一顶点集合包括病变组织的面片中的顶点,第二顶点集合包括非病变组织的面片中的顶点。

根据每个顶点和对应的映射点的深度将顶点分类到第一顶点集合或第二顶点集合中,包括如下四个步骤:

步骤2021,根据面片中的顶点和贝塞尔曲面中最小的控制点生成第一向量,并计算第一向量在贝塞尔曲面的法向量上的第一投影长度。

其中,法向量即为控制杆的方向向量,假设法向量为(1.0,0.0,0.0),代表法向量是x轴。

假设贝塞尔曲面中最小的控制点是控制点0,记为ctrl_points[0],顶点为data_vertex[m],法向量为plane_normal,则第一向量为e_vertex[m]=data_vertex[m]-ctrl_points[0],第一投影长度为distance_vertex[m]=dot(e_vertex[m],plane_normal)。

步骤2022,根据映射点和控制点生成第二向量,并计算第二向量在法向量上的第二投影长度。

假设顶点的映射点为e_map_vertex[m],则第二向量为e_map_vertex[m]=map_vertex[m]-ctrl_points[0],第二投影长度为distance_map_vertex[m]=dot(e_map_vertex[m],plane_normal)。

步骤2023,当第一投影长度小于第二投影长度时,将顶点分类到第一顶点集合中。

步骤2024,当第一投影长度大于第二投影长度时,将顶点分类到第二顶点集合中。

在实现时,将顶点分类到不同的第一顶点集合和第二顶点集合,可以通过对顶点设置标记实现,本实施例不对标记的形式作限定。在一种实现方式中,假设标记为0和1,且将顶点标记为0指示顶点属于第一顶点集合,将顶点标记为1指示顶点属于第二顶点集合。

本实施例仅以对顶点进行分类为了进行举例说明,还可以对顶点所属的面片进行分类,本实施例不作限定。

步骤203,计算映射点与该映射点映射的面片组成的棱柱的体积。

当面片是三角面片时,棱柱是三棱柱,本实施例不对棱柱的形状作限定。

具体地,计算映射点与该映射点映射的面片组成的棱柱的体积,包括如下五个步骤:

步骤2031,根据映射点映射的面片的边计算面片的法向量surf。

由于面片中的各个顶点是顺序排列的,比如,当面片是三角面片时,按顺序排列的三个顶点分别是data_vertex[m]、data_vertex[m+1]和data_vertex[m+2]。

计算机辅助手术系统可以计算三角面片任一两边组成的向量,例如,direction_1=data_vertex[m+1]-data_vertex[m];direction_2=data_vertex[m+2]-data_vertex[m+1],则三角面片的法向量surf=cross(direction_1,direction_2)。

步骤2032,根据公式0.5*dot(surf,direction)计算棱柱的体积,dot是两向量点乘的函数,direction是映射点与顶点的连线长度。

以三棱柱为例,则三棱柱的实际体积volume_prism=0.5*dot(surf,direction)=0.5*|surf|*|direction|*cos<surf,direction>。

步骤2033,将棱柱的体积转化为单位像素的体积的倍数。

以器官是肝脏为例,则肝脏的体积单位是ml,而棱柱的体积单位是mm3,所以,计算机辅助手术系统还需要将棱柱的体积单位转化为肝脏的体积单位。

volume_prism_liver=volume_prism/1000*unit_volume;其中,unit_volume为任意医学图像求取的对应的单位像素的肝脏体积。

步骤2034,当面片的法向量与贝塞尔曲面的法向量的方向相同时,将倍数的正值作为棱柱最终的体积。

比如,当倍数是4,且面片的法向量和贝塞尔曲面的法向量的方向相同时,确定棱柱的体积是+4。

步骤2035,当面片的法向量与贝塞尔曲面的法向量的方向相反时,将倍数的负值作为棱柱最终的体积。

比如,当倍数是4,且面片的法向量和贝塞尔曲面的法向量的方向相反时,确定棱柱的体积是-4。

可选的,由于贝塞尔曲面可能和一些面片相交,所以,需要避免对这些面片对应的棱柱体积的计算。则在根据顶点所属的面片的边计算面片的法向量surf之前,还包括:根据顶点和映射点生成向量;当向量的模大于预设阈值时,触发执行根据映射点映射的面片的边计算面片的法向量surf的步骤。

面片的顶点data_vertex[m]与映射点map_vertex[m]组成的向量为direction=map_vertex[m]-data_vertex[m],可以计算该向量的模length(direction),若该模大于预设阈值,则说明该面片未与贝塞尔曲面相交,计算该面片对应的棱柱的体积;若该模小于预设阈值,则说明该面片与贝塞尔曲面相交,忽略该面片,继续选取下一个面片。在一种可能的实现方式中,预设阈值为0.001,本实施例不对预设阈值作限定。

步骤204,将第一顶点集合中所有顶点对应的体积相加得到病变组织的体积,将第二顶点集合中所有顶点对应的体积相加得到非病变组织的体积。

步骤205,读取当前时刻三维虚拟器官的显示状态参数。

显示状态参数可以根据用户触发的切换操作进行切换。比如,当前的显示状态参数用于指示显示病变组织的面片,且接收到用户触发的切换操作,则将显示状态参数切换为用于指示隐藏病变组织的面片;当前的显示状态参数用于指示隐藏病变组织的面片,且接收到用户触发的切换操作,则将显示状态参数切换为用于指示显示病变组织的面片。

在具体实现时,可以预先设置状态的数值的含义,比如,当状态为0时,隐藏病变组织的面片,当状态为1时,显示病变组织的面片。再根据切换操作设置显示状态参数的状态的数值,并将状态的数值输入gpu中的片元着色器中。

其中,相邻两次切换操作可以相同也可以不同,本实施例不作限定。在一种可能的实现方式中,切换操作可以是双击鼠标的操作。

步骤206,当显示状态参数用于指示显示病变组织的面片时,显示贝塞尔曲面、病变组织的体积、非病变组织的体积,并以不同方式显示病变组织的面片和非病变组织的面片,显示映射点,并隐藏控制点,执行步骤208。

当状态的数值为1时,片元着色器渲染病变组织的面片。此时,计算机辅助手术系统显示贝塞尔曲面,并以第一显示效果显示病变组织的面片,以第二显示效果显示非病变组织的面片,显示映射点,并隐藏控制点,第一显示效果与第二显示效果不同。

第一显示效果和第二显示效果可以是显示颜色不同,比如,第一显示效果的颜色是三维虚拟器官本身的颜色,第二显示效果的颜色是紫色。当然,还可以从其他方面区分第一显示效果和第二显示效果,本实施例不作限定。

步骤207,当显示状态参数用于指示隐藏病变组织的面片时,显示贝塞尔曲面、病变组织的体积、非病变组织的体积,显示非病变组织的面片和映射点,并隐藏病变组织的面片和控制点,执行步骤208。

当状态的数值为0时,片元着色器不渲染病变组织的面片。此时,计算机辅助手术系统显示贝塞尔曲面,并显示非病变组织的面片和映射点,隐藏病变组织的面片和控制点。

由于只显示贝塞尔曲面上的映射点,而隐藏位于贝塞尔曲面上方的控制点,这样,秉着所见即所得的原则,用户只要将某个映射点往某个方向上移动,即等同于将该映射点对应的控制点往该方向上移动,实现双点联动,可以根据移动的情况重新生成贝塞尔曲面。而在没有生成映射点时,用户只能通过位于贝塞尔曲面上方的控制点来修改贝塞尔曲面,而控制点的数量较多且空间位置较为复杂,所以,解决了用户无法准确判断需要移动哪个控制点来修改贝塞尔切割曲线的问题,影响了贝塞尔曲面的生成效率和准确性。

步骤208,计算病变组织与非病变组织的体积百分比,显示体积百分比。

在切除手术中,要保证病变组织在足够大的安全外缘内被完全切除,同时还要考虑最大程度的保留功能性组织。如果病变组织没有完全切除,则会造成病症复发;另一方面,如果切除太多正常区域,剩余功能体积不足,可能引发术后的器官功能衰竭。所以,计算机辅助手术系统还需要计算病变组织的体积和非病变组织的体积,以供用户参考,制定更加安全合理的手术方案。

其中,体积百分比可以包括病变组织的体积与三维虚拟器官总体积的百分比、非病变组织的体积与三维虚拟器官总体积的百分比。

相关技术中,通过像素生成实体的三维虚拟器官,对三维虚拟器官中的所有像素进行分类,再将像素的数量乘以像素的体积来得到病变组织的体积和非病变组织的体积,由于像素的数量非常多,计算过程耗时较多。而本实施例中,计算机辅助手术系统可以通过面片计算体积,可以减少计算耗时,从而实现实时显示体积和体积百分比。

本实施例中,计算机辅助手术系统还可以以不同的显示效果显示病变组织的体积、非病变组织的体积和体积百分比。比如,以不同的颜色显示,此时,可以以紫色显示病变组织的体积和病变组织的体积与三维虚拟器官总体积的百分比,以三维虚拟器官本身的颜色显示非病变组织的体积和非病变组织的体积与三维虚拟器官总体积的百分比。

步骤209,根据三维虚拟器官中的面片的顶点计算得到包围盒。

由于步骤2011中已经生成了包围盒,此时,计算机辅助手术系统可以直接获取该包围盒。或者,计算机辅助手术系统也可以按照步骤2011的生成方式重新生成一个包围盒,本实施例不作限定。

步骤210,在包围盒的一条对角线上选取中间点,并将中间点到对角线的端点之间的线段显示为控制杆。

控制杆的生成方式详见步骤2011中的描述,此处不作赘述。

步骤211,当接收到作用于控制杆的杆身的控制信号时,确定控制信号是位移信号,执行步骤213。

其中,鼠标点击杆身可以上下左右平移更新贝塞尔曲面相交于三维虚拟器官的位置。

步骤212,当接收到作用于控制杆的端点的控制信号时,确定控制信号是角度信号,执行步骤214。

其中,鼠标点击端点可绕端点旋转更新控制贝塞尔曲面相交于三维虚拟器官的角度。

步骤213,当控制信号是位移信号时,更新贝塞尔曲面相交于三维虚拟器官的位置得到目标曲面。

步骤214,当控制信号是角度信号时,更新贝塞尔曲面相交于三维虚拟器官的角度得到目标曲面。

可选的,本实施例还可以不生成控制杆,直接在贝塞尔曲面上更新贝塞尔曲面相交于三维虚拟器官的位置和角度,此时,计算机辅助手术系统接收鼠标在贝塞尔曲面上触发控制信号,根据该控制信号更新该位置和角度。

除了可以通过步骤209-214来更新贝塞尔曲面相交于三维虚拟器官的位置和角度,计算机辅助计算系统还可以接收作用于控制点的映射点的移动信号,根据移动信号更新贝塞尔曲面的形状得到目标曲面。

当控制点的映射点被移动时,相当于控制点被移动,此时需要根据所有的控制点重新生成贝塞尔曲面,生成过程详见上述描述,此处不作赘述。

需要说明的是,本实施例中,可以只更新贝塞尔曲面相交于三维虚拟器官的位置和角度,或者,只更新贝塞尔曲面的形状,还可以既更新贝塞尔曲面相交于三维虚拟器官的位置和角度,也更新贝塞尔曲面的形状,此时不限定这两个更新流程的先后执行顺序。

请参考图10a和图10b,图10a是线条图,图10b是示意图,其示出了移动映射点导致贝塞尔曲面的形变的示意图。

请参考图11a-f,其示出了从生成自适应大小的贝塞尔曲面,并对病变组织进行切割的过程。其中,图11a是生成自适应大小的贝塞尔曲面的线条图,图11b是其示意图;图11c是通过映射点控制贝塞尔曲面形变,使其包裹肝脏左下侧的病变组织,图11d是其示意图;图11e是只保留非病变组织的肝脏的导出结果,图11f是其示意图;图11g是保留病变组织和非病变组织的肝脏的导出结果,图11h是其示意图。

其中,图11b中切除的肝脏的体积是1467.6ml,剩余的肝脏的体积是586.1ml,切除百分比是71.5%;图11d中切除的肝脏的体积是1052.8ml,剩余的肝脏的体积是900.9ml,切除百分比是43.9%;图11f中剩余百分比是45.3%;图11h中剩余百分比是45.3%。

综上所述,本发明实施例提供的三维虚拟器官的体积计算方法,由于生成的是贝塞尔曲面,而贝塞尔曲面是根据控制点生成的,所以,可以避免由用户手动绘制切割曲面时,得到的切割曲面较为粗略,导致体积的计算不准确的问题,以提高体积的准确性。

通过计算顶点在贝塞尔曲面上的映射点与面片组成的棱柱的体积,再将棱柱的体积相加即可得到病变组织的体积和非病变组织的体积,由于面片的数量远远小于像素点的数量,可以提高体积的计算效率。

通过控制杆来更新贝塞尔曲面相交于三维虚拟器官的位置和角度,避免了切割曲面一旦生成就无法调整的问题,从而提高切割曲面的灵活性。

通过实时显示切割得到的体积和体积百分比,以供用户参考,制定更加安全合理的手术方案。

请参考图12,其示出了本发明一个实施例提供的三维虚拟器官的体积计算装置的结构框图,该三维虚拟器官的体积计算装置可以应用于计算机辅助手术系统中。该三维虚拟器官的体积计算装置,包括:

生成模块1201,用于生成与三维虚拟器官相交的贝塞尔曲面,由面片组成的三维虚拟器官包括被贝塞尔曲面分隔的病变组织和非病变组织;

分类模块1202,用于根据在贝塞尔曲面上的映射点和与映射点映射的面片中顶点之间的深度,将顶点分类到在病变组织的面片中的第一顶点集合或在非病变组织的面片上的第二顶点集合中;

计算模块1203,用于计算映射点与映射点映射的面片组成的棱柱的体积;

计算模块1203,还用于将第一顶点集合中所有顶点对应的体积相加得到病变组织的体积,将第二顶点集合中所有顶点对应的体积相加得到非病变组织的体积。

综上所述,本发明实施例提供的三维虚拟器官的体积计算装置,由于生成的是贝塞尔曲面,而贝塞尔曲面是根据控制点生成的,所以,可以避免由用户手动绘制切割曲面时,得到的切割曲面较为粗略,导致体积的计算不准确的问题,以提高体积的准确性。

通过计算顶点在贝塞尔曲面上的映射点与面片组成的棱柱的体积,再将棱柱的体积相加即可得到病变组织的体积和非病变组织的体积,由于面片的数量远远小于像素点的数量,可以提高体积的计算效率。

请参考图13,其示出了本发明再一实施例提供的三维虚拟器官的体积计算装置的结构框图,该三维虚拟器官的体积计算装置可以应用于计算机辅助手术系统中。该三维虚拟器官的体积计算装置,包括:

生成模块1301,用于生成与三维虚拟器官相交的贝塞尔曲面,由面片组成的三维虚拟器官包括被贝塞尔曲面分隔的病变组织和非病变组织;

分类模块1302,用于根据在贝塞尔曲面上的映射点和与映射点映射的面片中顶点之间的深度,将顶点分类到在病变组织的面片中的第一顶点集合或在非病变组织的面片中的第二顶点集合中;

计算模块1303,用于计算映射点与该映射点映射的面片组成的棱柱的体积;

计算模块1303,还用于将第一顶点集合中所有顶点对应的体积相加得到病变组织的体积,将第二顶点集合中所有顶点对应的体积相加得到非病变组织的体积。

可选的,该装置,还包括:读取模块1304,用于读取当前时刻三维虚拟器官的显示状态参数;

显示模块1305,用于当显示状态参数用于指示显示病变组织的面片时,显示贝塞尔曲面、病变组织的体积、非病变组织的体积,并以同方式显示病变组织的面片和非病变组织的面片;当显示状态参数用于指示隐藏病变组织的面片时,显示贝塞尔曲面、病变组织的体积、非病变组织的体积,显示非病变组织的面片,并隐藏病变组织的面片。

可选的,计算模块1303,还用于计算病变组织与非病变组织的体积百分比;

该装置,还包括:显示模块1305,用于显示体积百分比。

可选的,计算模块1303,具体用于:

根据映射点映射的面片的边计算面片的法向量surf;

根据公式0.5*dot(surf,direction)计算棱柱的体积,dot是两向量点乘的函数,direction是映射点与顶点的连线长度;

将棱柱的体积转化为单位像素的体积的倍数;

当面片的法向量与贝塞尔曲面的法向量的方向相同时,将倍数的正值作为棱柱最终的体积;

当面片的法向量与贝塞尔曲面的法向量的方向相反时,将倍数的负值作为棱柱最终的体积。

可选的,计算模块1303,还用于:

在根据映射点映射的面片的边计算面片的法向量surf之前,根据顶点和映射点生成向量;

当向量的模大于预设阈值时,触发执行根据映射点映射的面片的边计算面片的法向量surf的步骤。

可选的,分类模块1302,还用于:

根据面片中的顶点和贝塞尔曲面中最小的控制点生成第一向量,并计算第一向量在贝塞尔曲面的法向量上的第一投影长度;

根据映射点和控制点生成第二向量,并计算第二向量在法向量上的第二投影长度;

当第一投影长度小于第二投影长度时,将顶点分类到第一顶点集合中;

当第一投影长度大于第二投影长度时,将顶点分类到第二顶点集合中。

可选的,该装置,还包括:

确定模块1306,用于确定贝塞尔曲面的控制点在贝塞尔曲面上的映射点;

显示模块1305,用于显示映射点,并隐藏控制点;

更新模块1307,还用于响应于针对映射点输入的控制信号,更新贝塞尔曲面得到用于模拟切割三维虚拟器官的目标曲面。

可选的,更新模块1307,具体用于:

当控制信号是位移信号时,更新贝塞尔曲面相交于三维虚拟器官的位置得到目标曲面;

当控制信号是角度信号时,更新贝塞尔曲面相交于三维虚拟器官的角度得到目标曲面。

可选的,计算模块1303,还用于根据三维虚拟器官中的面片的坐标计算得到包围盒;

该装置还包括:选取模块1308,用于在在包围盒的一条对角线上选取中间点,并将中间点到对角线的端点之间的线段显示为控制杆;

确定模块1306,还用于当接收到作用于控制杆的杆身的控制信号时,确定控制信号是位移信号;当接收到作用于控制杆的端点的控制信号时,确定控制信号是角度信号。

可选的,生成模块1301,具体用于:

根据三维虚拟器官中的面片的坐标计算得到包围盒;

从包围盒的边中选取基准点,并计算基准点的坐标;

根据基准点的坐标确定控制点的坐标;

设置横坐标u和纵坐标v变化的步长,将u和v按照步长变化,并将每次得到的u、v和n个控制点的坐标输入公式

对公式输出的各个坐标点进行渲染,得到贝塞尔曲面。

可选的,该装置还包括:

排列模块1309,用于在m×m的网格中等距排列控制点;

确定模块1306,还用于根据网格的顶点坐标计算网格的长度和宽度,并根据长度、宽度和等距的比例关系计算面片的任意一个顶点的坐标;

计算模块1303,还用于将顶点的坐标带入公式将公式的输出作为映射点。

综上所述,本发明实施例提供的三维虚拟器官的体积计算装置,由于生成的是贝塞尔曲面,而贝塞尔曲面是根据控制点生成的,所以,可以避免由用户手动绘制切割曲面时,得到的切割曲面较为粗略,导致体积的计算不准确的问题,以提高体积的准确性。

通过计算顶点在贝塞尔曲面上的映射点与面片组成的棱柱的体积,再将棱柱的体积相加即可得到病变组织的体积和非病变组织的体积,由于面片的数量远远小于像素点的数量,可以提高体积的计算效率。

通过控制杆来更新贝塞尔曲面相交于三维虚拟器官的位置和角度,避免了切割曲面一旦生成就无法调整的问题,从而提高切割曲面的灵活性。

通过实时显示切割得到的体积和体积百分比,以供用户参考,制定更加安全合理的手术方案。

图14示出了本发明一个示例性实施例提供的计算机辅助手术系统1400的结构框图。该计算机辅助手术系统1400可以是便携式移动计算机辅助手术系统。

通常,计算机辅助手术系统1400包括有:处理器1401和存储器1402。

处理器1401可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器1401可以采用dsp(digitalsignalprocessing,数字信号处理)、fpga(field-programmablegatearray,现场可编程门阵列)、pla(programmablelogicarray,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器1401也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称cpu(centralprocessingunit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1401可以在集成有gpu(graphicsprocessingunit,图像处理器),gpu用于负责显示屏所需要显示的内容的渲染和绘制。

存储器1402可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器1402还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器1402中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器1401所执行以实现本申请中方法实施例提供的三维虚拟器官的体积计算方法。

在一些实施例中,计算机辅助手术系统1400还可选包括有:外围设备接口1403和至少一个外围设备。处理器1401、存储器1402和外围设备接口1403之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口1403相连。具体地,外围设备包括:射频电路1404、触摸显示屏1405和电源1409中的至少一种。

外围设备接口1403可被用于将i/o(input/output,输入/输出)相关的至少一个外围设备连接到处理器1401和存储器1402。在一些实施例中,处理器1401、存储器1402和外围设备接口1403被集成在同一芯片或电路板上;在一些其他实施例中,处理器1401、存储器1402和外围设备接口1403中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。

射频电路1404用于接收和发射rf(radiofrequency,射频)信号,也称电磁信号。射频电路1404通过电磁信号与通信网络以及其他通信设备进行通信。射频电路1404将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路1404包括:天线系统、rf收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路1404可以通过至少一种无线通信协议来与其它计算机辅助手术系统进行通信。该无线通信协议包括但不限于:万维网、城域网、内联网、各代移动通信网络(2g、3g、4g及5g)、无线局域网和/或wifi(wirelessfidelity,无线保真)网络。在一些实施例中,射频电路1404还可以包括nfc(nearfieldcommunication,近距离无线通信)有关的电路,本申请对此不加以限定。

显示屏1405用于显示ui(userinterface,用户界面)。该ui可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏1405是触摸显示屏时,显示屏1405还具有采集在显示屏1405的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器1401进行处理。此时,显示屏1405还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏1405可以为一个,设置计算机辅助手术系统1400的前面板;在另一些实施例中,显示屏1405可以为至少两个,分别设置在计算机辅助手术系统1400的不同表面或呈折叠设计;在再一些实施例中,显示屏1405可以是柔性显示屏,设置在计算机辅助手术系统1400的弯曲表面上或折叠面上。甚至,显示屏1405还可以设置成非矩形的不规则图形,也即异形屏。显示屏1405可以采用lcd(liquidcrystaldisplay,液晶显示屏)、oled(organiclight-emittingdiode,有机发光二极管)等材质制备。

电源1409用于为计算机辅助手术系统1400中的各个组件进行供电。电源1409可以是交流电、直流电、一次性电池或可充电电池。当电源1409包括可充电电池时,该可充电电池可以是有线充电电池或无线充电电池。有线充电电池是通过有线线路充电的电池,无线充电电池是通过无线线圈充电的电池。该可充电电池还可以用于支持快充技术。

本领域技术人员可以理解,图14中示出的结构并不构成对计算机辅助手术系统1400的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。

本发明一个实施例提供了一种计算机可读存储介质,存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现如上的三维虚拟器官的体积计算方法。

本发明一个实施例提供了一种三维虚拟器官的体积计算设备,三维虚拟器官的体积计算设备包括处理器和存储器,存储器中存储有至少一条指令,指令由处理器加载并执行以实现如上的三维虚拟器官的体积计算方法。

需要说明的是:上述实施例提供的三维虚拟器官的体积计算装置在进行三维虚拟器官的体积计算时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将三维虚拟器官的体积计算装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的三维虚拟器官的体积计算装置与三维虚拟器官的体积计算方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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