痛并快乐着 2011-01-05 08:55:10

痛并快乐着

陆文龙

在传统的医疗机构中,医生通常使用尸体来训练手术技能。然而在实际的手术教学训练中,尸体价格昂贵且难以重复利用,年轻医生在接触临床案例前往往训练不足,只能通过临床实践训练来增强自身的技巧,这就增加了手术的危险性。而且,使用尸体作训练,还会涉及到伦理等多方面问题。随着计算机硬件的飞跃发展以及虚拟现实技术的长足进步,计算机辅助的虚拟手术系统应运而生。通过虚拟手术系统,年轻医生戴上三维眼镜,手持力反馈设备(haptic device),就可以进入沉浸式的训练环境,方便地进行手术训练,并且此系统可以被重复使用,降低了医院的成本。由此我们可以看到,虚拟手术系统有较大的应用前景,对未来医院教学方式会产生重大影响。

而人体大多数器官都与软组织相关。在虚拟手术系统中,各种手术动作都可能收到软组织形变的直接或间接影响,获得软组织的模拟质量和效率成为虚拟手术系统发开的先决条件之一。

近几年来,随着计算机技术的发展,医学领域迫切需要开发出能够模拟手术进行的虚拟手术系统,以应用于教学、培训、诊断、术前计划等多个领域。一个完整的虚拟手术系统,涉及计算机图形学、数字图像处理、计算机人机交互、软组织形变计算等多方面的技术。其中软组织形变及其与器官相互间作用是虚拟手术系统中各种手术动作的模拟重要组成部分,其模拟质量和模拟效率,对整个虚拟手术系统的正确性、稳定性和运行效率,有显著的影响。

我在项目中,主要研究了虚拟手术系统中有关软组织形变的以下两个方面的问题:

一是如何从真实病人的脊柱三维医学影像数据中获取椎间盘。脊柱和相关肌肉数据的提取可参照《基于VTKITK-SNAP的医学图像处理》[1]。我在已经获得脊柱的图像或网格数据的基础上,如何对脊柱间细小夹层的椎间盘进行提取。所构建出来的椎间盘,在很大程度上能够模拟人体真实的椎间盘,且在模拟运算上有不错的表现。

二是如何在虚拟手术的动态场景中,使用中性线质点弹簧模拟软组织(肌肉和椎间盘),刚体模型模拟脊柱骨,以构建相对完整的脊柱模拟系统。我参考Voronoi网格划分过程[2],构建中心体,构建特殊的适合软组织模拟中心线弹簧模型。并且基于弹簧运动和刚体等物理概念,模拟脊柱在受力等变化下的运动。

我在项目中提出的适用于软组织的特殊中心线弹簧模型模拟算法,及其与刚体模型间的交互方式。以模拟的方式计算了脊柱的运动变化规律,相对于有限元等方式,具有更高的效率。其工作方式相信对将来的虚拟手术系统开发有一定的启发意义。

在开发中,探索过程经过了数次重大的变动,这也许就是研发性项目的特点吧。

首先在初期,我尝试了将基本的弹簧模型应用到计算机模拟中,很多想法都很肤浅,没有考虑到参照前人的经验。这一阶段,虽然当时自己觉得趣味盎然,而现在回头看当时的做法,实在是十分幼稚。不过第一次的尝试确实带领我走进了探索质点弹簧模拟的大门。

在能得到首个能够运动的物理模型后,其实研究才刚刚开始。我开始添加进入实时性、衰减等考虑。待我基本得到一个稳定的弹簧模型后,我却发现,程序存在着巨大的效率问题。数据结构虽然稳定,但却太过复杂。由于我一直使用假想数据进行模型的实验,数据量比较小。而这时估计的真是数据值会相当大,我开始着手考虑一些底层依赖的替代问题。这是研究中的第一次重大变更:数据结构替换。

其后,我采用了boost库中的graph来帮助我实现高效率的数据结构,进行了第一次大范围重写。效果不错。然后随着程序量的日益加大,我自己的架构上,不太满意。而这时在项目的其他方面稍有滞后,于是我开始了第二次重大变更:重新架构。

在各种虚拟手术的操作中,软组织都和刚体的作用密不可分。在此,我们需要的是椎间盘和肌肉在脊椎骨的压迫下能形变,而形变的应力应反馈给相关刚体,完成模拟运动。为此,建立模拟场景Scene,将场景中每一个物理模型抽象为场景对象SceneObject。场景对象代表了一种算法,他应该和自己的场景数据源SceneObjectSource组合模拟一个器官。器官之间的交互通过SceneMediator的数据搬运来完成,可以看做是场景对象之间的管道。此场景的架构可以在将来融合入大部分虚拟手术的器官模拟算法。在此处,软组织(中心体弹簧)模型会向刚体(脊柱)模型搬运对其的应力信息(力与力矩);刚体(脊柱)模型会向软组织(中心体弹簧)模型搬运自身的位置信息,强迫软组织表面的改变。如此的交互保证了各个算法的独立运行和修改。

新的架构不仅能继续融入不同的物理模型到我的场景中来,对于数据结构的替换也会更加方便。这样,我便有精力有能力来考虑优化弹簧的模拟算法。这时,我开始阅读文献,了解很多有关于中心线弹簧算法的经验。然而我却发现,中心线弹簧模型在模拟血管等器官虽然效果良好,但是对于软组织的模拟却没有太好的效果;同时,得到中心线的算法也是我们实验室所缺乏的。故我开始考虑一种新的模拟方式,这也是研究中第三次重大的变更。最后的做法是:

1)   通过软组织的一组表面采样点作为输入数据,进行Voronoi划分。

2)   对于得到的Pole点集,首先取出位于软组织体内的点集,将软组织外的点抛弃。

3)   在一定阈值范围内,让相近的点互相连接,形成中心体,如图1所示。

1 通过表面点集生成的中心体网格

这一次变更即是中心体弹簧模型的出现。首先中心体比中心线不同,可以是一个立体的模型。所以中心体可以更加稳定,也就保证了软组织的形态。另一方面,中心线难以得到,而我们恰好可以避开这一技术难题。我从Vonoroi划分的过程中得到启发,取其Pole点来组成中心体,达到了不错的效果。至此,才形成了现在的成熟的用于模拟软组织的弹簧模型。

当然在此期间,我还进行了其他的工作,比如刚体物理模型的模拟、椎间盘数据的提取等等。这些也是我研发过程中的重要部分。

2 椎间盘重建效果图,左图为输入数据,右为重建椎间盘的效果

经过这次项目,我才明白,研究型的工作,只是凭着自己的兴趣和热情还是不够的。很多时候,我们都需要坚持不懈的毅力和战胜困难的勇气。

 

3 脊柱模拟实验结果

在项目中,因为经过好几次重大的转折,有的时候也会被打击到好几天不愿意再碰这个东西。在面对任何难题时都是这样,不断地努力、努力,看到不任何成果,有时实在太累会让自己休息一下,但是每当再捡起来上次放下的工作,都会感到有新的灵感,或者找到一些突破口。研究的乐趣也就在这里。而这次项目的难度也是比较大的,在这短短一年中,不论是我自己,还是作为整个小组,都在研发过程中遭受过不小的挫折,甚至动过放弃的念头。但现在回首看来,这些都无疑有效地锻炼了我们战胜逆境的勇气,成为学术知识、科研能力之外的一个非常重要的收获。

这次项目是我在大学里一个重要的事件,不仅带我走入了一个新的学术领域,也对我的人生态度产生了重大影响。

 

陆文龙,上海交通大学机械与动力工程学院2007级机械工程专业,第二期“上海大学生创新活动计划”——人体脊柱建模研究”项目参与人;指导老师:杨旭波副教授,上海交通大学软件学院

 
 
 
@2008 上海交通大学教务处     网络信息中心技术支持