基于slicer开发(简化功能与插件开发)

深入接触slicer快半年,浅谈一些slicer的开发经验。然后记录一下,与大家分享。

      首先,大家需要了解slicer是一个什么样的软件。 站在我的角度讲,slicer是一个强大、开源并且拥有丰富的医学功能的一个科研软件。 为什么说slicer比较强大 ? 是因为目前很多医疗创业公司以及研究所都会从slicer的软件模块中,来获取医疗软件功能模型(哪些较好的功能可以添加到自己的软件上),然后结合自身的需求, 开发出一个简洁、易用、有针对的医疗软件或产品。

       这里表明为什么slicer是科研软件而不是产品。区别就在slicer虽然功能丰富,但很多时候它的软件的优化程度以及用户友好性都非常一般,而且对使用的人的要求也较高。

      开源是因为它的代码都可以从github上下载到(github 上搜slicer)。这里丰富的医学功能包含从数据加载、分割、配准、三维重建等基础的功能模块,同时在slicer较新的版本上还包含VR(虚拟现实模块)以及以深度学习的模块。

 slicer 论坛(有任何关于slicer的使用或开发疑问,都可在上面留帖子,帖子回复速度都很快):

https://discourse.slicer.org/

以这篇帖子的时间为准:

目前最新的稳定发布版本是:slicer 4.10.2 (采用的是python 2.7)

目前的最新的未发布版本: slicer 4.11.0 (采用的是python 3.6)

 

 

这半年里面主体涉及两个项目的开发:

一、简化功能(定制化slicer)

      slicer作为一个医疗科研软件,它的功能模块极其之多,所以很多时候,为了满足个性化的需求,所以slicer的模块是可以进行隐藏。

     至于如何隐藏不必要的模块,可以参考这个帖子:

https://discourse.slicer.org/t/simplify-slicer-or-remove-some-modules-from-slicer/7545

除了单独隐藏模块外,有时候涉及到某一特定模块里面功能的增添或删减,亦或是模块界面的优化,这时候就需要从slicer源码出发,因此需要对源码进行编译。

编译的时候,若涉及VR模块的编译,可参考这个帖子:

https://discourse.slicer.org/t/compiling-slicer-4-10-x-with-slicer-virtual-reality/7019

二、涉及插件的开发

        slicer的每一个模块,其实都可以认为是一个单独的插件。这些插件的源码都能以路径或库加载的方式融入到slicer软件中。slicer中一些插件模块都是开源的,所以都可以去github 上找代码。而另一些插件模块基于公司或组织的开发的,能否开源取决于它们的意愿。

         目前我所接触到的是基于c++和python的开发(涉及用python开发,一定要注意slicer版本),关于新的插件(模块)如何产生(找到下图模块),可以参考下面这个视频。

基于slicer开发(简化功能与插件开发)_第1张图片

https://www.youtube.com/watch?v=SieXQodzpDw

有了插件的框架后,我们只需要在里面进行功能开发就行。

 

 

你可能感兴趣的:(医疗软件,slicer开发,医疗软件)