ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:1.42MB ,
资源ID:8761126      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8761126.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(DICOM资料整理.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

DICOM资料整理.docx

1、DICOM资料整理一:DICOM简介DICOM(Digital Imaging and Communications in Medicine)即医学数字成像和通信,是医学图像和相关信息的国际标准(ISO 12052)。它定义了质量能满足临床需要的可用于数据交换的医学图像格式。所有现实世界的东西,如病人、医疗设备等都被DICOM视为拥有着一些属性(attribute)的对象(object)。这些对象和属性被定义为IODs(DICOM Information Object Definitions)。例如一个病人IOD,可以被姓名、性别、年龄、体重、抽烟状态、病历ID等这些和医疗相关的属性(attr

2、ibute)来描述。DICOM中包含了大量的这种属性(有2000多个)。这些属性的值有27种形式,被称为(VR, Value REpresentation).DICOM的数据表示形式tag数据形式(VR)数据长度(L)数据值(Value)(0010, 0010)PN4Jami(0010, 0040)CS1M其中,(0010, 0010)病人姓名,(0010, 0040)病人性别;二:关于计算机的一些基础知识回顾 (1)二进制计算机是二进制的,用0、1表示。一个bit就是一个数字,0或者1。1byte = 8bit。一个byte的数据有(28 = 256)种可能,取值范围为0255。计算机存储、

3、读写二进制数据都是以byte为单位的,如果要存储13bits的数据,计算机就得分配2个bytes的空间(16bits)。我们使用的颜色也可以使用一个byte来代表它的灰度级,另外一个byte也足以存储一个Latin字母。要存储12个字母就需要12个bytes的空间,一个字母占一个byte. (2)16进制数例:0x007F占了2个byte ,在十进制的情况下它的值为7*16 + 15 = 127。几乎所有的DICOM数据都是用16进制的形式存储的。 (3)大端模式(Big Endian)与小端模式(Little Endian order)大端模式(Big-Endian)就是高位字节排放在内存的

4、低地址端,低位字节排放在内存的高地址端。小端模式(Little-Endian)就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。例: 16进制的数0x12345678在Little-endian模式以及Big-endian模式在内存中的存放方式为(假设从地址0x4000开始存放):三:DICOM中的数据形式DICOM有27种基本的数据形式,(VRs, Value Representations)。DICOM中的数据必须满足其中的一种。每个VR都有一种两个字母的缩写形式。VR的具体定义见下表:说明:(1)VRs定义了数据的类型(DataType),并且约定了数据的长度。DICOM的

5、数据长度一般是偶数的,它们应该含有偶数个的字符或者字节。对于奇数长度的字符串,通常在它后面加一个空格;对于奇数字节的数字,加一个空的 NULL 字节,使得它们的字节数为偶数。例如“SmithJoe”就会被处理成“SmithJoe ”。(2)DICOM允许“*”代表任意字符串,“?”代表任意的一个字母,“”代表“或”。(3)IS, DS在DICOM中使用的也很多,尽管对计算机存储来说,它不如二进制的数字合适,但是它不用考虑Little Endian或者High Endian,但是它易读,且容易显示。(4)AT包含了两个字节的数据,就是专门用于(group, element)的tag。(5)PN代

6、表病人的姓名,一般组成形式为 FamilyNameGivenNameMiddleNameNamePre xNameSu x 例:“John Smith” “SmithJohn”。(6)AE就是DICOM程序应用实体,通常只使用数字和大写字母表示。(7)UIDs (Unique Identifiers),是DICOM数据对象的唯一标识。(8)SQ (Sequencing Data Sets),DICOM对象中的元素也可以是DICOM对象。(9)UN (代表Unknown Value)如果一个数据不符合前面的26个VR数据形式,就用UN来表示。四:DICOM数据字典(DICOMDICOM Data

7、 Dictionary) (一)DICOM标准数据字典(standard DICOM Data Dictionary)DICOM标准数据字典有超过2000多个数据项,这些数根据内容的相近可以被分组为(group, element)。(group, element)也被称为”tags”。这些有着tag值的数据元素被称为DICOM属性或者DICOM元素(“attribute”、DICOM “element”、element”)。上图是一个标准DICOM数据字典列表的一部分,其中第一列为(group, element)元素group和element都是16进制的。第二列为属性名称(attribute

8、Name),其中(group, element)和属性名称是一一对应的。一般通过(group, element)来寻找属性。VM(Data element Value Multiplicity) 规定了这种属性的元素可以包含一个或者多个数据值defines whether the related element may contain only one value of its type, or several.例如“Other Patient Names”元素(0010, 1001)可以有一个或者多个值,所以值为1-n,其中n代表的是任意数值。对于有多个数值的情况,如何把它们拼接成一个数据?

9、如果是二进制数的话就直接拼接,因为它们是定长的,可以根据字节数获取到它们。如果是字符串类型的,则用“”来分隔,在DICOM中“”代表的是“或”。标准数据字典的例子:“Patient John Smith, Male, born on August 6, 1954”.这里面有3个element“Patient Name” (010,0010)“Patients Sex” (0010,0040)“Patients Birth Date” (0010,0030).它们的VRs分别为 PN, CS, DADICOM Encoding的结果为:(0010,0010)SmithJohn (0010,003

10、0)19540806 (0010,0040)M其中它们的数值得符合VR(二)私有数据字典(Private DICOM Data Dictionary)除了标准数据字典列出来的2000多个属性以外,如果有遇到那其中没有包含的怎么办?DICOM可以增加自己私有的:比如增加一个属性(attribute)叫“Patients Middle Name”。注意:(1)如果group的数值是偶数的,则代表的是标准数据字典(standard DICOM Data Dictionary); 如果group的数值是奇数的,则代表的是自定义的私有数据字典。(2)私有的group数值可以随便设置。因为私有的group

11、数值是我自己定义的,所以别的DICOM应用可能不能识别这个group是什么含义,但是从它的group是奇数的,可以知道它是私自的。按照DICOM的规定,不能识别的就会忽略它。但是如果别的DICOM软件也正好使用了一个(0009, 0010)定义了“Physicians Last Name”,就会造成错误。因此实际中使用private经常会出现问题。因此使用私有的数据字典的时候要十分地注意。(三)标准DICOM命令字典(Standard DICOM COMMAND Dictionary)前面介绍的都是数据元素,但是我们该如何表示对数据的操作?比如图像的“打印”、“存储”、“Get请求”等?实际上

12、DICOM 命令采用的是和数据一样的编码形式。且它们们的group数值都是0000,例如(0000, 0100)代表的是“command type”,而(0000, 0110)代表的是“command message id”。五:DICOM数据对象(DICOM Objects)DICOM对象实际上就是由一系列的DICOM元素的组合起来的。DICOM的数据表示形式tag数据形式(VR)数据长度(L)数据值(Value)(0010, 0010)PN4Jami(0010, 0040)CS1M(一)数据元素编码(Encoding Data Elements)(转化一系列的二进制表示) 有两种编码方法:

13、 (1) VR隐式编码(implicit VR encoding)(默认采取的),见下图表 5以病人的姓名SmithJoe为例(以默认的Little Endian存储表示)。由于DICOM要求数据的长度为偶数,而“SmithJoe”现在长度为9,结尾添加空格,变为10,所以其长度为L = 10 = 0x0A。表5:VR隐式编码 表6:VR显式编码例子从表中可以看出其总共占用了18byte。 (2) VR显式编码(explicit VR encoding) 上面介绍的是VR隐式编码,而VR显式编码与此类似,但它有两种形式: 1 除了(OB, OW, OF, SQ, UT, UN)的VR显式编码

14、这里VR包含了两个字母,它占用2个byte。在隐式编码中表示长度的4个字节,被分为VR占2个,长度表示占2个 表7 除了(OB, OW, OF, SQ, UT, UN)的VR显式编码 表8除了(OB, OW, OF, SQ, UT, UN)的VR显式编码的例子 2 对于OB, OW, OF, SQ, UT, UN的VR显式编码 这种形式,在VR之后,有两个固定的字节(0x0000),接下来再是4个byte的长度表示。例如,表示像素值为256*256的图像(一个像素占一个byte, 共有256*256 = 0x00010000字bytes),它的VR为OB,不能在编码同一个Dicom对象时,不能

15、同时使用隐式的和显式的方法,只能使用统一地一种。因此在开始编码的时候就要确定采用哪种编码方式。尽管显式编码看起来有些冗余,它在很多地方都有用处:(1)可以帮助避免编码错误。(2)随着DICOM的发展,一些VR可能发生改变,和之前的不一样。这种情况下,使用VR就保留了原来的值,使程序可以保持对老版本的兼容。(3)对编码一些非标准VR很重要。(二)DICOM数据分组编码DICOM中的元素element都可以被划分为组group。例如group 0010就包含了所有跟病人相关的元素(name, id, weight, age , and so on)。Group 0028包含了图像相关的元素(wid

16、th, height, bit and color depth),而group 7FE0就只包含了图像的像素数据。奇数的group不包含在DICOM Data Dictionary中,它被DICOM厂商用来包含他们自己的专有数据。当元素被编码到dicom对象时,它们都是按照严格的(group, element)的升序来排的。一般情况下,常用的一些基本数据的group值都较小,如病人的是0010,这样基实便于它们被找到。对于DICOM的group“gggg”,它的第一个元素为(gggg, 0000),它可以记录所有gggg元素的总长度。因为所有元素的长度都是偶数的,(gggg, 0000)中的长

17、度值也是偶数的。(gggg, 0000)写在一个组的最前面,并且记录了整个组的长度。它的好处:(1)如果不需要读gggg这个group时,可以直接根据字节数跳过;因此它可加快DICOM文件的处理过程。它在处理奇数group 数值的时候尤其明显。因为奇数的group数值自己不能读,可以很快地跳过。(2)它也可以作为校验。它的劣处:在写(gggg, 0000)这个元素的时候,你需要知道gggg这个group中所有元素的长度,这意味着这个group中的所有元素必须首先获取到,并且在(gggg, 0000)之前已经编码好。对于DICOM开发者来说,这意味着两件事:(1)所有的元素都必须编码完成,才能编

18、码object;(2)修改DICOM对象中一个元素时,就不可避免地修改了它的数值长度,就需要相应的修改它的值。这样就会带来额来的负担。在实际处理中,很多DICOM软件会忽略(gggg, 0000),或者更坏的情况是写了错误的值。由于这些原因,group长度这个属性被设置为可选的,你的程序不是必须得写它。例子:C-Echo-request (C-Echo-Rq) 对象(这是一个DICOM命令对象)(三) DICOM数据对象的编码基于前面介绍的数据元素的编码和分组,从而可以知道DICOM对象的编码方法。因为DICOM对象就是一系列DICOM数据元素的组合。没有SQ元素的DICOM对象的形式如下图:

19、(1)SQ序列的DICOM对象的编码如果DICOM对象中的元素的VR是SQ,则该元素的值可以是一组DICOM 对象。而在这样的DICOM 对象元素中,其元素的VR也可以是SQ。SQ 元素的编码方法如下表说明:(1)SQ序列中的DICOM对象数据值以(FFFE, E000)开头,接下来有两种情况:1DICOM对象数据值 有明确的长度;如例1中的第一个和第二个数据对象;2DICOM对象数据值 没有明确的长度,标记为FFFFFFFF。如例 3中的第二个数据对象;在这种情况下,需要用(FFFE, E0DD)来标识结尾。(FFFE, E0DD)为一项的值的长度为0,它只是用来标识结尾的。(2)整个SQ序

20、列也可以有明确的或者不明确的长度1例2中,整个序列有确定的长度0x0000A00,长度总和的计算。2也可以使用不明确的长度0xFFFFFFFF,因为长度不确定,因此需要在结尾增加标识项(FFFE, E0DD),(FFFE, E0DD)这一项的值的长度也是0;建议使用隐式编码的方法:(1)如果计算长度出错,则整个DICOM 对象都不可读。(2)尽管使用明确长度的方法,阅读DICOM时可以很快跳过这一段,但在计算机性能好的今天,这已经微不足道。编码的时候从下往上:六:一些参考资料(1)DICOM官网:http:/dicom.nema.org/(2)DICOM三大开源库 1基于C+的dcmtk http:/www.dcmtk.org/2基于DCMTK,用C#再次封装(mDCM) 基于C#的fo-dicom(mDCM的升级版) 3基于java的dcm4che (3)DICOM医学图像处理专栏

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1