医学图像分割与配准
(①ITK 初步分册)
周振环 王安明 王京阳 赵 明 著
电子科技大学出版社
图书在版编目(CIP)数据
医学图像分割与配准 / 周振环等著. —成都:电子科技
大学出版社,2007.6
ISBN 978–7–81114–571–7
Ⅰ. 医… Ⅱ. 周… Ⅲ. 医学图像—图像数字化处理
Ⅳ. R445-39
中国版本图书馆 CIP 数据核字(2007)第 087411 号
医学图像分割与配准
(①ITK 初步分册)
周振环 王安明 王京阳 赵 明 著
出 版: 电子科技大学出版社(成都市一环路东一段 159 号电子信息产业大厦 邮编:610051)
策划编辑: 朱 丹
责任编辑: 张 鹏
主 页: www.uestcp.com.cn
电子邮件: uestcp@uestcp.com.cn
发 行: 新华书店经销
印 刷: 成都金龙印务有限责任公司
成品尺寸: 185mm×260mm 印张 33.5 字数 820 千字
版 次: 2007 年 6 月第一版
印 次: 2007 年 6 月第一次印刷
书 号: ISBN 978-7-81114-571-7
定 价: 98.00 元(共两册)
■ 版权所有 侵权必究 ■
◆ 邮购本书请与本社发行部联系。电话:(028)83202323,83256027
◆ 本书如有缺页、破损、装订错误,请寄回印刷厂调换。
◆ 课件下载在我社主页“下载专区”。
前 言
在 1999 年,由美国国家卫生院(NIH)下属的国力医学图书馆(NLM)发起了一个投
标活动,出资赞助开发一个开放源码的分割与配准的算法研究平台。ITK 的 NIH/NLM 的工
程负责人Terry Yoo 博士带领6 家单位合作开发,这6 家单位包括GE Corporate R&D、Kitware、
Inc.和 MathSoft (现在公司改名为 Insightful)三个商业公司和 University of North Carolina
(UNC)、University of Tennessee(UT)(Ross Whitaker 随后迁往 University of Utah)和
University of Pennsylvania (UPenn)三所大学。
2002 年 ITK 官方首次发行 ITK 版本。这本书适用于 ITK2.4 更新版本。ITK 是一个开放
源码、面向对象的软件系统,提供一个医学图像处理、图像分割与配准的算法平台。虽然
ITK 结构庞大复杂,但是一旦你了解它的面向对象和执行基本方法,就可以灵活应用。这本
软件指南的目的正是帮你了解这些方法以及这个平台中的主要算法和数据表达。书中已经提
供了一些实例的使用资料,你在阅读本书时便可以编译运行。
鉴于 ITK 是一个庞大的系统,因此本书不可能完全介绍所有的 ITK 对象和方法。本书
将尽最大能力指导你了解重要的系统概念,并尽快尽好地指导你学习。ITK 是一个开放源码
的软件系统,这就意味着 ITK 用户和开发团体可以方便地对软件进行软件的开发和改进。
这本软件指南分为两部分,每部分又包括几个章节。第一部分是 ITK 的基本情况介绍。
第一章和接下来的两章介绍如何在你的计算机上安装 ITK,包括安装预编译库和运行以及从
源代码编译软件。第一部分同样也介绍了一些基本的系统概念,如:系统结构概述、如何使
用 C++、Tcl 和 Python 编程语言建立应用程序。第二部分从用户角度来介绍软件,提供了大
量实例描述系统的主要特征。
ITK 用户可以明显地分为两类。第一类人是使用 C++创建新类的开发者,另一类人是用
已有的 C++类进行应用的使用者。类开发者必须非常精通 C++。如果他们要对 ITK 进行扩
展和改进,就必须非常熟悉 ITK 的内部结构和设计。作为 ITK 的使用者,你必须了解 ITK
类和外部界面接口以及它们之间的关系。
学会使用 ITK 的关键就是熟悉各个对象的调色板和它们的方式。如果你是一位 ITK 的
初学者,那么就从安装软件开始学起吧。如果你是一位类开发者,就需要安装源代码并编译。
用户仅需预编译和执行程序。我们推荐你通过学习实例来了解系统。类开发者可学习源代码。
先学习第三章提供的系统主要概念的综述,然后回顾第二部分的实例。你也可以编译和运行
这 些 实 例 。 这 些 实 例 的 源 代 码 也 可 以 在 目 录 Insight/Examples 中 找 到 ( 参 见 文 件
Insight/Examples/README.txt 中 包 含 的 各 种 子 目 录 里 对 这 些 实 例 的 介 绍 )。 在 目 录
Insight/Testing/Code 中的源代码分布里也可以找到许多测试,这些测试大部分是测试代码。
然而它们非常有助于了解 ITK 中类的使用方式,尤其是它们尽可能地表达出了类的功能。
ITK 可以免费从以下网站下载 http://www.itk.org/HTML/Download.php。你可以得到一个
稳定的版本或通过 CVS 得到比较新的版本。发行的版本比较稳定可靠但可能缺少研发平坦
最新的特性功能。CVS 版本将含有最新的功能但有一定的不稳定性。
首先阅读 GettingStarted.txt 了解下载和安装进程。然后选择一个适合你系统的版本。
有.zip 和.tgz 两个类型的文件供选择。第一种更适合于 MS-Windows 系统,而第二种是 UNIX
系统的最佳版本。一旦你解压缩文件包,就将在你的电脑上生成一个称为 insight 的目录,
1
你就可以按照书中描述的那样开始安装配置过程。
强烈建议你加入用户 mailing list。这是获得指导和使用帮助的主要来源。你可以在以下
网站订阅拥护列表:http://www.itk.org/HTML/MailingLists.htm。用户 mailing list 同样也是表
达你自己关于研发平台的观点和开发者了解有用的、期望的甚至是不必要的特征的最主要的
机制。利用反馈的信息可以使 ITK 的开发者创立一个开放源码的 ITK 社区。
为了开始你的 ITK 之旅,首先你需要了解 ITK 的软件和目录结构。即使你安装了预编
译库,这也将对你通过基本编码寻找实例、程序编码及文件有很大的帮助。
ITK 分为几个不同的模块或 CVS 校验区。官方或光盘版本有三大主要模块:Insight,
InsightDocuments 和 InsightApplications 模块。Insight 模块包括有源代码、实例及应用;
InsightDocuments 模块中包括有文件、指南和 ITK 的设计行销的有关材料;InsightApplications
模块中包含有 ITK(与其他如 VTK、Qt 和 FLTK 系统)的综合复杂应用。通常只需工作在
Insight 模块,开发者、培训课程者和许多具体细节的设计文件除外。只有当 Insight 模块的
程序可以正常运行时才能下载和编译 InsightApplications 模块。
Insight 模块包含以下子目录:
• Insight/Auxiliary—工具包到 ITK 的界面代码。
• Insight/Code—软件的核心。主要源代码的位置。
• Insight/Documentation—用户开始 ITK 获得文献的简洁的子集。
• Insight/Examples—一系列样例、这本指南使用的和阐述重要 ITK 概念的文献样例。
• Insight/Testing—用来测试 ITK 的大量小程序。
• Insight/Code/Common—核心类、大量的定义、声明和 ITK 中其他重要的软件结构。
• Insight/Code/Numerics—数学库和支持类。
• Insight/Code/BasicFilters—基本的图像处理滤波器。
• Insight/Code/IO—支持读取和写数据的类。
• Insight/Code/Algorithms—大部分分割和配准算法的位置。
• Insight/Code/SpatialObject—使用空间关系表达和组织数据的类。
• Insight/Code/Patented—这里提供申请专利的算法,使用这些算法进行应用需要一个专
利号。
• Insight/Code/Local—开发者使用的空目录,用户实验的新代码。
InsightDocuments 模块包含以下子目录:
• InsightDocuments/CourseWare—与 ITK 教学相关的材料。
• InsightDocuments/Developer—覆盖ITK 设计和创建的历史文献,包括进程报告和设计文献。
• InsightDocuments/Web—http://www.itk.org 上找到的网站工具包的 HTML 源和其他材料。
InsightApplications 模 块 包 含 有 大 量 相 关 的 复 杂 的 ITK 使 用 实 例 。 网 页
http://www.itk.org/HTML/Applications.htm 上有相关的描述。
ITK 支持可视化人体工程(VHP)及它的相关数据。这些数据可以在国立医学图书馆的
网站 http://www.nlm.nih.gov/research/visible/visible_human.html 上找到。
基金项目:2005 年粤港关键领域重点突破项目(2005A11304003)、深圳市科技计划项
目(05KJcd004)联合资助。
2
目 录
第 1 部分
第一章 欢迎 ..................................................................................................................................3
1.1 团体机构..........................................................................................................................3
1.2 如何学习 ITK ..................................................................................................................3
1.3 软件组织..........................................................................................................................4
1.3.1 获取软件...............................................................................................................4
1.4 ITK 下载 ..........................................................................................................................4
1.4.1 下载发行的版本 ...................................................................................................5
1.4.2 从 CVS 下载 .........................................................................................................5
1.4.3 加入 Mailing List ..................................................................................................5
1.4.4 目录结构...............................................................................................................5
1.4.5 文献.......................................................................................................................7
1.4.6 数据.......................................................................................................................7
1.5 ITK 团体和服务 ..............................................................................................................7
1.6 ITK 的主要历史 ..............................................................................................................8
第二章 安装 ..................................................................................................................................9
2.1 ITK 设置 ..........................................................................................................................9
2.1.1 CMake 准备 ..........................................................................................................9
2.1.2 ITK 设置 .............................................................................................................11
2.2 开始使用 ITK ................................................................................................................11
第三章 系统概述.........................................................................................................................13
3.1 系统组织........................................................................................................................13
3.2 系统基本概念................................................................................................................14
3.2.1 范型编程.............................................................................................................14
3.2.2 包含文件和类定义 .............................................................................................14
3.2.3 对象工厂.............................................................................................................15
3.2.4 智能指针和内存管理 .........................................................................................15
3.2.5 错误处理和异常处理 .........................................................................................16
3.2.6 事件处理.............................................................................................................17
1
3.2.7 多线程.................................................................................................................17
3.3 数字化............................................................................................................................18
3.4 数据表达........................................................................................................................18
3.5 数据处理管道................................................................................................................19
3.6 空间对象........................................................................................................................20
3.7 封装................................................................................................................................21
第四章 数据表达.........................................................................................................................23
4.1 图像................................................................................................................................23
4.1.1 创建图像.............................................................................................................23
4.1.2 从文件读取图像.................................................................................................24
4.1.3 访问像素数据.....................................................................................................25
4.1.4 定义原点和间距.................................................................................................26
4.1.5 RGB 图像............................................................................................................28
4.1.6 向量图像.............................................................................................................30
4.1.7 从缓冲器中输入图像数据 .................................................................................30
4.2 点集................................................................................................................................33
4.2.1 创建一个点集.....................................................................................................33
4.2.2 得到存储的点.....................................................................................................34
4.2.3 得到点中的存储数据 .........................................................................................36
4.2.4 RGB 作为像素类型............................................................................................37
4.2.5 向量作为像素类型 .............................................................................................39
4.2.6 法线作为像素类型 .............................................................................................41
4.3 网格................................................................................................................................43
4.3.1 创建网格.............................................................................................................43
4.3.2 插入单元.............................................................................................................44
4.3.3 管理单元中的数据 .............................................................................................47
4.3.4 定制网格.............................................................................................................49
4.3.5 拓扑学和 K-复合波............................................................................................51
4.3.6 表达一个 PolyLine .............................................................................................57
4.3.7 简化网格的创建.................................................................................................60
4.3.8 通过单元迭代.....................................................................................................62
4.3.9 访问单元.............................................................................................................64
4.3.10 访问单元的更多信息 .......................................................................................66
4.4 路径................................................................................................................................69
4.5 容器................................................................................................................................70
2
第五章 空间对象.........................................................................................................................74
5.1 绪论................................................................................................................................74
5.2 层次结构........................................................................................................................75
5.3 SpatialObject 树容器 .....................................................................................................76
5.4 变换................................................................................................................................77
5.5 空间对象类型................................................................................................................80
5.5.1 ArrowSpatialObject.............................................................................................80
5.5.2 BlobSpatialObject ...............................................................................................81
5.5.3 CylinderSpatialObject .........................................................................................82
5.5.4 EllipseSpatialObject ............................................................................................83
5.5.5 GaussianSpatialObject.........................................................................................84
5.5.6 GroupSpatialObject .............................................................................................85
5.5.7 ImageSpatialObject .............................................................................................86
5.5.8 ImageMaskSpatialObject ....................................................................................87
5.5.9 LandmarkSpatialObject.......................................................................................88
5.5.10 LineSpatialObject..............................................................................................89
5.5.11 MeshSpatialObject.............................................................................................91
5.5.12 SurfaceSpatialObject .........................................................................................93
5.5.13 TubeSpatialObject .............................................................................................94
5.5.14 VesselTubeSpatialObject ...................................................................................96
5.5.15 DTITubeSpatialObject.......................................................................................98
5.6 SceneSpatialObject.......................................................................................................100
5.7 读/写 SpatialObjects ....................................................................................................101
5.8 通过 SpatialObjects 进行统计计算.............................................................................102
第六章 滤波 ..............................................................................................................................104
6.1 门限处理......................................................................................................................104
6.1.1 二值门限处理...................................................................................................104
6.1.2 门限处理概要...................................................................................................106
6.2 边缘检测......................................................................................................................108
6.3 投射和亮度映射..........................................................................................................109
6.3.1 线性映射...........................................................................................................109
6.3.2 非线性映射....................................................................................................... 111
6.4 梯度..............................................................................................................................113
6.4.1 梯度强度...........................................................................................................113
6.4.1 带滤波的梯度强度 ...........................................................................................114
6.4.2 不带滤波的导函数 ...........................................................................................116
3
6.5 二阶微分......................................................................................................................117
6.5.1 二阶高斯递归...................................................................................................117
6.5.2 拉普拉斯滤波器...............................................................................................121
6.6 邻域滤波器..................................................................................................................125
6.6.1 均值滤波器.......................................................................................................125
6.6.2 中值滤波器.......................................................................................................127
6.6.3 数学形态学.......................................................................................................128
6.6.4 Voting 滤波器 ...................................................................................................132
6.7 平滑滤波器..................................................................................................................138
6.7.1 模糊...................................................................................................................139
6.7.2 局部模糊...........................................................................................................144
6.7.3 保留边缘平滑滤波 ...........................................................................................144
6.7.4 向量图像中的保留边缘平滑滤波 ...................................................................154
6.7.5 彩色图像中的保留边缘平滑滤波 ...................................................................157
6.8 距离映射......................................................................................................................161
6.9 几何变换......................................................................................................................164
6.9.1 改变图像信息滤波器 .......................................................................................164
6.9.2 翻转图像滤波器 ...............................................................................................164
6.9.3 重采样图像滤波器 ...........................................................................................165
6.10 频域............................................................................................................................187
6.10.1 快速傅立叶变换(FFT)计算............................................................................187
6.10.2 频域平滑滤波 .................................................................................................190
6.11 提取表面....................................................................................................................192
第七章 读与写图像...................................................................................................................193
7.1 基本例子......................................................................................................................193
7.2 插拔式工厂..................................................................................................................195
7.3 明确地使用 ImageIO 类..............................................................................................196
7.4 读、写 RGB 图像........................................................................................................197
7.5 读、重塑和写图像......................................................................................................198
7.6 提取区域......................................................................................................................200
7.7 提取切片......................................................................................................................201
7.8 读、写向量图像..........................................................................................................203
7.8.1 最简单的例子...................................................................................................203
7.8.2 生成和写入协变图像 .......................................................................................204
7.8.3 读协变式图像...................................................................................................206
7.9 读、写合成图像..........................................................................................................207
7.10 从向量图像中提取成分............................................................................................209
4