Dicom医学图像

2024-05-06

Dicom医学图像(精选八篇)

Dicom医学图像 篇1

随着X线、CT、MRI、PET以及SPECT等医疗设备不断的更新换代和医学图像处理软件的日渐完善,医院对疾病的诊断也越来越准确,特别是在MRI和CT等大型设备广泛应用的环境下,影像诊断已从传统二维X线平片读片发展到数字化DR片和如今正在发展中的三维立体影像诊断技术[1,2]。

很多大型医院的DICOM图像三维重建软件都是内嵌于类似于大型工作站一类的图像处理系统或治疗计划系统中,这类软件系统在拥有优越性能的同时,都需要极大的运行消耗和极高要求的硬件配置,以至于价格非常昂贵。并且这类处理系统的关键代码都掌握在软件公司手中,这给日常的维护带来了困难和不便。所以,开发小型、高效且支持DICOM 3.0标准的医学图像三维重建系统被提上了日程,该系统能提高影像诊断的准确率,以便为患者进一步治疗提供支持。

2 DICOM医学图像文件格式

DICOM(digital imaging and communication in medicine)即医学数字影像在通信过程中遵循的通用规则。经过十多年的发展,DICOM已经被医学设备生产商和医学界广泛接受,在医学影像设备中得到普及[3]。随着PACS在医院中的广泛应用,医院对DICOM标准的理解变得越来越重要,也对医师医学影像学的后处理提出越来越多的业务要求,因此,解读DI-COM医学图像显得非常重要。

DICOM标准的PS3.10规定了媒体存储和文件格式,DICOM文件是DI-COM数据集的封装,由DICOM文件元信息(meta information)和描述DICOM SOP类实例的数据集组成。每个文件包含一个SOP实例,该实例包含一个图像实例(单帧或多帧)。每一个DICOM文件都由2部分组成:文件头信(file meta information)和数据集(data set)。DICOM标准PS3.10描述了文件头的详细说明,每个DICOM文件都必须包括文件头,如图1所示[4]。

3 VTK(visualization toolkit)概述

可视化工具函式库(visualization toolkit,VTK)是一个开放源码、跨平台和支援平行处理的图形应用函式库。它将图形图像可视化领域内的常用算法封装成类库,为开发医学图像三维重建软件提供底层的图形图像学支持。VTK向从事可视化应用程序开发工作的研究人员提供了一个强大的可视化开发工具,并以用户使用的方便性和灵活性为主要原则,具有强大的三维图形功能,支持基于网络的工具(如Java和VRML)和对多种数据类型进行处理等特点[5]。

4 DICOM图像处理软件系统

DICOM图像处理软件系统的结构框如图2所示。

4.1 DICOM文件输入模块和患者信息显示模块

DICOM医学图像读取到系统中患者信息,文件输入和患者信息显示流程图如图3所示。

4.1.1 取得DICOM文件或者文件夹路径

选择文件对话框的作用就是以可视化界面的形式取得系列图像所在文件夹的完整路径。选择路径有2种方式:一种是在MFC中CFileDialog(可以实现打开和保存功能,无法实现对文件夹的打开);另一种是使用WIN32API函数。

4.1.2 图像的读入

在获得文件路径之后,就可以调用vtkDICOMImageReader来读取图像了,单张和系列图像都可用这个类来读取:

图像的读入用SetFileName来寻找来路径;系列图像的读入用SetDirectoryName寻找路径;还要设置间距(SetDateS-pacing)和起始位置(SetImageRange)

4.1.3 提取患者信息

DICOM是一个关于信息体实例(SOP Instance)的数据集,这个数据集由很多数据元素组成。其中,患者(patient)、研究(study)、序列(series)和图像(image)等的相关信息称为元信息(meta information),图像数据(imagedata)只包含图像像素数据信息。所以,要取得患者的信息,比如患者姓名、图像大小、UID号等,vtkDICOMImageReader中有PatientName,StudyUID等对象。取得PatientName,StudyUID的方法如下:

此处this为vtkDICOMImageReader类的一个实例,DI-COM图像读取以后,把DICOM中的类赋给this指针,然后将this指针的内容赋给所要显示的患者信息的对话框,程序中用的是Edit Control控件,运行结果如图4所示。

4.2 图像预处理

从各种影像设备(如CT、MRI等)获取的图像由于外界因素的干扰,图像存在噪声,图像预处理时就要去除噪声,保留有用的图像信息。图像预处理主要有根据灰度变换的对比度增强、去除噪声的平滑、伪彩色处理以及窗宽窗位等调节。

4.3 标记模块

虽然现在读取DICOM医学图像的软件很多,但是由于不同医生对不同部位的标记是不同的,而且在图像处理的过程中,会有一些不可避免的干扰,这将造成对病变定位的误差。注释功能为图像处理科研人员提供影像处理研究效果评估的标准,是此类系统的一个重要功能,也是本软件的一个亮点。

4.3.1 勾画模块的实现

本功能模块将窗口分为2个矩形部分:勾画窗口和调节窗口,如图5所示。

勾画窗口通过vtkImageTracerWidget来实现,用鼠标勾画出感兴趣区域;调节窗口调节感兴趣区域形状,由vtkSplineWidget实现调节形状的功能;通过对节点的移动调节形状,从而更加准确方便地标记感兴趣部位[6],如图6所示。

4.3.2 vtkImageTracerW-idget

因为医学图像数据的CT值范围很大,图像像素数据一般用12或16位整数保存。所以,在将图像进行数据类型转换时,特别是将图像数据类型转换为UnSighedChar类型时,要防止数据溢出,如将UnSignedShort转换为UnSignedChar时,将12位数据转换为8位,所以4为数据被截去,造成溢出。为了防止溢出,使用vtkImageCast中ClampOverflowOn()成员函数。图7为没有溢出的现象,图8为灰度值较高的白色区域数据溢出,造成结果模糊。

软件代码实现的流程图如图9所示。

4.3.3 使用回调函数实现窗口间互动

当在勾画窗口中完成勾画感兴趣区域之后,调节窗口也应同时显示勾画的图形,并建立一系列的节点,以使医生能够通过这些节点的移动调节感兴趣区域的形状。实现回调函数,必须编写一个vtkCommand类的继承,这个类主要实现闭合所画曲线和在调节窗口中显示所画曲线的功能。

4.3.4 勾画区域的保存

当使用DeepCopy进行值拷贝时,它把资源也赋值一次,使对象拥有不同的资源,但资源的内容是一样的。对于堆资源来说,就是在开辟一片堆内存,把原来的内容拷贝[7]。这样每一层图像将有2个数据,分别为本底图像(类型为vtkImageData)和勾画出的曲线(类型为vtkPolydata)。

5 小结

本图像处理软件主要完成了基于DICOM格式的图像读取、文件基本信息显示、特定区域的标记及三维重建显示功能,实现对批量DICOM图像的处理,使医生直观、全面、准确地了解到病变部位的空间位置、大小、形状等图像信息,也为医生和软件设计工作人员提供了一个很好的交流工具,让他们的交流更加直观、方便,从而为软件工作人员更好地维护软件和医生准确诊断提供有力的支持。

摘要:基于DICOM格式序列图像,使用可视化工具包(visualization toolkit)和MFC类库,以面向对象的方法在Visual Studio 6.0环境中开发医学图像处理系统。该软件实现了对DICOM格式序列图像的读取、文件基本信息显示、窗宽窗位的调节、特定区域勾画、注释及三维重建显示功能,为病理诊断提供直观、全面、准确的图像信息。

关键词:DICOM,VTK,医学图像处理,图像标记注释,三维重建

参考文献

[1]孟晓林,秦安,陈武凡,等.基于VTK的医学虚拟内窥镜系统的研究[J].医疗卫生装备,2009,30(10):8-14.

[2]杨玲,袁杲.Observer与Command模式在VTK类库设计中的应用研究[J].西南民族大学学报:自然科学版,2007,33(4):972-975.

[3]冯前进,刘洋.基于VTK的医学图像三维可视化系统[J].医疗卫生装备,2006,27(6):1-2.

[4]梁存升,冯骥.DICOM标准分析及应用[J].中国医学装备,2006,3(2):18.

[5]栗亚,钱晓平.体视化技术及其在医学图像中的应用[J].生物医学工程学杂志,2004,21(4):690-693.

[6]吴章文,勾成俊,杨代伦,等.医学图像可视化系统的设计与实现[J].四川大学学报,2003,49(3):514.

Dicom医学图像 篇2

一、课程基本信息

课程编号:0904057 课程中文名称:医学图像处理

课程英文名称:Medical Image Processing 课程性质:专业主干课程 考核方式:考试 开课专业:生物医学工程 开课学期:7 总学时: 48(其中理论38学时,上机10学时)总学分:3

二、课程目的

本课程是一门专业基础课,目的是为了加强生物医学工程专业学生用计算机进行医学图像处理能力的培养。通过讲述bmp图像、锐化增强、图像分割、图像变换、图像的识别等内容,使学生了解医学图像处理所必需的基础知识,掌握医学图像处理的基本技能和实际应用的方法,为今后结合本专业开展相应的研究打下良好的基础。

三、教学基本要求(含素质教育与创新能力培养的要求)

本门课程分为理论学习和上机实践两个部分,要求学生掌握医学图像处理所必需的基础知识的同时,重点培养学生的实际应用能力。

1、对用计算机进行医学图像处理的重要性和特殊性有明确的认识。

2、熟悉bmp图像显示的方法和相应的程序设计。

3、熟悉图像的点运算、图像的代数运算、图像的几何运算的算法和相应的程序设计。

4、熟悉直方图增强、锐化增强、局部增强、伪彩色增强、平滑的算法和相应的程序设计。

5、熟悉基于边界的图像分割、阈值分割、基于区域增长或分裂的分割算法和相应的程序设计。

四、教学内容与学时分配

第一章

数字图像的形成和图像处理系统(4学时)数字图像的形成、图像处理系统的构成,不同成像技术产生的医学图像 第二章

图像的运算(6学时)

图像的点运算、图像的代数运算,图像的几何运算 第三章

图像增强(6学时,课程重点)

直方图增强,图像平滑,锐化增强、局部增强、伪彩色增强 第四章

图像的分割(6学时,课程重点、课程难点)

基于边界的图像分割、阈值分割,基于区域增长或分裂的分割、分割效果的评价 第五章

图像的表达与描述(4学时,课程难点)

目标外特性的表达与描述,目标内特性的表达与描述、目标特性描述的标定 第六章

图像变换(4学时)

傅立叶变换,傅立叶变换在图像处理中的应用 第七章

图像的识别(4学时,课程难点)图像相似性的测量,图像的特征,图像的分类 第八章

医学虚拟现实系统概述(2学时)医学虚拟现实系统的组成及其主要应用等 考试(2学时)

五、教学方法及手段(含现代化教学手段及研究性教学方法)

所运用的教学方法和教学手段有理论教学(课堂讲授)、使用多媒体教学、课堂讨论、上机实践等。

六、实验(或)上机内容

1、编写程序,对医学图像进行平滑处理

2、编写程序,对医学图像进行滤波处理

3、编写程序,对医学图像进行基于阈值的图像分割

4、显微医学图像分析

5、医学虚拟现实演示系统

七、先修课程

先修课程:程序设计基础(C语言)、大学计算机基础、计算机软件基础。

八、教材及主要参考资料

[1] 章鲁,顾顺德,陈瑛.医学图像处理[M].上海:上海科学技术出版社,2002.[2] 谷口庆治.数字图像处理[M].北京:科学出版社&共立出版社,2002.九、课程考核方式

平时成绩占20%,闭卷笔试占80%。

撰写人签字:

Dicom医学图像 篇3

摘 要:DICOM图像文件的储存和传输一直是近代医学图像处理中一个比较热门的研究话题,其中较好的解决方案就是对DICOM图像进行压缩处理。文中通过对DICOM文件的数据结构进行分析,将DICOM文件拆分成图像数据部分和文本信息部分,然后采用9/7提升小波变换对拆分出来的DICOM图像数据进行图像变换,最后对变换后的小波系数进行SPIHT编码完成DICOM图像压缩。主客观对图像的评价表明SPIHT算法在高压缩比时仍能保证图像较好的质量。该方法能够对DICOM图像的存储和传输带来便利也将产生一定的影响。

关键词:医学数字图像通信协议标准;图像压缩;9/7提升小波变换;多级树集合分裂排序

中图分类号:TP391 文献标识码:A

1 引 言

影像储存和通信系统(PACS,全称Picture Archiving and Communication System)广泛应用于我国医院影像管理事业中[1]。PACS主要用来解决CT(计算机断层扫描)、MRI(核磁共振)、US(超声成像)等成像设备产生的图像数据传输和储存的问题。1985年ACR和NEMA联合建立了医学数字成像的DICOM(Digital Imaging and Communications in Medicine)标准[2]。DICOM文件的一个特点就是数据量巨大,其中图像数据占90%以上并且图像的数据量要比普通图像要大得多[3]。文中对DICOM文件的数据结构进行了分析并结合现代图像压缩技术,在确保一定图像质量的情况下,完成大压缩比的DICOM图像压缩工作。

2 DICOM图像压缩原理

DICOM标准的数据结构部分中定义了DICOM如图1所示的文件结构。DICOM图像文件是由文件序言、首缀组成的头文件部分和由多个数据元素组成的数据集部分构成[4],每个数据元素由标识符(Tag)、数据类型(VR)、数据长度(VL)和数据组成。DICOM图像文件包含了许多图像的附加信息,如设备信息、图像所属患者信息、图像的窗位窗宽大小等,这些信息和图像数据一起存放在各个数据元素中。DICOM数据字典对每个数据元素都分配了一个唯一的Tag,其中图像数据的Tag为(7FE0,0010)[5]。对DICOM图像压缩的本质是将DICOM图像文件中的文本数据和图像数据分离出来并对DICOM文件中的图像数据进行压缩。在对DICOM图像文件解码的过程中,通过对图像数据Tag的定位可以将DICOM文件中的图像数据分离出来并转换成适合图像压缩的BMP文件。

图1 DICOM图像文件结构

此时,DICOM文件的压缩就变成了针对从DICOM文件中分离的出来的BMP文件进行压缩处理,经典图像压缩技术的一般步骤如图2中所示。首先是对原始图像进行变换,然后对变换系数进行量化编码得到压缩图片文件,这时就可以方便快捷的对压缩文件进行存储或者传输。解码器和编码器是一个互逆的过程,通过解码、去量化、反变换可得到压缩重构的图像文件。JPEG标准中使用的是DCT(离散余弦变换)变换,但由于DCT不能很好的处理它自身引起的方块效应和在保证图像质量的前提下不能达到更高的压缩比等原因而逐渐被舍弃[6]。因离散小波变换具有优良的时频特性(能够将低频和高频的信息进行分离)被JPEG2000标准所采纳[7]。

3 图像变换与编码方法

3.1 9/7提升小波变换

小波理论的思想来自伸缩与平移变换,将满足一定条件的小波基本函数Ψ(x)构造成形如(1)公式的构造函数。用尺度因子a将Ψ(x)做伸缩处理,小波函数图像会随a的变小而缩短,随着a的变大而伸长;用b控制Ψ(x)水平移动。

小波变换(Wavelet Transform,简写WT)与FT(Fourier Transform)在某种程度上类似,其定义如公式(2)中所示。小波变换可以看成把一个信号(信号也可以看作一种函数)表示为由多个或者无穷个经过伸缩平移变换而得到的小波信号的叠加。信号作小波分解实际上相当于用具有选择性的滤波器对信号进行滤波处理,它的要点就是对于平稳变化的信息(对应于信号低频部分)可以在大区域上查看;对于快速变化的信息(对应于信号的高频部分)可以在小区域上放大查看。

对于图像信号,可以抽象成二维离散函数F(x,y),二维离散函数的WT就可以通过一维离散行WT和一维离散列WT来实现二维离散一级WT,如图3所示。图像通过一维行WT就可以获得行低频(L)和行高频(H)的小波系数,再经过一次一维列WT就可以将图像的最低频系数集中在左上角LL1处,最高频系数集中在右下角HH1处,此时也就完成了图像信号的一级WT。二级WT就是在原来变换的基础上单独对LL1处的信息进行一次一级WT,多级WT则以此类推就可得到。WT都必须用到了小波函数,而对于二维离散函数的WT则是由小波基来完成。但由于这些小波构造多依赖于FT,构造过程繁杂且算法复杂占用较大内存。因此,1995年,Sweldens W.博士创造性地提出了在时域中采用lifting scheme方法构造小波函数的方法即第二代小波(second generation wavelet)构造方法[8]。这种构造小波方式与第一代小波不同,它不需要通过FT或者基于FT尺度伸缩,而是快速便捷的利用Split,Predict和Update等方法来完成对数字离散信号的小波变换。JEPG2000标准中采用了9/7提升小波和5/3小波提升小波来完成对图像的变换[9]。在确保图片质量的前提下,9/7提升小波变换获得时频特性更好的小波系数,所以这里选用双正交9/7提升小波。

9/7提升小波正变换也是分别通过小波行变换和小波列变换来完成小波变换的,小波行变换和小波列变换的公式相同都是分别通过四步提升步骤(预测1,更新1,预测2,更新2)和一个尺度变换来完成的。具体步骤如下:endprint

①分裂(split):For[-1≤n≤(N/2)+1] do: { s_0(2n±1)=x(2n±1); d_0(2n)=x(2n)};

②预测1(predict1):For[-1≤n≤(N/2)+1] do: d_1(2n)=d_0(2n)+[α(s_0(2n+1)+s_0(2n-1))];

③更新1(update1): For[0≤n≤(N/2)+1] do: s_1(2n-1)=s_0(2n-1)-[β(d_1(2n-2)+d_1(2n))];

④预测2(predict2): For[0≤n≤(N/2)] do: d_2(2n)=d_1(2n)-[γ(s_1(2n-1)+ s_1(2n+1))];

⑤更新2(update2): For[1≤n≤(N/2)] do: s_2(2n-1)=s_1(2n-1)-[δ(d_2(2n-2)+d_2(2n))];

⑥尺度变换: For[1≤n≤(N/2)] do:

L(2n-1)= ε s_2(2n-1);H(2n)=(1/ε) d_2(2n)

表中的相关系数α=-1.58613432, β=-0.05298011854,γ=0.8829110762,δ=0.443506822,ε=1.149604398,s_0和d_0表示原始像素值中的奇数部分与偶数部分。通过一级提升WT后得到了如图1中LL1、LH1、HL1、HH1频率高低不同的子带。图4所示,(a)为经典Lena图片,作为9/7提升小波变换的实验图片;(b)为Lena图片经过一级9/7提升小波变换而得到的分解图。

3.2 SPIHT编码算法

图像经WT后得到的的小波系数在各级子带中存在树状构架,如图5中所示。在这些小波树中,相同空间位置和相同方向上的小波系数有很强的相似性,HH3中的小方格里的的小波系数可以看成是HH2在相应位置小方格里的小波系数的父系。零树编码思想就是将量化后为0的小波系数的所有子孙小波系数都归为0,进而简化小波编码的过程。但是这种算法存在很大缺陷,因为并不

是父系小波系数为0的小波系数其子孙的小波系数都为0,仅仅通过零数编码可能会导致图像的失真比较严重。一种改进的方法是EWZ(嵌入零树编码)算法,它提出将每层小波变换设置一个阈值T(i),如果第i层的小波系数的绝对值大于该阈值,则认为这个小波系数的重要的,相反则认为该小波系数不重要。如果父系的小波系数为非重点小波系数,而且它的全部子孙小波系数都相应的被判为非重点小波系数,故此命名该父系小波系数是关于阈值T的零树根,进而将该父系小波系数的全部子孙小波系数不不列入小波编码的范围。

由于EWZ编码需要设置每层小波的阈值并且要搜索扫描每层小波系数绝对值小于阈值的所有后代,这样就导致了计算量很大,编码速度慢的后果。因此EWZ编码还需要进一步的改进,在目前所有改进的算法中,多级树集合分裂排序(Set Partitioning in Hierarchical Tree,简写SPIHT)算法是较为成功的一种[10]。

SPIHT算法的零树构架中则认定LLN没有子带。SPIHT算法中划分了两种零树,第一种零树有根系数构成,并且该根系数在给定位平面中它的全部子孙都为0;第二种零树与第一种零树相似,不同之处在于它排除了根系数的四个子带。SPIHT算法将这两种零树类型分别标记为类型A和B不重要集合,SPIHT算法还规定了三个有序表用来存放重要信息,分别是LSP(显著系数表)、LIP(不显著系数表)、LIS(不显著子集表)。三个表中的元素都采用(x,y)坐标来标记,C(x,y)表示(x,y)坐标处的小波系数值,H表示所有树根的集合。

具体算法的流程如下:

①初始化:设阈值T=2n,其中

n=log2(max|C(x,y)|)、LSP为空、LIP={(x,y)|(x,y)∈H}、LIS={(x,y)A|(x,y)∈H且都具有孩子};

②依次对LIP表和LIS表中元素进行排序扫描并编码。对LIP编码只要判断其中的每个元素是否为显著系数,若是则输出1及其符号码、将该系数从LIP表中剪切到LSP表的尾部,否则输出0;对LIS编码的流程比对LIP编码复杂,在判断表中元素属于类型A还是类型B之后还要对其子孙系数进行编码,具体见图6的流程结构图。

③当LIS集合中的最后一个编码完成后,对上一级的得到的LSP表进行精细扫描:对表中每项对应的小波系数进行二进制转换、将该二进制数的第N个重要的位输送到精细位流中。

④完成后将T除以2,重新进入第二步并进行下一级的编码,直到T为某一设定值为止。

4 DICOM图像压缩实现与分析

文中选用了一个DICOM文件Ankle.dcm作为实验文件进行说明。如图7所示,通过VC++语言,根据DICOM文件的数据元素中的标识符、数据类型、数据长度、数据值,来对DICOM文件进行读取,并将DICOM图像文件中的图像数据和文本数据分离出来。图7的左边为DICOM文件Ankle.dcm中分离出来的部分文本信息,图7的右边为DICOM文件Ankle.dcm中的分离出来的格式为.bmp的图像文件。

将分离出来的BMP图像进行双正交9/7提升小波变换,并将小波分解后的系数取整量化、SPIHT编码。表1是在同为三级小波变换,压缩比不同情况下,压缩后图像的PSNR(峰值信噪比)的值。图8为压缩比率为30:1时候的Ankle压缩图像。

图像客观评价的标准有很多种,比较常见的有MSE(Mean square error)、NMSE(Normalized mean squared error)、SNR(Signal Noise Ratio)、PSNR(Peak Signal Noise Ratio)。它们之间有一定的转换关系,这里采用PSNR这个参数作为对图像客观评价的一个标准。如表2中所示,随着压缩比率的增加图像的PSNR值也逐渐降低,事实上,人眼很难观察出PSNR超过30dB的解码图像与原图像的差异[11],由图8亦可观察出压缩比在30:1时仍能保证图像的清晰度。endprint

5 结 论

文中通过采用了双正交9/7提升小波变换得到较好时频特性的小波系数再结合更为先进的SPHIT算法对小波系数进行了编码进而完成了对从DICOM文件中分离出来的图像信息的压缩,并最终实现了DICOM图像的压缩工作。实验表明这种方法实现了在较高图像质量的条件下可以获得较大压缩比的图像文件,这也在一定程度上提高PACS系统中对图像数据储存和传输的效率。

参考文献

[1] 曹奕雯, 陶蔷. PACS关键技术及国内应用[J]. 医疗卫生装备, 2011,32(1):77-80.

[2] 梁存升, 冯骥. DICOM标准分析及其应用[J]. 中国医学装备, 2006,3(2):18-20.

[3] 赵越, 韩滢, 王之琼. DICOM技术在PACS系统中的应用综述[J]. 中国数字医学, 2009,4(2):57-60.

[4] BIDGOOD W D J, HORII S C,PRIOR F W, et al. Understanding and using DICOM, the data interchange standard for biomedical imaging.[J]. Journal of the American Medical Informatics Association : JAMIA, 1997,4(3):199-212.

[5] 李自胜, 肖晓萍, 龚伟. 基于.NET框架的DICOM协议设计与实现[J]. 计算机应用与软件, 2009,26(10):19-23.

[6] 王海松, 赵杰. 数字图像压缩技术的现状及前景分析[J]. 科技信息, 2010(3):53-54.

[7] 胡高军, 吴芝路, 高真真, 等. 自适应小波变换及其在JPEG 2000中的应用[J]. 光电子·;激光, 2006,17(9):1114-1118.

[8] HUI F,LANYING G,JINSHENG X. The Lifting Scheme Based on the Second Generation Wavelets[J]. Wuhan University Journal of Natural Sciences, 2006,11(3):503-506.

[9] CHEN T,LIN S,LIN Y, et al. JPEG2000 Still Image Coding Quality[J]. Journal of Digital Imaging, 2013,26(5):866-874.

[10]SAID A,PEARLMAN W A. A new, fast, and efficient image codec based on set partitioning in hierarchical trees[J]. IEEE Transactions on Circuits and Systems for Video Technology, 1996,6(3):243-250.

Dicom医学图像 篇4

DCMTK(DICOM Tool Kit)是一套针对DICOM标准,由德国offis公司提供的开源项目,并拥有相应的版权[2]。它是用ANSIC和C++混合编程,依靠它可以实现了医学图像的传输、存储和打印等DICOM标准的绝大部分功能,而且是以源代码的形式呈现,便于修改及扩展使用。笔者以DCMTK为工具来显示DICOM图像。

1 DICOM医学图像的文件格式

DICOM文件是DIOCM数据集的封装,包括DICOM文件元信息和描述DIOCM SOP类实例的数据集两部分。

DIOCM医学图像文件的扩展名是.dcm,可分为文件头(File Meta Information)和数据集(Data Set)两部分(见图1)[3]。

DICOM的文件头主要描述了文件的版本信息、存储媒本、传输语法等。它包括两个部分,第一部分是128个字节的同步码,第二部分主要用来存储元信息,存储元带有标签和长度。DICOM数据集由一系列的数据元素组成,每一个数据元素由唯一数据元素标签来表示,在数据集中数据元素按照标志增加的顺序进行排列。图像数据相存储在文件的最后。

2 VC++和DCMTK读取显示DICOM文件

2.1 读取DICOM文件中的像素数据及显示

笔者以VC++6.0为平台,利用DCMTK开发包提供的DicomImage类实现对DICOM文件的读取显示。主要用到DicomImage类中的两个函数,即DicomImage()和createWindowsDIB()。其中DicomImage()用来打开一个DICOM文件并获取其图像的像素数据,createWindowsDIB()用来将得到的像素数据创建标准的DIB位图,利用定义的Dib类来调用位图显示函数把图像显示在显示器上[4]。

1)DICOM文件的打开。

2)在将要创建的位图文件的位图文件头中保存已打开图像的相关信息。

3)使用createWindowsDIB()函数把所打开的DICOM图像的数据区保存在一个不定长的指针类型中,并拷贝到将要创建的位图的数据区。

4)调用位图类的显示函数在DICOM图像中默认的窗宽窗位位置处显示已经创建好的位图,见图2(假设此处显示的位图的512*512)。

2.2 改进的窗宽窗位显示方法

医学图像像素灰阶通常不会低于4 096级(像素存储位为12 Bit),而普通显示器技术有限,只能提供256级灰度(像素存储位为8 Bit),由于医学图像中各种组积有相对稳定的灰度范围,并且医生只需把病变区域附近与正常组织清晰显示即可,故用到调节窗宽窗位技术,调节窗宽窗位是医学检查中用以观察不同密度的组织结构或病变的一种显示技术[5]。窗宽表示将要显示的图像的灰度值的取值直径,即窗的宽度;窗位表示取值直径的中心点,即窗的中心位置。根据各种组织结构或病变器官灰度值的不同,选择一定的窗宽窗位,以获得该组织或病变的最佳显示。调窗处理在数学表达上就是原始图像灰度值与将要显示的灰度之间和映射,映射如下

其中,V是原图像中的像素数据;G(V)为转换后的像素数据,gm为显示器允许灰度最大值;W为窗宽;C为窗位。

虽然DicomImage类提供了createWindowsDIB()函数可以将DICOM数据转换为可以显示的8位的灰度图像数据,但是在调窗的过程中每一步调节,都需要调用setWindow(const double center const double width)来重新转换所要显示的图像,故所显示出的位图都会发生变化,需将构建位图的整个过程独立出来,写成独立的函数RefreshDraw(),其借助dib位图类,可以在内存中完成整个位图信息的更新,大大提高了其显示速度,为调窗提供了良好的交互性。其主要定义如下

笔者采用的是两个滑动条来分别完成窗宽窗位的调整,为滑动条添加NM_RELEASEDCAPTURE消息响应,主要函数定义如下

经过调窗处理前后得到不同窗值下的腹腔CT断层图像,见图3。

3 结束语

笔者基于DICOM标准,以VC++6.0为平台,借助开源的工具包DCMTK及Dib类,实现了医学图像快速调窗显示,显示过程平滑顺畅。文章中打开CIDOM文件,读取转换为BMP位图,及调窗显示的一系列位图,均在内存中直接完成,故提高了显示速度及交互性。

该方法可以应用到PACS系统的医生工作站及其他类似场合。

摘要:介绍了DICOM医学图像的文件格式,阐述了调窗处理快速显示的方法,利用VC++和DCMTK并借助Dib类实现了医学图像快速调窗显示功能。

关键词:DICOM,DCMTK,BMP,医学图像,窗宽/窗位

参考文献

[1]Medical Imaging&Technology Alliance,The DICOM stan-dard[EB/OL].[2010-01-08].http://medical.nema.org/.

[2]dicom.offis.de,DCMTK-3.5.4-win32-help Document,[EB/OL].[2010-03-30].http://dicom.offis.de/dcmtk.php.en.

[3]贾克斌.数字医学图像处理、存档及传输技术[M].北京:科学出版社,2006:26-36.

[4]谢凤英,赵丹培.Visual C++数字图像处理[M].北京:电子工业出版社,2008:18-46.

Dicom医学图像 篇5

MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。医学图像可视化在实际操作中可以分为原始图像获取与预处理、数据分析、综合处理和交互几个步骤。利用MATLAB可以很方便地对DICOM图像进行信息提取与分析。

1 DICOM标准

在医学影像信息学的发展和图片存档和通讯系统(PACS)的研究过程中,由于医疗设备生产厂商的不同,导致与各种设备有关的医学图像存储格式、传输方式千差万别,使得医学影像及其相关信息在不同系统、不同应用之间的交换受到严重阻碍。为此,美国放射学会(ACR)和全美电子厂商联合会(NEMA)认识到急需建立一种标准,以规范医学影像及其相关信息的交换,DICOM标准就是在这样的背景下产生的。

现在DICOM已经广泛地被各医院所采用。两个能接受DICOM格式的医疗仪器间,可借用DICOM格式,来接收与交换影像及病人资料。DICOM可以整合不同厂商的医疗影像仪器、服务器、工作站、打印机和网络设备于PACS中。DICOM标准中涵盖了医学数字图像的采集、归档、通信、显示及查询等几乎所有信息交换的协议。它以开放互联的架构和面向对象的方法定义了一套包含各种类型的医学诊断图像及其相关的分析、报告等信息的对象集;定义了用于信息传递、交换的服务类与命令集,以及消息的标准响应。

DICOM标准的推出与实现,大大简化了医学影像信息交换程序,推动了远程放射学系统、PACS的研究与发展,并且由于DICOM的开放性与互联性,使之与其他医学应用系统(HIS、RIS等)的集成成为可能[1,2,3]。

2 DICOM图像的操作

从文件格式上看,用于保存医学数据的DICOM格式复杂,包含的信息量大,除图像信息外,还有很多附加信息,如患者病例档案等。DICOM的图像基本都是与医学设备相关的,如MRI、CT等。医学图像的特点是分辨率低、特征不清晰等,对这类图像做分割和特征提取难度较大。DICOM格式的压缩算法种类很多,还可以保存动画图像,而BMP格式只能保存一帧静止图像,所以处理DICOM比BMP要繁琐。

2.1 读DICOM图像数据

利用MATLAB调用函数“X=read_dicom(filename)”,从“filename”所指定的文件中读取图像数据,通过X返回(如果是灰度图像,X是一个二维矩阵;如果是真彩色,则是一个三维矩阵)。同时,该函数还会将读取的图像用一个新的窗口显示出来。其中,“filename”是一个字符串,也就是你要读取的DICOM文件名,这个DICOM文件必须要放在MATLAB的工作日录下,通常情况下是在MATLAB的work/子目录下。如果设备的MATLAB工作目录与这里的不同,就需要把源代码文件和要转换的图像文件都放到工作目录下再运行。

2.2 写DICOM图像数据

MATLAB中“A=write_dicom(in_filename,out_filename)”函数的作用是把“in filename”所指定的通用图像文件格式(BMP、JPEG等)转换为DICOM文件并输出。如将test1.jpg转换为DICOM文件并保存为test1.dcm文件,只需要在命令窗口输入A=write_dicom('test1.jpg','test1.dcm')就可实现。

转换后得到的test1.dcm文件可以用DICOM专用程序打开,比如CVIEW.exe。另外需要注意的是,文件名必须要指定后缀,如果是JPEC格式,则文件名必须以jpg结尾。

2.3 查询DICOM图像信息

通过分析DICOM文件的构成,解析DICOM文件头的组成和内容,实现对DICOM文件头的信息读取;利用所获得的信息,可进一步读取DICOM文件中的数据集存储内容。这是读取DICOM文件的基本解析过程[4]。

在MATLAB中调用“info=dicominfo(filename)”函数,可以查询“filename”所指定DICOM图像的文件头信息,如现有CT机中的DICOM文件'IM-0001-0001.dcm'。要查询某文件头信息,只需要在命令窗口输入“X=dicominfo('IM-0001-0001.dcm')”,运行结果如下:

通过文件头可以查询到DICOM文件的相关信息,如文件名、生成日期、类型、大小、规格等;可以查询到生成DICOM文件的设备相关信息,如设备名称、生产厂商、序列号等;可以查询到病人的相关信息,如病人的姓名、年龄、ID号、病人的位置、扫描部位、扫描方式等;可以查询到扫描时的参数设置,如kVP、mAs、旋转方向、曝光时间、卷积核、滤波器的类型、扫描层面的位置等。

2.4 特征区域选取

有时候需要在DICOM图像上选取特征区域,其代码是:[xv,yv]=ginput(n);可以在图像上面选取n个点,将每个点的X坐标保存到xv中,将Y坐标保存到yv中。

有时候需要判断选取的点是否在特征区域内,这个代码是:[in,on]=inpolygon(x,y,xv,yv);返回两个和X、Y同样大小的矩阵,矩阵里的元素是1和0。

当选取的点(x(p,q),y(p,q))在特征区域内,in (p,q)=1,否则in(p,q)=0;当选取的点(x(p,q),y(p,q))在特征区域的边界上,on (p,q)=1,否则on(p,q)=0。

3 结术语

本文简单描述了DICOM标准,并介绍了在MATLAB软件中对DICOM文件进行读写和信息获取的方法。准确读写和分析DICOM文件对辅助医学影像诊断和满足医师的需求具有重要意义,同时也是开发后续图像处理软件的重要基础。

摘要:DICOM图像在携带本身信息的同时,还携带了大量的医疗相关信息。本文简单描述了DICOM标准,并介绍了利用MATLAB软件对DICOM图像进行读写和信息提取的方法。

关键词:PACS,DICOM,MATLAB软件,医学图像

参考文献

[1]李群华,郑宇,杨黠,等.DICOM医学图像格式转换研究[J].四川理工学院学报,2011,(6):674-676.

[2]王志康,娄海芳,孙建忠,等.“DICOM电子胶片”在医院影像信息化中的应用[J].中国医疗设备,2012,27(2):41-43.

[3]张翔,陈胜勇.利用VTK的DICOM图像的显示与信息读取[J].电脑知识与技术,2011,(10):137-138.

[4]尤超.DICOM文件头信息读取及解析[J].微型电脑应用,2012,(9):43-45.

[5]李群华,郑宇,杨黠,等.DICOM医学图像格式转换研究[J].四川理工学院学报,2011,(6):674-676.

[6]徐彦栋.基于DICOM标准的按需打印系统设计和实现[D].上海:上海交通大学,2011.

Dicom医学图像 篇6

医学数字图像与通信标准DICOM, 是医学信息学领域中有关医学图像的国际标准。DICOM图像则是CT获得的图像。在这种格式的图像文件中, 保存的是图像信息的基础数据。CT技术的快速发展与普遍使用, 使得对医学图像数据的处理成为了日益重要的应用领域。由于DICOM图像格式的特殊性, 使得经典的数字图像处理技术无法直接应用于DICOM图像的处理, 所以, 对DICOM图像的快速分析与格式转换就显得十分必要, 也是医学图像三维重建的基础。本文介绍了一种利用改进的聚类算法分析处理DICOM图像方法, 解决了以下两个问题:第一, DICOM医学图像信息的正确读取;第二, 利用聚类算法实现了图像有用区域的分割与提取。

1DICOM图像

1.1DICOM标准

20 世纪70年代以来, CT和其它数字成像技术飞速发展, 很多厂商都研制了具有计算机的成像设备, 制定了各自不同的图像格式。随着计算机网络的普及及其在医学上的广泛应用, 在不同厂商生产的设备之间交换图像和相关信息的需求日趋迫切, 而缺乏统一的标准成为图像交换的主要障碍。ACR和NEMA在1983 年成立了一个联合委员会发起制定一个公共的标准。1985年, 该委员会发表了ACR-NEMA 1.0标准 (No.300-1985) 。1986年10月和1988年1月又公布了该标准的两个修订版。1988年公布了ACR-NEMA 2.0标准 (No.300-1988) 。在1996年, ACR-NEMA委员会发表了一套新的规范, 正式命名DICOM 3.0。1998年又推出了修订版本, 目前仍然在不断的发展中。DICOM涵盖了数字图象信息构成和通信两个领域, 内容庞大。

1.2DICOM图像文件格式

DICOM图像文件一般由一个DICOM文件头和一个DICOM数据集合组成, 如图1所示。

DICOM文件头包含了标识数据集合的相关信息。文件头的最开始是文件前言, 它由128组00H字节组成, 接下来是 DICOM前缀, 它是一个长度为4字节的字符串“DICOM”, 可以根据该值来判断一个文件是不是 DICOM文件。文件头中还包括其它一些非常有用的信息, 如文件的传输格式、生成该文件的应用程序等。DICOM数据集合由DICOM数据元素按照一定的顺序排列组成, 它按照 DICOM标准的 PS 3.5 部分来编码, 不仅包括医学图像, 还包括许多和医学图像有关的信息, 如病人姓名、图像大小等, 其格式如图2所示。数据元素是DICOM文件内容的最基本单元, 它由四个部分组成:标签、数据描述VR (Value Representation) 、数据长度和数据域, 其格式如图3所示。

标签是一个4字节的无符号整数。DICOM所有的数据元素都可以用标签来唯一表示。标签被分为两个部分:组号 (高位2字节) 和元素号 (低位2字节) 。在数据字典中所有的元素都是用 (组号, 元素号) 这种方式来表示的。VR指明了该数据元素中的数据是哪种类型的。在DICOM文件中, 它是一个长度为2字节的字符串。例如, 如果一个数据元素的VR为“DA”, 则表示该数据元素中存储的数据为日期型数据;如果一个数据元素的VR为“FL”则表示该数据元素中存储的数据为浮点型数据。在数据元素中, VR是可选的, 它取决于协商的传输数据格式。DICOM中规定显式 (Explicit VR) 和隐式 (Inexplicit VR) 两种传输格式, 其中在显式传输时, VR必须存在;在隐式传输时, VR省略。数据长度指明该数据元素的数据域中数据的长度 (字节数) 。数据域中包含了该数据元素的数值。

2聚类算法

2.1算法分析

模糊均值聚类算法是常用的图像聚类分析方法。它依据最小二乘原理, 采用迭代法优化目标函数来获得对数据的划分。

本文采用的模糊C均值聚类算法 (FCM) 就是一种模糊均值聚类算法。该算法用隶属度来确定每个数据点属于某个聚类的程度。作为硬C均值聚类 (HCM) 方法的一种改进, 它通过最优化一个模糊目标函数实现聚类, 它不像K均值聚类那样认为每个点只能属于某一类, 而是赋予每个点一个对各类的类属度, 适合处理事物内在的不确定性。FCM算法对初始参数敏感, 有时需要人工干预参数的初始化以接近全局最优解, 以提高分割速度。

2.2算法思路

首先将由n个维数为p的样本组成的数据集X={x1, x2, …, xn}∈Rn×p分为C类。若X中任意样本x对k类的隶属度为μi, k, 则分类结果可用一个模糊隶属度矩阵U={μi, k}∈Rn×c表示, 并满足以下条件:

(1) μi, k∈[0, 1] ∀i, k

(2) undefined

(3) undefined

模糊C均值聚类算法就是通过最小化隶属度矩阵U和聚类中心集合V的目标函数Jm (U, V) 来实现的, 即:undefined (1)

式 (1) 中的U={μi, k}为满足上述三个条件的隶属度矩阵。V={v1, v2, …, vc}∈Rc×p为C个聚类中心的集合。m∈[1, ∞) 为加权指数。当m=1时, 模糊C-均值聚类就退化为经典的C-均值聚类。研究表明, m的最佳选择范围为[1.5, 2.5], 通常m=2是比较理想的取值。将第i个样本Χi到第K类中心Vk的距离定义为:di, k=‖xi-xk‖A, ‖‖A表示A范数。

2.3算法实现

可按下列步骤实现该模糊聚类算法:

(1) 选定ε≥0, 设定初始聚类中心集合V (0) ={v1, v2, …, vc}, 并置迭代次数l=1;

(2) 隶属度矩阵U (L) 的元素计算式为:

undefined (2)

若:dundefined=0

则:μundefined=1 μundefined=0 k≠l;

(3) 计算新的聚类中心集合v (l+1) , 其元素为:

undefined; (3)

(4) 若‖v (l+1) -v (l) ‖≤ε或者l≤L, 则停止;否则, l=l+1转步骤 (2) 。

3DICOM图像的计算机处理

3.1DICOM图像处理原理

DICOM图像数据的读取, 需要通过识别DICOM头文件中的几个重要的标签来实现。DICOM文件中图像的像素数据是从第一行到最后一行按照从左往右的顺序存放的。通过图像的宽度和长度信息可以统计像素点的个数, 定义指针数组存放像素信息。常用的重要标签如下:

(1) (0028, 0002) 标签存储了要显示的像素的位数。如该点为24位, 则该标签值为3;如该点为8位, 则标签值为1。

(2) (0028, 0002) 图像帧数。

(3) (0028, 0010) 图像行数。

(4) (0028, 0011) 图像列数。

(5) (7FE0, 0010) 像素数据。

3.2DICOM图像处理算法设计

利用VC++实现的DICOM图像处理算法描述为:

1) DICOM图像识别与关键标签数据读取

2) DICOM图像分割

(1) 选取多个样品作为聚类中心

选取图像中的样品作为初始聚类中心, 将选取好的聚类中心存放在数组中, 并求出聚类中心的特征值, 也就是像素值。

(2) 求各个样品到所有聚类中心的距离

计算每个样品到聚类中心的距离, 调用定义好的函数, 找出最小的距离把样品归入最近的聚类中心。

(3) 修正各聚类中心的值

因为有新的样品归入到了聚类中心中, 所以要重新计算聚类中心的值, 修改中心点的值为本类所有样品的均值。

(4) 计算各聚类域中诸样品到聚类中心的平均距离

计算各个聚类域与聚类中心的平均距离, 初始化全部样品的平均距离, 然后计算各聚类域中样品的和, 除以各聚类域中样品的值, 就得到了每个样品到聚类中心的平均距离。

float temp=0.0;

for (j=0;j

{for (i=0;i

temp+=CalDistancefZ (SAArray[j][i], ZArray[j]) ;

DjAv[j]=temp/Nj[j];

}

(5) 计算所有聚类域样品平均距离的总平均距离

计算总平均距离是为了更精确地将样品归入正确的聚类域中, 这样可以更好地、更精确地将图像的有用信息都合并到同一个聚类中。

DAv=0;

Nreal;

for (j=0;j

DAv+=Nj[j]*DjAv[j];

DAv/=Nreal;

3) 图像分割结果的存储

DICOM图像遵循DICOM标准, 而我们常用的图像软件不能直接打开DICOM图像。为了后续图像处理的方便, 我们把DICOM图像转换为BMP格式进行存储。实现转换的VC++代码如下:

本算法处理前后图像的对比如图4所示。

图4 (a) 是人体腿骨CT的一副原始DICOM图像, 该图像中间密实的部分是骨骼组织, 而周围包裹的是骨骼周围的结缔等组织。若是要对骨骼部分进行三维重建, 就需要分割出骨骼区域。而从图4 (a) 可以看出, 未经处理的图像的骨骼边界不清晰。图4 (b) 是经算法处理过后得到的结果, 可以看到经处理后的图像骨骼边界清晰。实验证明经本文算法处理后的图像被转换成BMP图像后, 较好地保留了图像有用信息, 而且可以在通用的系统平台上处理。这样的处理手段一方面便于医生在通用系统平台上的调阅, 另一方面也为图像的三维重建提供了客观有效而且实用的基础数据, 是对DICOM图像处理结果保存形式的一个有效的尝试。

4结束语

本文以DICOM标准图像为研究对象, 通过对DICOM文件数据结构组成的分析, 以VC++ 6.0为开发平台, 运用聚类算法对DICOM图像进行了图像分割, 并实现了DICOM图像向BMP格式的转换。

对多个样本数据测试后的结果表明, 本系统采用的医学图像处理方法, 能提取出有用信息区域, 图像处理效果不错, 有实际应用价值。由于DICOM图像格式的特殊性使得该类图像的读取和处理需要在特定的平台上进行, 所以, 本文提出的DICOM向BMP格式的转换有效地解决了这个问题, 使得经分割处理后的图像可以直接在通用的操作系统平台上被处理, 为图像的三维重建提供了客观有效的基础数据, 能作为医生客观诊断的辅助依据。

由于模糊C均值 (FCM) 聚类算法受初始化影响较大, 在迭代时容易陷入局部极小, 所以基于聚类的改进算法值得继续研究下去。

参考文献

[1]The DICOMStandard.http://medical.nema.org/dicom/2006.

[2]Davids E.Object detection in3D medical images[J].J.Phys.A, 1997:155-163.

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

[4]徐潘辉, 林峰.DICOM医学数字图像格式BMP通用图像格式转换软件的设计与实现[J].医疗设备信息, 2006:14-19.

Dicom医学图像 篇7

DICOM(Digital Imaging and Communications in Medicine,简称DICOM)是医学图像传输和通信的国际标准,它的主要目的是规范不同厂家,不同医疗设备产生的医学图像之间的互相传输,互相通信的问题。随着标准的普及,现代医疗仪器最终产生的医学图像的格式,最终都符合DICOM标准的规定,给图像的传输,接收和显示处理带来了极大的方便。然而由于操作系统平台的多样性,最终在显示和处理DICOM医学图像时,采用不同平台下的软件,即增加了成本,又带来麻烦。本文采用与操作系统平台无关的Java语言处理DICOM文件,进行图像像素值的提取和转化,然后进行显示和处理,最后可以使用常见的图像格式进行存储。

2 DICOM文件格式解析

2.1 数据元素和数据集

DICOM标准的第3部分详细定义了与现实世界医疗活动中对应的各种信息对象实体。信息对象是由各种属性模块构成的,而这些模块的基本构成单位是数据元素,数据元素的结构如图1所示。

一个数据元素是由数据元素标签(tag)唯一确定的,数据集的数据元素应该按照标签号的大小有序排列,并且每个数据元素最多只能出现一次。数据元素VR(Value Representation,数据值类型表述)描述了数据元素所代表的数据类型。数据值长度VL(Value Length)说明了后面数据值体VR(Value Field)实际数据长度。根据传输语法的不同,数据元素一共有3种不同的结构,2种显式结构和1种隐式数据结构。当使用显式数据结构时,数据元素的结构由4个连续的字段构成:数据元素的TAG、VR、VL和值域。当数据元素采用隐式VR结构时,其结构由3个连续的字段构成:TAG、VL和值域。如果数据元素的值由VL来确定时,大小等于值域的字节数,否则,一个序列分割符项目被用来标记值域段的结束。另外在通信时,还有可能交换不包括在标准中的私有数据元素,私有数据元素与标准数据元素有相同的结构。但私有数据元素中采用的标签的组号为奇数。

数据集是由逻辑上相关的数据元素组成的,按照标签号的大小顺排列。有的数据集可以嵌套,开成递归的结构,以表示更复杂的数据结构。此类数据元素的数据类型为SQ,数据值域又包含数据元素,可以形成多层嵌套数据元结构。SQ数据元素通常用于编码多帧图像。

2.2 DICOM文件的组织结构

DICOM文件由文件头和数据集组成,数据集位于DI-COM文件头之后。

2.2.1 文件头信息

文件头由128个预定义引导字节加4字节DICOM前缀及元信息构成,元信息表示已封装的数据集的标识信息,数据集中的内容则与元信息所表述的SOP类一致。四字节前缀为特征字串DICM,这4个字节没有标识及长度信息。后面的元信息由组号为2的数据元素构成。

2.2.2 数据集

在DICOM文件存储应用中,每个文件都应包含描述唯一一个SOP实例的数据集。这个SOP实例属于某个SOP类以及对应的IOD,如一个研究、序列或存储等。正如特定的IOD可以被定义为多帧一样,一个文件可能包含一个以上的影像帧,由SOP实例中具体内容确定。用于数据集中的编码必须是由DICOM文件元信息中传输语法UID标识确定的那一种。由于DICOM数据集内并不包含它的长度信息。DICOM文件服务提供的文件结束提示是数据集结束的唯一标志。

2.2.3 图像数据元素及其相关元素

2.2.3. 1 图像编码格式

对于图像的描述,DICOM采用的是位图的方式,即逐点表示出其位置上的颜色、亮度等信息。对单色图像只有亮度信息,称灰度级,而对彩色图像则存在不同的颜色表示方法。一般采用的是RGB三原色的表示,即一个点用红、绿、蓝3个分量的值表示。DICOM允许用3个矩阵(称位平面)分别表示3个分量,也允许仅用1个矩阵表示整个图像,在这种情况下,矩阵中每一点是由3个值组成的。对于1个象素值,DICOM称为采样值(Sample Value)。采样值的描述方法用3个数据元素给出,分配位数(Bits Allocated)指出了该采样值存储的二进制位数。存储位数(Bits Stored)指实际占用的位数。最高位位置(High Bit)指明该值最高位在分配的存储单元中的位置。在实际存取图像数据的时候,还必须由传输语法中的Big-Endian或Little-Endian属性来决定象素高低字节的实际存储单元地址顺序。DICOM对多帧图像的支持,是通过将多帧图像封装在一个象素数据元素(Pixel Data)中实现的。由帧数属性指出。有关图像的其它属性,可以参考标准的具体内容。常用到的与图像有关的数据元素如表1所示。

2.2.3. 2 压缩方法

原始医学图像占用存储量大,在传输与存储过程中效率较低,可以使用压缩的方法来减少图像中的冗余信息,在不损失图像信息或少损失的情况下,减少图像存储所需要的字节数。压缩方法分为无损压缩和有损压缩2种方法。无损压缩方法可以将原数据原封不动地恢复到原始状态,而有损压缩则是不可逆的过程,不能恢复到原来的情况。由于涉及到医疗责任和法律的原因,对医学图像的有损压缩采取了相当谨慎的态度。反映在DICOM标准中,主要推荐使用无损压缩的方法,表示值为OW或OB。对未压缩象素数据,通常按照从上到下、从左到右的顺序,作为连续的位流进行编码和存储,本方中使用的DICOM文件中像素数据也是没有经过压缩的。

2.2.3. 3 灰度显示

DICOM文件像素值的灰度表示范围非常大,与每像素字节的分配位数有关。而普通显示器的显示范围有限,常用的是256色灰阶,因此,在取出像素的值后要进行转换,映射到普通显示器可以显示的范围之内。下面以像素值取值范围为(Min,Max),映射到(0,256)的灰阶范围为例来说明本文采用的变换方法:

变换公式为:

Value为转换后像素数值,p Value为实际像素值。

3 DICOM文件的显示

3.1 像素数据的提取

DICOM文件中像素数据存放在标签号为(7FE0,0010)数据元素的值域中,首先找到文件中标签所在位置,然后将像素数据值读入内存中字节数组中,以便做进一步处理。自己编程进行处理比较繁琐,可以利用一些工具包,如DCM TK和ez Dicom等。本文采用开源的JAVA DCMCH2.10开发工具包,这个工具包是对DICOM标准的一个完整实现,方便易用。缺点是文档不详细,需要自己研究源代码。提取像素值的代码如下:

3.2 对提取到的像素数据进行预处理

将像素提取到字节数组后,根据是大小端子顺序,进行字节的交换处理,下面的代码是处理小端子顺序的情况:

进行字节顺序处理以后,需要进行灰度范围的映射转换,根据上面的公式,可以从文件中提取出最大和最小的实际像素值,然后代入。本文采用的是更为普遍的一种方法,直接从像素数据中得到最大值与最小值,然后代入并计算。

3.3 显示和存储

像素值进行提取和转换后,得到符合要求的字节数组,然后用其构造图像,在Java中只需要一条语句,将其转化成Image类即可:

Image bi=Toolkit.get Default Toolkit().create Image(new Memory Image Source(rows,columns,new Index Color Model(8,256,r,g,b),dest Pixels,0,columns))

Image类是java中标准的图像类,,但Image类是不可以直接处理和存储,因此要转化为Buffered Image,代码如下:

Buffered Image bii=new Buffered Image(rows,columns,Buffered Image.TYPE_INT_RGB)

然后利用Buffered Image来进行与各种常见图像格式的转化:

Image IO.write(bii,“SUFFIX”,file);

SUFFIX常见的图像格式,如“bmp”,“jpeg”等,File保存在磁盘上的文件名称。

4 总结

DICOM标准中将现实世界中活动实体定义为信息对象,文件只不过是信息对象在存储介质上的持久化。Java是完全用面向对象的思想来设计的一门语言,在处理DICOM文件方面有先天的优势。现在国际上有不少DICOM工具包是用Java来实现,大部分是开源项目,任何人都可以对源码进行研究并做出自己的贡献。利用这些工具包来进行开发,不但可以加深对DICOM标准的理解,还可以根据需要开发出适合自己使用的软件。从本文可以看出,利用开源工具包和Java将DICOM文件中的像素提取出来并转为其它常见的图像格式简单且具有跨平台的优势,在此基础进一步开发医疗图像处理软件就很方便了。

参考文献

[1]林济南.在医学图像DICOM格式中实现JPEG压缩算法[J].北京生物医学工程,2004,23(3):209-211.

[2]Jian-Hong Hu,Yao Wang,Cahill,P.T.Multispectral Code Excited Linear Prediction Coding and Its Application in Magnetic Resonance Images[J].IEEE Trans.Image Processing,1997,6(11):1555-1566.

[3]Midtvik,M.and I.Hovig,Reversible Compression of MR Images[J].IEEE Trans.Med.Imag,1999,18(9):795-800.

Dicom医学图像 篇8

随着国内医院信息化应用水平的不断提高,以电子病历为核心的临床信息系统正在得到越来越广泛的关注和应用。专用的医学编辑器技术成为了电子病历系统的重点和难点,也是电子病历系统的核心技术;同时已经成熟的RIS/PACS、超声图文系统(US-PACS)等老旧系统的升级换代也遇到医学编辑器版本更新升级这个难题,医学编辑器系统的功能强大与否直接关系到涉及医学报告编辑的医学信息系统应用的成败[1]。之所以需要开发专用医学编辑器,这主要是由医学信息文档跨机构共享这个大趋势[2]所决定的。目前国家已经投入大量的人力物力开展XDS(跨机构文档共享),EHR(个人电子健康档案)[3]的研究与实施,医疗信息系统的普及、推广和标准化将为个人保健、医疗诊疗、科研统计、社会保障、决策支持等提供重要的信息来源[4,5],推动不同地区医疗资源协同共享,节省医疗成本,可以有效缓解目前看病难、看病贵等问题。所有的医学文档最初的来源都是通过医学编辑器得到的,那么要实现这些应用,则必然要求医学编辑器具备一些特定功能,如病历数据的结构化存储、医生的可自由录入和痕迹保留等等,以及要求采用符合HL7医疗信息共享标准的XML技术[6]。DICOM医学影像也是医学报告的重要内容,一般的文字图片编辑器是不能满足电子病历系统和PACS系统的这些核心需求。本文设计及实现一套基于XML技术的专用医学编辑器,负责对报告内容进行编辑,同时可以实现对报告中嵌入的DICOM医学影像进行解码,直接在医学报告中对医学影像的显示效果进行调整,从而生成包含影像信息的结构化医学报告文档。

1 医学编辑器的设计原理

1.1 医学编辑器的系统架构

本文所设计的医学编辑器系统分为两层(系统架构图如图1所示):一层称为内核层,以C++语言开发,负责文字、图像等对象的排版编辑功能;另一层称为业务层,以Delphi语言开发,负责提供外部接口并且处理电子病历和PACS系统相关业务的编辑功能。

内核层由以下几个模块组成:(内核层架构图如图2所示)。

(1)基础工具类模块,包括扩展的字符串的封装类、字符集编码转换类、XML类库、自定义的模板库等。

(2)图像绘制类模块,负责对图片的绘制,对文本的绘制,对线条的绘制等。

(3)文档存储类模块,负责将文档数据存储在特定的数据结构中。

(4)文档排版类和显示类模块,排版类负责对文档数据进行排版,生成显示对象;显示类负责将文档数据绘制到界面中。

(5)事件类模块,处理windows窗体消息,实现事件响应机制。

(6)文档导入导出类模块,实现文档的打开、保存、复制、粘贴等功能,负责将外部数据导入到文档的存储模块中,或者将文档存储模块数据导出到外面。

在内核层中,文档导入导出模块将外面数据导入到文档存储模块,文档存储模块数据的改变导致文档排版类重新排版,文档排版模块生成文档显示对象,文档显示对象将文档内容绘制到窗体界面,窗体界面将windows消息映射称事件来驱动文档存储模块修改文档存储对象数据的修改。

业务层由以下几个部分组成:

(1)内核层接口:实现与内核层的接口。

(2)窗体容器:为内核层提供内核窗体容器,并实现各种窗体、对话框等。

(3)数据库访问:实现数据库的访问机制。

(4)业务逻辑:实现编辑器中电子病历相关的业务逻辑。

(5)外部接口:为电子病历系统、PACS系统提供编辑器外部接口。

电子病历系统和PACS系统通过编辑器业务层的外部接口实现与编辑器的交互,编辑器业务层通过内核层接口实现与内核层的交换,编辑器业务层通过数据访问模块实现对数据库的访问。

外部接口为外部电子病历系统和PACS系统提供文字影像报告编辑各种功能,这些功能由业务逻辑模块来实现,业务逻辑模块在实现这些功能时,需要通过窗体模块实现对窗体的控制,并通过数据访问模块实现对数据库的访问,并通过内核层接口实现对编辑器内核的控制。

1.2 主要功能实现原理

文档结构化是医学编辑器的基础,同时也是实现病历编辑功能中数据元、复合数据元、数据组、病历连续加载等功能的基础。为了保证文档结构化的功能实现,对于其他格式(如RTF、HTML、TXT、DOC等)的文档在编辑器中导入、导出和存储,均采用XML格式完成。

编辑器读取XML文件后,首先通过XML文档解析器对文件进行解析,形成一个文档的数据存储对象。存储对象在横向上表现为双向链表的数据结构(如图4所示),在纵向上表现为树形结构。然后编辑器通过对文档储存对象的分析,生成排版对象。排版对象是存储对象的观察者,当存储对象发生变化时,会通知排版对象,排版对象根据存储对象的变化做出相应的响应,创建或修改的显示对象。排版对象通过对后续文档数据结构的分析,生成文档显示对象。显示对象采用的是composite模式,它依次递归的显示它的子对象,将需要显示的内容按照一定的排版模式绘制到界面中,同时实现与用户的交互功能。

2 编辑器中嵌入DICOM医学影像解码功能的原理

2.1 DICOM医学影像的解码原理

DICOM标准是被各界广泛接受与使用的数字医学影像通信标准。基于DICOM标准构建的文件是一个关于信息体实例的数据集,包括了患者、检查、序列、影像等四层信息。DICOM文件是由文件头和数据集组成。文件头由Preamble和Prefix构成,其中Preamble的长度为128字节,通常设为“0”,Prefix为长度为4字节字符串“DICM”。病患的影像信息和其他的医学信息都封装在由大量数据元素组成的数据集中。每个数据元素又是由标签、值描述(类型)、值长、值域四部分组成[7]。

为了提取DICOM医学影像信息,首先要提取数据集中标签为(0002,0010)表示传输句法的数据元素。该数据元素中提供了一个UID值(如1.2.840.10008.1.2等),该值说明了该DICOM文件中数据集所采用的编码方式和图像数据的压缩方式。根据文件的编码方式,对照DICOM标准说明,采用相应的解码和解压缩方法,提取图像数据标签的数据元素的值域,获取 DICOM文件中完整的影像信息。

2.2 调整窗宽窗位原理

DICOM医学影像中的像素数据实际上是由设备成像时产生的原始数据,一般为CT值。CT值,即表示X射线穿过组织被吸收后的衰减值。以一副12位的DICOM影像为例,其像素的范围为4 096,但是人眼能识别的灰度级不超过256。如果直接将DICOM医学图像直接以256级灰度图显示的话,将无法看到DICOM图像中的人体组织间的细节信息,无法满足医学诊断的要求(如图5所示)。所以在处理DICOM影像时,必须要调整窗位窗宽,进而达到分步动态地显示影像中完整的医学信息的目的。

(注:图5中图像大小与人体实际尺寸的标尺约 为:1: 5.47)

窗位(window level),即图像显示过程中选定图像CT值的中心位置。在诊断显示过程中,针对人体不同的组织、不同的器官,窗位的值选择不同,且其值的选择较为固定,如骨窗位、肝窗位等等。窗宽(window width),即图像中选定显示的CT值区间。设选定的最大CT值为MAXct,选定最小CT值为MINct,对于CT值 > MAXct 的像素点一律显示为黑色(或白色),对于CT值 < MINct 的像素点一律显示为白色(或黑色)。对于处于窗宽范围内的CT值,我们通过线性或非线性的变换将该窗宽范围内的CT值映射到256级的灰度空间。对于非线性的情况,DICOM文件中标签为(0028,3010)的数据元素会提供一个LUT表映射这种转换关系,我们只需提取并对照这个表的信息进行像素值转换即可;对于线性变换,即标签为(0028,3010)的数据元素值为0时(或DICOM文件没有这个数据元素),按如下公式计算在256级灰度图中每个像素点的显示值:(式中wl表示窗位,wd表示窗宽)。

ShowValue={0,WhileΡixValue(wl-wd/2);(ΡixValue-(wl-wd/2))×225wd,While(wl-wd/2)ΡixValue<(wl+wd/2);225,WhileΡixValue(wl+wd/w)

编辑器在处理DICOM影像时,首先在内存中建立一个DIB位图,将经过调窗转换得到的显示值按照相应的格式要求存入到位图的图像数据区中,其中窗宽窗位的值可以通过提取DICOM中的数据元素获取,也可以根据需要手动设置调整。DIB位图由4部分组成:文件头信息块、图像描述信息块、颜色表(真彩色模式无颜色表)和图像数据区组成[8]。文件头信息块是由14个字节组成,以“BM”字符串标示开头,第11到14字节标明图像数据在文件中开始的位置。图像描述信息块由40个字节组成,在固定的位置,以固定的字符串分别标明了该位图的宽度、高度、每个像素的位数、位图的数据大小等等信息。颜色表为1 024字节的灰度表。其中,每4字节表示一种颜色,并以B(蓝色)、G(绿色)、R(红色)、alpha(32位位图的透明度值,在这里设为0x00)。即首先4字节表示颜色号0的颜色,接下来表示颜色号1的颜色,依此类推。图像数据区,存放每个像素对应的颜色号,每个像素占一个字节。由于Windows系统在进行行扫描的时候最小的单位为4个字节,所以当图像每行的像素字节数不等于4的整数倍时要在每行的后面补上缺少的字节,以0x00填充。DIB格式的图像数据是从下到上,从左到右的排列的。也就是说,从图像数据区中最先写入的是DICOM图像最下面一行的左边第一个像素显示值,最后写入的是最上面一行的最右一个像素。

2.3 在编辑器中处理DICOM影像的原理

当用户在编辑器中输入内容,编辑器会自动创建一个文档存储对象,并且以双向链表的数据结构来存储。文档存储对象包括文本、段落、图像等内容。例如当用户输入文本后,我们首先创建文本的存储对象,再根据文本输入的位置向这个双向链表中插入文本存储对象。同时,编辑器为每个段落创建相应的排版对象,用于对段落中的文本及图像等进行排版处理。排版处理主要是为编辑器的文档存储结构创建文档显示对象,并为这些文档显示对象分配坐标,设置所属行等属性。文档显示对象则只负责绘制将自己绘制到用户界面上。编辑器对DICOM图像处理和对普通的文本处理,过程都是类似的。首先,编辑器为DICOM影像创建一个image对象,存放在图像缓冲池imagePool中,同时将imagePool构造成一个程序可以处理的对象类,并创建排版对象ImageLayout。排版对象创建医学影像显示对象ImageShowObject,调用onchange函数响应文档存储对象的变化,根据要插入的DICOM影像在医学报告中的上下文位置环境,计算出显示对象的宽度和高度、所属坐标和行,并对显示对象分配属性。显示对象中包含了DICOM文件名,通过该文件名我们可以从imagePool中对image对象进行解析,获取影像数据和相关信息,并按2.2中所述的方法将DICOM影像转换为DIB位图,最后将DIB位图绘制到用户界面上。显示效果如图6所示。

3 结 语

本论文设计与实现了基于XML技术构建的医学编辑器系统,该系统较常规的文字编辑处理软件有了较深的专业应用,可以有效地解决目前涉及到医学报告编辑与阅读的医学信息处理系统的应用与推广难题,通过实验,发现本文所设计的医学编辑器可以有效的与蓝韵EMR系统,RIS系统对接,完成包括医学影像在内的报告的编辑处理与阅读。该医学编辑器还处于实验改进阶段,我们需要进一步完善该系统,扩展该系统的接口,实现更广泛、稳定的应用。

参考文献

[1]穆鹏义.电子病历系统的五大技术难点及解决方案.中国数字医学,2008;3(3):70—72

[2] Kuhn K A,Giuse D A.From hospital information systems to healthinformation systems,problems,challenges,perspective.Method In-form,Med 2001;4:275—287

[3]薛万国,李包罗,张琨,等.美国电子病历发展历程及启示.中国数字医学,2011;6(11):6—13

[4]王继伟,董志强.从电子病历系统到区域电子病历系统建设与发展.医学信息,2006;11(11):1907—1910

[5] Cohen S,Gilboa F,Shani U.PACS and electronic health record.IBM Haifa Labs.http://research.ibm.com,2002

[6]张兆国,薛万国,包鹏飞,等.建设基于XML技术电子病历系统的核心价值.中国数字医学,2009;4(2):10—14

[7] National Electrical Manufactures Association.Digital imaging andcommunications in medicine.PS3,1998,5:9—79

上一篇:竞赛成绩下一篇:品牌授权经营思考