当前位置: 首页 > news >正文

【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 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.参考资料

  • 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:传送门

相关文章:

  • Flink作业三种部署模式:架构、配置与实战应用
  • 由浅入深详解前缀树-Trie树
  • OC—多界面传值
  • Python 深度学习基础:TensorFlow 入门——从张量到神经网络的实战指南
  • Python 爬虫简单示例
  • 关于存储与网络基础的详细讲解(从属GESP二级内容)
  • React 核心原理与Fiber架构
  • [XILINX]ZYNQ7010_7020_软件LVDS设计
  • Spring Boot 项目初始化
  • HCIP-Datacom Core Technology V1.0_4 OSPF路由计算
  • 抽象工厂设计模式
  • 从C++编程入手设计模式——责任链模式
  • 大模型应用:如何使用Langchain+Qwen部署一套Rag检索系统
  • 【机器学习四大核心任务类型详解】分类、回归、聚类、降维都是什么?
  • OpenGL ES 中的材质
  • 分布式ID生成方式及优缺点详解
  • [特殊字符] AIGC工具深度实战:GPT与通义灵码如何彻底重构企业开发流程
  • 电脑商城--购物车
  • Camera Sensor接口协议全解析(三):移动霸主——MIPI CSI-2架构拆解
  • 【数据结构】_二叉树部分特征统计
  • 做的比较好的网页设计网站/网络软文怎么写
  • 网站可以建几个人/市场调研的方法
  • 网站架构设计师工资水平/昆明seo网站管理
  • 1688一件代发跨境电商/seo网站优化案例
  • 有专门做礼品的网站吗/自己的网站怎么建立
  • 手机电影网站怎么做的/网站关键词优化排名