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。

3DSlicer10:体系结构1相关推荐

  1. 王道考研 计算机网络笔记 第一章:概述计算机网络体系结构

    本文基于2019 王道考研 计算机网络: 2019 王道考研 计算机网络 个人笔记总结 后续章节将陆续更新- 目录 一.概念.功能.组成.分类 1. 计算机网络的概念 2. 计算机网络功能 3. 计算 ...

  2. 基于ARMv8的固件系统体系结构

    基于ARMv8的固件系统体系结构 The architecture of ARMv8-based firmware systems 自2011年发布以来,ARMv8处理器架构在移动设备市场上已经相当普 ...

  3. 人工智能微控制器体系结构

    人工智能微控制器体系结构 Microcontroller architectures evolve for AI 如果把人工智能和物联网交叉,会得到什么?AIoT是一个简单的答案,但是也可以为微控制器 ...

  4. AI芯片体系结构目标图形处理

    AI芯片体系结构目标图形处理 AI chip architecture targets graph processing 可编程图形流处理器(GSP)能够执行"直接图形处理.片上任务图管理和 ...

  5. AMD–7nm “Rome”芯片SOC体系结构,支持64核

    AMD–7nm "Rome"芯片SOC体系结构,支持64核 AMD Fully Discloses Zeppelin SOC Architecture Details at ISS ...

  6. 基于ARM Cortex-M的SoC存储体系结构和实战

    基于ARM Cortex-M的SoC存储体系结构和实战 System on Chip Architecture Tutorial Memory Architecture for ARM Cortex- ...

  7. 主存储器是现代计算机系统的数据传送中心,第2章计算机体系结构习与题答案.doc...

    第2章计算机体系结构习与题答案 第二章习题 复习题 1.简述冯?诺依曼原理,冯?诺依曼结构计算机包含哪几部分部件,其结构以何部件为中心? 答:冯?诺依曼理论的要点包括:指令像数据那样存放在存储器中,并 ...

  8. 未来计算机体系结构,华中科大金海:未来是计算机体系结构的“黄金十年” 要培养大量创新人才...

    近日,华为开发者大会2021(HDC.Cloud)在深圳举行.大会以"每一个开发者都了不起"为主题,汇聚高校学者.商业领袖.技术专家等各界顶级大咖,共同探讨ICT技术的基础创新与应 ...

  9. 软件体系架构模式之二分层体系结构

    分层体系结构模式是n层模式,其中组件被组织在水平层中.这是设计大多数软件的传统方法,并且具有独立性.这意味着所有组件都是互连的,但彼此之间不依赖. 图1:分层架构 在此体系结构中有四层,其中每一层在模 ...

最新文章

  1. c语言编程矩阵主对角线相同,急求!c语言 求N*N矩阵中主对角线和次对角线的元素之和...
  2. 从头开始学JavaScript (七)——函数
  3. 计算bom的准确用量
  4. sql server关闭存储过程中未提交的事务
  5. 稀疏表达:向量、矩阵与张量(中)
  6. 团队开发——冲刺1.d
  7. (pytorch-深度学习)循环神经网络
  8. 限流神器Sentinel,不了解一下吗?
  9. Windows下搭建IOS开发环境(一)
  10. qt怎么设置标签背景图片_HTML中怎么设置h1的字体样式你知道吗?关于设置h1标签的样式详解...
  11. Unity2020.1新功能探路:2D设计师工具相关更新
  12. Linux服务器性能的重要指标:打开文件数的限制
  13. python数据分析之(4)读写数据文件CSV,EXCEL等
  14. Kepware IOT Gateway Rest server
  15. Origin 使用笔记
  16. 数据库异常用户sa登录失败_Sa登录失败
  17. 安卓比较好的数独软件_有没有比较好的数独游戏APP?
  18. Zabbix整合ELK实现日志数据的分析实时监控
  19. java实现图片的压缩且保留图片尺寸不变
  20. 概率论各种基础分布期望和方差推导过程汇总

热门文章

  1. [算法] 2-4 组合游戏
  2. HTTP referer/HTTP referrer
  3. UBOOT 2011-3版本分析(初步感受)
  4. 求乘法逆元的几种方法
  5. HashSet集合和TreeSet集合
  6. nyoj1307Linux的文件权限对不对
  7. 委托 匿名类 var隐式类型 匿名方法
  8. sqli-labs(十三)(hpp)
  9. Web项目MySQL配置文件运维
  10. mac之brew安装卸载使用