APP下载

基于Unity的前列腺三维可视化系统设计与实现

2021-03-15徐振豪何良华

电脑知识与技术 2021年1期
关键词:三维可视化前列腺

徐振豪 何良华

摘要:随着医学与计算机科学的不断融合,医学影像三维可视化技术在医学领域扮演着重要的角色。为了帮助医务人员更直观观察前列腺癌及其周围器官分布情况,在Unity 3D平台上实现了对前列腺医学影像的三维重建及交互的系统。将医学分割处理后的结果作为数据输入,通过一种改进的线性插值算法获得内插二值图像,利用面绘制算法生成三角形网格模型、网格平滑算法进行迭代优化,最终渲染出三维可视化模型,在unity上以系统的形式进行展示和交互。

关键词: 前列腺; 三维可视化; Unity3D; 面绘制算法; 线性插值算法; 网格平滑算法

中图分类号: TP391        文献标识码:A

文章编号:1009-3044(2021)01-0008-03

Abstract:With the continuous integration of medicine and computer science, the 3D visualization technology of medical images plays an important role in the medical field. In order to help medical staff observe prostate cancer and the distribution of its surrounding organs more intuitively, implements a 3D reconstruction and interactive system for prostate medical imaging on the Unity 3D platform. Taking the result of medical segmentation as input, the interpolated binary image is obtained through an improved linear interpolation algorithm, the triangle mesh model is generated by MC algorithm, and a mesh smoothing algorithm is used for iterative optimization. Finally, a 3D visualization model is rendered, which is displayed and interacted on Unity.

Key words:prostate;3D visualization;unity3D;marching cubes;linear interpolation; mesh smoothing

近年来,随着计算机软硬件技术的不断发展,医学三维可视化也逐步发展成了一个热门的领域。通过医学三维可视化技术,医护人员的观察对象从MRI、CT等二维断层序列转变为医学器官所对应的三维模型,这使得医护人员更直观看到三维器官且可以根据三维模型来判断病灶的相对位置、大小、形状等信息。随着图像可视化研究的日益发展与成熟,它的开发工具包也逐渐进行大众的视野,其中最为常见的就是ITK、VTK和MITK。国内有学者利用VTK和VS实现了几种面绘制和体绘制方法的三维重建及交互[1],但VTK运行速度慢、重建结果存在鳞状效应的缺点仍无法根治。为此,中科院自动化所的田捷博士带领的团队开发出MITK[2]。MITK集成了医学影像领域内各算法,是一个集医学影像分割、配准、三维可视化为一体的框架,填补了VTK+ITK的缺陷。MITK框架集成了基于阈值的分割算法、区域增长算法以及交互式分割算法,較好地应用于肺部、脚踝等CT图像的三维可视化,但是对于复杂的前列腺影像器官三维可视化的工作而言,MITK并不是一个有效的选择,该框架提供的分割算法并不能将直肠、精囊、前列腺、精囊做正确分割并重建三维模型。除此之外,庞大复杂的MITK系统存在编译安装不方便、不利于二次开发等问题。作为游戏引擎开发的Unity平台,它构建的可视化项目主要覆盖在地理空间、游戏开发、虚拟现实等领域。相比而言,很少有人将Unity技术应用到医学三维可视化领域,这将是一个全新的尝试。基于Unity 3D平台实现的医学三维可视化系统最终会生成可执行文件,具有界面友好、可移植性强、GPU视觉渲染效果强等特点。为此,本文基于Unity平台实现了一个前列腺三维可视化交互系统,并实现了一种改进的基于深度优先筛选的二值断层图像的线性插值算法。

1 算法实现

本系统以前列腺MRI影像分割后的结果作为输入,先使用基于深度优先筛选的二值断层图像的线性插值算法从而得到内插断层图像,再使用面绘制算法生成前列腺的三角片网格模型,再利用网格平滑算法迭代优化三角片,最终生成三维前列腺模型。

1.1数据预处理

经医学影像分割算法之后,我们将从原始MRI数据获取到NIFTI格式的分割结果,其中包括前列腺、直肠、精囊、肿瘤这四个器官。将NIFTI格式的分割结果转化成二值化断层序列,将对应器官的二值化断层序列放在相对应的文件。以实验中前列腺患者所用的核磁共振仪为例,上述4个器官经处理后均生成24张二值化断层序列图像,存放于与之对应的文件夹下。

1.2线性插值

在医学三维可视化过程中,由于受限于断层扫描设备、图像存储空间、安全性等因素,相邻断层之间存在一定的距离,这使得重建出的三维模型的层间分辨率远低于二维断层图像的层内分辨率,该重建结果存在失真的问题。因此,为了得到更真实的前列腺可视化结果,就必须对这些断层序列进行插值处理[3]。由于断层序列图像存在特殊性以及为了降低运算复杂度,本文所提出的插值算法只根据相邻断层图像的轮廓信息内插出中间断层的轮廓信息,然后经过填充得到最终的中间断层图像。另外,考虑到患者可能存在不规则的病变精囊或肿瘤,利用深度优先算法递归确定匹配轮廓来解决可能存在的问题。这就是本文提出的基于深度优先筛选的二值断层图像的线性插值算法。

本文是基于胡晓飞提出的一种简单而有效的轮廓线匹配算法[3]。该方法将S和T的质点作为圆心划分为4个象限,每个象限都有一对匹配线段,然后再根据特定的匹配准则确定最佳匹配点对,使之成为图1的情况,最终通过线性插值计算出[Ri]。她提出的匹配准则是尽可能将S上的轮廓线点集平均分配给T上的轮廓线点集。

该方法对于解决前列腺影像中类椭圆器官:前列腺、直肠等具有较好的应用。但精囊和肿瘤并不能直接使用该方法进行内插。一方面是精囊分为左右精囊、患者可能存在多个肿瘤因而待插值图像中存在多个封闭区域。另一方面是病变的精囊或肿瘤可能存在不规则形状会导致上述方法在划分象限后出现多条轮廓线。如图2所示是前列腺MRI影像中的一张横截面切片,从上到下分别表示前列腺、精囊、直肠。从中可以看出精囊存在两个封闭区域且形状复杂不规则。

基于上述分析,本文对胡晓飞学者提出的算法做出一定改进以应用于前列腺影像的插值工作。接下来主要介绍本文实现的算法步骤:

对于相邻两张待插值的二值断层图像,起始图像记为S,另一记为T,S与T之间需要内插的M张记为[Ri,i∈M]。

首先,计算内插层数M。分割得到NIFTI格式数据的头文件中对应的pixdim体素维度字段保留相邻断层层间间隔以及每个断层所对应的厚度。由此可以求出相邻断层需要的内插层数M。

其次,提取图像的边缘轮廓。考虑到精囊和肿瘤存在多个封闭区域,此处使用COCO数据集进行格式互换时的binary_mask_to_polygon函数[4],可提取mask图像中的所有封闭区域的轮廓线点集,以list的数据结构存储所有轮廓线的点集,有效解决了精囊和肿瘤存在多个封闭区域的问题。

接下来要计算出待插值的轮廓线的质心坐标。对于每张二值图像,可获取对应器官的轮廓线,计算出所有轮廓线上点的质心坐标[x0,y0]:

其中,[xi,yi]为这些像素点的坐标,N为轮廓线上像素点总数。

下一步就是确定S和T轮廓线的匹配线段。考虑到病变精囊或肿瘤可能存在不规则形状会导致每个象限存在多条轮廓线,本文对每个象限的轮廓线进行深度优先遍历,搜索并记录该象限中所有存在的轮廓线,筛选出像素点数最多的轮廓线作为该象限的最佳轮廓线。最后,进行闭环检测,由于经上述处理后各象限的轮廓线可能存在间断现象,利用二维的线性插值补充轮廓点确保每张断层图像最终筛选出的轮廓线形成一个闭环。

在确定好轮廓线之后,接下来就要确定最佳匹配点对从而进行线性插值。本文利用递归调用函数来实现这一匹配过程。

①先分别计算两条轮廓线的中心点;

②然后将两轮廓线对应的起点、中点、终点作为一对匹配点,进行线性插值计算内插的像素点坐标;

③接着起点保持不变,将中点作终点递归执行①②步骤;

④将中点作为起点,终点不变递归执行①②步骤。

经上述递归式最佳匹配与线性插值过程,所得的结果只是内插图像的边缘轮廓线,因此通过进一步填充运算得到一个最终完整的内插图像。结果如图3、4所示,对一名患者的前列腺、精囊器官进行线性插值,内插层数M为7。

1.3面绘制

经过线性插值之后,便得到了各器官经内插之后的二维图像切片。但我们最终目的是为了得到前列腺影像的三维模型数据,因此需要用面绘制算法将二维切片数据转换为三维可视化模型并实时渲染。Marching Cubes算法是由Lorensen等人于1987年提出并实现的一种面绘制算法[5]。该算法的主要思想是以体元为单位来确定三维模型数据部分与背景部分的边界,利用256种可枚举的情况来实现体元内的等值三角片抽取。遍历所有二维断层图像的体元,抽取出其中的三角片最后集合成能表示三维模型表面的三角网格。本文根据范强等人基于中值法改进的Marching Cubes算法进行面绘制实现前列腺等器官的三维重建[6][7]。相比于经典的MC算法,该改进避免了遍历无用的体素和形成空白三角片,提高了处理速度和效率。最终,我们得到了关于前列腺影像的三维模型数据:顶点坐标数组和三角片的索引数组。

1.4网格平滑

为了使三维模型的网格更加平滑,还引入了网格平滑算法对三角网格进行迭代平滑。此处使用拉普拉斯平滑算法[8][9]:原理是将每个顶点都移动到相邻顶点的平均位置,即采用所谓伞状算子:[Up=1ni=0n-1Adjip]。在伞状结构中表示这样的过程如图5所示。

1.5模型渲染

首先,利用Unity中的MeshRender组件确定各器官的材质颜色并渲染出来,此处以泌尿科大夫的一般标注习惯对各器官添加材质颜色,其中直肠材质颜色为蓝色、前列腺为绿色、精囊為黄色、肿瘤为红色。然后,将顶点坐标数组和三角片的索引数组数据赋值给Unity中的Mesh组件,最终渲染出前列腺影像的三维可视化模型。渲染结果如图6、7所示。

2 系统实现

由于大部分肿瘤都会存在于前列腺内部,因此需要增设调节透明度功能,这样医护人员可根据透明度的调节来观察到前列腺内部的肿瘤大小及其结构。在Unity3D中需要将材质的Rendering Mode修改为Fade模式。为实现前列腺影像三维模型的旋转功能,我们将前列腺三维模型设为参照物,场景中的主相机根据三维模型的中心点进行旋转,并设置可调节的旋转角速度参数。

最终,通过在Unity3D场景中增加交互按钮及滚动条等插件,实现了对三维模型进行平移、缩放、调节透明度、旋转及控制旋转速度等交互操作。在代码中实现混合编程,将线性插值部分的python代码嵌入到C#脚本中,实现一个端到端的前列腺影像三维可视化系统。该场景通过对前列腺分割结果的全方位展示,辅助医生了解病灶的空间位置及大小,提高手术精度。主界面如图8所示。

3 结论

本文提出了一種基于深度优先筛选的二值断层图像的线性插值算法,其目的是针对性地解决前列腺影像中精囊和肿瘤多区域以及不规则形状所带来的问题。但该线性插值算法仍存在一定的不足,仅针对特定前列腺影像问题做出的改进,泛化能力不强。同时,本文突破以往用VTK和MITK开发三维可视化系统的局限性,针对复杂结构的前列腺影像在Unity3D平台上用面绘制算法生成三维网格模型,并实现交互。在今后的研究过程中,前列腺影像三维可视化系统可将基于人工智能的前列腺器官分割技术和面绘制三维重建技术相融合形成端到端的自动分割和三维可视化系统,能更切实地帮助医生生成自动分割的可视化模型。

参考文献:

[1] 刘敏.基于VTK的医学图像三维重建的研究[D].秦皇岛:燕山大学,2013.

[2] 汪文星.基于MITK的CT图像三维可视化方法研究[D].广东:华南理工大学,2011.

[3] 胡晓飞.一种用于二值断层图像的插值方法[C].合肥:第二届全国几何设计与计算学术会议,2005.

[4] Lin T Y,Maire M,Belongie S,et al.Microsoft COCO:common objects in context[M]//Computer Vision – ECCV 2014.Cham:Springer InternationalPublishing,2014:740-755.

[5] Lorensen W E,Cline H E.Marching cubes:a high resolution 3D surface construction algorithm[J].ACM SIGGRAPH Computer Graphics,1987,21(4):163-169.

[6] 范强,刘鹏.基于中值法改进Marching Cubes曲面重建算法[J].测绘与空间地理信息,2019,42(12):11-14.

[7] wozhengtao.图像数据到网格数据-1——MarchingCubes算法[CP]. https://blog.csdn.net/wozhengtao/article/details/51429964.

[8] Field D A.Laplacian smoothing and Delaunay triangulations[J].Communications in Applied Numerical Methods,1988,4(6):709-712.

[9] wozhengtao.几种网格平滑算法的实现[CP]. https://blog.csdn.net/wozhengtao/article/details/51431378.

【通联编辑:唐一东】

猜你喜欢

三维可视化前列腺
韩履褀治疗前列腺肥大验案
治疗前列腺增生的药和治疗秃发的药竟是一种药
前列腺良恶性肿瘤应用DCE-MRI鉴别诊断的作用分析
喝一次大酒,重伤一次前列腺
治疗前列腺增生的药和治疗秃发的药竟是一种药
与前列腺肥大共处
基于三维可视化技术的云冈石窟文化传播策略研究与实现
基于ArcScene平台的电子沙盘制作