张功森,郭 翌,李永哲,裴 曦,徐 榭,周解平
1.中国科学技术大学 物理学院 工程与应用物理系,合肥 230022
2.中国科学技术大学附属第一医院西区,合肥 230001
近年来,随着肿瘤病人数量的不断增加和放射医学技术的不断发展,放疗技术在肿瘤治疗中应用广泛且日臻于完善,但在实际治疗过程中还存在若干亟需解决的问题,放疗室中各设备运转时出现的机械碰撞问题是其中一个。医用直线加速器是目前调强放疗中的基础设备,其包括:多叶准直器(MLC,又称多页光栅)、加速管、控制系统、定位系统、磁控管、辐射头、治疗床以及调制器等[1-2]。为了最大程度上提高照射精度以及避免射束对危机器官的损伤,要求加速器治疗头的环绕中心应与患者的肿瘤靶区在空间位置上保持高度重合,为了满足这一要求,在加速器治疗头旋转之前,需要对治疗床进行上下、左右平移以及适度旋转操作,然而这将导致治疗头和治疗床以及病人之间产生碰撞。另外,在发射电子线时,治疗头会附加限光筒,类似机件的附加也会导致碰撞。这些碰撞不仅会阻断治疗计划的实施,还会损坏设备,并很有可能对病人造成伤害。在较为复杂的放疗计划(例如肺癌寡转移立体定向放疗)制定过程中,由于治疗床的旋转平移,机械碰撞问题不可避免,高效、准确的碰撞检测手段亟需发展。医生和物理师在制定放疗计划时,每确定一个射野角度和治疗床位置,都需要亲自去放疗室使设备运转并检查是否碰撞,这无疑大大降低了他们的工作效率,并给放疗计划的制定和实施带来诸多不便。
之前有人提出过基于C++和OpenGL 动画显示的碰撞检测方法[3],以及基于可视化工具包(VTK)的方法[4],这些方法可以得到碰撞检测结果,但两者都不便于模型更新,且难以实现与用户实时交互,不能随时更改设备运动参数以及调节用户观察视角,其次也难以实现和增强现实设备的对接。本文尝试找出一种三维模拟加速器运转的方法,首先根据放疗室的实际情况进行三维建模,开发一个应用程序提供输入旋转角度和平移等空间信息,并且利用三维模型的刚体特性进行碰撞检测,并最终部署到增强现实设备上,供相关工作人员更为直观的查验。在制定放疗计划的同时,可以通过这种方法进行照射角度以及治疗床位置的更正,大大提高医生和物理师的工作效率。同时,强大的三维可视化开发引擎Unity 3D以及先进的增强现实设备HoloLens为这一方法的实现提供了强有力的支持。
对于加速器模型,根据实际测得的放疗设备相关参数,分别将机架、治疗头、治疗床及其他相关设备拆分为简单三维模型组件,基于3ds Max进行建模。
对于人体模型,首先获取病人的CT图像,然后读取DICOM(Digital Imaging and Communication in Medicine)文件进行处理,利用移动立方体算法(Marching Cubes)获取三角面片信息[5],利用OpenGL 的初步得到三维重建模型[6],图1给出本文工作中基于CT的某病人三维重建结果。
图1 移动立方体算法所得基于CT的三维重建模型
同时考虑到,由于人体外形受年龄、性别、身高、体重等方面的影响,单一模型不能符合实际临床检测情况,另外,考虑到病人扫描CT 所受的照射剂量,临床上只对病人的需检查部位进行扫描,无法提供病人全身的CT 图像,由于移动立方体算法需要基于不同二维断层图像之间轮廓线的位置得到三角面片,进而拟合重建三维图像,所以CT 断层图像的缺少导致相应部位三角面片的缺失,进而难以得出病人全身的三维重建模型。通常采用单一模型代替病人其余部位的方法,难以满足病人的个体化差异。因此,本文工作基于三维可视化结果,选取重建模型关键部位的外形尺寸在USTC系列中国人计算机人体模型中[7]匹配最符合模型,并进行精确的变形[8]。USTC系列中国人计算机人体模型包含不同性别、不同年龄段人群的数字化人体模型:USTC-AM、USTC-AF、USTC-15M、USTC-15F、USTC-10M、USTC-10F、USTC-5M、USTC-5F,基于表面Mesh 表示的数字化人体模型具有灵活可变性,本文工作结合年龄、体型因素,根据文献[8]中的方法,依次进行体模匹配、位置匹配、模型缩放、表面网格修复和模型拼接,使得模型尽量和实际人体接近,提高碰撞检测的精确性。系列模型如图2、3所示[7]。
图2 基于表面网格的USTC系列中国人计算机人体模型(成人)
在得到上述模型后,将这些模型导入Unity 3D,对各组件进行重新组装,并建立起“父子”关系,以方便进行整体操作。为模型添加不同的材质,同时为整体场景添加光照,完善整个放疗环境的模拟。本文工作采用了增强现实工具包 MRTK(Mixed Reality Toolkit)[9]提供的增强现实专用“相机”HoloLens Camera[10-11]。相机参数主要包括X、Y、Z三维空间坐标以及可视范围,考虑到增强现实环境效果,将HoloLens Camera的裁剪平面(Clipping plane)设为最近0.85 m,最远1 000 m[12]。
图3 基于表面网格的USTC系列中国人计算机人体模型(不同年龄段未成年人)
为三维模型添加刚体特性是进行碰撞检测的基本条件[13],刚体特性提供的碰撞检测模式主要包括三种情况:不连续模式(Discrete)、连续模式(Continuous)和动态连续模式(Continuous Dynamic)且分别适用于不同情况,如表1所示。
表1 碰撞检测模式及适用情况
Unity 3D 的碰撞检测采用包围盒(球)方式[14-15],且在整个检测过程中,对于二维平面内的检测,主要依赖于类似四叉树的检测方式[16-17],如图4 所示。首先利用x、y轴将整个二维平面划分为四个一级区域,依次检测二维平面上的所有模型,判断模型所属区域,如果某模型与轴相交(如图中A、B模型),则A同时属于一级区域1、4,B 同时属于一级区域1、2,而模型C 仅属于一级区域4。对于每个一级区域,再次利用x、y轴划分为四个二级区域,判断方式同理。循环往复直至单个区域内模型数小于某特定值N,对单区域内的模型进行两两检测。对于三维空间及模型,则采用类似于八叉树的检测方式[18],如图5所示,其区域划分方式及检测原理与四叉树检测方式相同,故不再赘述。
图4 二维平面碰撞检测空间
图5 三维空间八叉树碰撞检测空间
本文工作中,碰撞检测实现的基础是基于Unity3D的碰撞器。首先根据每个三维模型的大致形状分别赋予Sphere Collider(球碰撞器)、Box Collider(方盒碰撞器)或Capsule Collider(胶囊体碰撞器)中的一种或几种碰撞器。此处主要对加速器治疗头、治疗床和病人三组模型制作并添加了碰撞器,同时,碰撞器的几何尺寸尽可能大于模型的最大边界故采取了几何如图6所示。
图6 病人、治疗头、治疗床模型的碰撞器添加情况(红色代表Capsule Collider,黄色代表Spere Collider,绿色代表Box Collider)
三维模型的空间运动和碰撞检测实现通过基于C#语言的脚本文件进行控制。本文工作中,脚本类型主要分为三类:运动控制脚本、碰撞检测脚本和信息反馈脚本。其中,运动控制脚本根据实际设备的运转情况确定其旋转中心、旋转速度、旋转角度、平移方向、平移距离等。碰撞检测脚本是建立在为三维模型添加碰撞器及刚体特性之后,工作过程被分为三个阶段:碰撞发生,碰撞状态保持和碰撞完成,信息反馈脚本用于检测信息、调试信息反馈和部分窗口设计。脚本控制工作流程如图7所示。
图形与用户界面(Graphical User Interface,GUI)允许使用键盘、指点设备及显示器与计算机进行交互。Unity 3D 的GUI 系统具有灵活、快速、可视化效果好的特点[19-20]。在控制模型运动和碰撞检测的同时,如果碰撞发生,需要程序反馈碰撞信息,这些信息包括碰撞发生与否、旋转角度以及平移距离等。本项目中,除了三维模拟运行界面,所设置的整个GUI界面还包括六个模块:用户功能操作模块、检测结果反馈模块、用户参数输入模块、调试日志信息输出模块、治疗床参数反馈模块、用户视角操纵模块,如表2所示。
图7 脚本控制流程示意图
表2 本文工作中GUI界面结构设计情况
GUI 界面整体设计结构如图8 所示,GUI 的渲染是通过创建脚本并定义OnGUI 函数来执行的[21]。本工作主要依赖图形与用户界面对信息反馈界面进行设计,且画布渲染模式采用Screen Space-Overlay以使GUI界面与屏幕分辨率相适应。
图8 信息反馈界面GUI设计
增强现实环境是本碰撞检测方法重要的呈现方式,这将给用户或工作人员带来更为直观有效的现场效果。本文方法是基于Unity 3D 开发的,其发布平台为Universal Windows Platform,渲染工具为Direct3D,发布后的工程经Visual Studio2017 部署到增强现实设备HoloLens上并生成应用程序以供展示。同时,通过微软MR官方提供的Windows Device portal对增强现实设备上的展示内容进行电脑端查看。通过HoloLens可以在现实环境背景下看到整个碰撞检测的模拟过程。并且在整个增强现实环境中,提供三种人机交互方式,分别为:
(1)凝视(Gaze),用于感知物体和反馈信息。
(2)手势(Gesture),本文工作中主要用到的手势有点击(Tap)手势和绽放(Blossom)手势。前者用于物体的选定和确认,后者用于返回。
(3)语音(Voice),用到的语音控制为语音命令,本文工作中自定义的两种语音命令为MOVE和ROTATE,使增强现实环境中的模型在手势控制下分别进入平移和旋转模式。
本文工作中整个增强现实环境中的人机交互主要实现虚拟物体的旋转平移和缩放以及视角变化,其操作过程设计如图9所示。
图9 增强现实环境人机交互操作流程设计
本文工作首先建立了准确完整的放疗环境三维模型,主要包括医用加速器治疗头、病床和病人模型,根据实际测量的放疗室内各治疗设备的外观尺寸、机械旋转中心、平移距离范围及各设备的相对空间位置等参数,基于3ds Max和Unity 3D对实际治疗环境进行三维建模和模型整合,各个待检测模型均添加了刚体特性且独立运转,图10是建立并完善的放疗室环境模型。
图10 放疗环境三维模型建模结果
本文工作最终设计完成方便用户控制模型运动及设置参数的用户交互界面,并设置合适的分辨率,将整体工程发布为可执行文件,运行界面如图11所示。
图11 可执行文件运行界面
输入以下三组参数进行测试,对三组情形进行碰撞检测后,得到各自反馈信息:
(1)病床(及病人)向后平移距离为0.21 m(△X=△Y=0,△Z=0.21 m),旋转角度为顺时针30°(△φ=-30°),检测到当治疗头旋转至87.51°时与病床发生碰撞。碰撞情况和检测信息反馈如图12(a)所示。(2)病床(及病人)向右移距离为0.21 m(△X=0.21 m,△Y=△Z=0),旋转角度为0(△φ=0),检测到当治疗头旋转至63.22°时与病床发生碰撞。碰撞情况和碰撞信息反馈如图12(b)所示。(3)病床(及病人)向上平移距离为0.1 m(△X=0,△Y=0.1 m,△Z=0),旋转角度为逆时针30°(△φ=30°)。检测到当治疗头旋转至44.25°时与病人发生碰撞。碰撞情况和碰撞信息反馈如图12(c)所示。
图12 碰撞情况和检测信息反馈
将治疗床无任何运动的情形以及上述三组情形下的三维模拟结果与实际临床操作结果对比,均相符合。此处需要说明的是为了保护加速器设备,实际临床验证时在保证会发生碰撞的情况下提前停止设备运行。验证结果如表3所示。
表3 三维模拟结果与临床操作结果对比
增强现实是本文工作除了PC端之外最终的呈现方式。在增强现实环境下,可以通过凝视、手势和语音等方式进行人机交互。整个三维模拟碰撞检测流程可以通过HoloLens 在增强现实环境中观看,并且可以通过相关设备接口在PC 端实时查看,增强现实示例直观效果如图13所示。
图13 增强现实环境中碰撞检测展示效果
本研究工作为解决医用直线加速器治疗头、治疗床及病人之间的碰撞检测问题提供了崭新的可行思路,且主要实现了以下三点:
(1)建立了完整详备而直观的放疗环境三维模型,且运用三维模型的刚体特性为碰撞检测提供了必须条件。
(2)对各组件的运动情况进行准确的模拟,对于不同射野角度以及病人位置,能够准确地检测出各组件之间的碰撞情况并向用户界面反馈检测结果信息。
(3)通过HoloLens 将碰撞检测流程在增强现实环境中运行,人机交互方便且效果更为直观,并能帮助相关人员了解碰撞过程。
本碰撞检测方法运用了Unity 3D引擎中碰撞触发器,并最终将应用程序部署到增强现实环境中,结果更为准确,效果更为直观,能够协助物理师在制定放疗计划的同时验证待实行计划的可行性,大大提高了物理师的工作效率,具有较高的现实意义及广阔的应用前景:首先,可以针对更多型号的医用加速器进行建模并测试;其次,本文工作与增强现实环境的结合可以作为融入医学培训内容;另外,碰撞检测可以作为特定功能模块集成到TPS(放疗计划系统)中,为放疗计划的制定提供便利条件。