【Dicom标准】dicom数据中pixelData显示处理流程详细介绍
文章目录
- 1.概述
- 2.Dicom
- 2.1 Dicom标准
- 2.2 Dicom文件
- 3.转换流程
- 3.1 GrayScale转P-Values
- 3.1.1 Modality Transformation
- 3.1.2 Mask Subtraction
- 3.1.3 VOI Transformation
- 3.1.4 Presentation Transformation
- 3.2 Indexed Color转P-Values
- 4.参考资料
1.概述
本文主要介绍使用dicom文件(.dcm)
解析得到的pixelData按照dicom标准
进行一系列处理,得到正确的显示效果。
2.Dicom
2.1 Dicom标准
DICOM(Digital Imaging and Communications in Medicine
,医学数字成像与通信标准)是医学影像领域的国际标准,用于规范医学影像的存储、传输、显示和共享。它由美国国家电气制造商协会(NEMA)和国际电气电子工程师学会(IEEE)共同制定,广泛应用于放射科(CT、MRI、X光)、超声、内窥镜、病理学等医疗影像设备。
2.2 Dicom文件
DICOM文件(扩展名通常为.dcm
)是符合dicom标准的医学影像文件,不仅包含图像的像素数据,还包含丰富的元数据信息,如患者信息,检查信息,影像参数信息等。
用于Dicom数据查看的软件有Radiant Viewer、Weasis等,用于解析dicom数据的三方库有dcmtk、fo-dicom、pydicom,gdcm等。
3.转换流程
具体的dicom数据解析等不在本文不详细说明,这里只详细介绍
pixelData像素
到最终的显示值(P-Values)
的转换流程。(以最新的2023 Dicom3.0作为本文的参考依据),且均以符合dicom标准的文件为例。
主要的转换流程如下表所示,以常用的CT影像的Dicom数据为例,主要包括两种情况:
(1)GrayScale Stored Pixel Values:
即情况1,dicom文件中存储的像素灰度信息,需要经过Modality、VOI等步骤转换到最终的显示值。
(2)Indexed Color Stored Pixel Values
:即情况2,dicom文件中存储原始像素和颜色查找表等信息,原始的像素值仅做为索引使用,从查找表中取值即可。
(3)True Color Stored Pixel Values:即情况3,即dicom文件中存储的像素值即为最终的显示值,无需任何转换,因此本文不额外讨论此情况。
3.1 GrayScale转P-Values
pixelData
灰度值转P-Values(最终显示值)是最常见的处理流程,其中绝大部分dicom数据的显示都采用此种处理方式,包含以下几个步骤。
3.1.1 Modality Transformation
模态转换的作用是将依赖于设备制造商的原始像素值pixelData,转换为与影像模态相关且独立于制造商的标准化像素值(例如:CT模态的亨氏单位/Hounsfield number、胶片数字化仪的光学密度/Optical Density)。这些转换后的值可以表示物理单位,也可能是无量纲的。
主要用于统一不同CT设备的灰度值范围
(不同厂商在同类型的医学设备上生成的图像在度量上可能不一致,因此需要转换到一个标准的度量空间
)。
模态转换的流程主要分为三种情况:
①使用Slope+Intercept Tag的线性变换;②使用Modality LUT颜色查找表的非线性变换;③前两种需要的Tag都不存在的情况。如下图所示
其中Rescale Slope与Modality LUT Sequence是互斥
存在的,Rescale Slope与Rescale Intercept是必须同时存在
的。
(1)Slope+Intercept
即使用斜率+截距的线性变化,ouput = input * slope + intercept
;这里的输入input则为dicom数据解析出来的pixelData
(2)Modality LUT Sequence
即使用颜色查找表来进行非线性变化,后面的Modality LUT Sequence与Presentation LUT Sequence也类似。
LUT Data即颜色查找表的所有数据
LUT Descriptor中包含三个item,分别是:①查找表的元素数量
②第一个
被映射的像素③查找表中每个元素的位数
,是8bit还是16bit。按照这些描述,依次按照索引进行查找即可
(3)当以上两者的情况的Tag都不存在时,可以理解为无需做任何处理,也可以理解为slope为1,intercept为0;即ouput = input * slope + intercept公式为:ouput = input * 1 + 0 = output。
3.1.2 Mask Subtraction
可以理解为:使用mask数据进行
遮罩处理
,如CT扫描数据中包含了“床板”信息,可以根据Mask数据,去除床板。
即为简单的Mask遮罩,选择是否输出像素点,这里不过多赘述。
3.1.3 VOI Transformation
即感兴趣区转换,如使用窗宽窗位等显示特定区域范围等
感兴趣区转换包含以下几种种情况:
(1)使用窗宽窗位转换
要求:WindowCenter(0028,1052)
和WindowWidth(0028,1051)
Tag存在。使用不同的转换公式取决于VOI LUT Function(0028,1056)
Tag的枚举值,分为以下三种情况
① LINEAR
默认情况,tag不存在时,即默认为LINEAR,转换公式如下所示:其中Ymax一般为1,Ymin一般为0;可以理解为按照窗宽窗位将原有的数据截取一定范围,并转换到预定值域。
②LINEAR_EXACT
与上文①类似,只是转换公式稍有不同,如下截图所示:
③ SIGMOID
与上类似,使用不同的转换公式
(2)使用Lut颜色表转换
当WindowCenter Tag不存在时,可能会存在Lut的相关tag;包含LUT Descriptor
和LUT Data
等相关Tag信息,具体的使用方式与上文Modality LUT相同,根据Descriptor中的描述,从LUTData中取值即可。
(3)以上两种情况所需的Dicom Tag均不存在
时
即窗宽窗位信息和LUT信息相关依赖的Tag都不存在,即全窗显示。可以理解为:将输入的值(值域为[Imin, Imax])全部映射到输出(值域为[Omin, Omax]),不存在截取的情况。
3.1.4 Presentation Transformation
即显示转换,包含使用LUT颜色表,以及根据Presentaton LUT Shape处理等方式
(1)使用Presentation LUT Sequnence
进行处理。
即使用LUT查找表的方式进行处理,与上文中的类似,这里不过多赘述。
(2)根据Presentation LUT Shape(2050,0020)Tag
进行处理
包含以下几种枚举:
①IDENTITY
:即输入的值为P-Values,无需在进行任何处理
②INVERSE
:需要对输入的值进行反色处理,即在Shader中根据此Tag反色处理即可。
3.2 Indexed Color转P-Values
原始的Dicom数据自带颜色查找表(Palette Color Lookup Table)数据,直接根据原始的像素值在LUT中按照规则查找处理即可,不需要上文3.1部分中的各个步骤。
当原始数据自带Red、Green、Blue Palette Color Lookup Table Descriptor
时,且相应的Tag需要满足要求,如Photometric Interpretation(0028,0004)
Tag的值为PALETTE COLOR
时,直接将Dicom数据中的像素值作为索引,从LUT中取相应的值即可。具体的规则与用法与上文基于LUT Descriptor的方式相同,这里不过多赘述。
4.参考资料
- https://dicom.nema.org/medical/dicom/current/output/chtml/part04/sect_N.2.html:传送门
- Modality LUT Module:传送门
- VOI LUT Module:传送门
- Presentation LUT Module:传送门
- Palette Color Lookup Table Module:传送门
- Red Palette Color Lookup Table Descriptor Attribute:传送门