DICOM图像处理技术研究

来源:互联网 发布:linux 用户登录shell 编辑:程序博客网 时间:2021/08/03 19:04

DICOM图像处理技术研究

 

作者:寇海洲    作者单位:淮阴工学院计算机工程系,江苏淮安223001

 

【摘要】  针对DICOM3.0标准,详细分析了文件结构及数据集,给出了其中一些关键技术问题及相应的解决措施。最后基于VC开发出一种医学图像处理软件,该软件能实现医学图像的显示、通用图像格式转换等功能,该方法克服了传统DICOM图象显示软件的局限性。

【关键词】  DICOM标准 DICOM数据集 显示与处理 医学图像解码

    A research on the DICOM image processing technology

    KOU Haizhou*1, CHEN Hongming1, ZHANG Hui1, CHEN Wenbin2, ZHAO Lijuan1

    (1. Department of Computer Engineering, Huai′an Institute of Technology, Huaian, Jiangsu 223001, China;

    2. Department of Reshaping Cosmetology, Huian Second Pople′s Hosipital, Huaian)

    Abstract:According to the information contents and data format defined by DICOM standard, some classes corresponding to the types of medical image are defined for image information recording. A DICOM image viewer based on VC is designed,  which is able to display and process various types of medical image. A method is thus provided, by which the problem of limitation of traditional DICOM image viewers can be solved.

    Key words: DICOM; DICOM DataSet; display and process; medical image decoding

    DICOM(Digital Imaging Communications in Medicine)标准是医学数字成像和通信的国际标准。DICOM虽然是在美国产生、发展的,但已被欧洲各国、日本等发达国家和地区接受,并被列入国家标准。在我国,DICOM是唯一被接受的医疗影像国际规范。DICOM已经成为国际医疗影像设备的图像通信/交流的唯一规范。DICOM标准逐渐得到国内外的高度重视,一些科研机构和高等院校纷纷展开了对标准的研究和基于标准的开发。因此对DICOM标准文件的正确解读是医学数字图像处理和建设的关键技术之一。

    1  DICOM文件的数据结构和编码规定

    DICOM格式文件包括了数字成像和通信两个方面内容。该文件格式基于面向对象的思想,制定了一系列信息对象定义和服务对象定义,文件的数据结构和编码规则包含了数字成像和通信的真实信息[1]。

    1.1  DCM文件的结构  DCM是比较常用的DICOM文件名后缀,其他PACS软件也使用到了IMG,或是完全不使用后缀,直接就是一连串的数字或字符串命名的。DCM文件从本质上说是一个关于信息体实例的数据集,主要包括患者、检查、序列和图像等信息。文件的结构主要由文件头和文件结构像素数据两大部分组成,文件头又分为文件引言和数据集两部分,其中文件引言是由128个全部置为00的字节序列和一个长度为4个字节的字符串组成[2]。数据集是整个文件中信息量最大的部分,囊括了所有信息实体(患者、图像、检查等)的信息,结构也最为复杂,文件最后的图像数据表示像素,数据结构单一,因此解读文件实际上就是解读数据集。

    1.2  DICOM数据集结构  数据集由多个数据元素串连组成,每个数据元素具有类似的结构,都是由标签、值描述、值长度和值域组成。标签表示该数据元素的特定含义。每个标签在整个数据集中只能出现1次(嵌套除外),共4个字节,分为组号(高位两字节)和元素号(低位两字节)。如00100010表示该数据元素里的信息为患者姓名。标签含义的详细规定在标准的3.62004(数据字典)中。描述了该数据元素中值域的数据种类,大多数情况下是一个长度为2字节的字符串。值得注意的是标签是可选的,取决于商定的传输语法。值域表示该数据元素所保存的实际信息,必须为偶数个字节,不足补0或空格。

    2  DCM文件的读取

    理解了文件的结构和数据集的结构,解读文件就不是一件很难的事情,但有些关键性的问题如数据嵌套、高位截取等在读取时需要注意。

    2.1  数据嵌套  当数据元素的值为0时,则该数据元素的值域又是由1个或多个数据元素组成的,即数据元素中包含了子数据集。如果子数据集中又有值为0的数据元素时,就构成了递归嵌套。嵌套的存在要求解读算法能遍历树型数据结构的所有元素。

    2.2  图像数据的高位截取  通常文件采取2个字节表示1个像素,但是一般情况下,真实像素值的动态范围不足以完全填满这2个字节。因此,高字节的高位可能因为被用于存储其他信息。解读图像数据时应该截取高位,把低位的信息读取出来。标准规定标签为00280101的数据元素储存像素数据的最高位数,标签为00280102的数据元素储存实际存储像素数据的位数。对于某些图像,图像数据中储存的像素值没有实际意义,需要采用斜率和截距来修正,而斜率和截距则储存在标签为00281053和00281052的数据元素中。因为一般情况下这两个值为1或0,图像数据中储存的像素值和实际值相等,所以这一点常常为人们所忽略。

    3  DICOM图像处理

    3.1  DCM图像处理的原理  文件描述的是医学图像,反映人体器官及组织对X线的吸收程度,用色值作为人体器官图像信息。目前计算机常用的位图文件是由红、绿、蓝三基色组成,作为灰度图像所能显示的等级数在0~255之间;在操作平台上处理图像,即需要对值进行处理。处理的方法是在描述显示数据的范围时,用窗宽表示;确定数据的中心值,用窗位表示。对于人体器官获得的某个值,如果小于某个值,可转换成位图图像的黑色,即0值;如果大于某个值,可转换成位图图像的白色,即255值;如果在某个值的范围之内,可转换成对应位图图像的某个值,在1~254之间[3],其转换公式:

    G(v)=    0        v<c-w2

    gmw(v+w2-c)    c-w2≤v≤c+w2(*)

    gm        v>c+w2

    v:为图像数据;G:计算机操作平台上显示值;gm:为显示器的最大值,位图文件为255;w:为窗宽;c:为窗位。

    在该转换关系中,窗宽和窗位的选择决定了图像所需显示的部分,对每一个文件,可以从该文件头获取,并且在图像处理中,也可以进行人为地改变窗宽、窗位,来获取不同的显示效果及选择人体器官某部分内容。

    3.2  DICOM类定义  在正确理解文件结构和数据集结构之后,就不难正确解读文件。首先读取文件引言,检查文件格式;然后提取传输语法,根据传输语法,采取相对应的解码方式,如果是显式就采取显式的读取方式,如果有嵌套存在就调用嵌套处理模块;如果图像数据经过压缩就调用解压模块[4]。最后得到图像数据,并利用设备无关位图(device-independent bitmap, DIB,设备无关位图可以在不同的机器或系统中显示位图)显示出来。这里需要注意的是在数据集中存在上百个数据元素,我们只要读取其中相对重要的元素即可,表1中列出了这些数据元素的标签[4]。表1  重要的数据元素标签

    由于图像数据的动态范围较大(一般大于4096,这个数值取决于采用的图像处理算法和计算机的虚拟内存),而普通显示器只能显示256级灰度,因此读取到图像数据后,要经过窗宽窗位调节才能显示。DICOM数据集包含的信息很多,其中有些信息很少用到或者与具体的医疗情况不符,因此去除冗余信息、保留主要信息是很有必要的。采用面向对象的思想,笔者设计了简化的DICOM图像类结构。其中患者信息主要获取患者的姓名、性别等信息;检查信息主要获取检查的标识、序列号等信息;图像信息参数主要获取图像的长、宽以及存储每个像素所用的比特数等信息;图像像素信息获取图像数据信息。DICOM图像的数据结构C语言描述如下:

    struct PatientInfo{∥患者信息结构

    String PatientName;

    Int age;

    Bool sex;

    …}

    struct StudyInfo{∥检查信息结构

    Int StudyID;

    Int SeriesNumber;

    …

    }

    struct ImageInfo{∥图像信息结构

    Float height, width;

    Int pixel;

    …}

    struct Pixel{

    Int pointx, pointy, pixelvalue; ∥像素信息结构

    …}

    DICOM类定义如下:

    Class DICOM; ∥DICOM 图像类

    {

    int level;

    struct PatientInfo;∥患者信息

    struct StudyInfo;∥检查信息

    struct ImageInfo;∥图像信息参数

    struct Pixel; ∥图像像素信息

    Public;

    ∥Dicom文件读写、处理方法的定义略

    };

    3.3  DICOM图像处理算法设计  在定义好DCM文件类之后,可以通过DCM文件类还能实现一些实用的功能,如把文件转换为位图、JPG等格式文件[5]。简单读取DCM文件的软件流程如图1所示。图1  读取DCM文件的流程图

    在VC6.0环境下,首先设置图像像素缓冲所需要容量的内存,分行读入图像数据;然后按公式(*)进行处理,设置图像点数据,进行移位处理[6]。设窗宽为H,窗位为W,其算法描述为;

    for(i=0;i

    for (j=0;j

    {    t1=*(Data[i]+j*2); t4=t1&16; t3=t1/16; t2=*(Data[i]+j*2+1); t2=t2%16

    Pixel_value=t2*256+t3*16+t4/1024;

    pDibInit>image_Dicom[j][i]=pixel_value;

    if(pixel_value<=win_center-win_width/2)

    pixel_value=0;

    else if(pixel_value>=win_center+win_width/2)

    pixel_value=255;

    else

    {

    pixel_value temp=(pixel_valueW+H/2)/Hf*255;

    pixel_value=int(pixel_value temp+0.5f);

    }

    image[i][j]=byte(pixel_value);

    }

【参考文献】
  [1] 谢长生,熊华明,陈 颉. DICOM图像显示的研究与实现[J].计算机工程与科学,2002,24(6):38-.

[2] 朱剑锋,温 浩,周 昀,等. DCM文件的构成分析和编解码实现[J].中国医疗器械杂志,2003,27(4):247.

[3] 王光飞,刘 杰,刘 文.DICOM医学图像的调窗技术及DIB显示[J].医疗装备,2005,18(8):1-4.

[4] 林春漪,尹俊勋,马丽红,等.论解读DICOM医学图像文件及其显示的VC++实施办法[J].现代医学仪器与应用,2005,17(1): 1-4.

[5] 胡阳秋,高小榕,高上凯.医学图像DICOM格式转换软件的设计与实现[J].北京生物医学工程,2000,19(4):193-197.

[6] 张尤赛,陈福民. DICOM医学图像窗宽变换的加速算法[J].计算机工程与应用,2003,(13):218-220.

原创粉丝点击