介绍3D Slicer的另一个身份:医学影像IDE

IDE(Integrated Development Environment )集成开发环境一般是指程序员在进行软件开发时,需要使用的一整套环境和应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等。大家比较熟悉的IDE有Microsoft Visual Studio、Eclipse、PyCharm等。IDE的选择通常和开发语言和应用领域密切相关。例如,如果做Windows C++/C#应用开发,基本都会优先选择Visual Studio;如果做Java开发,则倾向首选Eclipse;PyCharm则是很多Python开发程序员的首选。

在医学影像算法开发领域,大家是否注意到近年来的两个趋势。第一,越来越多的人喜欢用Python做为开发语言,进行快速原型开发和验证。正所谓,“人生苦短,我用Python”。第二个趋势,为了进一步加快原型开发的速度,尤其是避免重复“造轮子”,大家通常会选择ITK、VTK、QT这个“三剑客”组合,来作为图像处理、可视化和图形界面的三大基石。并且,这两大趋势正在融合形成一个汇总趋势:使用Python作为开发语言,调用ITK、VTK、QT这三大基础库,进行医学影像算法原型的开发。

分析到这里,终于要引出我们这篇小文章要讨论的主要问题了。想要用Python调用ITK、VTK和QT进行开发,有哪些好的IDE可供选择?

对于高手来讲,直接从Python安装包开始,然后逐个安装SimpleITK、VTK、PyQt,就可以了。也可以借助Anaconda来建立多版本开发环境。但对于新手和小白,这个过程并不简单。需要解决安装包下载、版本选择、PIP安装命令等一系列问题,才能够入门,建立起真正能够开始编程的环境。

那么,有没有更省事一步到位的解决办法?答案是,有。这个一步到位的解决方法就是本文要介绍的3D Slicer。

3D Slicer是一个开源的跨平台医学影像可视化和处理分析软件,由美国国家卫生研究院(National Institutes of Health)支持开发,迄今已经有超过20年的开发历史,但仍然保持着一个活跃的开发群体。关于3D Slicer的详细介绍,可以参考官方网站:https://www.slicer.org/。

本文重点介绍3D Slicer中集成的Python开发环境。假定大家已经从网站下载最新的4.8.1版本,完成了安装。软件启动后,将显示下面的界面:

注意到红色箭头指向的右上方按钮图标了吗?这不就是Python的代表性Logo吗?没错,只要安装好3D Slicer,内部就会直接准备好了Python 2.7的开发环境。点击这个按钮,就会在软件的下方启动Python的交互式开发环境。如下图红色箭头指向所示。

是不是有些小小的惊喜和意外?这还远不是全部。在这个开发环境中,你可以直接调用SimpleITK、VTK和PyQt的函数和功能。关于如何在Slicer中进行Python编程,大家可以参考官方网站介绍,(https://www.slicer.org/wiki/Documentation/Nightly/Developers/Python_scripting),非常详细。

在真正入坑,开始折腾之前,大家可能都会先思考一个问题。我用这个工具能够做什么事情,达到什么样的效果?回答这个问题的最佳方式就是,举个例子。

下面介绍一个基于3D Slicer环境,采用Python开发的椎弓根螺钉手术规划和模拟扩展应用:PedicleScrewSimulator。

PedicalScrewSimulator为开源软件(https://github.com/smclach/PedicleScrewSimulator)。整个工程,如果不统计资源和模型文件,一共包含了10个Python文件。其中最长的文件,代码行数为919行。大多数文件的代码行数,都在300行以内。这与Python编程,“少写代码,多半实事”的追求目标非常一致啊。

PedicleScrewSimulator非常“友好”,在左侧面板中,提供了操作向导,指导和提示用户逐步操作。包含下述步骤。

加载DICOM影像

上方是软件整体界面。在界面左侧,显示的是向导面板,具体如下图。

可以看到提供了多种加载方式。整个数据加载步骤,包括上面的图形用户界面,由LoadDataStep.py文件实现,一共168行代码。其中加载影像的核心功能是通过调用Slicer内部已经集成的辅助功能模块来实现的。核心代码只有一句话,代码如下:

2. 裁剪感兴趣区域

在第二步中,软件会在三个正交切面图像(MPR)上显示感兴趣区域裁剪框,让用户手工拖拽调节,选择感兴趣区域。其中左侧的操作面板(如下图所示),都是采用PyQt搭建出来的。

右上方的Volume Rendering绘制窗口则基于Slicer中内置的下述module来实现。

3. 标记植入点

在这一步中需要指定植入点的位置。可以直接在VR窗口中点击确定。

4. 植入过程模拟

在这一步中,可以先选择要植入的骨钉型号,然后选择要植入的深度。之后,点击“Insert Screw”按钮,就可以看到蓝色的骨钉动态的钻入骨骼中。还可以点击“Backout Screw”来撤回骨钉。

5. 术后效果模拟

在最后一步中,可以采用在上方VR窗口以半透明骨骼效果,观察骨钉植入效果。还可以在3个MPR窗口中,观察骨钉出现在哪些切面层面和轮廓。如下图所示。

至此,对于PedicScrewSimulator“蜻蜓点水”式介绍完成。没有深入技术细节和代码,只是想通过图片分享的方式,让大家初步了解和感受在Slicer这个IDE进行开发,可以完成哪些工作,达到什么样的效果。

用3D Slicer作为医学影像算法快速开发的IDE,突出优势是已经集成好了ITK、VTK和QT常用“三大件”,并且可以使用Slicer内部若干已经开发完成的Module,来加快开发进程。但是所有的馅饼都不是白来的,要想能够在Slicer中进行开发,学习和熟悉Slicer的设计理念、软件架构仍然是必须的。友提,真正入坑之前,还是把官方指导网页大致看一遍,才能更好决定,这是不是适合自己的那盘菜。

官方指导网页:

https://www.slicer.org/wiki/Documentation/Nightly/Developers/Python_scripting

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180827G1RYEA00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券