虚拟手术中肝脏形变仿真系统①

2019-10-18 06:40陈国栋许少剑
计算机系统应用 2019年10期
关键词:质点弹簧绘制

王 娜,陈国栋,许少剑

1(福建师范大学 福清分校 电子与信息工程学院,福州 350300)

2(无损检测技术福建省高等学校重点实验室(福建师范大学福清分校),福州 350300)

3(非遗数字化与多源信息融合福建省高校工程研究中心,福州 350300)

4(福州大学 物理与信息工程学院,福州 350108)

虚拟现实技术作为仿真技术的重要方向之一,被广泛地应用在多个领域[1-3].随着医学和计算机技术的发展,虚拟手术成为了虚拟现实技术在医学领域的重要应用之一.虚拟手术具有可重复性的优点,能够在不依赖于尸源的情况下逼真地模拟临床手术的全过程,为医学培训和科研提供了一种可操作性强又经济有效的训练平台.肝脏是人体内最大的实质性器官,由肝实质和伴随着一系列管道的间质构成[4].然而肝脏又是一个脆弱器官,一旦出现恶性肿瘤将会危及生命.肝外科手术仍然是治疗大多数恶性原发性或继发性肝损伤最有效的方法[5].

在虚拟肝脏手术的研发中,肝脏的可视化建模[6-8]与形变仿真[9-11]是关键技术之一,肝脏的形变如按压、穿刺、缝合等操作的逼真程度直接影响到虚拟手术的质量.无网格形变技术方法在手术直接操作大变形区域由于无需进行网格重构,不会产生网格畸变,同时又具有光滑过渡的形变优点,因此适合于大变形区域仿真.然而无网格方法的计算量大,会影响运行速度,若在全局模型区域采用该方法会导致计算效率低,严重影响虚拟手术仿真的实时性.在肝脏软组织物理形变方法中,软组织在手术器械直接施压作用力的局部范围内会发生大变形,基于网格形变的方法在这大变形区域内会发生网格畸变,影响形变仿真的真实感.虚拟肝脏手术系统中的形变仿真尽可能在满足真实感的前提下又同时满足实时性要求,否则会影响手术训练或手术方案的制定,甚至给医生造成误导.而实时性与真实感一直是研究此领域难以平衡的问题.虚拟肝脏形变仿真手术要体现视觉的逼真感,则需要根据肝脏组织真实的生物特性来建立形变模型,从而能够精确模拟形变过程并反馈给用户.

1 系统设计

1.1 系统架构

虚拟手术中肝脏形变仿真系统中涉及到的主要研究的内容有:虚拟手术场景中的肝脏几何建模、虚拟手术场景绘制及模型绘制、虚拟器械与肝脏模型的交互碰撞检测、肝脏软组织在器械操作下的形变仿真、力反馈的计算、数值积分计算.针对以上研究内容,该虚拟形变仿真系统的开发分为3个模块:数据预处理模块、主程序模块、反馈模块.数据预处理模块主要包括肝脏软组织的几何建模及虚拟手术场景的渲染;主程序模块是系统的核心模块,该模块实现鼠标拾取碰撞检测算法、反馈力计算、肝脏软组织物理形变算法、形变动力学方程的数值积分计算;反馈模块将虚拟手术形变过程以图形视觉的方式反馈给用户,并且将主程序中获取的反馈力小、位移、碰撞最邻近质点信息输出反馈给用户,用户可以对这些数据采集分析,如图1所示.

图1 虚拟手术中肝脏形变仿真系统架构图

1.2 实验平台

为了使本设计能用于大多数科研实验室常见的PC平台,以提高程序代码的可重用性和可移植性,操作系统采用Windows,开发环境为OpenGL开放工具库,同时AutoCAD、3ds Max等3D图形设计软件制作的模型文件可以转换成OpenGL的顶点数组及面片数组,OpenGL可以根据顶点数组及面片数组绘制模型.本论文采用OpenGL来渲染虚拟手术场景、绘制肝脏模型、并且将模型形变过程动态的显示在屏幕上.计算机硬件采用Intel® CoreTMi7-2670QM 2.2 GHz 的CPU,8 GB内存,NVIDIA GeForce GT 540 M 的显卡及2 GB显存.

1.3 界面设计

在该系统的开发中,为了能提供友好、人性化、可视化的图形交互界面,方便用户使用.本系统在MFC上创建用户界面,OpenGL完成图形的绘制显示,从而实现可视化交互系统.

该系统的界面如图2所示,系统界面设计分为3个区域:第1个区域为控制区,用户可以对实验参数进行设置;第2个区域为对实验数据输出区域,用于输出反馈力大小、位移等.第3个区域为视图区域,用于对形变仿真结果的三维显示.

2 算法设计

2.1 算法原理

根据虚拟手术形变的特征,结合上述网格与无网格的优缺点,本文提出一种肝脏网格与无网格混合模型的构建方法:将软组织动态划分3个区域,即手术大变形区域、非手术区域、交界区域.在手术大变形区域采用无网格法,非手术区域采用网格法.在手术区域采用无网格方法可以避免大形变中的网格畸变问题,有利于实现形变仿真的真实感,同时手术区域较小则区域模型节点数也较少,手术区域采用无网格法可以达到实时性要求;在非手术区域采用基于质点弹簧的网格形变方法,充分发挥了质点弹簧在实时性上的优点,同时非手术区域形变较小采用质点弹簧法也不会发生网格畸变,模拟形变效果也较好.本文提出的基于网格与无网格混合的形变方法发挥两者在形变仿真中的优势,在真实感与实时性两者之间进行折中,能够适用于虚拟肝脏形变手术仿真.

图2 系统界面图

2.2 算法流程

肝脏网格与无网格混合模型的构建方法为:采用完全的质点弹簧模型作为初始模型,手术中将大变形区域产生网格畸变的质点弹簧模型能够自适应地转换成无网格建模区域,而变形不显著的区域仍然保留质点弹簧模型,从而将这两个区域混合起来.同时对混合模型中在无网格区域与质点弹簧区域之间建立过渡单元.

为了研究可以自动依据手术器械操控区域及施力大小而动态转换的混合模型,设计了一种区域可变的网格向无网格动态自适应转换算法,算法流程图如图3所示.

算法主要分为以下4个步骤:

步骤1.从VHP (Visible Human Dataset)数据集中提取肝脏轮廓.通过在HSV(Hue,Saturation,Value)颜色空间中大致的提取出肝脏轮廓,再加以简单的人工交互曲线拟合的方法找到肝脏的轮廓.接下来选取面绘制的方式对肝脏进行三维重建,使用轮廓线上的点来构建肝脏模型,再对所构建的肝脏模型做表面的平滑处理,最终得到理想的肝脏模型.

步骤2.当手术器械作用于肝脏软组织表面时,对质点弹簧模型需要搜索与碰撞点位置最邻近的质点作为器械的施力点,该质点受到作用力从而位移发生变化,与该质点相连接的弹簧长度变化,从而产生弹簧力逐层带动其他质点运动产生形变.鼠标交互操控中根据拾取算法来检测是否对模型进行手术施力,最后搜索与拾取点最邻近的模型质点作为实际施力点.

图3 算法流程图

步骤3.针对虚拟器械操作肝脏软组织过程中可能发生的情况进行动态划分:对手术区域产生的较大形变采用无网格法进行模拟;其余非手术区域受力较小产生的形变也较小,则采用基于质点弹簧的网格形变方法来模拟;而两者之间通过过渡节点完成信息的传递.该步骤分为3个子步骤:

步骤3.1.无网格模型动态形变可以利用牛顿第二定律对各个节点分析,从而肝脏模型的弹性变形可以用下式来模拟:

步骤3.2.在质点弹簧系统中每个质点由于受到总作用力而产生运动,总的作用力包含了内力与外力两部分,其中内力是由质点弹簧系统形变产生的弹簧力和阻尼力组成,外力主要为肝脏软组织受到手术器械的拉力及压力.而每一个质点在力作用下的运动形变满足牛顿第二定律,则质点弹簧模型中任何一个质点i的动力学方程为:

其中,Xi是质点的位移矢量,质点i受到的弹簧力、阻尼力、拉力及压力分别用Fd、Fk、Ft、Fp表示,其他质点受到器械作用力为零.

步骤3.3.对过渡单元节点受到无网格区域的作用力和质点弹簧区域的作用力这两者的合力,其形变方程为:

步骤4.质点弹簧模型根据无网格模型传递过来的位移,计算质点弹簧模型内质点受到的弹力,则质点弹簧模型由于弹力作用,带动了整体质点弹簧模型质点的位移运动.同时质点弹簧模型将反作用的弹力通过过渡连接点传递给无网格模型,无网格模型由此也获得了质点弹簧模型的弹力作用,从而完成了肝脏的网格与无网格混合模型的构建.

该算法结合了网格与无网格方法的优缺点,本质上是一种基于网格与无网格混合的物理模型的肝脏软组织形变仿真算法,能够满足形变仿真的真实感与实时性要求.

3 系统实现

3.1 数据预处理模块

数据预处理模块完成肝脏软组织几何建模:根据真实肝脏软组织的医学影像信息建立肝脏的几何模型,将建立好的肝脏模型载入到系统中,模型载入的过程不需要具有实时性,因此该模块可以作为一个独立模块,数据预处理过程需要存储模型顶点信息、面片信息、每个顶点相连接的拓扑信息,完成实验前期预计算.

肝脏三维模型用三维建模软件3ds Max完成文件格式转换,针对于不规则部分进行细分,从而划分出尽可能多的规则形状,最后利用该软件绘制出对应的图形.而一些无法进行再次划分的形状,采用分解的方法,对图形的基本单元划分成单个功能单元,再利用编辑器进行调整和设置.对于一些规则的图形则只需要进行多次的裁剪、编辑、放大、缩小,就可以提高模型的精密度.三维肝脏模型是由顶点和三角面片组合而成的,通过顶点信息定义出边的信息,接着通过边的信息构成面片的信息.顶点和三角形面片的数量越大,三维模型就越精细.为了提高形变仿真的真实感,所构建的三维肝脏模型的顶点数设置为1527个,三角形面片数为3050个,由3ds Max建立的肝脏模型如图4所示.在建立肝脏的几何面模型的基础上,结合肝脏的生物力学特性就可以对肝脏软组织物理建模,因此肝脏几何建模是是研究物理形变模型的前期准备工作.

图4 由3ds Max建立的肝脏模型

在完成建立肝脏模型后,需要将模型载入系统,并绘制模型及虚拟手术场景.肝脏软组织模型绘制及虚拟手术器械绘制是在MFC环境中调用OpenGL函数实现.将3ds Max所建肝脏模型导出为ASE的文件格式,保留了模型顶点及面的拓扑信息,该信息用于质点弹簧模型的建立及无网格模型表示,ASE文件读取用C++程序语言中ifstream类来实现的.并将其在MFC框架用OpenGL函数绘制该模型如图5所示.

图5 用OpenGL绘制的肝脏模型

3.2 主程序模块

主程序模块是虚拟肝脏形变仿真的核心模块,该模块主要包括碰撞检测子模块、物理形变子模块和数值计算子模块.在虚拟主模拟程序中,首先调用数据预处理模块,绘制肝脏组织模型及场景绘制,建立虚拟的手术环境;然后用户通过鼠标拾取的操作实现交互操控肝脏软组织,程序获取鼠标交互的输入信息,调用碰撞检测模块算法,检测该虚拟器械是否与肝脏模型发生碰撞.若发生碰撞根据鼠标操作计算外力大小即反馈力计算,计算外力的同时进入形变计算模块,根据实验预先想要仿真何种物理形变模型,则调用相对应的物理形变算法,物理形变算法有基于质点弹簧的网格形变算法、无网格形变算法、两者模型混合的形变算法,完成物理形变算法后需要对形变模型的动力学方程数值积分进行计算,并且计算形变过程中的位移大小.最后,更新形变后的模型几何数据信息,调用图形绘制模块,将形变后的肝脏模型在显示器上视觉反馈给用户.

3.2.1 碰撞检测子模块

碰撞检测子模块是形变计算的前提准备步骤,当鼠标拾取操作作用在肝脏模型区域,需要检测该操作位置在模型上的最邻近质点,同时搜索该质点的局部区域为实现动态转换的混合形变模型作前期工作,并把碰撞检测到的质点输出到信息输出区反馈给用户.

3.2.2 物理形变子模块

物理形变子模块是在肝脏软组织几何建模的基础上,根据肝脏软组织的生物力学特性分别完成质点弹簧、无网格、质点弹簧与无网格混合的物理形变建模.该模块将3种形变计算模型集成在一起,对这3个形变模型分别建立一个可交互操作界面.在各个形变模型界面对控制区的实验参数进行初始化设置,用户交互操作时检测到鼠标拾取的模型碰撞点,则可以按照需要的形变仿真模型切换到相应的形变模型算法中.系统通过模拟相应的模型在操控力作用下产生的形变过程,将形变整体过程反馈给用户.图6、图7、图8分别为肝脏质点弹簧模型形变界面、肝脏无网格模型形变界面、混合模型形变界面.首先用户根据想要仿真的物理模型,鼠标点击切换到相应的形变界面,并载入肝脏模型,完成相对应的物理形变模型绘制模型;其次根据实验仿真可以在控制区对实验参数进行重新设置,最后在鼠标交互操作下模拟肝脏软组织的物理形变,系统在OpenGL视图区将形变过程反馈给用户.

图6 肝脏质点弹簧模型形变界面

图7 肝脏无网格模型形变界面

图8 混合模型形变界面

3.2.3 数值计算子模块

数值计算子模块是在对肝脏软组织模型的各个质点进行受力分析后,需要对模型质点的运动方程进行求解,得到软组织质点在每个时间步长内的位置,进而对肝脏软组织形变进行实时仿真.用于模型运动方程求解的数值算法主要有显示欧拉积分与隐式欧拉积分,它们将二阶微分方程转化为一阶常微分方程,通过迭代求解一阶常微分方程进而得到质点的速度及位置.

3.3 反馈模块

一个良好的反馈模块能够加强虚拟形变手术系统的沉浸感和真实感.反馈模块功能主要包括视觉反馈与力反馈.本系统的视觉反馈是在视图区进行三维场景展示,其中实现肝脏模型对象的视觉可视化需要对模型图形绘制,绘制方式以网格和点云表示,网格表示质点弹簧模型,点云表示无网格模型.在肝脏软组织模型的形变过程中,采用OpenGL完成虚拟场景渲染及在每隔一个时间步长绘制肝脏模型形变,用户可以通过视图区获取在虚拟手术场景中器械操控肝脏软组织的形变过程.同时,在力反馈方面,虽然该系统未引入力反馈装置,但根据鼠标拾取操作来模拟虚拟器械操控肝脏模型.并且对因操控下形变过程的反馈力及节点位移进行计算,把形变位移及反馈力大小在信息输出区反馈给用户,从而提供了虚拟的力反馈环境.

4 结论与展望

本文以真实、实时模拟虚拟手术中肝脏软组织的形变为目标,综合了计算机图形学、人机交互技术、弹性力学、数值计算等多门学科知识,结合了肝脏软组织的生物力学特性,肝脏三维几何建模和鼠标拾取的碰撞检测方法,主要对虚拟肝脏软组织形变手术中要同时达到真实感与实时性的要求进行研究.首先介绍了系统的整体架构、实验平台和界面设计;然后给出系统的算法设计;继而再分别介绍本系统的几个主要模块功能.通过对本系统在架构、界面设计以及功能上的介绍,明确了本系统的工作完成目标和结果,并验证了算法的可行性,实现了虚拟手术中肝脏形变仿真系统.

猜你喜欢
质点弹簧绘制
Painting ski maps 绘制滑雪地图
联合弹簧(天津)有限公司
绘制童话
巧用“搬运法”解决连续质点模型的做功问题
析弹簧模型 悟三个性质
绘制世界地图
如何求串联弹簧和并联弹簧的劲度系数
质点的直线运动
质点的直线运动
神秘的不速之客