医 院 数 字 化
HOSPITAL DIGITALIZATION
医学影像文件格式与常见格式的转换
DICOM
毕文杰
医院
李慎江
,
山东 泰安
,
解放军第
(
88
271000)
摘要
[
并进行各种转化和处理
标准极大促进了医学影像设备技术的发展
处理医学图像时
以便其它的图像处理软件使用和进行下一步处理
] DICOM
,
,
,
文件中的各种元素进行提取并将像素值转化为各种操作平台下常见的图像格式
首先将文件中存储的像素值提取出来
对
利用
并极
和开源工具包
完全达到了使用标准
Dcm4che
JAVA
。
,
,
DICOM
大地方便后续处理和操作
关键词
中图分类号
] DICOM; JAVA;
[
。
] TH774
[
图像格式
数据集
;
文献标志码
[
] A
;
数据元素
文章编号
[
]1003-8868(2008)10-0154-03
Me d ica l Im a g e ′s Co n ve rs io n fro m DICOM t o Co n ve n t io n a l Fo rm a t
BI Wen-jie, LI Shen-jiang
(The 88th Hospital of PLA, Taian, Shandong Province 271000, China)
Abstract
The DICOM standard has greatly promoted the development of Medical Imaging and Communication. It′ s
necessary to extract the pixels and convert the bytes to the format we need when process the DICOM files. JAVA open-
source toolkit can be used to do this conversion with much convenience.
Key words
DICOM; Java; image format; data set; data element
引言
1
,
,
,
DICOM)
给图像的传输
互相通信的问题
随着标准的普及
是医学图像传输和通信的国际标准
DICOM (Digital Imaging and Communications in Medicine
它的主要
不同医疗设备产生的医学图像之间的
现代医疗仪器
标准的规
然而
医
DICOM
又带来麻
简称
,
目的是规范不同厂家
互相传输
。
最终产生的医学图像的格式
定
由于操作系统平台的多样性
学图像时
烦
。
文件
最后可以使用常见的图像格式进行存储
本文采用与操作系统平台无关的
进行图像像素值的提取和转化
最终在显示和处理
即增加了成本
Java
然后进行显示和处理
接收和显示处理带来了极大的方便
采用不同平台下的软件
最终都符合
语言处理
DICOM
DICOM
,
,
,
,
,
。
,
,
,
,
,
,
。
文件格式解析
2 DICOM
2.1
数据元素和数据集
,
。
,
4
1
3
,2
和值域
TAG、VR、VL
VR (Value Field)
种隐式数据结构
数据元素一共有
个 连 续 的 字 段 构 成
数 据 元 素 的 结 构 由
根据传输语法的不同
说 明 了 后 面 数 据 值 体
。
种显式结构和
VL(Value Length)
际数据长度
同的结构
据 结 构 时
素的
其结构由
素的值由
序列分割符项目被用来标记值域段的结束
还有可能交换不包括在标准中的私有数据元素
素与标准数据元素有相同的结构
标签的组号为奇数
实
种不
当使用显式数
数 据 元
:
结构时
VR
,
如果数据元
否 则
一 个
另外在通信时
,
私有数据元
但私有数据元素中采用的
当数据元素采用隐式
和值域
。
大小等于值域的 字 节 数
个连续的字段构成
来确定时
:TAG、VL
VL
3
。
,
,
,
。
,
。
。
数据集是由逻辑上相关的数据元素组成的
。
的大小顺排列
示更复杂的数据结构
。
据值域又包含数据元素
数据元素通常用于编码多帧图像
,
有的数据集可以嵌套
开成递归的结构
,
此类数据元素的数据类型为
可以形成多层嵌套数据元结构
,
按照标签号
以表
数
,
SQ ,
。 SQ
DICOM
标准的第
动中对应的各种信息对象实体
构 成 的
而 这 些 模 块 的 基 本 构 成 单 位 是 数 据 元 素
部分详细定 义 了 与 现 实 世 界 医 疗 活
信息对象是由各种属性模块
数 据 元 素
。
3
,
,
2.2 DICOM
文件的组织结构
。
的 结 构 如 图
所示
1
(tag)
。
一 个 数 据
元 素 是 由 数 据
元 素 标 签
唯 一 确 定 的
,
数 据 集 的 数 据
并且每个数据元素最
数据值
数据值长度
。
文件由文件头和数据 集 组 成
数 据 集 位 于
,
DI-
DICOM
文件头之后
。
文件头信息
COM
2.2.1
个预定义引导字节加
字节
4
元信息表示已封装的数据集的标识信息
128
文件头由
及元信息构成
据集中的内容则与元信息所表述的
为特征字串
元信息由组号为
这
的数据元素构成
DICM,
4
,
2
。
类一致
SOP
个字节没有标识及长度信息
DICOM
前缀
数
四字节前缀
后面的
,
。
。
2.2.2
在
数据集
DICOM
文件存储应用中
,
每个文件都应包含描述唯
数据元素
TAG
VR
VL
VALCE
可选的
,
取决于传输语法
图
1
数据元素结构图
元素应该按照标签号的大小有序排列
多只能出现一次
类型表述
数据元素
描述了数据元素所代表的数据类型
,
。
VR(Value Representation ,
)
医疗卫生装备
年
月第
卷第
期
154
10
Chinese Medical Equipment Journal·Vol.29 No.10 October 2008
·2008
10
29
一一个
SOP
以 及 对 应 的
实例的数据集
。
如 一 个 研 究
IOD,
可以被定义为多帧一样
这个
SOP
SOP
实例属于某个
序 列 或 存 储 等
类
正 如 特 定 的
、
一个文件可能包含一个以上的
用于数据集中的编码
标识确定的那
。
。
,
SOP
实例中具体内容确定
IOD
影像帧
由
,
必须是由
一种
文件服务提供的文件结束提示是数据集结束的唯一标志
数据集内并不包含它的长度信息
文件元信息中传输语法
DICOM
DICOM
由于
UID
。
。 DICOM
。
HOSPITAL DIGITALIZATION
医 院 数 字 化
文件中像素数据也是没有经过压缩的
。
2.2.3.3
灰度显示
DICOM
文件像素值的灰度表示范围非常大
节的分配位数有关
。
因此
是
普通显示器可以显示的范围之内
色灰阶
256
,
,
,
而普通显示器的显示范围有限
在取出像素的值后要进行转换
与每像素字
常用的
映射到
下面以像素值取值范围为
的灰阶范围为例来说明本文采用
,
,
。
映射到
(0,256)
(Min,Max),
的变换方法
:
变换公式为
:
Max
Value = (Max -Min)/
pValue
256*(pValue-Min)
为转换后像素
为实际像素
Value
,pValue
3 DICOM
文件的显示
像素数据的提取
数值
值
。
3.1
Min
O
图
2
Value
256
灰度变换原理图
文 件 中 像 素 数据 存 放 在 标 签 号 为
首 先 找 到 文 件 中 标 签 所 在 位 置
DICOM
,
数 据 元 素 的 值 域 中
像素数据值读入内存中字节数组中
己编程进行处理比较繁琐
和
包
用
代码如下
这个工具包是对
缺点是文档不详细
本文采用开源的
ezDicom
DICOM
等
,
。
,
。
,
:
以便做进一步处理
,
可以利用一些工具包
如
JAVA DCMCH2.10
标准的一个完整实现
需要自己研究源代码
。
(7FE0,0010)
然 后 将
自
,
。
,
DCM TK
开发工具
方便易
提取像素值的
,
DicomInputStream dis = null;
byte[] pixData = null; //
存放提取出来的像素数据
DicomObject dio = null;
dis = new DicomInputStream(dcmFile);
文件
如
DICOM
,
:c:/Test.dcm
dio = dis.readDicomObject();
//dcmFile
为
3.2
pixData = dio.getBytes(0x7FE00010);
对提取到的像素数据进行预处理
将 像 素 提 取 到 字 节 数 组 后
字节的交换处理
,
根 据 是 大 小 端 子 顺 序
,
下面的代码是处理小端子顺序的情况
,
进 行
:
int pixels[] = new int[rows*columns];
int value = 0;
for (int i = 0; i < pixels.length; i++) {
value = ((pixData[(2 * i) + 1] & 255) << 8) | (pixDa-
ta[(2 * i)] & 255);
pixels[i] = value;
}
进 行 字 节 顺 序 处 理 以 后
根 据 上 面 的 公 式
然后代入
换
际像素值
接从像素数据中得到最大值与最小值
需 要 进 行 灰 度 范 围 的 映 射 转
可 以 从 文 件 中 提 取 出 最 大 和 最小 的 实
直
本文采用的是更为普遍的一种方法
,
,
,
,
。
,
然后代入并计算
,
。
byte destPixels[] = new byte[rows*columns];
for(int i=0;i
maxValue) maxValue = pixels[i];
医疗卫生装备
·2008
年
10
月第
29
卷第
10
期
Chinese Medical Equipment Journal·Vol.29 No.10 October 2008
155
、
,
,DICOM
亮度等信息
采用的是位图的方式
即逐点
对单色图像只有亮度
而 对 彩 色 图 像 则 存 在 不 同的 颜 色 表 示 方
绿
称 位 平 面
即 一 个 点 用 红
个矩阵
三 原 色 的 表 示
允许用
RGB
。
,
、
、
(Sample Value)。
分 配 位 数
存储位数
3
。
(
1
对于
(Bits Allocated)
个 矩 阵 表 示 整 个 图 像
个值组成的
)
在
,
个象
采 样 值 的 描 述 方
指 出 了 该
指 实 际 占
指明该值最高位在分配的
还必须由
属 性 来 决 定 象 素
对 多 帧 图 像 的
(Bits Stored)
,
。 DICOM
在实际存取图像数据的时候
Little-Endian
是 通 过 将 多 帧 图 像封 装 在 一 个 象 素 数 据 元 素
由帧数属性指出
(Pixel
可
常 用 到 的 与 图 像 有关 的 数 据 元 素
有关图像的其它属性
。
,
图像数据元素及其相关元素
图像编码格式
2.2.3
2.2.3.1
对于图像的描述
,
,
。
3
1
称 灰 度 级
,
,
一 般 采 用 的 是
个分量的值表示
。 DICOM
个 分 量
也 允 许 仅 用
矩阵中每一点是由
称 为 采 样 值
表示出其位置上的颜色
信 息
法
蓝
分 别 表 示
3
这种情况下
素值
法 用
,
采样值存储的二进制位数
用的位数
存储单元中的位置
传 输 语 法 中 的
高低字节的实际存储单元地址顺序
支 持
个 数 据 元 素 给 出
最高位位置
Big-Endian
(High Bit)
,DICOM
或
3
3
。
。
。
,
中实现的
。
Data)
以 参 考 标 准 的 具 体 内 容
如表
所示
。
1
。
2.2.3.2
压缩方法
表
常用的与图像相关的数据元素
1
标签
(0028,0010)
(0028,0011)
(0028,0100)
(0028,0100)
(0028,0101)
(0028,0102)
(0028,0002)
(0028,0106)
(0028,0107)
(7FE0,0010)
(0028,1050)
(0028,1051)
说明
图像的行数
图像的列数
图像的帧数
像素的分配位数
像素的存储位数
分配最高位
每像素采样数
最大实际像素值
最小实际像素值
存储像素值的数据元素
窗位
窗宽
,
,
原 始 医 学 图 像 占
在 传 输 与
用 存 储 量 大
存 储 过 程 中 效 率 较 低
,
可 以 使 用 压 缩 的方 法
来 减 少 图 像 中 的冗 余
信 息
在 不 损 失 图 像 信
息 或 少 损 失 的 情 况 下
,
减 少 图 像 存 储 所需 要
的字节数
压缩方法分
为 无 损 压 缩 和 有损 压
无损压缩
缩
方 法 可 以 将 原 数据 原
封 不 动 地 恢 复 到原 始
状 态
而 有 损 压 缩 则 是
不 可 逆 的 过 程
不 能 恢
对医
种方法
2
。
。
,
,
反 映 在
。
表 示 值 为
DICOM
或
从左 到 右 的 顺
OW
,
、
,
由于涉及到医疗责任和法律的原因
复到原来的情况
学图像的有损压缩采取了相当谨慎的 态 度
标 准 中
主 要 推 荐 使 用 无 损 压 缩 的 方 法
。
,
对未压缩象素数据
通常按照从上到下
,
作为连续的位流进行编码和存储
本方 中 使 用 的
,
OB。
序
,