zoukankan      html  css  js  c++  java
  • 3D Slicer 体系结构1

    1.系统架构

    Slicer平台是基于VTK、ITK、CTK、KWWidgets、CMake、Qt和Python等开源软件开发的。主要采用的编程语言是C++、Python、JavaScript。
    Slicer体系架可以分为3层:基础层、算法层和应用层。
    • 基础层
    由操作系统提供的最底层的库,典型如OpenGL、硬件驱动。OpenGL可为基于3D的、专业的应用程序提供优质的3D图形图像性能,以便高效使用主机系统提供的窗口和图形资源。硬件驱动满足加速渲染。
    • 算法层
    架构的中间层,是可移植的依赖库,包括基础编程语言库(C++、Python)和一些实现图像处理的算法库。提供了更高层系的功能和抽象,包括CMake、ITK、VTK、CTK等。其中:
    1.CMake实现了Slicer和其他算法库之间的跨平台构建配置、封装、测试;
    2.VTK提供计算机图形和三维可视化的关键组成部分;
    3.ITK医学图像配准和分割的工具包;
    4.CTK,Common Toolkit是以提供应用程序级别的DICOM支持,插件框架和专门的GUI部件为重点的生物医学图像运算库;
    5.Qt搭建跨平台的GUI;
    6.DCMTK实现DICOM标准,并使DCM和DCM数据服务进行交互。
    该层中的很大一部分依赖库,如ITK、VTK、CMake、CTK,都是有NA-MIC开发的,他们和Slicer一道被称为NA-MIC工具包。
    • 应用层
    Slicer应用程序,包括Core、Slicer modules、Slicer Extensions。
    1.应用程序核心Core实现了用户界面,提供了了数据输入/输出接口,利用算法实现可视化,并且预留了开发新的模块和扩展的接口。
    2.模块和扩展实现数据处理算法,例如分割、配准、图像滤波的算法。

    2.程序框架

    Slicer模块是一些基于ITK、VTK、VTK等算法库实现其功能的独立插件。包括三种类型:
    • Command Line Interface Modules  命令行模块
    • Loaded modules  可加载模块
    • Scripted modules 脚本模块
    Slicer扩展功能插件也是基于算法的一些功能模块,Modules已经被完全集成进Slicer;而Extension需要用户自行添加。

    2.1 Command Line Interface Module 命令行模块

    可以独立执行的模块,但输入输出参数是有限的,输入/输出的类型无法选择
    CLIM是Slicer所有模块中数量最多的模块,一般使用ITK实现其功能。这些ITK算法主要有图像过滤模块、扩散成像功能模块、表面图像模块、 配准和分割模块。

    2.2 Loaded Modules  可加载模块

    可加载模块是一种使用C++开发的模块,针对每个模块的功能,开发了特定的图形用户界面,并添加了一些基本功能。如Color模块提供了颜色表,用以区分人体组织结构;Data模块分析当前显示的数据。
    主要的可加载模块和功能如下:
    绝大多数可加载模块的功能都与算法无关,只是给Slicer提供了一种基本功能。Generally Speaking,Modules used to realize algrithm are earsier in CLI modues or Scripted modules.但是,最基础的功能,如果也采用命令行或者脚本模块的形式来实现反而不方便,这个时候就能体现C++的便利性。

    2.3 Scripted Modules 脚本模块

    采用Python脚本语言开发的,模块通过调用Python封装的VTK、ITK、Ot等库的API实现模块的功能。Slicer中包含的Python脚本模块主要包括以下几个:

    3.Slicer模块的加载(插件技术)

    Slicer的模块很多,又不是必须需要,为了提高用户体验度,Slicer的模块加载环节采用了“Plug-in”机制。
    “Plug-in”机制指Slicer功能模块设计时保持了很高的独立性,使用时可以选择性加载。
    "Plug-in"(Plug-in,addin,add-in,addon或add-on)是一种计算机应用程序,它和主应用程序(host application)互相交互,以提供特定的功能。应用程序支持Plugin有许多原因,一些主要原因包括:使得第三方开发者有能力扩展应用程序,以提供无法先期预料的特色;减小应用程序的大小;由于软件版权之间的不兼容性将源代码和应用程序分享。
    关于插件更多的细节,参考百度百科:
    https://baike.baidu.com/item/plugin/5015240?fr=aladdin&fromid=6689350&fromtitle=plug-in

    4.Slicer的扩展

    Slicer Extension就是根据需要安装的外部插件,通过一个或几个模块完成一项功能,具有很强的共享性。这种机制很像当下比较热门的Android操作系统以及其应用程序APP。
  • 相关阅读:
    【西北师大-19软工】第十次作业成绩汇总
    第十七周博客作业<西北师范大学|李晓婷>
    第十六周博客作业<西北师范大学|李晓婷>
    第十五周博客作业<西北师范大学|李晓婷>
    第十四周博客作业<西北师范大学|李晓婷>
    第十二周博客作业<西北师范大学|李晓婷>
    第十一周博客作业<西北师范大学|李晓婷>
    【西北师大-19软工】第六次作业成绩汇总
    第九周博客作业<西北师范大学|李晓婷>
    第八周博客作业<西北师范大学|李晓婷>
  • 原文地址:https://www.cnblogs.com/ybqjymy/p/14235310.html
Copyright © 2011-2022 走看看