强烈的需求 , 但是由于对医学影像处理程序的开发并不熟悉 , 因此会遇到许多的困难。
如果能有一个专门的医学影像软件平台 , 尤其是底层的算法研发平台 , 能够简化医学影
像程序的开发 , 将会极大的提高工作效率 。 ITK(The Insight Toolkit) 是一个开放的 、 面向
对象的类库。它提供了强大的二文医学图像处理功能 , 主要用于医学图像的预处理 、 分
割及配准。本科毕业设计说明书 ( 论文 )
本文介绍的 ITK 是一个用于医学图像分割与配准的开放源码的软件开发包 [5]
。 它
提供了一些主流算法 , 如区域增长 、 阈值分割 、 基于分水岭的分割 、 Fast Marching 算法 、
Level Set( 水平集 ) 等多种分割方法 , 并将这些用于医学图像处理的算法和程序的开发过
程屏蔽起来。以类库的形式给我们的开发工作以直接的支持 , 大大的简化了开发工作 ,
并且提高了开发效率。
1.3.1 ITK 平台的核心概念
ITK 是医学影像分割与配准算法的研发平台 , 是一个开放源码 、 面向对象的软件
系统 , 它里面有大量的文件和实例帮助使用 ; 在这里我们主要用所学的计算机编程语
言即 Visual C++; 另外的 CMake 可以使 ITK 跨平台工作 , CMake 是一个跨平台 、 开放
源码的安装(编译)过程。
ITK 本身只是一个算法研究平台 , 所以安装之后并不能运行任何应用 。 平台由许
多子系统组成,围绕一些核心设计概念创建,主要包括:范型编程、内存管理指针 、
数据处理管道和多线程等 。 下面主要介绍范型编程 、 事件处理和数据处理管道三个概
念 [5]
:
1 、范型编程:范型编程是一种由一般的或可再度使用的软件成员来组织类库的
编程技术 。 其目的是以一种有效的 、 可适应的方式来使得软件具有 “ plugging together ”
的能力 , 即保持数据的容器 、 储存数据的迭代器以及范型算法使用容器和迭代器来创
建有效的基本算法,在 C++ 中使用的模板编程机制和 STL 标准模板类库来实现的。
2 、事件处理: ITK 中的事件处理使用 Subject/Observer 设计模式来执行。在这一
方式中 , 对象通过注册它们正在观察的实例 , 来关注这个特定实例所发生的一个特定
的事件。例如, ITK 中的滤波器周期性地调用 itk : : ProgressEvent 。当事件发生时对
象已经记录下这一事件中通报的信息 。 在记录过程中 , 通过调用一个命令来发出信息
(如函数回收、方法调用等 ) 。当事件发生时,所有注册观察者经过调用相应 的
Command : : Execute ()方式来通知。
3 、数据处理管道:数据对象(例如图像和网格)是用来代表数据的,过程对象
就是用来操作数据对象并产生新的数据对象的类 。 数据处理管道连接了数据对象和过
程对象 。 管道支持一个自动更新机制 。 该机制在当且仅当它的输入或内在状态改变时
才会唤起一个滤波器来运行 。 另外 , 数据管道还支持 streaming , 可以自动将数据分成许多小部分,
对这些小部分进行逐一处理,并重新集合处理后的数据产生最终结果 。
通过使用 SetInput ()和 GetOutput ()方式连接数据对象和过程对象。
1.3.2 ITK 开源软件实验平台的搭建与使用
前文已述 ITK 只是一个算法平台 , 使用 C m ake 可以使 ITK 实际运行应用 。 C m ak e
是一个跨平台 、 开放源码的安装 ( 编译 ) 工具 , 可以使用简单的语言来描述所有平台
的安装 ( 编译 ) 过程 。 C m ak e 可以输 出 UNI X 和 Cygwi n 系统下 的 MakeFile s 和 Window s 基于ITK平台的医学图像分割算法比较与分析(4):http://www.youerw.com/jisuanji/lunwen_5477.html