DICOM
文章目录
- DICOM
- 概述
- DICOM简介
- Slicer DICOM数据库
- DICOM插件
- 如何操作
- 创建DICOM数据库
- 将DICOM文件读入场景
- DICOM导入
- DICOM加载
- 从DICOM数据库中删除数据
- 将数据从场景导出到DICOM数据库
- 将数据从场景导出到DICOM文件
- DICOM网络传输
- DICOMweb网络传输
- 查看DICOM元数据
- 面板及其用途
- 基本用法
- 故障排除
- 如何知道我拥有的文件是否使用DICOM格式存储?我如何入门?
- 当我点击“将选择加载到Slicer”时,收到错误消息“无法将...加载为标量体积”
- 我尝试导入DICOM文件目录,但浏览器中没有显示任何内容
- 显示了内容,但不是我预期的
- 我预期看到不同的图像
- 图像在一个轴上被拉伸或压缩
概述
该模块允许导入、导出和网络传输DICOM数据。Slicer支持DICOM功能的常用子集,其特定功能由临床研究的需求驱动:从磁盘读取和写入数据集,并通过DIMSE和DICOMweb网络协议进行网络传输——查询、检索、发送和接收数据集。
DICOM简介
医学数字成像和通信(DICOM)是信息交换数字放射学的广泛使用标准。在大多数情况下,医院使用的成像设备(CT和MR扫描仪)将生成保存为DICOM对象的图像。
DICOM按以下层次结构组织数据
- 患者 … 可以有1个或多个
- 研究(单次成像检查) … 可以有1个或多个
- 系列(单次图像采集,通常对应于单个图像体积) … 可以有1个或多个
- 实例(通常,每个系列包含多个实例,每个实例对应图像的单个切片)
- 系列(单次图像采集,通常对应于单个图像体积) … 可以有1个或多个
- 研究(单次成像检查) … 可以有1个或多个
成像检查的结果是,成像设备生成DICOM文件,每个文件对应一个实例,并标记有信息以确定系列、研究和患者信息,从而将其放置在层次结构中的正确位置。
标准定义了各种DICOM对象。最常见的对象类型是存储CT和MR扫描仪生成的图像体积的对象。这些对象通常每个系列会有多个文件(实例)。图像处理任务通常涉及分析整个图像体积,通常对应于单个系列。
有关DICOM标准的更多信息:
- DICOM主页:https://dicom.nema.org/
- 维基百科上的DICOM:https://en.wikipedia.org/wiki/DICOM
- 简洁的DICOM标签浏览器:https://dicom.innolitics.com
- 一个有用的标签查找网站:http://dicomlookup.com/
- 超链接版本的标准:https://web.archive.org/web/20180624030937/http://dabsoft.ch/dicom/
Slicer DICOM数据库
为了组织数据并允许更快的访问,Slicer保留了一个本地DICOM数据库,其中包含DICOM文件的副本(或链接),以及每个文件内容的基本信息。您可以在计算机上同时拥有多个数据库,并在它们之间切换,例如,如果它们包含不同研究项目的数据。每个数据库只是本地磁盘上的一个目录,其中有一些SQLite文件和子目录来存储图像数据。请勿手动修改这些目录的内容。DICOM数据可以通过文件导入或通过DICOM网络传输进入数据库。Slicer模块也可以使用计算结果填充DICOM数据库。
请注意,DICOM标准没有指定文件在磁盘上的组织方式,因此如果您从CDROM或其他方式从扫描仪传输DICOM数据,通常无法从文件或目录名称中看出内容。然而,一旦数据导入数据库,它将根据DICOM标准的患者/研究/系列层次结构进行组织。
DICOM插件
DICOM模块的主要功能是将采集数据组织映射到体积表示。即,DICOM文件通常描述图像捕获的属性,如CT采集期间表位置的序列,而Slicer在规则间隔的像素图像体积上操作。例如,如果在采集过程中表运动的速度不一致(这种情况在某些对比剂’螺栓追踪’扫描中可能发生),Slicer’s DICOM模块会警告用户采集几何不一致,用户在解释分析结果(如测量)时应谨慎。
这意味着Slicer通常会建议多种解释数据的方法(例如,将DICOM文件读取为扩散数据集或标量体积)。当通过检查文件可计算时,DICOM模块将默认选择最可能的解释选项。到目前为止,标准插件包括标量体积和扩散体积,而扩展可用于分割对象、RT数据和PET/CT数据。预计未来版本会有更多插件。长期目标是能够在DICOM数据对象中表示Slicer的大部分(如果不是全部)数据,因为标准会进化以支持它们。
如何操作
创建DICOM数据库
创建DICOM数据库是所有DICOM操作的前提。当第一次打开DICOM模块时,Slicer会自动创建一个新数据库。选择创建新数据库或打开先前创建的数据库。
您可以随时在DICOM模块面板/ DICOM数据库设置/ 数据库位置中打开其他位置的数据库。
将DICOM文件读入场景
由于DICOM文件通常位于多个文件夹中,它们可以互相引用,并且通常可以以不同的方式解释,因此将DICOM文件读入场景分为两个独立步骤:导入(索引文件以便在DICOM数据库浏览器中显示它们)和加载(在Slicer场景中显示选定的DICOM项)。
DICOM导入
- 确保安装了所有必需的Slicer扩展。Slicer核心包含用于导入图像的DICOM导入插件,但其他信息对象可能需要额外的扩展。例如,SlicerRT扩展需要用于导入/导出放射治疗信息对象(RT结构集、剂量、图像、计划)。定量报告扩展需要导入导出DICOM分割对象、结构化报告和参数图。 参见支持的数据格式部分中的完整列表。
- 转到DICOM模块
- 选择包含DICOM文件的文件夹
- 选项A:将包含DICOM文件的文件夹拖放到Slicer应用程序窗口。
- 选项B:单击DICOM浏览器左上角的“导入”按钮。选择包含DICOM文件的文件夹。
- 导入按钮有一个下拉菜单,可以通过单击右侧的小向下箭头按钮显示。当前菜单中的唯一项是“将导入的文件复制到DICOM数据库”选项。启用此选项以将所有导入的DICOM文件从其原始位置复制到Slicer DICOM数据库。这在从可移动媒体(CD/DVD/USB驱动器或远程驱动器)加载数据时很有用,以便在媒体弹出后仍能加载数据集。如果禁用复制选项,则DICOM数据库中只会存储导入文件的路径(以及最常用的DICOM标签的值)。
:::{note}
将文件夹拖放到Slicer应用程序时,Slicer会显示一个弹出窗口,询问该怎么做——单击确定(“将目录加载到DICOM数据库中”)。导入完成后,转到DICOM模块。
:::
DICOM加载
- 转到DICOM模块。如果DICOM数据库窗口尚未显示,请单击“显示DICOM数据库”(显示患者、研究和系列列表)。
- 双击要加载的患者、研究或系列。
- 单击“显示DICOM数据库”按钮以在数据库浏览器(加载更多数据)和查看器(查看已加载到场景中的内容)之间切换
:::{admonition} 提示
选择的患者/研究/系列可以一次加载,首先选择要加载的项。Shift单击以选择范围,Ctrl单击以选择/取消选择单个项目。如果选择患者或研究列表中的项目,则默认情况下将加载属于该项目的所有系列。单击“加载”按钮加载选定的项目。
:::
高级数据加载:DICOM数据通常可以以不同的方式解释。如果应用程序加载的数据与预期不同,请选中“高级”复选框,单击“检查”按钮,选择底部列表中的所有项目(包含DICOM数据、读取器、警告列),然后单击“加载”。
从DICOM数据库中删除数据
通过右键单击患者、研究或系列,可以从DICOM数据库中删除条目。请注意,为避免意外数据丢失,如果仅将链接添加到数据库,则Slicer不会删除相应的图像数据文件。复制到DICOM数据库的DICOM文件将从数据库中删除。
将数据从场景导出到DICOM数据库
场景中的数据可以导出为DICOM格式,存储在DICOM数据库或导出为DICOM文件:
- 确保安装了所有必需的Slicer扩展。Slicer核心包含用于导出图像的DICOM导出插件,但其他信息对象可能需要额外的扩展。
SlicerRT
扩展需要导入/导出放射治疗信息对象:RT结构集、RT剂量、RT图像、RT计划。定量报告
扩展需要导入/导出DICOM分割对象、结构化报告和参数图。- 参见支持的数据格式页面中的完整列表。
- 转到数据模块或DICOM模块。
- 右键单击数据树中的数据节点,将其转换为DICOM格式。
- 在导出对话框的左下角选择导出类型。这是必要的,因为可能有几种DICOM信息对象可以存储相同类型的数据。例如,分割可以存储为DICOM分割对象(现代DICOM)或RT结构集(传统表示,主要用于放射治疗计划)。
- “Slicer数据包”导出类型通过将场景MRB包封装在DICOM文件中,将整个场景写入DICOM格式。结果是DICOM次要捕获对象,可以存储在任何DICOM存档系统中。此次要捕获信息存储了场景的所有细节,但只有3D Slicer可以解释数据。
- 导出类型:一旦用户选择了一个节点,DICOM插件会为它们可以导出的系列生成可导出项。结果列表出现在此部分中,按插件分组。置信度数是该插件单个系列的置信度数的平均值。
- 可选:编辑将用于导出数据集的DICOM标签。选择研究的元数据将自动填充到导出对话框中,您可以选择要导出的Slicer体积。
- DICOM标签编辑器由多个表格组成。顶部是患者和研究的常用标签表,下面是各个系列的标签表。
- 显示表格中的“标签”并不总是直接写入DICOM标签,它们只是供DICOM插件在导出的文件中填写DICOM标签。这提供了更大的灵活性,DICOM插件可以自动填充一些信息,插件可以在此列表中公开其他导出选项(例如压缩、命名约定)。
- 保存修改的标签:选中此复选框以将新标签值持久保存到场景中。
- 如何设置唯一标识符标签:
StudyInstanceUID
标签指定新系列将添加到的患者和研究。如果值设置为空,则会创建一个新研究。建议在同一研究的系列中保持所有患者和研究值(PatientName
、PatientID
、StudyID
等)相同。SeriesInstanceUID
标签标识图像系列。默认情况下,其值设置为空,这将导致创建新的UID,从而创建新的系列。在极少数情况下,用户可能希望指定UID,但UID不能是任何现有的UID,因为这会导致导出的图像切片混入另一个系列。因此,仅当UID不用于数据库中已有图像时才接受该UID。FrameOfReferenceUID
标签指定空间参考。如果两个图像具有相同的参考框架UID值,则意味着它们在空间上对齐。默认情况下,该值为空,这意味着创建一个新的参考框架UID,因此导出的图像不与任何其他图像相关联。如果一个图像在空间上注册到另一个图像,则建议从另一个图像复制参考框架UID值,因为在某些图像审查软件中,这可能是融合显示图像所必需的。
- 单击导出
- 如果发生任何错误,会显示简短的消息。有关错误的更多详细信息,请参阅应用程序日志。
注意:
- 要在不将DICOM文件添加到DICOM数据库的情况下创建DICOM文件,请选中“导出到文件夹”选项并选择输出文件夹。
- 在临床情况下处理这些文件时应格外小心,因为非标准或不正确的DICOM文件可能会干扰临床操作。
- 要在导出前手动准备DICOM患者和研究,请转到数据模块(主题层次标签),右键单击数据树中的空白区域并选择创建新主题。同样可以在患者下创建新研究。
这个工作流程也在一个2分钟的视频教程中解释。
将数据从场景导出到DICOM文件
存储在数据库中的DICOM数据可以通过右键单击患者/研究/系列列表并选择“导出到文件系统”导出为DICOM文件。
加载到场景中的数据节点可以通过右键单击数据模块中的项目,选择导出为DICOM,启用“导出到文件夹”选项,并指定输出文件夹,直接导出为文件系统中的DICOM文件。
DICOM网络传输
DICOM也是一种网络通信标准,规定了数据在系统之间传输的方式。Slicer提供以下功能:
- DICOM监听器(C-STORE SCP):接收从远程计算机发送的任何数据并存储在Slicer DICOM数据库中
- DICOM发送器(C-STORE SCU):从Slicer DICOM数据库中选择数据并将其发送到远程计算机。支持传统的DIMSE和新的DICOMweb协议。
- 查询/检索(C-FIND SCU,C-FIND SCU):查询远程服务器上可用的图像列表并检索选定的数据。
注意: 要使用这些功能,您必须与您希望通信的其他DICOM节点的操作员协调。例如,您必须就网络端口和应用程序实体标题(AE Titles)等主题达成协议。请注意,并非所有设备都支持所有网络选项,因此配置可能具有挑战性且通常难以排除故障。
连接端口:端口104是标准的DICOM端口。所有低于1024的端口在类Unix系统(Linux和Mac)上需要root访问权限。因此,您可以使用sudo命令运行Slicer以便为DICOM监听器打开端口。或者,您可以使用其他端口,例如11112。您需要在连接的双方进行配置。一次只能有一个进程监听一个端口,因此如果有一个监听器在运行,第二个将无法启动。如果发生异常情况(崩溃),可能会保持端口打开,您需要杀死storescp辅助进程(或只需重新启动计算机)以释放端口。有关诊断信息,请查看错误日志。
DICOMweb网络传输
Slicer支持使用DICOMweb协议将DICOM项发送到远程服务器。在发送数据窗口中,在“目标地址”中设置完整的服务器URL并选择“DICOMweb”协议。
查看DICOM元数据
- 转到DICOM模块
- 右键单击要检查的DICOM数据库窗口中的项目
- 选择“查看DICOM元数据”
面板及其用途
基本用法
- 导入DICOM文件:将选定文件夹中的所有DICOM文件(包括子文件夹)扫描并添加到Slicer DICOM数据库。如果“导入目录模式”设置为“复制”,则Slicer会将导入的文件复制到数据库文件夹。建议从可移动媒体(CD/DVD/USB驱动器)导入文件时复制数据,以便在媒体弹出后仍能加载数据集。否则,它们只会在其原始位置被引用。
- 显示DICOM数据库:在DICOM浏览器和查看器(切片视图、3D视图等)之间切换
- 患者列表:显示数据库中的患者。所选患者的研究列在研究列表中。可以选择多个患者。
- 研究列表:显示当前选定患者的研究。可以选择多个研究。
- 系列列表:显示所选研究的系列(图像、结构集、分割、注册对象等)列表。
- 加载:单击此按钮将当前选定的可加载项加载到Slicer中。
- 已加载数据:显示当前加载到场景中的所有内容,可以通过单击眼睛图标在查看器中显示
其他选项:
- 搜索框:可以通过在这些字段中输入内容来过滤每个患者/研究/系列。
- 右键菜单项在患者/研究/系列列表中:
- **查看DICOM元数据:**查看选定系列文件头中存储的元数据
- **删除:**从数据库中删除选定项。如果数据集已复制到DICOM数据库中,则DICOM文件也会被删除。
- **导出到文件系统:**将选定项导出为DICOM文件到选定文件夹
- **发送到DICOM服务器:**使用DIMSE(C-store SCP)或DICOMweb(STOW-RS)协议将选定项发送到远程DICOM服务器。
高级加载(允许使用非默认选项加载DICOM数据集):
- **高级:**选中此复选框以显示高级加载选项
- **插件选择器部分:**您可以选择允许哪些插件检查选定系列以进行加载。如果单击DICOM模块面板底部的“DICOM插件”可折叠按钮,则显示此部分。
- **检查按钮:**在当前选定系列上运行每个DICOM插件,并在可加载项列表表中提供结果。
- **可加载项列表:**显示所选插件对选定系列的所有可能解释。默认情况下,最有可能正确解释该系列的插件被选中。如果要以不同方式加载数据,可以覆盖默认设置。并非总是存在一对一的映射,从所选系列到可加载项列表。
DICOM模块设置:
- DICOM网络传输:使用查询检索从远程服务器下载数据,设置通过C-store SCP接收数据
- DICOM数据库设置:允许您在磁盘上选择一个位置作为Slicer’s DICOM文件数据库。应用程序管理此文件夹的内容(存储元数据和导入的DICOM文件的副本):请勿手动将任何数据复制到此文件夹中。
- 其他设置可在菜单中找到:编辑 / 应用程序设置 / DICOM:
- 通用DICOM设置:
- 加载引用的系列将为您提供在打开分割时轻松加载源卷的选项。这也可以自动完成。
- DICOMScalarVolumePlugin设置:
- 您可以选择使用哪个后端库(当前为GDCM、DCMTK或GDCM与DCMTK后备,最后一个选项为默认选项)。这在某些数据不受任何一个库支持的情况下提供了选择。
- 采集几何规则化选项支持创建非线性变换,以纠正采集中的缺失切片或机架倾斜等问题。规则化变换也可以硬化到体积。更多信息参见此处
- 按时间自动加载子系列是将一些4D采集分解为单个体积的选项,但这是可选的,因为有些体积也按时间单位采集,不应拆分。
- 通用DICOM设置:
故障排除
如何知道我拥有的文件是否使用DICOM格式存储?我如何入门?
DICOM文件不需要特定的文件扩展名,可能很难轻松回答这个问题。然而,如果您有一个由临床扫描仪生成的数据集,它很可能是DICOM格式的。如果您怀疑您的数据可能是DICOM格式,最简单的方法可能是尝试将其加载为DICOM:
- 将包含数据的目录拖放到Slicer窗口。您将收到一个提示“选择用于您的数据的读取器?将目录加载到DICOM数据库中。”接受该选择。您将看到目录内容被索引时的进度更新。如果目录包含DICOM数据,并且导入成功,完成后您将看到成功导入了多少患者/研究/系列/实例项的消息。
- 导入完成后,您将看到DICOM浏览器窗口列出当前索引的所有患者/研究/系列。接下来,您可以从DICOM浏览器窗口中选择各个项目并加载它们。
- 一旦使用DICOM浏览器将数据加载到Slicer中,可以切换到“数据”模块以检查导入的内容。
当我点击“将选择加载到Slicer”时,收到错误消息“无法将…加载为标量体积”
加载失败的常见原因是由于不正确的匿名化导致DICOM文件损坏。患者姓名、患者ID和系列实例UID字段不应为空或缺失(匿名化器应将它们替换为其他有效字符串)。尝试加载原始的、未匿名化的序列和/或更改匿名化过程。
如果以上都没有帮助,请检查Slicer错误日志并在Slicer论坛上报告错误。如果您共享数据(例如,将其上传到Dropbox并在错误报告中添加链接),Slicer开发人员可以更快地重现和修复问题。
我尝试导入DICOM文件目录,但浏览器中没有显示任何内容
DICOM是一种复杂的数据表示方式,扫描仪和其他软件经常会生成“非标准”文件,这些文件声称是DICOM但实际上不符合规范。此外,规范本身有许多变体和特殊格式,Slicer无法理解。Slicer最常用于CT和MR DICOM对象,因此这些通常可以工作。
如果您在导入DICOM数据时遇到问题,请尝试以下步骤:
- 确保您遵循了DICOM加载说明。
- 我们不断改进应用程序(每天发布新的预览版本),因此您遇到的问题可能已在最近的版本中解决。尝试使用最新稳定版和最新夜间版的Slicer加载数据。
- 确保Slicer临时文件夹可写。可以在菜单:编辑 / 应用程序设置 / 模块 / 临时目录中选择临时文件夹。
- 尝试将数据和数据库目录移动到仅包含美国英语字符(ASCII)的路径,以避免可能的解析错误。不允许使用特殊的国际字符。
- 确保数据库目录位于有足够可用空间的驱动器上(1GB可用空间应该足够)。如果空间不足,您可能会在“内部错误”弹出窗口中看到此错误消息:在事件中抛出异常:调用未初始化的ctkDICOMItem上的方法
- 从本地存储(物理驱动器或直接连接到计算机的USB记忆棒)导入文件(不是网络驱动器、共享驱动器、云驱动器、Google驱动器、虚拟文件系统等)。
- 确保文件名不太长(低于几十个字符),并且在Windows上的完整文件路径低于约200个字符
- 要确认您的Slicer安装是否正确读取数据,请尝试加载其他数据,例如此匿名示例DICOM系列(CT扫描)
- 尝试使用不同的DICOM读取器导入:在应用程序设置 / DICOM / DICOMScalarVolumePlugin / DICOM读取器方法中:从DCMTK切换到GDCM(或从GDCM切换到DCMTK),重新启动Slicer,然后再次尝试加载数据集。
- 查看SlicerDcm2nii扩展是否会转换您的图像。您可以使用扩展管理器安装此模块。安装后,您将能够从Slicer使用Dcm2niixGUI模块。
- 尝试DICOM修补程序模块。
- 查看错误日志(菜单:查看 / 错误日志)中的信息。
- 通过选择添加数据中的一个文件尝试加载数据。 注意:确保打开显示选项,然后关闭单文件选项,以便将选定的系列加载为一个体积。一般来说,不建议这样做,因为加载的数据可能不完整或失真,但在某些情况下,当正确的DICOM加载失败时,它可能有效。
- 如果仍然无法加载数据,您可能需要找到一个将数据转换为Slicer可以读取的格式的工具。有时工具如FreeSurfer、FSL或MRIcron可以理解Slicer不原生处理的特殊格式。这些系统通常会导出Slicer可以读取的NIfTI文件。
- 对于存档研究,您确定您的数据是DICOM格式,还是可能存储在DICOM之前的专有MR或CT格式中?如果是后者,您可能希望尝试到2016年随MRIcron分发的dcm2nii工具。更新版本的MRIcron包括dcm2niix,它更适合现代DICOM图像。然而,旧版dcm2nii支持GE、Philips、Siemens和Elscint的专有格式。
- 如果以上都没有帮助,您可以通过在Slicer论坛上发布简短描述,描述您期望数据集包含的内容以及关于数据集的以下信息,向Slicer开发团队寻求帮助:
- 如果DICOM文件不包含患者机密信息,您可以共享这些文件:将数据集上传到某处(Dropbox、OneDrive、Google drive,…)并发布下载链接。请注意不要意外泄露私人健康信息(患者姓名、出生日期、ID等)。如果您希望从DICOM文件中删除标识符,可以查看DicomCleaner、gdcmanon或RSNA临床试验处理器软件。
- 如果无法共享DICOM文件,您可以共享DICOM元数据和应用程序日志。确保从文本中删除患者姓名、出生日期、ID和所有其他私人健康信息,将文件上传到某处(Dropbox、OneDrive、Google drive,…),并发布下载链接。
- 获取DICOM元数据:右键单击DICOM浏览器中的系列,选择查看元数据,并单击复制元数据按钮。将复制的文本粘贴到任何文本编辑器中。
- 获取DICOM加载的详细应用程序日志:为DICOM启用详细日志记录(菜单:编辑 / 应用程序设置 / DICOM / 详细日志记录),然后尝试加载系列(在DICOM浏览器中选择系列并单击“加载”按钮),并获取日志(菜单:帮助 / 报告错误 -> 将日志消息复制到剪贴板)。
显示了内容,但不是我预期的
我预期看到不同的图像
当您从DICOM加载研究时,它可能包含多个数据集,默认情况下Slicer可能不会显示您最感兴趣的数据集。转到数据模块/主题层次部分,单击“眼睛”图标显示/隐藏加载的数据集。显示体积后,您可能需要单击切片选择滑块左侧的小矩形图标(“调整切片查看器的视野…”)。
如果没有一个数据集是正确的,请按照“我尝试导入DICOM文件目录,但浏览器中没有显示任何内容”部分中描述的步骤进行操作。
图像在一个轴上被拉伸或压缩
一些非临床(工业或前临床)成像系统不会生成有效的DICOM数据集。例如,它们可能错误地假设切片厚度标签定义图像几何,而根据DICOM标准,图像切片位置必须用于确定图像几何。DICOM修补程序模块可以修复其中一些图像:从Slicer的DICOM数据库中删除图像文件,使用DICOM修补程序模块处理图像文件,然后将处理后的文件重新导入Slicer的DICOM数据库。如果图像仍然失真,请转到体积模块,打开体积信息部分,并调整图像间隔值。
扫描仪可能会生成具有不同图像切片间隔的图像体积。Slicer可以通过应用非线性变换在场景中表示此类图像。要启用此功能,请转到菜单:编辑 / 应用程序设置 / DICOM,并将采集几何规则化设置为应用规则化变换。切片视图、分割和许多其他功能直接在非线性变换体积上工作。对于某些其他功能,如体积渲染,您需要在体积上硬化变换:转到数据模块,在体积节点的行中,右键单击变换列,并选择硬化变换。
请注意,如果Slicer显示关于非均匀切片间隔的警告,则可能是由于DICOM文件丢失或损坏。没有可靠的机制来区分由于减少患者剂量而未采集的切片(例如,为了减少患者剂量)或采集后丢失的切片。