【Dicom标准】dicom数据中pixelData显示处理流程详细介绍

文章目录

    • 1.概述
    • 2.Dicom
      • [2.1 Dicom标准](#2.1 Dicom标准)
      • [2.2 Dicom文件](#2.2 Dicom文件)
    • 3.转换流程
      • [3.1 GrayScale转P-Values](#3.1 GrayScale转P-Values)
        • [3.1.1 Modality Transformation](#3.1.1 Modality Transformation)
        • [3.1.2 Mask Subtraction](#3.1.2 Mask Subtraction)
        • [3.1.3 VOI Transformation](#3.1.3 VOI Transformation)
        • [3.1.4 Presentation Transformation](#3.1.4 Presentation Transformation)
      • [3.2 Indexed Color转P-Values](#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 SlopeModality LUT Sequence互斥存在的,Rescale SlopeRescale 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 DescriptorLUT 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.参考资料

相关推荐
西哥写代码1 个月前
基于cornerstone3D的dicom影像浏览器 第三十一章 从PACS服务加载图像
javascript·pacs·dicom
翟天保Steven1 个月前
DCMTK&OpenCV-构建DICOM图像查看器
opencv·dicom·dcmtk
martian6652 个月前
深入详解DICOMweb:WADO与STOW-RS的技术解析与实现
开发语言·dicom
西哥写代码2 个月前
基于cornerstone3D的dicom影像浏览器 第二十四章 显示方位、坐标系、vr轮廓线
javascript·3d·vue3·vr·dicom·cornerstonejs
西哥写代码2 个月前
基于cornerstone3D的dicom影像浏览器 第二十三章 mpr预设窗值与vr preset
javascript·3d·vue3·dicom·cornerstonejs
martian6652 个月前
在Windows系统中使用C++与Orthanc交互:基于DICOMweb的医学影像应用开发
开发语言·人工智能·开源·dicom
martian6652 个月前
掌握Python编程:从C++/C#/Java开发者到AI与医学影像开发专家
开发语言·人工智能·python·dicom
martian6652 个月前
医学影像系统性能优化与调试技术:深度剖析与实践指南
开发语言·系统安全·dicom
keguoquan4 个月前
Dicom纯js的三维重建影像浏览器
三维重建·dicom·医学影像·影像浏览器·胶片打印