阅读本文大概需要6分钟
'DICOM’数据是医疗影像的关键,一个.dcm
文件保存了单次诊断的全部信息(病人信息+图像数据),通过读取解析.dcm
文件可以获取所有信息。
DICOM
文件结构打开任意一个.dcm
文件,使用16进制打开,可以看到如下结构:
导言部分128字节,可以直接跳过。
前缀标识的一个dicm
文件,总共4个字节。
在前缀后面就是真正的数据元素来。
从数据元素开始,均是以key
,value
的形式提供,每个tag
就是dicom
里面定义好的字典,我们在解析时根据需要只需关注特定的tag
即可,dicom
全部的tag
至少有 2000个。
好了,Dicom
基本数据结构就这样,刚开始学习时可以自己动手解析下,体验下上面说的几个步骤。实际工作或者软件开发中都是使用第三方开源库进行操作,比如比较著名的 C++
系的DCMTK
,JAVA
系的 dcm4che
, python
系的 pyDicom
等等,本文乃至以后的文章主要以 DCMTK
为主.
Tag | 描述 | 例子 |
---|---|---|
0010 0010 | patient’s name(患者名字) | zhangsan |
0010 0020 | patient ID(患者ID) | 100034251 |
0010 0030 | patient’s birth date(患者生日) | 19390506 |
0010 0040 | patient’s sex(患者性别) | F |
0010 1010 | patient’s age(患者年龄) | 075Y |
0018 0015 | body part examined(扫描部位) | Head |
Tag | 描述 | 例子 |
---|---|---|
0008 0060 | Modality | CT |
0008 0070 | Manufacture(生产厂家) | SIMENS |
0008 0080 | Institution name(机构名称) | SH PULMONARY HOSPITAL |
0008 0080 | Institution address(机构地址) | NO.507zheng min road/shsh/71f6e4/yang puCN |
0008 1010 | Station name | CTAWP65018 |
0008 1070 | Operator’s name | 5411 |
Tag | 描述 | 例子 |
---|---|---|
0008 0020 | Study date | 20141103 |
0008 0021 | Series date | 20141103 |
0008 0030 | Study time | 175733(时分秒) |
0008 1030 | Study description | Head^headRoutineSeq |
0008 103E | Series description | HeadSeq |
0020 000D | Study Instance UID | 1.2.840.113820.862123.26.20141103173532 |
0020 000E | Series Instance UID | 1.3.12.2.1107.5.1.4.65018.30000014103107533800000272234 |
0020 0010 | Study ID |
Tag | 描述 | 例子 |
---|---|---|
0008 0008 | Image type | ORIGINAL\PRIMARY\AXIAL\CT_SOM5 SEQ |
0008 0023 | Image data | 20141103(每张分开列) |
0008 0033 | Image time | 175812(每张分开列) |
0018 0050 | Slice thickness(层厚) | 2.4(每张分开列) |
0018 0093 | Percent sampling | 100 |
0018 0094 | Percent phase field of view | 100 |
0018 5100 | Patient position(患者姿态) | HFS |
0020 0013 | Image number | 3(每张分开列) |
0020 0032 | Image position(patient) | -113.2783-291.2783\63.8(每张分开列) |
0020 0037 | Image Orientation(patient) | 1\0\0\0\1\0(每张分开列) |
0020 1041 | Slice location(图像位置) | 63.8(每张分开列) |
0028 0002 | Samples per pixel | 1 |
0028 0004 | Photometric Interpretation | MONOCHROME2 |
0028 0010 | Rows(图像列数) | 512 |
0028 0011 | Columns(图像行数) | 512 |
0028 0030 | Pixel spacing(像素间距) | 0.443359375\0.443359375 |
0028 1050 | Window center(窗位) | 35\700(每张分开列) |
0028 1051 | Window wide(窗宽) | 80\3200(每张分开列) |
Tag | 描述 | 例子 |
---|---|---|
0018 0060 | KVP(球管电压) | 120 |
0018 0090 | Data collection diameter(数据采集直径) | 500 |
0018 1000 | Device serial number(设备序列号) | 65018 |
0018 1030 | Protocol name(扫描序列名) | 01_ThoraxRoutine |
0018 1100 | Reconstruction diameter(重建直径) | 382 |
0018 1110 | Distance source to detector(射线源与探测器间距) | 1085.6 |
0018 1120 | Gantry/detector tilt(机架倾斜角) | 0 |
0018 1130 | Table height(床高) | 150 |
0018 1140 | Rotation direction(旋转方向) | CW |
0018 1150 | Exposure time(曝光时间) | 500 |
0018 1151 | X-ray tube current(球管电流) | 446 |
0018 1152 | Exposure(mA*s) | 185 |
0018 1160 | Filter type(滤波类型) | FLAT |
0018 1170 | Generator power | 34 |
0018 1190 | Focal spot(焦点长度) | 1.2 |
0018 1200 | Date of last calibration(上次测量日期) | 20140517 |
0018 1201 | Time of last calibration(上次测量时间) | 081655 |
0018 1210 | Convolution kernel(卷积核) | B50f |
0018 9306 | Single collimation width(可重建最小厚度) | 0.60000 |
0018 9307 | Total collimation width(准直宽度) | 98.40000 |
0018 9309 | Table speed(床速度) | 92.00000 |
0018 9310 | Table feed per rotation(床旋进比) | 46.00000 |
0018 9311 | Spiral pitch factor(步进) | 1.200000 |
0018 9313 | Data collection center(patient)(数据采集中心) | 0.373047-149.626953-92.5000 |
0018 9318 | Reconstruction target center(patient)(重建目标中心) | 0.373047-149.626953-92.5000 |
0018 9323 | Exposure modulation type(曝光模式类型) | XYZ_EC |
0018 9324 | Estimated Dose Saving(辐射剂量) | 64.125000 |
0018 9345 | CTDIvol | 9.445693 |
Tag | 描述 | 例子 |
---|---|---|
0018 0020 | Scanning sequence(序列类型) | SE |
0018 0021 | Sequence variant | sp |
0018 0022 | Scan options(扫描选项) | PFP |
0018 0023 | Mr acquisition type(采集类型) | 2D |
0018 0024 | Sequence name(序列名) | *se2d1 |
0018 0025 | Angio flag | N |
0018 0080 | Repetition time(重复时间) | 495 |
0018 0081 | Echo time(回波时间) | 7.8 |
0018 0083 | Number of averages(重复次数) | 1 |
0018 0084 | Imageing frequency(成像频率) | 63.666472 |
0018 0085 | Imaged Nucleus(成像核) | 1H |
0018 0086 | Echo number(回波数) | 1 |
0018 0087 | Magnetic field strength(磁场强度) | 1.5 |
0018 0088 | Spacing between slices(层间距) | 3 |
0018 0089 | Number of Phase Encoding steps(相位编码步数) | 224 |
0018 0091 | Echo train length(回波链长度) | 1 |
0018 0095 | Pixel bandwidth(像素带宽) | 130 |
0018 1000 | Device series number(设备序列号) | 25788 |
0018 1030 | Protocol name(扫描序列名) | T1_se_tra |
0018 1251 | Transmitting coil(发射线圈) | body |
0018 1310 | Acquisition matrix(采集矩阵) | 0\256\256\0 |
0018 1312 | Phase encoding direction(相位编码方向) | ROW |
0018 1314 | Flip angle(翻转角) | 90 |
0018 1315 | Variable flip angle flag | N |
0018 1316 | SAR | 0.83983357382971 |
0018 1318 | db/dt | 0 |
VR | 含义 | 允许的字符 | 数据长度 |
---|---|---|---|
CS - Code String | |||
代码字符串 | 开头结尾可以有没有意义的空格的字符串,比如“CD123_4” | 大写字母,0-9,空格以及下划线字符 | 最多16 个字符 |
SH- Short String 短字符串 | 短字符串 | 最多16 | |
LO - Long String 长字符串 | 一个字符串,可能在开头、结尾填有空 格。比如“Introduction to DICOM” | 最多 64 个字符 | |
ST - Short Text 短文本 | 可能包含一个或多个段落的字符串 | 最多 1024 个字符 | |
LT - Long Text 短文本 | 可能包含一个或多个锻炼的字符串,与LO相同,但可以更长 | 最多 10240 个字符 | |
UT - Unlimited Text 无限制文本 | 包含一个或多个段落的字符串,与 LT 类似 | 最多(2的32次方–2)个字符 | |
AE - Application Entity应用实体 | 标识一个设备的名称的字符串,开头和 结尾可以有无意义的字符。比如 “MyPC01” | 最多 16 个字符 | |
PN - Person Name 病人姓名 | 有插入符号()作为姓名分隔符的病人姓名。比如“SMITHJOHN” “Morrison- JonesSusan^^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 比特 | 2 个字符 | |
US - Unsigned Short 无符号短型 | 无符号二进制整数,长度 16 比特 | 2 个字符 | |
SL - Signed Long 有符号长型 | 有符号二进制整数 | 4 个字符 | |
UL - Unsigned Long 无符号长型 | 无符号二进制整数,长度 32 比特 | 4 个字符 | |
AT - Attribute Tag 属性标签 | 16 比特无符号整数的有序对,数据元素的标签 | 4 个字符 | |
FL - Floating Single 单精度浮点 | 单精度二进制浮点数字 | 4 个字符 | |
FD - Floating Point Double 双精度二进制浮点数字 | 双精度二进制浮点数字 | 8 个字符 | |
OB - Other Byte String 其他字节字符串 | |||
OW - Other Word String 其他单词字符串 | 6 比特(2 字节)单词字符串 | ||
OF - Other Float String 其他浮点字符串 | 32 比特(4 个字节)浮点单词字符串 | ||
SQ - Sequence Items 条目序列 | 条目的序列 | ||
UN – Unknown 未知 | 字节的字符串,其中内容的编码方式是未知的 |
DICOM
标准支持的数据集Character Set Description | Defined Term |
---|---|
Latin alphabet No. 1 | ISO_IR 100 |
Latin alphabet No. 2 | ISO_IR 101 |
Latin alphabet No. 3 | ISO_IR 109 |
Latin alphabet No. 4 | ISO_IR 110 |
Cyrillic | ISO_IR 144 |
Arabic | ISO_IR 127 |
Greek | ISO_IR 126 |
Hebrew | ISO_IR 138 |
Latin alphabet No. 5 | ISO_IR 148 |
Japanese | ISO_IR 13 |
Thai | ISO_IR 166 |
Default repertoire | ISO 2022 IR 6 |
Latin alphabet No. 1 | ISO 2022 IR 100 |
Latin alphabet No. 2 | ISO 2022 IR 101 |
Latin alphabet No. 3 | ISO 2022 IR 109 |
Latin alphabet No. 4 | ISO 2022 IR 110 |
Cyrillic | ISO 2022 IR 144 |
Arabic | ISO 2022 IR 127 |
Greek | ISO 2022 IR 126 |
Hebrew | ISO 2022 IR 138 |
Latin alphabet No. 5 | ISO 2022 IR 148 |
Japanese | ISO 2022 IR 13 |
Thai | ISO 2022 IR 166 |
Japanese | ISO 2022 IR 87 |
Japanese | ISO 2022 IR 159 |
Korean | ISO 2022 IR 149 |