DICOM格式医学图像的读取与显示
*
李清美
(泰山医学院附属泰山医院影像中心,山东泰安 � 271000)
摘要:目的 � 探讨 DICOM格式医学图像的读取与显示方法, 为后续的图像处理和临床诊断提供预处理和理论
基础。方法 � 首先分析 DICOM格式文件的结构, 然后给出开窗显示的理论分析, 最后,利用 C /C+ +语言在 VC﹢
﹢开发环境下编程实现 D ICOM格式医学图像的读取和显示。结果 � 该方法实现了 DICOM格式医学图像的读取
和显示。结论 � DICOM格式医学图像的读取和显示在医学图像处理和临床中的应用具有重要意义。
关键词: D ICOM; 开窗显示;医学图像处理
中图分类号: R811 � 文献标识码: A� 文章编号: 1004�7115( 2010) 08�0609�04
Reading and disp laying of DICOM m edical image
LI Q ing�m ei
( Im age C en tral of Taian Mun icipalC en terH ospita,l T aian 271000, C hina)
Abstract: Objective: T o exp lo re the m ethod o f D ICOM image read ing and d isp lay ing in order to prov ide the prepro�
cessing and theoretica l foundation for the im age processing and c linical diagnosis. M e thods: F irst, the struc ture of D ICOM
im age w as analyzed, then, the theory o f w indow ing display w as introduced, and fina lly, the D ICOM im age read ing and
show ing w ere achieved by us ing C /C + + prog ramm ing. Resu lts: The proposed m ethod ach ieved theD ICOM im age reading
and show ing. Conclusion: TheD ICOM im age reading and show ing are very im po rtant in m edical im age process ing and clin�
ica l application.
Keyw ords: DICOM; w indow ing display; m ed ica l image processing
� � DICOM ( d ig ital imag ing and communications in
med ic ine)标准主要涉及到信息系统中最主要也是
最困难的医学图像的成像和通信, 可直接应用在放
射科信息系统 ( RIS )和图像存档与通信系统
( PACS)中 [ 1]。它的应用促进了医学影像设备之间
的互操作性,提供了一种用于医学信息的开放性的
数据交换标准,使得不同厂商生产的影像设备形成
的图像统一存档与通讯成为可能 [ 2]。现有的大多
数图像处理软件都不能直接读取和显示 DICOM格
式的医学图像。因此,编程实现 D ICOM格式的医学
图像的读取和显示在医学图像处理和临床应用中具
有重要意义。本研究首先分析了 D ICOM 格式图像
文件的结构,然后给出开窗显示的理论分析,最后,
利用 C /C+ +语言在 VC+ +开发环境下编程实现
了 DICOM格式医学图像的读取和显示。
1� 材料和方法
1. 1� 材料
泰山医学院附属医院放射科提供的 D ICOM格
式 CT图像 100幅, W indow s XP操作系统, M icrosoft
V isual C+ + 6. 0编程软件。
1. 2� 方法
609
泰 � 山 � 医 � 学 � 院 � 学 � 报
JOURNAL OF TA ISHAN MED ICAL COLLEGE� Vol�31� No�8� 2010
* 作者简介:李清美 ( 1966� ),女,山东泰安人,主管技师,本科,主要从事放射技术工作。
1. 2. 1� D ICOM 图像文件格式 � DICOM格式图像
文件是按照 D ICOM标准所生成的图像文件,它有文
件元信息和数据集组成。文件元信息也叫文件头,
包括封装数据集的识别信息。文件头由 128个字节
的文件前言、紧随 4个字节的 DICOM前缀和文件元
要素组成。这个文件头将在每个 DICOM文件中出
现。文件前言可加以利用, 正如应用框架或具体的
操作所定义的。 DICOM标准的这部分对固定大小
的前言不要求任何结构。不需要构建成具有标签和
一定长度的 DICOM数据元素。本部分通过提供与
许多常使用的电脑图像文件格式的兼容性, 来便利
于对 DICOM文件中的图像数据和其他数据的访问。
不论文件前言是否包含信息, D ICOM文件内容应该
与该部分要求相符合,数据集应该与文件元信息中
指定的 SOP ( serv ice ob ject pair)类相符合。如果应
用框架或特殊操作不使用文件前言,所有 128字节
都被设置成 00H。当所有 128字节不按上述规定设
置的时候,目的是帮助识别前言被使用过了。4个
字节的 D ICOM前缀将包含字符串 DICM !, 它被当
作大写字母利用 ISO 8859 GO字符指令进行编码。
这 4个字节前缀没有被构造为具有标记符和长度的
D ICOM数据元素。前言和前缀之后是具有标记符
和长度的一套 DICOM元要素。
数据集是由一系列数据元素组成。每个数据元
素都有唯一的标记符,这些数据元素在数据集中按
标记符中的组号以及元素号数值增加的方式进行存
放。一个数据元素在数据集内至多只能出现一次。
但是在嵌套的数据集中可以再次出现。显式和隐式
数值表示法在数据集精确嵌套数据集中并不同时存
在, 一个数据集是否使用显式或隐式数值表示法以
及其它特性,取决于传输语法的协商。
一个数据元素包含了数据元素标记符、值表示
法、值长度和数据元素值。数据元素的值表示法是
否存在决定于协商的传输语法。对隐式值表示法的
传输语法,数据元素没有值表示法。而在显式值表
示法的传输语法下, 数据元素包括值表示法。数据
元素有标准数据元素和私有数据元素两种类型。标
准数据元素具有偶数值组号, 私有数据元素具有奇
数组号, 自 DICOM 3. 0以后,数据组号并不传递任
何语义上的含义。数据元素中值域的字节长度必须
是偶数个,不足的部分填充空格 [ 3]。
标记符 ( Tag )用 4字节的 16进制数表示, 前面
2字节的数是数据元素的组号, 后面 2字节的数是
元素号。组号为偶数的是标准数据元素, 具体含义
可以在 DICOM的数据字典中查到。DICOM的数据
字典定义了许多数据元素标记符, 涵盖了大多数的
应用需要。组号为奇数的为私有数据元素, 由用户
在使用过程中自己定义。在 DICOM标准中每个数
据元素都有一个唯一的标记符,这些标记符可以在
数据字典中查到。例如: ( 0x0028 0010) 表示存储
图像高度的数据元素的标记符, ( 0x0028 0011 ) 表
示存储图像宽度的数据元素的标记符, ( 0x0028
1050) 表示存储图像窗位的数据元素的标记符,
( 0x0028 1051) 表示存储图像窗宽的数据元素的标
记符, ( 0x7FE0 0010) 表示存储图像像素值的数据
元素的标记符。
值表示法 ( value represen tation, VR )是数据元
素值的表示方法, D ICOM标准中, 对每个属性都定
义了值表示法。值表示法具体描述了属性值如何进
行编码。值表示法有隐式和显式这两种形式。隐式
就是采用预先规定的表示方法,通过标记符从数据
字典中查到 DICOM对这个属性表示方法的规定,从
而正确解释属性值的内容。显式是用两个字符明确
表示值的表示方法, 如 AE表示应用实体, AS表示
年龄字符串, DT是日期和时间, FD表示双精度浮点
数等。值表示法的知识是信息交换双方所共享的。
对某个属性 (以标记符标识 )的解码和编码过程必
须仔细选择正确的值表示法。共享这个信息有两种
可能的方法:共享包含所有可能属性的数据字典,或
把值表示法作为数据元素的一部分。后一种方法增
加了信息交换的开销,但比用共享数据字典更灵活,
尤其在多制造商环境, 数据字典同步更新很困难。
值长度表示数据元素值所占据的字节数。数据元素
值是数据元素值域中所存储的数值。图 1是一个具
体的数据元素示例。
图 1� 存储图像高度的数据元素
图 1中, ( 0x0028 0010) 表示存储图像高度的
数据元素的标记符, US表示数据元素值是按无符号
短整型数存储的, 2表示数据元素值占据两个字节,
0x0100表示图像的高度是 256。
610
泰 � 山 � 医 � 学 � 院 � 学 � 报
JOURNAL OF TA ISHAN MED ICAL COLLEGE� Vol�31� No�8� 2010
根据 DICOM文件结构的特点, 在 VC+ +开发
环境下, 我们可以利用 C语言中的 W hile语句和
Sw itch语句读取文件信息。部分 C /C+ +源代码如
下:
fseek( fp, 128, SEEK _CUR);
if( fread(&nDICMFlag, sizeof( int), 1, fp)! = 1)
{
AfxMessageBox( "Read dicom file header error");
return false;
}
e lse
{
if( nD ICMF lag! = 0x4d434944) / /D ICM
{
AfxMessageBox( "Not surport mi age format( dicom) ");
return false;
}
}
while( fread(&usTag, sizeof( short), 1, fp) = = 1)
{
sw itch( gTag)
{
case 0x0002:
if( fread(&usTag, sizeof( short), 1, fp) = = 1)
sw itch( eTag)
{
case 0x0010: / / Transfer syntax U ID
if( readTransfSyntaxStr( fp, sTransfSyntaxU ID,
fa lse, nDataEnd ian) = = 0)
if ( ! strcmp ( sT ransfSyntaxU ID, "
1�2�840�10008�1�2�2" ) )
{
bImplic itVR = FALSE;
nDataEnd ian = B IG _END IAN;
}
break;
case 0x0028:
if( fread(&usTag, sizeof( short), 1, fp) = = 1)
{
if ( nDataEnd ian = = B IG_END IAN)
� Sw apW ord( ( char * ) &usT ag, 1);
� eTag= usTag& 0x fff;f
}
sw itch( eTag )
{
case 0x0010:
nRow s= readWHC IS ( fp, bImplicitVR, nDataEndian,
nO ffBytesOu,t nV alLenOut);
break;
1. 2. 2� D ICOM 图像的显示 � 通常使用的电脑显示
器由于动态范围有限,并受到操作系统的限制,对于
灰度图像所能显示的最大灰度值是 8b it。而 DICOM
格式图像的最大灰度值通常不低于 12bi,t利用普通
的电脑显示器难以直接显示全部灰度信息。因此,
必须通过开窗显示技术, 在不影响视觉效果的前提
下将 D ICOM图像的较大范围内的灰度值逐段映射
为 0~ 255灰度范围来显示。概括来说,开窗显示就
是在高精度医学图像的较大灰度范围内开设一个窗
口,将这个窗口范围内的灰度值映射为 0~ 255范围
内的灰度值来显示, 并通过不断地调节窗宽和窗位
将所有的 D ICOM图像信息逐段显示出来,同时也可
以通过调节窗宽和窗位将医学图像的最佳诊断信息
在电脑显示器上显示出来 [ 5]。开窗显示的部分 C /
C+ +源代码如下:
for( n= 0; n< nH e igh;t n+ + )
{
for( k= 0; k< nW idth; k+ + )
{ � nGonk= * ( pnImgBufIn+ k+ n* nW idth);
if( nGonk < = nLowVa l)
{
nGwnk= 0;
}
else if( nGonk > = nH ighVa l)
{
nGwnk= 255;
}
else
{
nGwnk = ( int) ( ( nGonk - nLowV al)
*
( 255. 0/
nW indowW idth) ) ;
}
* ( m _ lpW indowShowBufOut + 3
*
k + n* nRow�
611
泰 � 山 � 医 � 学 � 院 � 学 � 报
JOURNAL OF TA ISHAN MED ICAL COLLEGE� Vol�31� No�8� 2010
By tes) = nGwnk;
}
}
2� 结 � 果
利用 C /C+ +语言在 VC+ + 开发环境下进行
编程实现了图像的读取与显示,图 2是 DICOM医学
图像开窗显示的部分实验结果,图中,图像 ( a)的窗
位是 600, 窗宽是 255, ( b)的窗位是 1014, 窗宽是
255,图像 ( c)的窗位是 1014, 窗宽是 350, ( d)的窗
位是 1014,窗宽是 2430。
( a)
( b)
( c)
( d)
图 2� DICOM图像开窗显示结果
3� 讨 � 论
从图 2的实验结果可以看出, 在窗宽一定的情
况下,通过改变窗位能够将 DICOM图像的信息按一
定的灰度范围逐段显示出来,窗位对应医学图像的
亮度, 窗位越小, 图像越亮, 窗位越大, 图像越暗,通
过改变窗位可以改变图像的亮度。可以看出, 在窗
位一定的情况下,通过改变窗宽能够将 D ICOM图像
的信息在某个信息点进行压缩和展开, 窗宽对应图
像的对比度,窗宽越大,图像的对比度越小, 窗宽越
小,图像的对比度越大,通过改变窗宽, 可以改变图
像的对比度。不同的窗位和窗宽显示了不同灰度范
围的图像信息,只有选择合适的窗位和窗宽才能显
示出最佳的图像诊断信息。由于 D ICOM 格式图像
文件不同于普通的图像文件,具有特殊的结构特点,
读取和显示这类图像文件, 必须采用不同于普通图
像的编程方法,才能获得较好的效果。
参考文献:
[ 1 ] � 贾克斌.数字医学图像处理、存档及传输技术 [M ] .北京: 科学
出版社, 2006, 20�25.
[ 2] � 王世刚,李月卿, 王昌元. D ICOM图像到 BMP图像转换 [ J] .
泰山医学院学报, 2007, 8 ( 4) : 269�271.
[ 3] � DICOM 2009, . ftp: / / ftp. n ema. org / m ed ical/d icom.
[ 4] � 田捷,包尚联,周明全.医学图像处理与分析 [M ]. 北京: 电子
工业出版社, 2003.
[ 5] � 姜睿智, 岳秀艳, 史廷春,等. 基于 DCMTK的 D ICOM医学图
像显示及其调窗方法 [ J] .计算机系统应用, 2009, 5: 182�185.
(收稿日期 � 2010�05�20)
612
泰 � 山 � 医 � 学 � 院 � 学 � 报
JOURNAL OF TA ISHAN MED ICAL COLLEGE� Vol�31� No�8� 2010