1. 程式人生 > >3DSlicer10:體系結構1

3DSlicer10:體系結構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。