第 25 卷 第 6 期
2008 年 6 月
计 算 机 应 用 研 究
Application Research of Computers
Vol. 25 No. 6
Jun. 2008
利 用 M ATLAB 实 现 医 学 图 像 处 理 与 分 析 *
( 1. 华南 理工 大学 自 动化科 学与 工程 学院 , 广州 510640; 2. 广州 中医 药大 学 祈福 医院 影像 中心 , 广州 511495)
高向军 1 , 田联房 1, 王立非 2, 毛宗源 1
摘 要: 介 绍了 在 MATLAB( R2006b) 环境 下, DICOM 医学 图像 格 式 的 阅 读、显示 及 存 储 方 法, 使读 者 能 够 了 解
并熟 悉如 何在 MATLAB 环境 下使 用医 学图 像 处 理 函 数, 而 没 有 必 要 再 借 用其 他 的 图 像 格 式 转 换。 通 过 分 析 这
些函 数, 给出 了判 断 DICOM 格 式的 条件 及 应用 时的 注 意事 项, 最 后 用实 例证 明 了在 MATLAB 环 境 中, 实 现复 杂
医学 图像 处理 和分析 的简 洁性 及高 效性 。
关键 词: MATLAB; 医 学图 像; DICOM 格式 ;
中图 分类 号: TP312
文 献标 志码: A
文 章编 号: 1001- 3695( 2008) 06- 1747- 03
level set
Achieving processing and analysis of medical image by MATLAB
GAO Xiang-jun1 , TIAN Lian-fang1, WANG Li-fei2, MAO Zong-yuan1
( 1. College of Automation Science & Engineering, South China University of Technology, Guangzhou 510640, China; 2. Image Center, Clif-
ford Hospital, Guangzhou University of Traditional Chinese Medicine, Guangzhou 511495, China)
Abstract: This paper introduced how to realize the read, display and store of the DICOM format image file using MATLAB
( R2006b) ’s image processing toolbox. By analyzing those functions of the medical image processing in the image processing
toolbox, prosented the condition to judge the DICOM format image file and the warning about using those function. At last, in-
troduced two applications, which verifies it was concise and effective to realize the complex algorithm about the medical image
processing and analysis using the MATLAB software.
Key words: MATLAB; medical image; DICOM;
level set
近年来, 许多数字化 医学影 像设备 不断应 用于临 床, 产 生
了大量的医学图像( 如 CT、MRI、PET、SPET 等) 。这些 医学 图
像具有成像机理多样、数 据结构 复杂、数据量 大等特 点 [ 1] 。而
实现对医学图像的处理和分析 是进行 放射医 疗诊断 的前提 和
基础, 因此具有相当重要的意义和价值。
为使医学图像设备的制造 厂商和 用户在 标准网 络上实 现
设备互连, 便利各类型的医学图像的开发和应用, 由美国 放射
学会( ACR) 和国际电气制造商协会 ( NEMA) 联手成立的 数字
图像和通信标准委员会, 在众多影像设备制造商及用户的积极
参与下, 制定 了 DICOM ( digital imaging and communications in
medicine) 3. 0 标准 [ 2] 。DICOM3. 0 标准 已成 为放 射医 学领 域
中的一 种 核 心 标 准。目 前 大 多 数 医 疗 成 像 设 备 都 符 合 DI-
COM3. 0 标准 [ 3] 。面对如此巨大的市场, 具有强大数据处 理能
力的 MATLAB 软件势必要引进对此图像格式 的处理功 能。然
而目前却很少见到有关的参考文献, 一些图像处理工作者为了
应用 MATLAB 环境 以 及 调用 各 种 工具 箱 的 功 能, 不 惜 把 DI-
COM 格式转换成 BMP 格式 [ 4, 5] 。他们做了大 量的工作来 熟悉
DICOM 格式, 用很大 的精 力编写 阅读 及保 存此 格式 的图 像 软
件。若是此软件编写不当, 还有可能丢失图像重要信息。其实
MATLAB 早在引进 Version 3. 0 ( R12 + ) Image Processing Tool-
box 时, 就增加 了对 DICOM 格式 的阅读 函数: dicomread( ) 、di-
cominfo( ) 。到 Version 5. 3 ( R2006b) Image Processing Toolbox
版本包括了对 DICOM 格式 的阅读、分析 到存 储的 函数。同 时
此版本也支持 Analyze 7. 5 和 Interfile 两 种医 学图 像格 式。 其
中, Analyze 7. 5 是由 Mayo Clinic 编写的一种图像文 件格式, 用
来存储 MRI 数 据; Interfile 格式 用来 存 储核 医学 图 像, 便 于 在
不同系统上共 享及 交换。因 此 在 MATLAB( R2006b) 环 境中,
可以直接利用 MATLAB 所提供的医学图像处理 函数来实现 医
学图像的处理和分析, 而不必再关心图像文件的格式、读写、显
示和已有成果的 技术 细节; 可 以结 合 MATLAB 强大 的数 据 处
理能力及多种工具箱, 把精 力集中 在新技 术理论 的研究 上, 快
速有效地实现医学图像处理和分析。
1 DICOM 图像的读入及显示
1. 1 DICOM图像文件信息
DICOM 文件一般由 DICOM 文件头 和 DICOM 数 据集合 组
成。文件头包含标 志 数据 集合 的 相关 信 息。 数据 集 合由 DI-
COM 数据元素 ( data element) 按一 定 顺序 排列 组 成。DICOM
数据元素则是 DICOM 文件最基本的构成单元。它由四个部 分
组成: 标签( tag) 、数据描述 VR( value representation) 、数据 长
度 VL( value length) 和实际数据值 value。而 标签又由组 号( 高
位 2 Byte) 和元素号( 低位 2 Byte) 两部分组成。
MATLAB 图像处理工具箱提供了获取 DICOM 文件信息的
函数: dicominfo( ) 。该函数首先判断文件是否为 DICOM 格式,
收 稿日期 : 2007- 05- 21; 修 回日 期: 2007- 08 - 27
基 金 项 目: 国 家 自 然 科 学 基 金 资 助 项 目 ( 30570458 ) ; 广 东 省 自 然 科 学 基 金 资 助 项 目
( 05006530) ; 广 州市番 禺区 科技攻 关项 目( 2005-Z- 55- 1)
作 者 简 介 : 高 向 军 ( 1975- ) , 男, 山 东 临 沂 人, 博 士 研 究 生, 主 要 研 究 方 向 为 医 学 图 像 处 理 及 三 维 可 视 化 ( xjgao75 @ 163 . com) ; 田 联 房
( 1968 - ) , 男, 教授, 博 士, 主要研 究方 向为生 物医 学工程 、机 器人 视觉伺 服控 制、模式识 别、智能 控制; 王立 非( 1963- ) , 男, 副 主 任医 师 , 主 要 研究 方
向为医 学影像 诊断 、介 入放 射治疗 ; 毛 宗源 ( 1936 - ) , 男, 教授, 博 导, 主要研 究方 向为现 代控 制理论 及应用 、人工智 能.
·8471·
计 算 机 应 用 研 究
第 25 卷
满足 以下条 件之一 的即为 DICOM 格 式: a) 头文件 是 132 Byte
且第 129 ~132 Byte 是‘DICM’; b) 检查头文件的第一个数据元
素的属性, 数据元素的标签 以组号 0x0002 或 0x0008 开 头。通
过该函数可以获取 DICOM 文件的大小、尺寸、窗宽、窗位、数据
类型、传输协议、设备描述、获得日期以及病人状况等信息。比
如调 用 metadata = dicominfo( ′CT-MONO2-16-ankle. dcm′) ; 返
回一个结构体。
metadata. TransferSyntaxUID = 1. 2. 840. 10008. 1. 2% 传输 协议标 志
metadata. RescaleIntercept = -1024 % 尺度 截距
metadata. RescaleSlope = 1 % 尺 度斜 率
1. 2 DICOM图像的读入
MATLAB 图像处理工具箱提供的 dicomread( ) 函数支持读
入多种图像类型的 DICOM 格式。一般来 说, DICOM 格式文 件
的数据元素存储的是经过变换后的图像数据, 笔者可以根据读
入的图像数据 X 以及图像的信息 metadata 得到相应的图像 CT
值。转 换 公 式 为: Hu = a. * X + b。 其 中: a 为
metadata. RescaleSlope; b 为 metadata. RescaleIntercept。
1. 3 DICOM图像的显示
目前的 DICOM 图像一般都是 16 位, 即其显示范围可 以达
到 65 536, 然而屏幕显示范围只有 0 ~255, 故需要定 义像素 的
CT 值到屏幕像素对应的灰度值 ( 0 ~55) 的映射。常 用加窗 显
示的线性映射来实现。所谓加窗显示是指通过限定一个窗口,
将窗口区域的图像数据线性地 转换到 显示器 的最大 显示范 围
内, 高于或低于窗口上下限的图像数据则分别设置为最高或最
低的显示值 [ 2] 。这样 通 过动 态地 调 节窗 口 的窗 宽和 窗 位, 就
可以观察到医学图像的全部信息。
MATLAB 图像处理工具箱 提供了 多种动 态调整 图像对 比
度和亮度的函数。通常用以下两种函数做图像的显示和分析:
a) imshow( ) 函数, 该函数自 动设置 图像窗 口、坐 标轴和 图
像属性。可以设 定 预显 示 的 上下 限, 也 可 以 调用 函 数 imcon-
trast( ) 生成一个 adjust contrast tool, 它 可以可 视地调 整当前 灰
度图像的对比度和亮度。
b) imtool( ) 函数。该函数提供了一个 显示图像及实现常用
图像处理任务的集成环境, 它逐渐替代了函数 imview( ) 。该函
数几乎支持任何数据类型的图像, 它不仅拥有 imshow( ) 函数的
功能, 而且可打开其他几个有助于显示及分析的可视工具, 如像
素区域工具、图像信息工具和对比度调节工具。根据分 析图像
的需要, 可以通过调节显示范围或滑动鼠标, 自由的调节对比度
来显示图像的不同组织。图像显示效果如图 1 所示。
(a) 皮肤组织
(b) 骨骼组织
图 员 图像显示效果
2 图像格式转换
2. 1 图像类型转换
MATLAB 图像处理工 具 箱支 持四 种 图 像类 型, 分 别 为 真
彩色 图 像 ( RGB) 、索 引 色 图 像、灰 度 图 像 ( I) 和 二 值 图 像
( BW) [ 6] 。许多图 像处 理工 作对 图像 类型 有特 定的 要 求。比
如要对一幅索引图像滤波, 首先要把它转换成真彩色图像或灰
度图像, 直接滤波的结果是毫无意义的。在图像处理工具箱中
有类型转换函数 可以 实 现各 种图 像 类型 之间 的 相互 转换, 如
rgb2gray( ) 、ind2gray( ) 、im2bw( ) 等。
2. 2 图像文件格式转换
在 MATLAB 中, 改变图像文件格式的方法 是, 先 用阅读 函
数将文件读入工作空间; 然后用写入函数以适当的格式保存文
件。因此可以方便地实现医学 图像格 式与其 他格式 之间的 相
互转换, 以利于医学图 像的传 输和 应用。比 如把 一个 . png 图
像转换成 DICOM 格式, 调用格式为
X = imread( ′rice. png′) ; % 将转 换文 件读入 工作空 间
info = dicominfo( ′E: \ctdata\41. dcm′) ; % 获取 DICOM 的图 像信息
st = dicomwrite( X, ′E: \ctdata \rice. dcm′, info) ; % 转 换 为 DICOM
格 式, 图像 信息为 指定 的 info
此时 结 构 st. SuspectAttribute = { ′( 0028, 0100) ′′( 0028,
0101) ′′( 0028, 0102) ′} , 说明数据类型与指定的图像信息不一
致, 故此只要转换成对应的数 据类型 即可。此外 dicomwrite( )
还提供了多个参数供选择。可指定的参数如表 1 所示。
表 1 dicomwrite( ) 函 数可变 参数 列表
选 项
Endian
VR
描 述
文 件 的 字 节 存 储 方 式 , Big, or Little( de fault)
数 据 类 型 是 否 表 明 : Explicit, or Implic it( default)
Compre ssionMode
图 像 的 压 缩 类 型 : JPEG lo ssless, JPEG lo ssy, RLE, or None
( default)
TransferSyntax
数 据 传 输 协 议 UID, 若 是 指 定 此 选 项 , 则 dic omwrite 自 动 填
写 选 项 Endian 、VR 和 Compre ssionMode, 而 忽 略 用 户 输 入
的 值
Dic tionary
包 含 私 有 数 据 元 素 的 DICOM 数 据 字 典
W ritePrivate
判 断 是 否 要 写 入 私 有 数 据 元 素 , true or false ( default)
Cre ateMode
数 据 写 入 的 方 式 , Create ( default) 验 证 输 入 值 并 补 充 缺 少
的 值 , Co py 复 制 输 入 值 , 不 填 充 缺 少 的 值 , 此 时 一 定 要 确
保 元 数 据 来 自 同 一 个 DICOM 模 型 和 IOD
3 实例分析
3. 1 删除文本
本示例演示 DICOM 图像的 阅读及 写入函 数, 同时 演示 如
何进行简单的图像处理操 作。 一般文 本在图 像中对 应白色 像
素, 即为最大像素值。只要将所有最大像素值设置成最小像素
值即可删除文本( 图 2) 。
渊a) 删除前
图 圆 文本删除
渊b) 删除后
本实例代码如下:
I = dicomread( ′CT-MONO2-16-ankle. dcm′) ; % 读 入 DICOM 文件
imshow( I, ′DisplayRange′, [ ] ) % 如图 2
info = dicominfo( ′CT-MONO2-16-ankle. dcm′) ; % 读入图像文件信息
siUID = info. SeriesInstanceUID; % 获取 图像 的序列 实例 UID
Imodified = I; % 定 义一个 同维的 数据 矩阵
maxv = max( I( : ) ) ;
minv = min( I( : ) ) ;
Imodified( Imodified = = maxv) = minv;
imshow( Imodified) % 显 示处 理过的 图像
uid = dicomuid; % 产生 一个 新的 UID
info. SeriesInstanceUID = uid;
第 6 期
高向 军, 等 : 利 用 MATLAB 实 现医 学图 像处 理与 分析
·9471·
dicomwrite( Imodified, ′ankle_newseries. dcm′, info) ;
3. 2 Level set图像分割
在医学图像分割研究中, 基于 level set 技 术的活动轮 廓模
型正引人 注 目。本 实 例 在 MATLAB 环 境 中, 实 现 了 Chan 和
Vese[ 7] 提出的无梯度的活动轮廓模型, 并应用在医学图像分割
之中。
C-V 分割方法的基本 原理 如下: 设 定 义域 为 Ω的图 像 u0
被闭合边界 C 划 分为 目标 O ( C 的内 部) 和背 景 B ( C 的 外
部) 两个同质区域。两个区域的平均灰度分别为 c1 和 c2, 此时
能量函数可看做为外部能量和内部能量之和, 即
E( c1, c2, C) = Einside( C) + Eoutside( C) =
μ1∫∫inside( C) ( u0 - c1) 2dxdy +
μ2∫∫outside( C) ( u0 - c2) 2dxdy + γ|C|
渊a) 初始图像
图 猿 蕴evel set 分割结果
渊b) 分割结果
当闭合边界 C 处 于 两个 同质 区 域的 边 界时, 能 量达 到 最
小。为了解决曲线 的拓 扑 变化 问 题, C-V 分 割 法采 用了 水 平
集方法, 将闭合边界 C 嵌入 高一维的曲面 中 , 根据 初始闭合
曲线 c0 构造一个内正外负的符号距离水平集函数 0。这样就
将关于闭合曲 线 C 的 能量 函 数 转换 为 关 于曲 面 的 能 量 函
数, 再通过变分技术可以得到关于曲面的偏微分方程模型 , 即
- μ1 ( u0 - c1) 2 + μ2 ( u0 - c2) 2 ] 通
/ t = |
过求曲面的零水平集就可以得到 C 的位置。
|[ γdiv (
/|
|)
在 MATLAB 中, 笔者 实现算 法如下: a) 读入图 像, 预定 义
初始轮廓, 如图 3( a) 所示; b) 定义 离散化 水平集 函数; c) 曲 线
演化, 递推过程; d) 求解 演化 后的 零 水平 集, 即 为分 割图 像 的
边缘, 如图 3( b) 所示。
4 结束语
实践 证明, MATLAB 软 件功能 强大、数据计 算能力 突出、
语言简洁易读。使用图像工具箱中的医学图像处理函数, 可以
方便快捷地实现医学图像 的读写 及简单 处理功 能。 本文用 实
例证明了在 MATLAB 环境中可以方 便、快速、有效地 实现复 杂
医学图像处理算法。同时 MATLAB 工具 箱涉及的专 业领域 广
泛且功能强大。由于工具 箱具 有可 靠性和 开放 性, 可 以方 便
地直接加以使用, 也可 以将自 己的 代码 加到 工具 箱中 以改 进
函数功能。因此, 在 MATLAB( R2006b) 环 境下, 实 现医学图 像
的处理和分析具有很大的应用优势和价值。
参考文献:
[ 1] 田捷, 包 尚联, 周明 全 . 医 学影像 处理 与分析 [ M] . 北京: 电子 工
业出版 社, 2003.
[ 2 ] 张尤赛 , 陈 福民 . DICOM 医 学图像 窗口 变换的 加速算 法[ J] . 计
算机工 程与 应用, 2003, 39 ( 13) : 218- 220 .
[ 3] 王立功 , 刘 伟强, 于甬 华, 等. DICOM 医 学 图像 文 件格 式 解析 与
应用研 究[ J] . 计算机 工程 与应用 , 2006, 42 ( 29) : 210- 212 , 225.
[ 4] 曾筝, 董 芳华, 陈晓 , 等 . 利 用 MATLAB 实 现 CT 断 层 图 像 的三 维
重建[ J] . CT 理论 与应用 研究, 2004, 13 ( 2 ) : 24- 29.
[ 5] 任忠宝 , 李佳 . 基 于 MATLAB 的 颅 面三 维 重构 技 术 [ J] . 计算 机
工程, 2005, 31 ( 24) : 191- 193.
[ 6 ] 王家文 , 李 迎军 . MATLAB 7. 0 图 形 图 像处 理 [ M] . 北 京: 国 防
工业出 版社 , 2006 .
[ 7 ] CHAN T, VESE L. Active contours without edges [ J] . IEE E Tra ns
Image P rocess, 2001, 10 ( 2 ) : 266 - 277.
( 上 接第 1740 页 ) 相 比, 本文 算法虽 然计 算量 有所 增大, 但 能
正确区分质量中等区域和质量较差的区域, 并将背景区域和质
量较差、后继算法无法恢 复的噪 声区域 分割掉, 保留 质量中 等
区域, 使后续算法的处理区域更精确。
4 结束语
本文提出了一种改进的基 于指纹 灰度特 性的指 纹图像 分
割算法, 克服了传统自适应阈值分割算法在指纹与背景交接区
域, 以及指纹内部脊线太淡或脊线粘连的区域分割不准及分割
前景边界的方块效应问题, 适用 于更多 类型的 指纹图 像, 且 分
割比较精确。实验结果表明, 该 算法的 分割效 果很好, 对前 景
区和背景区的分割更加灵活准确, 有效降低了指纹图像噪声的
影响, 它不仅能分割出指 纹质量 较好的 图像, 也能有 效地分 割
噪声干扰较大的指纹图像, 经过 分割后 的图像 指纹纹 线清晰、
流畅, 具有较强的适应性和很高的实用价值。目前该算法已被
应用到成熟的指纹识别算法中。
参考文献:
acomposite method[ J] . P attern Recogn ition , 1989 , 22 ( 4 ) : 381-
385.
[ 4] MEHTRE B M. Fingerprint image analysis for automatic identification
[ J] . M achine Vision and A pplications, 1993 , 6( 2 - 3) : 124- 139.
[ 5] 苏彦华 . Visual C + + 数 字图 像识 别 技 术典 型 案 例 [ M] . 北 京: 人
民邮电 出版 社, 2004.
[ 6] 耿茵茵 , 唐良瑞 . 指 纹 图像 分 级 分 割 算法 [ J] . 北 方 工业 大 学 学
报, 2000, 12 ( 3) : 21- 26.
[ 7] 甘树坤 , 欧宗瑛 , 魏 鸿磊 . 基 于灰度 特性 的指纹 图像 分割算 法[ J] .
吉林化 工学 院学报 , 2006 , 23 ( 1) : 68 -71.
ROSENFILD A, KAK A C. Digital
image processing [ M] . New
[ 8]
York: Academic Press, 1976.
[ 9 ] GONAZALES R C, WOODS R E. Digital image processing [ M] .
Reading MA: Addison-Wesley, 1992.
[ 11] 田 捷, 杨鑫 . 生物特 征识 别技 术理 论 与应 用 [ M] . 北 京: 电子 工
业出版 社, 2005.
[ 10] 吴一金, 朱兆达. 图像处理中阈值选取方法 30 年( 1962—1992) 的进展
( 1, 2) [ J] . 数据采集与处理, 1993, 8( 3) : 193- 201; ( 4) : 268- 278.
[ 12 ] BAZEN A M, GEREZ S H. Segmentation of fingerprint images[ C] / /
[ 1] 陆颍 . 指纹自 动识 别原理 与方 法综述 [ J] . 工 程数 学 学报 , 2004,
Proc of the 12th Annual Workshop on Circuits Systems and Signal
21 ( 6) : 1003- 1010.
Processing. Netherland: [ s. n. ] , 2001: 276- 280 .
[ 2]
ZHANG Jian-wei, LU Heng-li. Study on segment algorithm in automa-
[ 13] 冯星 奎, 颜祖 泉, 肖 兴 明, 等. 指 纹 图 像 合 成 分割 法 [ J] . 计 算 机
tic fingerprint identification [ J ] . M icrocompute r A pplicat ions,
1999, 15 ( 12) : 20- 22.
应用研 究, 2000, 17 ( 1) : 76- 77.
[ 14] 韩思 奇, 王蕾 . 图 像 分 割的 阈 值 法 综 述 [ J] . 系统 工 程 与 电 子 技
[ 3] MEHTRE B M, CHATTER J B. Segmentation of fingerprint images:
术, 2002 , 24 ( 6) : 91 -94.