【DICOM医学影像1】数据格式存储于显示,基本知识科普指南

news2025/1/21 5:52:41

DICOM(Digital Imaging and Communications in Medicine)数据格式,是医学影像存储中的标准格式。无论是X光、CT,还是MRI等等影像,采集的原理不同,但是存储的格式一般都是统一的。本文就对DICOM文件的图像显示,做个介绍。

要显示DICOM格式的医学图像,必须将原始图像数据经过一系列的转换才能得到可直接在显示设备上显示的数据(称之为P Values)。DICOM医学图像显示需要经过Modality LUT、VOI LUT、Presentation LUT三个转换过程,最终输出的P Values才是可以直接显示的图像数据。

下图展示了从dicom中的pixel到显示的gray data的全过程,和相关需要的参数。
1
其中:

  • LUT:是Look Up Table查找表缩写
  • VOI:是Volume of Interest感兴趣区域缩写
  • P Values:是Presentation Values表现值缩写

为什么显示要经过这样繁琐的过程?

通常不同生产厂商的设备很难保证在一种设备上生成的图像和其他生产厂商的同类型设备上生成的图像在度量上是一致的,为此就需要将不同设备厂家产生的图像的原始数据转换到一个标准的度量空间, Modality LUT转换就是完成这个功能的。

CT成像技术为例,我们已经知道人体的灰度范围是-1000到+1000。但是因为设备厂家不同采集后的数据可能会有偏差,比如假设A组织标准范围是50到200,但是设备厂家1出来的可能是60到210,设备2出来的可能是40到190。如果每个厂家设备都有偏差那么我们就没有办法根据灰度值来评判组织(因为我这里的肺检测出来时150,到了你那里可能就变成140了)。

所以DICOM标准要求设备厂家在导出数据的时候要将自身设备出来的灰度范围变换到标准的-1000~1000范围内。也就是说Modality LUT是设备厂家自身与标准之间的一次变换映射

DICOM 分类上可以查到这四个 Tag 分成两个模组,以下举例几个相关的关键 Tag

  1. Modality LUT
- (0028,1052) Rescale Intercept
- (0028,1053) Rescale Slope
- (0028,1054) Rescale Type
- (0028,3000) Modality LUT Sequence
    - (0028,3002) LUT Descriptor
    - (0028,3003) LUT Explanation
    - (0028,3004) Modality LUT Type
    - (0028,3006) LUT Data
  1. VOI LUT
- (0028,1050) Window Center
- (0028,1051) Window Width
- (0028,1056) VOI LUT Function
- (0028,3010) VOI LUT Sequence
    - (0028,3002) LUT Descriptor
    - (0028,3003) LUT Explanation
    - (0028,3006) LUT Data

其中:

  • 窗位(Window Center):代表可视范围(或是感兴趣区域)的 CT 值范围中心
  • 窗宽(Window Width):可视范围大小
  • 调整斜率(Rescale Slope)
  • 调整截距(Rescale Intercept)

以上几个属性(Attribute)使用要注意几个规则:

  • Window Center (0028,1050) 与 VOI LUT Sequence (0028,3010) 选择一个使用
  • Window Center (0028,1050) 须与 Window Width (0028,1051) 搭配使用
  • Rescale Intercept (0028,1052) 与 Modality LUT Sequence (0028,3000) 选择一个使用
  • Rescale Intercept (0028,1052) 须与 Rescale Slope (0028,1053) 搭配使用

一、Modality LUT

看到这边就大概知道为什麽还要 Rescale Intercept Rescale Slope ,为了转换成 CT 值(HU)

这部分的属性值需要设备厂商正确提供才能准确的把拍摄的图像数值转换成对照的 CT 值。常规转换公式如下:
在这里插入图片描述

当我们要将CT值映射到8-bit [0,255]萤幕上显示,可以用以下一元二次方程式来计算
在这里插入图片描述
在这里插入图片描述
1

上述公式要转换到16-bit/12-bit/10-bit值域,只要把255替换成欲转换值域的最大值即可。一般情况下,

  • Rescale Intercept(0028,1052)预设为 0;
  • Rescale Slope(0028,1053)预设为 1

这边补充一个网上对 InterceptSlope 的概念说明,为什么要引入这两个参数:

CT 生成的图像数值范围是 [-1024…+32768] 共 33793 阶,而 DICOM 的 CT 影像常用 12-bit 储存数据,最多储存 4096 阶,为了能将 CT 能表示的数值存入 DICOM 档案内,所以使用截距斜率进行转换

二、VOI LUT

VOI LUT是将CT值,转化为灰度值,用于显示。其中

  • 窗位(Window Center/Window Level):代表可视范围(或是感兴趣区域)的 CT 值范围中心
  • 窗宽(Window Width):可视范围大小

用下面这张图就很好理解 WL WW 的功用,用来增强我们想关注的部位的呈现效果

在这里插入图片描述

像上图 AirDense BoneCT 灰阶值有 2001 阶,若要映射到用 8-bit 显示灰阶萤幕,只能使用 0~255256 阶 (比如 Windows 的 sRGB)

WL, WW 的设定好坏,关係到医生是否能准确的分析出病徵有很大关係。基于以上原因,那只要把关注几个部位的对应 CT 值框进 WL, WW 内,那就可以很清楚看出异常病灶处

以下列出几个换算公式:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  1. 窄窗宽 (Narrow Window Width)
  • 对比度(Contrast)增加
  • 适合有相似的衰减值(HU/CT)的部位,比如:软组织
  1. 宽窗宽 (Wide Window Width)
  • 对比度(Contrast)减少
  • 适合衰减值(HU/CT)明显不同的部位,比如:肺与支气管

Window Center控制影像的亮度(Brightness),而 Window Width 控制影像的对比度(Contrast)。调整窗位与窗宽的影响如下:

  • Window Center 越大亮度越暗,反之越小亮度越亮
  • Window Width 越大对比度越低,反之越小对比度越高

如下:垂直方向表示WC亮度变化(下到上→亮到暗);水平方向表示WW对比度变化(左到右→高到低)

在这里插入图片描述

总结可发现: WC, WW 是针对 CT 图像来设计,计算上都要把数值转换为 CT 值才能做窗位、窗宽调整。

这个转换包括把多余高位 bit 变成 0(最低灰阶值),低位 bit 变成最高灰阶值(8-bit: 255, 10-bit:1023, 12-bit: 4096, 14-bit: 16383, 16-bit: 65535),再用 Rescale Intercept 与 Rescale Slope 作单位换算。

三、杂记

到此会发现都没说到最开始提到的 VOI LUT SequenceModality LUT Sequence,这两个主要是给非常规的转换而来,主要方法是用查表映射(Lookup Table)对应数值

  • VOI LUT Sequence 的几个属性就单纯查表对应使用

  • Modality LUT Sequence 除了查表用属性外,还有一个 Modality LUT Type(0028,3004) 来指明转换后的数值单位(除了 HU 也可能使用光电量测单位)

面对显示器往往只有 8-bit,而数据有 12-16 bit 的落差,过去的演算法把数据的 Max 到 Min 之间转换到 8-bit 的 0-255,过程是个有损转换,最终得到的图像常常突现一些噪声(Noise)

针对这些问题,研究学者提出几项要求来规范转换的演算法,目前转换方式便是基于以下这些要求设计出来:

  • 充分利用 0-255 之间的有效显示范围
  • 尽量减少数值压缩带来的损失
  • 不能损失应该凸显的组织部分

总结下,在DICOM文件存储标准中,Modality LUT、VOI LUT 和 Presentation LUT 是用于图像处理和显示的不同类型的查找表。它们在医学影像中的处理和呈现中起着重要的作用。

  1. Modality LUT(Modality Lookup Table):模态查找表
    Modality LUT 用于将图像数据从设备特定的原始单位(例如CT值、MR信号强度等)转换为更具有物理含义的单位。它可以用来调整图像的对比度和亮度等,以确保图像在显示时具有适当的视觉效果。Modality LUT 通常由设备厂商在图像采集时应用,以便在图像存储时进行修正。

  2. VOI LUT(VoiLookup Table):值域查找表
    VOI LUT 用于调整图像的值域,即图像中各像素的灰度值。它可以用于增强或减弱图像中不同结构的对比度,以更好地突显感兴趣的解剖结构。VOI LUT 可以在显示过程中应用,以适应不同的显示环境和需求。

  3. Presentation LUT(Presentation Lookup Table):呈现查找表
    Presentation LUT 用于将图像数据从原始的灰度值映射到显示设备的灰度范围。它用于确保图像在不同的显示设备上具有一致的外观。Presentation LUT 可以根据显示设备的特性进行调整,以便在各种显示条件下都能获得良好的图像质量。

总之,Modality LUT、VOI LUT 和 Presentation LUT 是在DICOM标准中定义的不同类型的查找表,用于处理和呈现医学影像。它们在图像的获取、处理和显示过程中相互配合,以确保图像的质量和一致性。

参考内容:

  1. https://dotblogs.azurewebsites.net/MemoryRecall/2021/07/17/170824
  2. https://www.cnblogs.com/grass-and-moon/p/16595919.html
  3. https://programming.vip/docs/dicom-image-display-dcmtk-three-conversions-of-pixel-data.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/883857.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Hands on RL 之 Deep Deterministic Policy Gradient(DDPG)

Hands on RL 之 Deep Deterministic Policy Gradient(DDPG) 文章目录 Hands on RL 之 Deep Deterministic Policy Gradient(DDPG)1. 理论部分1.1 回顾 Deterministic Policy Gradient(DPG)1.2 Neural Network Difference1.3 Why i…

大模型PEFT技术原理(三):Adapter Tuning及其变体

随着预训练模型的参数越来越大,尤其是175B参数大小的GPT3发布以来,让很多中小公司和个人研究员对于大模型的全量微调望而却步,近年来研究者们提出了各种各样的参数高效迁移学习方法(Parameter-efficient Transfer Learning&#x…

java17新特性+ZGC

ZGC垃圾收集 11引入的追求低延迟的垃圾回收器 1.ZGC的内存布局 1.1 region 和G1一样,也是基于Region的堆内存布局。但是ZGC的Region具有动态性:动态创建、动态销毁、动态数据容量。 1.2 垃圾回收机制 相较于CMS,ZGC只有6个阶段&#xff1…

同步、异步、协程

目录 同步异步https 异步请求: 协程1.为什么会要协程?2.异步的运行流程是什么3.协程的原语操作4.协程的定义?5.调度器的定义?6.调度的策略?7. api封装, hook8.多核的模式?9.协程的性能?10.要有哪些案例?nty_servernty_ mysql_client.cnty_ mysql oper.cnty_ …

Python项目实战:基于napari的3D可视化(点云+slice)

文章目录 一、napari 简介二、napari 安装与更新三、napari【巨巨巨大的一个BUG】四、napari 使用指南4.1、菜单栏(File View Plugins Window Help)4.2、Window:layer list(参数详解)4.3、Window:layer…

city walk结合VR全景,打造新时代下的智慧城市

近期爆火的city walk是什么梗?它其实是近年来备受追捧的城市漫步方式,一种全新的城市探索方式,与传统的旅游观光不同,城市漫步更注重与城市的亲密接触,一步步地感受城市的脉动。其实也是一种自由、休闲的方式&#xff…

vscode搭建java开发环境

一、配置extensions环境变量VSCODE_EXTENSIONS, 该环境变量路径下的存放安装组件: 二、setting配置文件 {"java.jdt.ls.java.home": "e:\\software\\jdk\\jdk17",// java运行环境"java.configuration.runtimes": [{"…

分类预测 | MATLAB实现DRN深度残差网络多输入分类预测

分类预测 | MATLAB实现DRN深度残差网络多输入分类预测 目录 分类预测 | MATLAB实现DRN深度残差网络多输入分类预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.分类预测 | MATLAB实现DRN深度残差网络多输入分类预测 2.代码说明:MATLAB实现DRN深度残差网络…

信捷 XDH Ethercat A_GearIn指令与轴配置

在前面的文章中描述了A_FOLLOW指令,有时不能满足要求,需要更高级的指令A_GearIn指令。 下面的例子A_GearIn指令和CNT_AB指令 实现手轮动马达动,手轮停马达停,手轮转的快马达也转得快。(手轮输出接到PLC的X0和X1点&am…

【内测】百度AI搜索体验

收到百度搜索AI体验邀请,简单测试了一下,目前支持文案创作,AI绘画等。 文案创作功能还行,绘画功能效果比较差。

【数据库】P4 过滤数据 WHERE

过滤数据 WHERE 简介WHERE 子句操作符检测单个值案例范围值检查 BETWEEN AND空值检查 NULL 简介 数据库表一般包含大量的数据,很少需要检索表中的所有行。我们只检索所需数据需要指定搜索条件(search criteria),搜索条件也称为过滤条件(filter conditio…

【每日一题】617. 合并二叉树

【每日一题】617. 合并二叉树 617. 合并二叉树题目描述解题思路 617. 合并二叉树 题目描述 给你两棵二叉树: root1 和 root2 。 想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会&#xff…

SpringBoot携带Jre绿色部署项目

文章目录 SpringBoot携带Jre绿色部署运行项目1. 实现步骤2. 自测项目文件目录及bat文件内容,截图如下:2-1 项目文件夹列表:2-2. bat内容 3. 扩展: 1.6-1.8版本的jdk下载 SpringBoot携带Jre绿色部署运行项目 说明: 实…

【数据结构与算法】十大经典排序算法-归并排序

🌟个人博客:www.hellocode.top 🏰Java知识导航:Java-Navigate 🔥CSDN:HelloCode. 🌞知乎:HelloCode 🌴掘金:HelloCode ⚡如有问题,欢迎指正&#…

基本变量与引用变量的区别

基本数据类型创建的变量,称为基本变量,该变量空间中直接存放的是其所对应的值; 而引用数据类型创建的变量,一般称为对象的引用,其空间中存储的是对象所在空间的地址。 public static void func() { int a 10; int b …

vue3 如果切换角色后权限不同 怎么清空之前添加动态路由。

项目中切换角色后发现会保留前面一个角色的权限,方法一是到login页面,权限重新reload,不过这样确实会影响体验,如果不采用此方案的话,你可以看下我从发现问题到解决问题的思路: 1、首先要找到一个初始状态…

光耦继电器:实现电气隔离的卓越选择

光耦继电器是一种常用的电子元件,用于实现电气隔离和信号传输。在工业控制、自动化系统和电力电子等领域,光耦继电器具有独特的特点和优势。本文将从可靠性、隔离性、响应速度和适应性等方面对光耦继电器的特点进行概述。 光耦继电器是一种典型的固态继电…

24、springboot的自动配置01--类条件注解@ConditionalOnClass、bean条件注解@ConditionalOnBean

springboot的自动配置 ★ 自动配置 Spring Boot的自动配置通常可根据依赖库自动触发——当Spring Boot检测到项目中包含某些框架的JAR包时,Spring Boot就会触发自动配置。其实通过EnableAutoConfiguration注解来启动▲ 其实你用到SpringBootApplication&#xff0…

vmware添加额外网卡

为vmware虚拟机添加额外网卡 vmware 配置管理界面配置系统内配置查看系统中的网卡状态启用网卡重启网络修改IP地址 vmware 配置管理界面配置 关闭运行的的系统。 编辑虚拟机设置—》添加–》选择网络适配器 选择网络适配器的模式 系统内配置 查看系统中的网卡状态 第一…