ITK 學習筆記1(初步瞭解)
##1 cmakelists CMakeLists.txt 檔案包括以下內容: PROJECT(HelloWorld) FIND_PACKAGE(ITK) IF(ITK_FOUND) INCLUDE(${ITK_USE_FILE}) ELSE(ITK_FOUND) MESSAGE(FATAL_ERROR “ITK not found. Please set ITK_DIR.”) ENDIF(ITK_FOUND) ADD_EXECUTABLE(HelloWorld HelloWorld.cxx ) TARGET_LINK_LIBRARIES(HelloWorld ITKCommon) 第一行定義了在 Visual Studio 中出現的工程名字(這在 UNIX 系統下毫無影響)。 第二行載入一個帶有尋找 ITK 的預定義策略的 CMake 檔案。如果尋找 ITK 的策略失敗,CMake將會要求你提供 ITK 的安裝位置。你可以在 ITK_BINARY_DIR 變數中填入正確的位置資訊。 命令列 INCLUDE(${ITK_USE_FILE})載入 UseITK.cmake 檔案來設定所有的 ITK 配置資訊。 命令列ADD_EXECUTABLE 定 義 了 一 個 此 工 程產生執行結果檔案的名 字 。 ADD_EXECUTABLE中的保留變數是原始碼編譯和連結的名字 。 最後一行命令TARGET_LINK_LIBRARIES 指出哪些 ITK 類庫將連結到這個工程中來。
##2 系統 系統基本概念:像其他軟體系統一樣,ITK 也是圍繞一些核心設計概念建立的。重要的概 念包括有 :範型 程式設計、記憶體管理智慧指 針、可 修改物件 例項的 物件工廠、使 用command/observer 圖表的事件管理和多執行緒支援。 數字化:ITK 使用 VXL 的 VNL 數字型別庫。通過 Netlib Fortran 數字化分析路徑就可以使用 C++來程式設計.。 資料表達和訪問:有兩個基本的類來表示資料:itk::Image 和 itk::Mesh。另外,有許多型別的迭代器和容器用來保持和轉移資料。 資料處理管道:表示資料的類(資料物件)經過濾波器操作被組織進入資料流管道。這些管道保持靜態並只在必要時才會執行。它們同樣支援多執行緒和流動功能(例如:能將資料最小化到記憶體區域中)。 IO 框架:同資料處理管道相關聯的是 sources 和 mappers,sources 是初始化管道的濾波器,mappers 是終止管道的濾波器。sources 和 mappers 的標準樣例分別是 readers 和 writters。readers 輸入資料(通常從一個檔案),而 writters 從管道輸出資料。 空間物件:ITK 中使用空間物件層來表示幾何圖形。這些類支援解剖結構模式。使用一個普通的基本介面,空間物件就可以以不同的方式來表示空間區域。例如:網狀結構、影象模組和用來作為潛在表達方案的暗含等式方程。空間物件是一個自然資料結構,它可以與影象分割結果相關聯和對分割和配準方法事先做解剖介紹。 配準框架:一個靈活的配準框架支援四種不同的配準型別:影象配準、多方式配準、基於 PDE 的配準和 FEM(有限成員方法 Finite Element Method)配準。 FEM 框架:ITK 包含有一個處理基本 FEM 問題的子系統,尤其是非嚴格配準。FEM 工具包包含有網格定義(結點和成員)、載入和邊界條件。 水平集框架:水平集框架是一個建立濾波器的類群,用來增加有限變換反覆迭代的方法求解關於影象的偏微分方程。這個水平集框架由有限的幾個不同的 solvers 組成,包括一個稀疏的水平集 solvers、一個通用水平集分割濾波器和一些特定的子類,這些子類包括基於閾值、Canny 和拉普拉斯的方法。 封裝:ITK 使用一個獨特的、強有力的系統來生成一個介面(例如:封裝),該介面用來解釋像 Tcl 和 Python 之類的程式語言。GCC_XML 工具用來產生一個對任何複雜 C++程式碼的 XML 描述;然後使用 CSWIG 工具包將 XML 描述轉化成封裝。 輔助功能:在系統中有許多輔助子系統可以為其他類做支援。例如:計算機類產生特定的運算元來為濾波器提供支援(例如:均值計算機計算一個樣本的均值)。其他功能還包括有:一個偏 DICOM 剖析器、MetaIO 檔案支援、png、zlib、FLTK/Qt 影象視窗和 VTK 系統介面。