医学图像DICOM文件解析——DICOM内部信息详解篇
文章目录
一、医学影像学介绍
医学影像学Medical Imaging,是研究借助于某种介质(如X射线、电磁场、超声波等)与人体相互作用,把人体内部组织器官结构、密度以影像方式表现出来,供诊断医师根据影像提供的信息进行判断,从而对人体健康状况进行评价的一门科学,包括医学成像系统和医学图像处理两方面相对独立的研究方向。
仪器主要包括X光成像仪器、CT(普通CT、螺旋CT)、正子扫描(PET)、超声(分B超、彩色多普勒超声、心脏彩超、三维彩超)、核磁共振成像(MRI)、心电图仪器、脑电图仪器等。
二、DICOM文件简介
DICOM(Digital Imaging and Communications in Medicine) 即医学数字成像和通信,是医学图像和相关信息的国际标准(ISO 12052)。DICOM被广泛应用于放射医疗,心血管成像以及放射诊疗诊断设备(X射线,CT,核磁共振,超声等),并且在眼科和牙科等其它医学领域得到越来越深入广泛的应用。所有患者的医学图像都以 DICOM 文件格式进行存储。这个格式包含关于患者的PHI(protected health information)信息,例如姓名,性别,年龄,以及其他图像相关信息比如捕获并生成图像的设备信息,医疗的一些上下文相关信息等。医学图像设备生成 DICOM 文件,医生使用 DICOM 阅读器(能够显示 DICOM 图像的计算机软件)阅读并对图像中发现的问题进行诊断。
目前采用的标准是DICOM3.0,每一张图像中都携带着大量的信息,这些信息具体可以分为以下四类:(a)Patient(b)Study(c)Series(d)Image。每一个DICOM Tag都是由两个十六进制数的组合来确定的,分别为Group和Element。如(0010,0010)这个Tag表示的是Patient’s Name,它存储着这张DICOM图像的患者姓名。
基于C++的DCMTK、基于Java的dcm4che以及基于python的pydicom,都是非常优秀的解释DICOM标准的第三方库,通过在工程中引入它们可以避免软件开发人员去进行底层的解析工作,可为项目开发提高效率。
目前例如CT,核磁共振,超声等利用精确准直的X线束、γ射线、超声波等,与灵敏度极高的探测器一同围绕人体的某一部位作一个接一个的断面扫描,所以扫描后得到的图像是多层的图像,而我们把一层层的图像在z轴上堆叠起来就可以形成三维图像(这就涉及到三维重建的问题),这时,每一层的图像我们都可以存在dicom文件中(当然,dicom文件不是单纯的像素信息,它还有很多的数据头部信息),如下图,我们的目的就是要把在这些数据头部信息和像素信息从一系列dicom文件中读取出来。
DICOM文件是指按照DICOM标准而存储的医学文件,一般由一个DICOM文件头和一个DICOM数据集合组成,结构图如下图:
DICOM文件头包含了标识数据集合的相关信息,每个DICOM文件都必须包括一个文件头:
- 文件前言,由128个字节组成;
- DICOM前缀,可根据这长为4个字节的字符串是否等于“DICM”来判断该文件是不是DICOM文件;
- 文件信息元素
三、DICOM内部信息详解(DICOM Tag与VR)
DICOM数据集是DICOM文件的主要组成部分,其由DICOM数据元素按照指定的顺序排列。数据元素最基本的数据单元是数据元,按照TAG从小到大顺序排列,即一个数据元表示一个TAG。数据元主要由4个部分组成:
- TAG号:由4个字节组成,包括2字节的组号和2字节的元素号(例如:0010 0040 表示患者性别,其中的组号:0002描述设备通讯信息、0008描述特征参数、0010描述患者信息、0028描述图像信息参数)。需要的DICOM文件相关数据时,就是根据TAG来获取。
- 值表示(VR,value representation):由两个字节的字符组成,存储描述该项数据元信息的数据类型,包含例如:LO(Long String,长字符串)、IS(Interger String,整型字符串),DA(data,日期)等等共27种数据类型。
- 值长度(value length):存储描述该项信息的数据长度。
- 值域(value):存储描述该项信息的数据值。
其中数据元信息可以根据信息的不同,分为4类:-Patient-Study-Series-Image-。可以理解为一个患者(patient)可以做多次检查(study),一次检查包含多个检查部位(series),而每个检查部位都有一张或多张相应的影像图像(image)。
1.常见的TAG
(1) Patient Tag
Group | Element | Tag Description | 中文解释 | 数据类型(VR) |
---|---|---|---|---|
0010 | 0010 | Patient’s Name | 患者姓名 | PN |
0010 | 0020 | Patient ID | 患者ID | LO |
0010 | 0030 | Patient’s Birth Date | 患者出生日期 | DA |
0010 | 0032 | Patient’s Birth Time | 患者出生时间 | TM |
0010 | 0040 | Patient’s Sex | 患者性别 | CS |
0010 | 1030 | Patient’s Weight | 患者体重 | DS |
0010 | 21C0 | Pregnancy Status | 怀孕状态 | US |
(2) Study Tag
Group | Element | | | 数据类型(VR) |
---|---|---|---|---|
0008 | 0050 | Accession Number: A RIS generated number that identifies order for the Study. | 检查号: RIS的生成序号,用以标识做检查的次序 | SH |
0020 | 0010 | Study ID | 检查ID | SH |
0020 | 000D | Study Instance UID: Unique identifier for the Study. | 检查实例号: 不同检查的唯一标识号 | UI |
0008 | 0020 | Study Date: Date the Study started. | 检查日期: 检查开始的日期 | DA |
0008 | 0030 | Study Time: Time the Study started. | 检查时间: 检查开始的时间 | TM |
0008 | 0061 | Modalities in Study | 一个检查中含有的不同检查类型 | CS |
0008 | 0015 | Body Part Examined | 检查的部位 | CS |
0008 | 1030 | Study Description | 检查的描述 | LO |
0010 | 1010 | Patient’s Age | 做检查时刻的患者年龄,而不是此刻患者的真实年龄 | AS |
(3) Series Tag
Group | Element | | | 数据类型(VR) |
---|---|---|---|---|
0020 | 0011 | Series Number: A number that identifies this Series. | 序列号: 识别不同检查的号码 | IS |
0020 | 000E | Series Instance UID: Unique identifier for the Series. | 序列实例号: 不同序列的唯一标识号 | UI |
0008 | 0060 | Modality | 检查模态(MRI/CT/CR/DR) | CS |
0008 | 103E | Series Description | 检查描述和说明 | LO |
0008 | 0021 | Series Date | 检查日期 | DA |
0008 | 0031 | Series Time | 检查时间 | TM |
0020 | 0032 | Image Position (Patient): The x,y and z coordinates of the upper left hand corner of the image,in mm. | 图像位置: 图像的左上角在空间坐标系中的x.y.z坐标,单位是毫米。如果在检查中,则指该序列中第一张影像左上角的坐标。 | DS |
0020 | 0037 | Image Orientation (Patient): The direction cosines of the first row and the first column with respect to the patient. | 图像方位 | DS |
0018 | 0050 | Slice Thickness: Nominal slice thickness,in mm. | 层厚 | DS |
0018 | 0088 | Spacing Between Slices | 层与层之间的间距,单位为mm | DS |
0020 | 1041 | Slice Location: Relative position of exposure expressed in mm. | 实际的相对位置,单位为mm | DS |
0018 | 0023 | MR Acquisition | CS | |
0018 | 0015 | Body Part Examined | 身体部位 | CS |
(4) Image Tag
Group | Element | | | 数据类型(VR) |
---|---|---|---|---|
0008 | 0008 | Image Type: Image identification characteristics. | CS | |
0008 | 0018 | SOP Instance UID | SOP实例UID | |
0008 | 0023 | Content Date: The date the image pixel data creation started. | 影像拍摄日期 | DA |
0008 | 0033 | Content Time | 影像拍摄时间 | TM |
0020 | 0013 | Image/Instance Number: A number that identifies this image. | 图像码: 识别图像的号码 | IS |
0028 | 0002 | Samples Per Pixel: Number of samples (planes) in this image. | 图像采样率 | US |
0028 | 0004 | Photometric Interpretation: Specifies the intended interpretation of the pixel data. | 光度计解释: 对于CT图像,用两个枚举值MONOCHROME1,MONOCHROME2 用来判断图像是否是彩色的; MONOCHROME 1/2是灰度图,RGB则是真彩色图 | CS |
0028 | 0010 | Rows : Number of rows in the image. | 图像的总行数,行分辨率 | US |
0028 | 0011 | Columns : Number of columns in the image. | 图像的总列数,列分辨率 | US |
0028 | 0030 | Pixel Spacing: Physical distance in the patient between the center of each pixel. | 像素间距: 像素中心之间的物理间距 | DS |
0028 | 0100 | Bits Allocated: Number of bits allocated for each pixel sample.Each sample shall have the same number of bits allocated. | 分配的位数: 存储每一个像素值时分配的位数,每一个样本该值相同 | US |
0028 | 0101 | Bits Stored: Number of bits stored for each pixel sample.Each sample shall have the same number of bits stored. | 存储的位数:有12到16列举值 存储每一个像素用的位数,每一个样本该值相同 | US |
0028 | 0102 | High Bit: Most significant bit for pixel sample data. Each sample shall have the same high bit. | 高位 | US |
0028 | 0103 | Pixel Representation: Data representation of the pixel samples. Each sample shall have the same pixel representation. Enum:0000H=unsigned integer,0001H=2’ s complement. | 像素数据的表现类型: 一个枚举值,分别为十六进制数0000和0001. 0000H = 无符号整型, 0001H = 2的补码 | US |
0028 | 1050 | Window Center | 窗位 | DS |
0028 | 1051 | Window Width | 窗宽 | DS |
0028 | 1052 | Rescale Intercept: The value b in relationship between stored values(SV) and the output units. Output units = m*SV + b. Required if Modality LUT Sequence(0028, 0030) is not present. | 截距: 如果表明不同模态的LUT颜色对应表不存在时,则使用方程: Units = m*SV + b,计算真实的像素值到呈现像素值,其中截距为表达式中的b | DS |
0028 | 1053 | Rescale Slope: m in the equation specified by Rescale Intercept(0028, 1052). Required if Rescale Intercept is present. | 斜率: 该值为表达式中的m | DS |
0028 | 1054 | Rescale Type: Specifies the output units of Rescale Slope (0028,1053) and Rescale Intercept (0028,1052). Enum: US=Unspecified Requried if Photometric Interpretation is MONOCHROME2, and Bits Stored is greater than 1. This specifies an identity Modality LUT transformation. | 输出值的单位: 该值是一个枚举值 | LO |
2.VR数据类型
VR是DICOM标准中用来描述数据类型的,总共有27个值。
27种数据类型
| | 允许字符 | 数据长度 |
---|---|---|---|
CS - Code String 代码字符串 | 开头结尾可以有没有意义的空格的字符串,比如 “CD123_4" | 大写字母,0-9,空格以及下划线字符 | 最多16个字符 |
SH - Short String 短字符串 | 短字符串,比如:电话号码, ID 等 | 最多16个字符 | |
LO - Long String 长字符串 | 一个字符串,可能在开头、结尾填有空格。比如 “Introduction to DICOM” | 最多64个字符 | |
ST - Short Text 短文本 | 可能包含一个或多个段落的字符串 | 最多1024个字符 | |
LT - Long Text 长文本 | 可能包含一个或多个段落的字符串,与 LO 相同,但可以更长 | 最多10240个字符 | |
UT - Unlimited Text 无限制文本 | 包含一个或多个段落的字符串,与 LT 类似 | 最多(232 -2)个字符 | |
AE - Application Entity 应用实体 | 标识一个设备的名称的字符串,开头和结尾可以有无意义的字符。比如 “MyPCO 1” | 最多16个字符 | |
PN - Person Name 病人姓名 | 有插入符号 (^) 作为姓名分隔符的病人姓名。比如 “SMITH^JOHN” “Morrison Jones Susan^^^Ph.D,Chief Executive Officer” | 最多64个字符 | |
UI - Unique Identifier(UID) 唯一标识符 | 一个用作唯一标识各类项目的包含UID的字符串。比如 “1.2.840.10008.1.1” | 0-9和半角句号 (.) | 最多64个字符 |
DA - Date 日期 | 格式为 YYYYMMDD 的字符串;YYYY 代表年;MM 代表月;DD 代表日。比如 “20050822” 表示 2005 年 8 月 22 日 | 0-9 | 8个字符 |
TM - Time 时间 | 格式为 HHMMSS.FRAC 的字符串。 HH 表示小时(范围"00"-“23”); MM 表示分钟 (范围"00"-“59”); 而 FRAC 包含秒的小数部分,即百万分之一秒, 比如 “183200.00” 表示下午 6:32 | 0-9和半角句号 (.) | 最多16个字符 |
DT - Date Time 日期时间 | 格式为 YYYYMMDDHHMMSS.FFFFFF,串联的日期时间字符串。 字符串的各部分从左至右是:年-YYYY;月-MM;日-DD;小时-HH;分钟-MM;秒-SS;秒的小数-FFFFFF。 比如 “20050812183000.00” 表示 2005 年 8 月 12 日 下午 18 点 30 分 00 秒 | 0-9,加号,减号和半角句号 | 最多26个字符 |
AS - Age String 年龄字符串 | 符合以下格式的字符串:nnnD,nnnW,nnnM,nnnY;其中 nnn 对于 D 来说表示天数,对于 W 来说表示周数,对于 M 来说表示月数,对于 Y 来说表示岁数。比如 “018M” 表示他的年龄是 18 个月 | 0-9,D,W,M,Y | 4个字符 |
IS - Integer String 整型字符串 | 表示一个整型数字的字符串,比如 “-1234567” | 0-9,加号 (+),减号 (-) | 最多12个字符 |
DS - Decimal String 小数字符串 | 表示定点小数和浮点小数,比如 “12345.67”, “-5.0e3” | 0-9, 加号 (+), 减号 (-), 最多16个字符 E, e 和半角句号(.) | 最多16个字符 |
SS - Signed Short 有符号短型 | 符号型二进制整数,长度 16 bits | 2个字符 | |
US - Unsigned Short 无符号短型 | 无符号二进制整数,长度 16 bits | 2个字符 | |
SL - Signed Long 有符号长型 | 有符号二进制整数 | 4个字符 | |
UL - Unsigned Long 无符号长型 | 无符号二进制长整数,长度 32 bits | 4个字符 | |
AT - Attribute Tag 属性标签 | 16 bits 无符号整数的有序对,数据元素的标签 | 4个字符 | |
FL - Floating Single 单精度浮点型 | 单精度二进制浮点数 | 4个字符 | |
FD - Floating Point Double 双精度二进制浮点型 | 双精度二进制浮点数 | 8个字符 | |
OB - Other Byte String 其它字节字符串 | 字节的字符串("其它"表示没有在VR中定义的内容) | ||
OW - Other Word String 其它单词字符串 | 16 bits(2字节) 单词字符串 | ||
OF - Other Float String 其它浮点字符串 | 32 bits(4个字节) 浮点单词字符串 | ||
SQ - Sequence Items 条目序列 | 条目的序列 | ||
UN - Unknown 未知 | 字节的字符串,其中内容的编码方式是未知的 |
参考:
来源地址:https://blog.csdn.net/Joker00007/article/details/127754815
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341