三维虚拟器官的体积计算方法、装置、存储介质及设备转让专利

申请号 : CN201810217634.0

文献号 : CN108389202B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 韩月乔田广野陈永健

申请人 : 青岛海信医疗设备股份有限公司

摘要 :

本发明公开了一种三维虚拟器官的体积计算方法、装置、存储介质及设备,属于计算机技术领域。所述方法包括:生成与三维虚拟器官相交的贝塞尔曲面,由体素点组成的三维虚拟器官被贝塞尔曲面分隔成病变组织和非病变组织,所述体素点是根据二维图像序列获取到的;根据在贝塞尔曲面上的映射点和与映射点映射的体素点之间的深度,将体素点分类到在病变组织中的第一体素点集合或在非病变组织中的第二体素点集合中;将第一体素点集合中体素点的数量乘以体素点的单位体积得到病变组织的体积,将第二体素点集合中的数量乘以体素点的单位体积得到非病变组织的体积。本发明可以提高体积的计算效率。

权利要求 :

1.一种三维虚拟器官的体积计算方法,其特征在于,所述方法包括:根据二维图像序列获取体素点;

根据所述体素点的坐标计算得到包围盒;

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

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

根据所述控制点生成与所述三维虚拟器官相交的贝塞尔曲面,由体素点组成的所述三维虚拟器官被所述贝塞尔曲面分隔成病变组织和非病变组织;

确定所述体素点在所述贝塞尔曲面上的映射点;

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

将所述第一体素点集合中体素点的数量乘以所述体素点的单位体积得到所述病变组织的体积,将所述第二体素点集合中体素点的数量乘以所述体素点的单位体积得到所述非病变组织的体积。

2.根据权利要求1所述的方法,其特征在于,所述方法还包括:读取当前时刻所述三维虚拟器官的显示状态参数;

当所述显示状态参数用于指示显示所述病变组织的体素点时,显示所述所述贝塞尔曲面、所述病变组织的体积、所述非病变组织的体积,并以不同方式显示所述病变组织的体素点和所述非病变组织的体素点;

当所述显示状态参数用于指示隐藏所述病变组织的体素点时,显示所述所述贝塞尔曲面、所述病变组织的体积、所述非病变组织的体积,显示所述非病变组织的体素点,并隐藏所述病变组织的体素点。

3.根据权利要求1所述的方法,其特征在于,所述方法还包括:计算所述病变组织与所述非病变组织的体积百分比;

显示所述体积百分比。

4.根据权利要求1所述的方法,其特征在于,所述根据在所述贝塞尔曲面上的映射点和与所述映射点映射的所述体素点之间的深度,将所述体素点分类到在所述病变组织中的第一体素点集合或在所述非病变组织中的第二体素点集合中,包括:根据所述体素点和所述贝塞尔曲面中最小的控制点生成第一向量,并计算所述第一向量在所述贝塞尔曲面的法向量上的第一投影长度;

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

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

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

5.根据权利要求1至4任一项所述的方法,其特征在于,所述方法还包括:确定所述贝塞尔曲面的控制点在所述贝塞尔曲面上的映射点;

显示所述映射点,并隐藏所述控制点;

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

6.根据权利要求5所述的方法,其特征在于,所述响应于针对所述映射点输入的控制信号,更新所述贝塞尔曲面得到用于模拟切割所述三维虚拟器官的目标曲面,包括:当所述控制信号是位移信号时,更新所述贝塞尔曲面相交于所述三维虚拟器官的位置得到目标曲面;

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

7.根据权利要求6所述的方法,其特征在于,所述方法还包括:在所述包围盒的一条对角线上选取中间点,并将所述中间点到所述对角线的端点之间的线段显示为控制杆;

当接收到作用于所述控制杆的杆身的所述控制信号时,确定所述控制信号是所述位移信号;

当接收到作用于所述控制杆的端点的所述控制信号时,确定所述控制信号是所述角度信号。

8.根据权利要求1至4任一项所述的方法,其特征在于,所述根据所述控制点生成与所述三维虚拟器官相交的贝塞尔曲面,包括:设置横坐标u和纵坐标v变化的步长,将所述u和所述v按照所述步长变化,并将每次得到的所述u、所述v和所述控制点的坐标输入公式对所述公式输出的各个坐标点进行渲染,得到所述贝塞尔曲面。

9.根据权利要求1至4任一项所述的方法,其特征在于,所述方法还包括:在m×m的网格中等距排列所述控制点;

确定所述网格的顶点坐标计算所述网格的长度和宽度,并根据所述长度、所述宽度和等距的比例关系计算所述体素点的坐标;

将所述体素点的坐标分别带入公式

将所述公式的输出作为所述映射点。

10.一种三维虚拟器官的体积计算装置,其特征在于,所述装置包括:生成模块,用于根据二维图像序列获取体素点;根据所述体素点的坐标计算得到包围盒;从所述包围盒的边中选取基准点,并计算所述基准点的坐标;根据所述基准点的坐标确定控制点的坐标;根据所述控制点生成与所述三维虚拟器官相交的贝塞尔曲面,由体素点组成的所述三维虚拟器官被所述贝塞尔曲面分隔成病变组织和非病变组织,所述体素点是根据二维图像序列获取到的;

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

计算模块,用于将所述第一体素点集合中体素点的数量乘以所述体素点的单位体积得到所述病变组织的体积,将所述第二体素点集合中体素点的数量乘以所述体素点的单位体积得到所述非病变组织的体积。

11.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如权利要求1至9任一项所述的三维虚拟器官的体积计算方法。

12.一种三维虚拟器官的体积计算设备,其特征在于,所述三维虚拟器官的体积计算设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现权利要求1至9任一所述的三维虚拟器官的体积计算方法。

说明书 :

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

技术领域

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

背景技术

[0002] 近年来,医生通过计算机辅助手术系统对包含肿瘤等病变组织的三维虚拟器官进行分析,从而制定针对该病变组织的临床手术方案。然而,由于该三维虚拟器官内部的脉管系统较为复杂,医生无法获取到血管与病变组织的三维空间关系,所以,医生只能依靠二维医学影像制定手术方案。
[0003] 相关技术中,计算机辅助手术系统获取包含肿瘤等病变组织的三维虚拟器官的二维横截面CT(Computed Tomography,电子计算机断层扫描)图像,再在屏幕上逐张显示二维横截面CT图像,接收用户在每张二维横截面CT图像上利用鼠标绘制的切割曲线,并对所有二维横截面CT图像上的切割曲线进行拟合,得到切割曲面,并将切割曲面两侧的像素点的数量乘以像素点的单位体积,得到病变组织和非病变组织的体积。
[0004] 由于医生手绘的切割曲面较为粗略,所以,切割曲面切分的两个部分的像素点的数量不准确,导致计算得到的体积不准确。

发明内容

[0005] 本发明实施例提供了一种三维虚拟器官的体积计算方法、装置、存储介质及设备,用于解决由于切割曲面粗略,导致体积的计算不准确的问题。所述技术方案如下:
[0006] 第一方面,提供了一种三维虚拟器官的体积计算方法,所述方法包括:
[0007] 生成与所述三维虚拟器官相交的贝塞尔曲面,由体素点组成的所述三维虚拟器官被所述贝塞尔曲面分隔成病变组织和非病变组织,所述体素点是根据二维图像序列获取到的;
[0008] 根据在所述贝塞尔曲面上的映射点和与所述映射点映射的所述体素点之间的深度,将所述体素点分类到在所述病变组织中的第一体素点集合或在所述非病变组织中的第二体素点集合中;
[0009] 将所述第一体素点集合中体素点的数量乘以所述体素点的单位体积得到所述病变组织的体积,将所述第二体素点集合中的数量乘以所述体素点的单位体积得到所述非病变组织的体积。
[0010] 第二方面,提供了一种曲面切割装置,所述装置包括:
[0011] 生成模块,用于生成与所述三维虚拟器官相交的贝塞尔曲面,由体素点组成的所述三维虚拟器官被所述贝塞尔曲面分隔成病变组织和非病变组织,所述体素点是根据二维图像序列获取到的;
[0012] 分类模块,用于根据在所述贝塞尔曲面上的映射点和与所述映射点映射的所述体素点之间的深度,将所述体素点分类到在所述病变组织中的第一体素点集合或在所述非病变组织中的第二体素点集合中;
[0013] 计算模块,用于将所述第一体素点集合中体素点的数量乘以所述体素点的单位体积得到所述病变组织的体积,将所述第二体素点集合中的数量乘以所述体素点的单位体积得到所述非病变组织的体积。
[0014] 第三方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如第一方面所述的三维虚拟器官的体积计算方法。
[0015] 第四方面,提供了一种三维虚拟器官的体积计算设备,所述三维虚拟器官的体积计算设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如第一方面所述的三维虚拟器官的体积计算方法。
[0016] 本发明实施例提供的技术方案的有益效果是:
[0017] 由于生成的是贝塞尔曲面,而贝塞尔曲面是根据控制点生成的,所以,可以避免由用户手动绘制切割曲面时,得到的切割曲面较为粗略,导致体积的计算不准确的问题,以提高体积的准确性。

附图说明

[0018] 为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0019] 图1是本发明一个实施例提供的三维虚拟器官的体积计算方法的方法流程图;
[0020] 图2是本发明另一实施例提供的三维虚拟器官的体积计算方法的方法流程图;
[0021] 图3是本发明另一实施例提供的肝脏的体素点组成的区域的示意图;
[0022] 图4A和4B是本发明另一实施例提供的肝脏的三维虚拟器官的示意图;
[0023] 图5是本发明另一实施例提供的贝塞尔曲线的示意图;
[0024] 图6是本发明另一实施例提供的贝塞尔曲面的示意图;
[0025] 图7是本发明另一实施例提供的贝塞尔曲面和控制杆的示意图;
[0026] 图8是本发明另一实施例提供的包围盒的示意图;
[0027] 图9是本发明另一实施例提供的第一种25个控制点的示意图;
[0028] 图10是本发明另一实施例提供的第二种25个控制点的示意图;
[0029] 图11A和11B是本发明另一实施例提供的贝塞尔曲面的形变示意图;
[0030] 图12A至12H是本发明另一实施例提供的在三维虚拟器官中调整贝塞尔曲面的示意图;
[0031] 图13是本发明一个实施例提供的三维虚拟器官的体积计算装置的结构框图;
[0032] 图14是本发明再一实施例提供的三维虚拟器官的体积计算装置的结构框图;
[0033] 图15是本发明一个实施例提供的计算机辅助手术系统的结构框图。

具体实施方式

[0034] 为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
[0035] 请参考图1,其示出了本发明一个实施例提供的三维虚拟器官的体积计算方法的方法流程图,该三维虚拟器官的体积计算方法可以应用于计算机辅助手术系统中。该三维虚拟器官的体积计算方法,包括:
[0036] 步骤101,生成与三维虚拟器官相交的贝塞尔曲面,由体素点组成的三维虚拟器官被贝塞尔曲面分隔成病变组织和非病变组织,体素点是根据二维图像序列获取到的。
[0037] 步骤102,根据在贝塞尔曲面上的映射点和与映射点映射的体素点之间的深度,将体素点分类到在病变组织中的第一体素点集合或在非病变组织中的第二体素点集合中。
[0038] 步骤103,将第一体素点集合中体素点的数量乘以体素点的单位体积得到病变组织的体积,将第二体素点集合中的数量乘以体素点的单位体积得到非病变组织的体积。
[0039] 综上所述,本发明实施例提供的三维虚拟器官的体积计算方法,由于生成的是贝塞尔曲面,而贝塞尔曲面是根据控制点生成的,所以,可以避免由用户手动绘制切割曲面时,得到的切割曲面较为粗略的问题,以提高制定的手术方案的效果。
[0040] 请参考图2,其示出了本发明另一实施例提供的三维虚拟器官的体积计算方法的方法流程图,该三维虚拟器官的体积计算方法可以应用于计算机辅助手术系统中。该三维虚拟器官的体积计算方法,包括:
[0041] 步骤201,生成与三维虚拟器官相交的贝塞尔曲面,由体素点组成的三维虚拟器官被贝塞尔曲面分隔成病变组织和非病变组织,体素点是根据二维图像序列获取到的。
[0042] 在生成贝塞尔曲面之前,需要先生成包含病变组织的三维虚拟器官,该三维虚拟器官由各个体素点组成。其中,病变组织可以是器官中诸如肿瘤之类发生病变的组织。
[0043] 其中,计算机辅助手术系统可以是对二维的医学图像序列进行三维重建得到的三维虚拟器官,该二维的医学图像序列也可以称为二维图像序列。由于二维图像序列数据是已知的,可以得到三维虚拟器官中每个体素点的坐标,体素点是体积元素点的简称。请参考图3,以器官是肝脏为例,则肝脏的体素点组成图中的黑色区域。
[0044] 请参考图4A和4B,为了便于理解,本实施例以肝脏的三维虚拟器官为例进行说明,图4A是肝脏的线条图,图4B是肝脏的示意图,且三维虚拟器官中肝脏的左下方一块填充部分是病变组织。
[0045] 贝塞尔曲面是由两组正交的贝塞尔(Bezier)曲线设计形成的。
[0046] 其中,贝塞尔曲线的定义为:给定空间中的n+1个点P0,P1,…Pn,称t∈[0,1]为n阶的贝塞尔曲线。其中,且i∈[0,n]。P0,P1,… 
Pn为C(t)的控制点,C(t)是对P0,P1,…Pn的逼近。为了便于理解,以3 阶贝塞尔曲线来举例说明,请参考图5,贝塞尔曲线经过P0和P3,逼近P1和P2。
[0047] 在了解了贝塞尔曲线后,可以按照贝塞尔混合函数的张量积形式来描述贝塞尔曲面,则贝塞尔曲面的公式为 且(u,v)∈[0, 1],Pi,j为(m+1)×(n+1)个控制点。请参考图6,其示出了一个贝塞尔曲面的示意图。
[0048] 本实施例中,生成贝塞尔曲面的作用是模拟切割三维虚拟器官中包含的病变组织,以便于医生制定手术方案。所以,计算机辅助手术系统生成的贝塞尔曲面需要与三维虚拟器官相交,以便将病变组织和未病变组织相隔离。
[0049] 本实施例中,计算机辅助手术系统还可以按照三维虚拟器官的大小生成自适应大小的贝塞尔曲面,避免了贝塞尔曲面太大时不容易修改贝塞尔曲面,贝塞尔曲面太小时不能完全隔离病变组织的问题。下面对生成自适应大小的贝塞尔曲面的流程进行介绍。
[0050] 具体地,生成与三维虚拟器官相交的贝塞尔曲面,包括如下五个步骤:
[0051] 步骤2011,根据三维虚拟器官中的体素点的坐标计算得到包围盒。
[0052] 本实施例中,由于三维虚拟器官中每个体素点的坐标都是已知的。计算机辅助手术系统可以在所有体素点的坐标中查找每个轴向的最小值和最大值,并将三个轴向的最小值作为包围盒的最小点,将三个轴向的最大值作为包围盒的最大点,来生成一个包围盒。
[0053] 可选的,在生成包围盒之后,计算机辅助手术系统还可以在包围盒的一条对角线上选取中间点,并将中间点到对角线的端点之间的线段显示为控制杆,该控制杆用于更新贝塞尔曲面相交于三维虚拟器官的位置和角度。其中,控制杆的方向可以是任意方向。请参考图7,图7中控制杆垂直于贝塞尔曲面。
[0054] 步骤2012,从包围盒的边中选取基准点,并计算基准点的坐标。
[0055] 当基准点是包围盒的各条边中选取的4个点时,计算机辅助手术系统在包围盒的各条边中选取4个点,由于包围盒的各个顶点坐标是已知的,所以,计算机辅助手术系统可以根据各个顶点坐标计算出这4个点的坐标。
[0056] 计算机辅助手术系统选取的4个点可以位于同一平面,也可以不在同一平面内,本实施例不作限定。
[0057] 三维虚拟器官的包围盒可能是任何形状的,本实施例仅以包围盒的形状是正方体为例进行说明,请参考图8,其示出了选择的4个点,且假设这4个点分别是vertex_1、vertex_2、vertex_3、vertex_4。
[0058] 步骤2013,根据基准点的坐标确定控制点的坐标。
[0059] 其中,计算机辅助手术系统可以利用PCA(Principal Component Analysis,主元分析法)生成n个控制点,n为正整数,生成过程如下:首先求取点集 (vertex_1、vertex_2、vertex_3、vertex_4)的协方差矩阵;再根据协方差矩阵的特征值e_values和对应的特征向量E_vectors,最后,根据控制杆的长度的一半(Length)、控制杆的中点的坐标、特征值e_values和特征向量E_vectors和包围盒生成n个控制点。其中,协方差矩阵用于进行降维,使得4个点的坐标由三维坐标降为二维坐标。
[0060] 在一种实现方式中,可以通过以下代码计算位于原点的控制点的坐标。
[0061]
[0062] 其中,E_vector[1]和E_vector[2]是两个较大的特征向量,即,E_vector[1]可能是x轴、y轴、z轴方向上的向量,且e_values为其在该方向上的数值;E_vector[2] 可能是x轴、y轴、z轴方向上的向量,且e_values为其在该方向上的数值.
[0063] 在得到原点的坐标后,计算机辅助手术系统可以在m×m的网格中等距排列控制点,此时网格的长和宽均为控制杆长度的一半(Length),计算机辅助手术系统可以通过以下代码计算出剩余n-1个控制点的坐标,m×m=n。
[0064] for i 1 to 5 do
[0065] for j 1 to5 do
[0066] Ci,j=Corigin_new+i*(length/4)*E_vector[1]+j*(length/4)* E_vector[2][0067] 请参考图9,其以n为25为例,示出了25个控制点的位置关系。
[0068] 步骤2014,设置横坐标u和纵坐标v变化的步长,将u和v按照步长变化,并将每次得到的u、v和n个控制点的坐标输入公式i∈ [0,
n],j∈[0,n]。
[0069] 其中,u和v的变化步长越小,生成的贝塞尔曲面上的点越多,生成的内塞尔曲面越光滑。在一种可能的实现方式中,u和v的变化步长为0.01,本实施例不对步长作限定。
[0070] 计算机辅助手术系统将各个控制点的坐标和(u,v)输入上述贝塞尔曲面的公式,得到一系列的(x,y,z)的坐标点。
[0071] 步骤2015,对公式输出的各个坐标点进行渲染,得到贝塞尔曲面。
[0072] 计算机辅助手术系统将这一些列离散的(x,y,z)的坐标点按照顺序生成各个面片,再对所有的面片进行渲染,得到贝塞尔曲面。
[0073] 由于这部分的计算量较大,为了保证显示的实时性,可以通过GPU(Graphics Processing Unit,图形处理器)生成贝塞尔曲面。
[0074] 在生成贝塞尔曲面后,由于贝塞尔曲面的部分控制点在贝塞尔曲面的上方,所以,还需要确定贝塞尔曲面的控制点在贝塞尔曲面上的映射点,包括如下四个步骤:
[0075] 步骤2016,在m×m的网格中等距排列控制点。
[0076] 其中,计算机辅助手术系统可以先获取n个控制点,再在m×m的网格中等距排列这n个控制点,其中,m×m=n。
[0077] 步骤2017,根据网格的顶点坐标计算网格的长度和宽度,并根据长度、宽度和等距的比例关系计算网格中剩余控制点的坐标。
[0078] 已知第1个控制点的坐标为(u=0,v=0),第5个控制点的坐标为(u=1,v=0),第20个控制点的坐标为(u=0,v=1),第25个控制点的坐标为(u=1,v=1),请参考图10,则可以计算出网格的长度length_u和宽度length_v。当然,n还可以为其他数值,本实施例不作限定。
[0079] 下面计算网格中剩余n-4个控制点的坐标:
[0080] length_u=length(ctrl_points[4]-ctrl_points[0]);length为求长度的函数[0081] length_v=length(ctrl_points[20]-ctrl_points[0]);
[0082] un/1=dot(ctrl_points[n]-ctrl_points[0],ctrl_points[4]-ctrl_points[0])/length_u; dot为两向量点乘的函数
[0083] vn/1=dot(ctrl_points[n]-ctrl_points[0],ctrl_points[20]-ctrl_points[0])/length_v;
[0084] 这样,可以得到控制点ctrl_points[n]对应的参数值un和vn,(un,vn)∈[0, 1]。
[0085] 步骤2018,将剩余控制点的坐标分别带入公式i∈ [0,
n],j∈[0,n]。
[0086] 步骤2019,将公式的输出作为映射点。
[0087] 若将ctrl_points[n]对应的参数值un和vn输入公式,则公式的输出S(un,vn) 就是控制点ctrl_points[n]在贝塞尔曲面上的映射点map_points[n]。
[0088] 计算机辅助计算机系统还可以确定体素点在贝塞尔曲面上的映射点,包括如下四个步骤:
[0089] 步骤2091,在m×m的网格中等距排列控制点。
[0090] 步骤2092,根据网格的顶点坐标计算网格的长度和宽度,并根据长度、宽度和等距的比例关系计算体素点的坐标。
[0091] 已知第1个控制点的坐标为(u=0,v=0),第5个控制点的坐标为(u=1,v=0),第20个控制点的坐标为(u=0,v=1),第25个控制点的坐标为(u=1,v=1),请参考图10,则可以计算出网格的长length_u和宽length_v。当然,n还可以为其他数值,本实施例不作限定。
[0092] 下面计算网格中体素点的坐标:
[0093] length_u=length(ctrl_points[4]-ctrl_points[0]);length为求长度的函数[0094] length_v=length(ctrl_points[20]-ctrl_points[0]);
[0095] 其中一个体素点为liver_data[m]对应的参数值为un和vn,(un,vn)∈[0,1];
[0096] 则un/1=dot(liver_data[m]-ctrl_points[0],ctrl_points[4]-ctrl_points[0])/ (length_u*length_u);dot为两向量点乘的函数
[0097] vn/1=dot(liver_data[m]-ctrl_points[0],ctrl_points[20]-ctrl_points[0])/(length_v *length_v);
[0098] 这样,可以得到体素点liver_data[m]对应的参数值(un,vn)。
[0099] 步骤2093,将体素点的坐标分别带入公式i∈ [0,
n],j∈[0,n]。
[0100] 步骤2094,将公式的输出作为映射点。
[0101] 步骤202,根据在贝塞尔曲面上的映射点和与映射点映射的体素点之间的深度,将体素点分类到在病变组织中的第一体素点集合或在非病变组织中的第二体素点集合中。
[0102] 其中,第一体素点集合包括病变组织的体素点,第二体素点集合包括非病变组织的体素点。
[0103] 根据每个体素点和对应的映射点的深度将体素点分类到第一体素点集合或第二体素点集合中,包括如下四个步骤:
[0104] 步骤2021,根据体素点和贝塞尔曲面中最小的控制点生成第一向量,并计算第一向量在贝塞尔曲面的法向量上的第一投影长度。
[0105] 其中,法向量即为控制杆的方向向量,假设法向量为(1.0,0.0,0.0),代表法向量是x轴。
[0106] 假设贝塞尔曲面中最小的控制点是控制点0,记为ctrl_points[0],体素点为 liver_data[m],法向量为plane_normal,则第一向量为e_vertex[m]=liver_data[m]- ctrl_points[0],第一投影长度为distance_vertex[m]=dot(liver_data[m], plane_normal)。
[0107] 步骤2022,根据映射点和控制点生成第二向量,并计算第二向量在法向量上的第二投影长度。
[0108] 假设体素点的映射点为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)。
[0109] 步骤2023,当第一投影长度小于第二投影长度时,将体素点分类到第一体素点集合中。
[0110] 步骤2024,当第一投影长度大于第二投影长度时,将体素点分类到第二体素点集合中。
[0111] 在实现时,将体素点分类到不同的第一体素点集合和第二体素点集合,可以通过对体素点设置标记实现,本实施例不对标记的形式作限定。在一种实现方式中,假设标记为0和1,且将体素点标记为0指示体素点属于第一体素点集合,将体素点标记为1指示体素点属于第二体素点集合。
[0112] 步骤203,将第一体素点集合中体素点的数量乘以体素点的单位体积得到病变组织的体积,将第二体素点集合中的数量乘以体素点的单位体积得到非病变组织的体积。
[0113] 由于每个体素点的单位体积是已知的,所以,计算机辅助手术系统可以将第一体素点集合中所有体素点的数量乘以单位体积,得到病变组织的体积;将第二体素点集合中所有体素点的数量乘以单位体积,得到非病变组织的体积。
[0114] 步骤204,读取当前时刻三维虚拟器官的显示状态参数。
[0115] 显示状态参数可以根据用户触发的切换操作进行切换。比如,当前的显示状态参数用于指示显示的病变组织的体素点,且接收到用户触发的切换操作,则将显示状态参数切换为用于指示隐藏病变组织的体素点;当前的显示状态参数用于指示隐藏病变组织的体素点,且接收到用户触发的切换操作,则将显示状态参数切换为用于指示显示病变组织的体素点。
[0116] 在具体实现时,可以预先设置状态的数值的含义,比如,当状态为0时,隐藏病变组织的体素点,当状态为1时,显示病变组织的体素点。再根据切换操作设置显示状态参数的状态的数值,并将状态的数值输入GPU中的片元着色器中。
[0117] 其中,相邻两次切换操作可以相同也可以不同,本实施例不作限定。在一种可能的实现方式中,切换操作可以是双击鼠标的操作。
[0118] 步骤205,当显示状态参数用于指示显示病变组织的体素点时,显示贝塞尔曲面、病变组织的体积、非病变组织的体积,并以不同方式显示病变组织的体素点和非病变组织的体素点,显示映射点,并隐藏控制点,执行步骤207。
[0119] 当状态的数值为1时,片元着色器渲染病变组织的体素点。此时,计算机辅助手术系统显示贝塞尔曲面,并以第一显示效果显示病变组织的体素点,以第二显示效果显示非病变组织的体素点片,显示映射点,并隐藏控制点,第一显示效果与第二显示效果不同。
[0120] 第一显示效果和第二显示效果可以是显示颜色不同,比如,第一显示效果的颜色是三维虚拟器官本身的颜色,第二显示效果的颜色是紫色。当然,还可以从其他方面区分第一显示效果和第二显示效果,本实施例不作限定。
[0121] 步骤206,当显示状态参数用于指示病变组织的体素点时,显示贝塞尔曲面、病变组织的体积、非病变组织的体积,显示非病变组织的体素点和映射点,并隐藏病变组织的体素点和控制点,执行步骤207。
[0122] 当状态的数值为0时,片元着色器不渲染病变组织的体素点。此时,计算机辅助手术系统显示贝塞尔曲面,并显示非病变组织的体素点和映射点,隐藏病变组织的体素点和控制点。
[0123] 由于只显示贝塞尔曲面上的映射点,而隐藏位于贝塞尔曲面上方的控制点,这样,秉着所见即所得的原则,用户只要将某个映射点往某个方向上移动,即等同于将该映射点对应的控制点往该方向上移动,实现双点联动,可以根据移动的情况重新生成贝塞尔曲面。而在没有生成映射点时,用户只能通过位于贝塞尔曲面上方的控制点来修改贝塞尔曲面,而控制点的数量较多且空间位置较为复杂,所以,解决了用户无法准确判断需要移动哪个控制点来修改贝塞尔切割曲线的问题,影响了贝塞尔曲面的生成效率和准确性。
[0124] 步骤207,计算病变组织与非病变组织的体积百分比,显示体积百分比。
[0125] 在切除手术中,要保证病变组织在足够大的安全外缘内被完全切除,同时还要考虑最大程度的保留功能性组织。如果病变组织没有完全切除,则会造成病症复发;另一方面,如果切除太多正常区域,剩余功能体积不足,可能引发术后的器官功能衰竭。所以,计算机辅助手术系统还需要计算病变组织的体积和非病变组织的体积,以供用户参考,制定更加安全合理的手术方案。
[0126] 其中,体积百分比可以包括病变组织的体积与三维虚拟器官总体积的百分比、非病变组织的体积与三维虚拟器官总体积的百分比。
[0127] 本实施例中,计算机辅助手术系统还可以以不同的显示效果显示病变组织的体积、非病变组织的体积和体积百分比。比如,以不同的颜色显示,此时,可以以紫色显示病变组织的体积和病变组织的体积与三维虚拟器官总体积的百分比,以三维虚拟器官本身的颜色显示非病变组织的体积和非病变组织的体积与三维虚拟器官总体积的百分比。
[0128] 步骤208,根据三维虚拟器官中的体素点的坐标计算得到包围盒。
[0129] 由于步骤2011中已经生成了包围盒,此时,计算机辅助手术系统可以直接获取该包围盒。或者,计算机辅助手术系统也可以按照步骤2011的生成方式重新生成一个包围盒,本实施例不作限定。
[0130] 步骤209,在包围盒的一条对角线上选取中间点,并将中间点到对角线的端点之间的线段显示为控制杆。
[0131] 控制杆的生成方式详见步骤2011中的描述,此处不作赘述。
[0132] 步骤210,当接收到作用于控制杆的杆身的控制信号时,确定控制信号是位移信号,执行步骤212。
[0133] 其中,鼠标点击杆身可以上下左右平移更新贝塞尔曲面相交于三维虚拟器官的位置。
[0134] 步骤211,当接收到作用于控制杆的端点的控制信号时,确定控制信号是角度信号,执行步骤213。
[0135] 其中,鼠标点击端点可绕端点旋转更新控制贝塞尔曲面相交于三维虚拟器官的角度。
[0136] 步骤212,当控制信号是位移信号时,更新贝塞尔曲面相交于三维虚拟器官的位置得到目标曲面。
[0137] 步骤213,当控制信号是角度信号时,更新贝塞尔曲面相交于三维虚拟器官的角度得到目标曲面。
[0138] 可选的,本实施例还可以不生成控制杆,直接在贝塞尔曲面上更新贝塞尔曲面相交于三维虚拟器官的位置和角度,此时,计算机辅助手术系统接收鼠标在贝塞尔曲面上触发控制信号,根据该控制信号更新该位置和角度。
[0139] 除了可以通过步骤208-213来更新贝塞尔曲面相交于三维虚拟器官的位置和角度,计算机辅助计算系统还可以接收作用于控制点的映射点的移动信号,根据移动信号更新贝塞尔曲面的形状得到目标曲面。
[0140] 当控制点的映射点被移动时,相当于控制点被移动,此时需要根据所有的控制点重新生成贝塞尔曲面,生成过程详见上述描述,此处不作赘述。
[0141] 需要说明的是,本实施例中,可以只更新贝塞尔曲面相交于三维虚拟器官的位置和角度,或者,只更新贝塞尔曲面的形状,还可以既更新贝塞尔曲面相交于三维虚拟器官的位置和角度,也更新贝塞尔曲面的形状,此时不限定这两个更新流程的先后执行顺序。
[0142] 请参考图11A和图11B,图11A是线条图,图11B是示意图,其示出了移动映射点导致贝塞尔曲面的形变的示意图。
[0143] 请参考图12A-F,其示出了从生成自适应大小的贝塞尔曲面,并对病变组织进行切割的过程。其中,图12A是生成自适应大小的贝塞尔曲面的线条图,图 12B是其示意图;图12C是通过映射点控制贝塞尔曲面形变,使其包裹肝脏左下侧的病变组织,图12D是其示意图;图12E是只保留非病变组织的肝脏的导出结果,图12F是其示意图;图12G是保留病变组织和非病变组织的肝脏的导出结果,图12H是其示意图。
[0144] 其中,图12B中切除的肝脏的体积是1467.6ml,剩余的肝脏的体积是 586.1ml,切除百分比是71.5%;图12D中切除的肝脏的体积是1152.8ml,剩余的肝脏的体积是900.9ml,切除百分比是43.9%;图12F中剩余百分比是45.3%;图12H中剩余百分比是45.3%。
[0145] 综上所述,本发明实施例提供的三维虚拟器官的体积计算方法,由于生成的是贝塞尔曲面,而贝塞尔曲面是根据控制点生成的,所以,可以避免由用户手动绘制切割曲面时,得到的切割曲面较为粗略的问题,以提高制定的手术方案的效果。
[0146] 由于只显示贝塞尔曲面上的映射点,而隐藏位于贝塞尔曲面上方的控制点,这样,秉着所见即所得的原则,用户只要将某个映射点往某个方向上移动,即等同于将该映射点对应的控制点往该方向上移动,可以根据移动的情况重新生成贝塞尔曲面。而在没有生成映射点时,用户只能通过位于贝塞尔曲面上方的控制点来修改贝塞尔曲面,而控制点的数量较多且空间位置较为复杂,所以,解决了用户无法准确判断需要移动哪个控制点来修改贝塞尔切割曲线的问题,影响了贝塞尔曲面的生成效率和准确性。
[0147] 通过控制杆来更新贝塞尔曲面相交于三维虚拟器官的位置和角度,避免了切割曲面一旦生成就无法调整的问题,从而提高切割曲面的灵活性。
[0148] 通过实时显示体积和体积百分比,以供用户参考,制定更加安全合理的手术方案。
[0149] 请参考图13,其示出了本发明一个实施例提供的三维虚拟器官的体积计算装置的结构框图,该三维虚拟器官的体积计算装置可以应用于计算机辅助手术系统中。该三维虚拟器官的体积计算装置,包括:
[0150] 生成模块1301,用于生成与三维虚拟器官相交的贝塞尔曲面,由体素点组成的三维虚拟器官被贝塞尔曲面分隔成病变组织和非病变组织,体素点是根据二维图像序列获取到的;
[0151] 分类模块1302,用于根据在贝塞尔曲面上的映射点和与映射点映射的体素点之间的深度,将体素点分类到在病变组织中的第一体素点集合或在非病变组织中的第二体素点集合中;
[0152] 计算模块1303,用于将第一体素点集合中体素点的数量乘以体素点的单位体积得到病变组织的体积,将第二体素点集合中体素点的数量乘以体素点的单位体积得到非病变组织的体积。
[0153] 综上所述,本发明实施例提供的三维虚拟器官的体积计算装置,由于生成的是贝塞尔曲面,而贝塞尔曲面是根据控制点生成的,所以,可以避免由用户手动绘制切割曲面时,得到的切割曲面较为粗略的问题,以提高制定的手术方案的效果。
[0154] 请参考图14,其示出了本发明再一实施例提供的三维虚拟器官的体积计算装置的结构框图,该三维虚拟器官的体积计算装置可以应用于计算机辅助手术系统中。该三维虚拟器官的体积计算装置,包括:
[0155] 生成模块1401,用于生成与三维虚拟器官相交的贝塞尔曲面,由体素点组成的三维虚拟器官被贝塞尔曲面分隔成病变组织和非病变组织,体素点是根据二维图像序列获取到的;
[0156] 分类模块1402,用于根据在贝塞尔曲面上的映射点和与映射点映射的体素点之间的深度,将体素点分类到在病变组织中的第一体素点集合或在非病变组织中的第二体素点集合中;
[0157] 计算模块1403,用于将第一体素点集合中体素点的数量乘以体素点的单位体积得到病变组织的体积,将第二体素点集合中体素点的数量乘以体素点的单位体积得到非病变组织的体积。
[0158] 可选的,该装置还包括:
[0159] 读取模块1404,用于读取当前时刻三维虚拟器官的显示状态参数;
[0160] 显示模块1405,用于当显示状态参数用于指示显示病变组织的体素点时,显示贝塞尔曲面、病变组织的体积、非病变组织的体积,并以不同方式显示病变组织的体素点和非病变组织的体素点;当显示状态参数用于指示隐藏病变组织的体素点时,显示贝塞尔曲面、病变组织的体积、非病变组织的体积,显示非病变组织的体素点,并隐藏病变组织的体素点。
[0161] 可选的,计算模块1403,还用于计算病变组织与非病变组织的体积百分比;
[0162] 显示模块1405,用于显示体积百分比。
[0163] 可选的,分类模块1402,具体用于:
[0164] 根据体素点和贝塞尔曲面中最小的控制点生成第一向量,并计算第一向量在贝塞尔曲面的法向量上的第一投影长度;
[0165] 根据映射点和控制点生成第二向量,并计算第二向量在法向量上的第二投影长度;
[0166] 当第一投影长度小于第二投影长度时,将体素点分类到第一体素点集合中;
[0167] 当第一投影长度大于第二投影长度时,将体素点分类到第二体素点集合中。
[0168] 可选的,该装置还包括:确定模块1406,还用于确定贝塞尔曲面的控制点在贝塞尔曲面上的映射点;
[0169] 显示模块1405,还用于显示映射点,并隐藏控制点;
[0170] 更新模块1407,用于响应于针对映射点输入的控制信号,更新贝塞尔曲面得到用于模拟切割三维虚拟器官的目标曲面。
[0171] 可选的,更新模块1407,具体用于:
[0172] 当控制信号是位移信号时,更新贝塞尔曲面相交于三维虚拟器官的位置得到目标曲面;
[0173] 当控制信号是角度信号时,更新贝塞尔曲面的角度相交于三维虚拟器官得到目标曲面。
[0174] 可选的,计算模块1403,还用于根据三维虚拟器官中的体素点的坐标计算得到包围盒;
[0175] 该装置还包括:选取模块1408,用于在包围盒的一条对角线上选取中间点,并将中间点到对角线的端点之间的线段显示为控制杆;
[0176] 确定模块1406,还用于当接收到作用于控制杆的杆身的控制信号时,确定控制信号是位移信号;当接收到作用于控制杆的端点的控制信号时,确定控制信号是角度信号。
[0177] 可选的,生成模块1401,具体用于:
[0178] 根据三维虚拟器官中的体素点的坐标计算得到包围盒;
[0179] 从包围盒的边中选取基准点,并计算基准点的坐标;
[0180] 根据基准点的坐标确定控制点的坐标;
[0181] 设置横坐标u和纵坐标v变化的步长,将u和v按照步长变化,并将每次得到的u、v和控制点的坐标输入公式i∈ [0,
n],j∈[0,n];
[0182] 对公式输出的各个坐标点进行渲染,得到贝塞尔曲面。
[0183] 可选的,该装置还包括:
[0184] 排列模块1409,用于在m×m的网格中等距排列控制点;
[0185] 计算模块1403,还用于根据网格的长度和宽度,并根据长度、宽度和等距的比例关系计算体素点的坐标;将体素点的坐标分别带入公式i∈[0,n],j∈[0,n];将公式的输出作为映射
点。
[0186] 综上所述,本发明实施例提供的三维虚拟器官的体积计算装置,由于生成的是贝塞尔曲面,而贝塞尔曲面是根据控制点生成的,所以,可以避免由用户手动绘制切割曲面时,得到的切割曲面较为粗略的问题,以提高制定的手术方案的效果。
[0187] 由于只显示贝塞尔曲面上的映射点,而隐藏位于贝塞尔曲面上方的控制点,这样,秉着所见即所得的原则,用户只要将某个映射点往某个方向上移动,即等同于将该映射点对应的控制点往该方向上移动,可以根据移动的情况重新生成贝塞尔曲面。而在没有生成映射点时,用户只能通过位于贝塞尔曲面上方的控制点来修改贝塞尔曲面,而控制点的数量较多且空间位置较为复杂,所以,解决了用户无法准确判断需要移动哪个控制点来修改贝塞尔切割曲线的问题,影响了贝塞尔曲面的生成效率和准确性。
[0188] 通过控制杆来更新贝塞尔曲面相交于三维虚拟器官的位置和角度,避免了切割曲面一旦生成就无法调整的问题,从而提高切割曲面的灵活性。
[0189] 通过实时显示体积和体积百分比,以供用户参考,制定更加安全合理的手术方案。
[0190] 图15示出了本发明一个示例性实施例提供的计算机辅助手术系统1500的结构框图。该计算机辅助手术系统1500可以是便携式移动计算机辅助手术系统。
[0191] 通常,计算机辅助手术系统1500包括有:处理器1501和存储器1502。
[0192] 处理器1501可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器1501可以采用DSP(Digital Signal Processing,数字信号处理)、 FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA (Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器1501也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central Processing Unit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1501可以在集成有GPU(Graphics Processing Unit,图像处理器), GPU用于负责显示屏所需要显示的内容的渲染和绘制。
[0193] 存储器1502可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器1502还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器1502中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器1501所执行以实现本申请中方法实施例提供的三维虚拟器官的体积计算方法。
[0194] 在一些实施例中,计算机辅助手术系统1500还可选包括有:外围设备接口 1503和至少一个外围设备。处理器1501、存储器1502和外围设备接口1503之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口1503相连。具体地,外围设备包括:射频电路1504、触摸显示屏1505和电源1509中的至少一种。
[0195] 外围设备接口1503可被用于将I/O(Input/Output,输入/输出)相关的至少一个外围设备连接到处理器1501和存储器1502。在一些实施例中,处理器1501、存储器1502和外围设备接口1503被集成在同一芯片或电路板上;在一些其他实施例中,处理器1501、存储器1502和外围设备接口1503中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
[0196] 射频电路1504用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路1504通过电磁信号与通信网络以及其他通信设备进行通信。射频电路1504将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路
1504包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路1504可以通过至少一种无线通信协议来与其它计算机辅助手术系统进行通信。该无线通信协议包括但不限于:万维网、城域网、内联网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路1504还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
[0197] 显示屏1505用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏1505是触摸显示屏时,显示屏1505还具有采集在显示屏1505的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器1501进行处理。此时,显示屏1505还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏1505可以为一个,设置计算机辅助手术系统1500的前面板;在另一些实施例中,显示屏1505可以为至少两个,分别设置在计算机辅助手术系统 1500的不同表面或呈折叠设计;在再一些实施例中,显示屏1505可以是柔性显示屏,设置在计算机辅助手术系统1500的弯曲表面上或折叠面上。甚至,显示屏1505还可以设置成非矩形的不规则图形,也即异形屏。显示屏1505可以采用LCD(Liquid Crystal Display,液晶显示屏)、OLED(Organic Light-Emitting Diode, 有机发光二极管)等材质制备。
[0198] 电源1509用于为计算机辅助手术系统1500中的各个组件进行供电。电源 1509可以是交流电、直流电、一次性电池或可充电电池。当电源1509包括可充电电池时,该可充电电池可以是有线充电电池或无线充电电池。有线充电电池是通过有线线路充电的电池,无线充电电池是通过无线线圈充电的电池。该可充电电池还可以用于支持快充技术。
[0199] 本领域技术人员可以理解,图15中示出的结构并不构成对计算机辅助手术系统1500的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
[0200] 本发明一个实施例提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上所述的三维虚拟器官的体积计算方法。
[0201] 本发明一个实施例提供了一种三维虚拟器官的体积计算设备,所述三维虚拟器官的体积计算设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如上所述的三维虚拟器官的体积计算方法。
[0202] 需要说明的是:上述实施例提供的三维虚拟器官的体积计算装置在进行三维虚拟器官的体积计算时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将三维虚拟器官的体积计算装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的三维虚拟器官的体积计算装置与三维虚拟器官的体积计算方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
[0203] 上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
[0204] 本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0205] 以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。