3D Slicer:从入门到精通——数据模块之DICOM

news2024/11/19 4:19:46

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个或多个
        • 实例(通常,每个系列包含多个实例,每个实例对应图像的单个切片)

成像检查的结果是,成像设备生成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导入
  1. 确保安装了所有必需的Slicer扩展。Slicer核心包含用于导入图像的DICOM导入插件,但其他信息对象可能需要额外的扩展。例如,SlicerRT扩展需要用于导入/导出放射治疗信息对象(RT结构集、剂量、图像、计划)。定量报告扩展需要导入导出DICOM分割对象、结构化报告和参数图。 参见支持的数据格式部分中的完整列表。
  2. 转到DICOM模块
  3. 选择包含DICOM文件的文件夹
    • 选项A:将包含DICOM文件的文件夹拖放到Slicer应用程序窗口。
    • 选项B:单击DICOM浏览器左上角的“导入”按钮。选择包含DICOM文件的文件夹。
      • 导入按钮有一个下拉菜单,可以通过单击右侧的小向下箭头按钮显示。当前菜单中的唯一项是“将导入的文件复制到DICOM数据库”选项。启用此选项以将所有导入的DICOM文件从其原始位置复制到Slicer DICOM数据库。这在从可移动媒体(CD/DVD/USB驱动器或远程驱动器)加载数据时很有用,以便在媒体弹出后仍能加载数据集。如果禁用复制选项,则DICOM数据库中只会存储导入文件的路径(以及最常用的DICOM标签的值)。

:::{note}

将文件夹拖放到Slicer应用程序时,Slicer会显示一个弹出窗口,询问该怎么做——单击确定(“将目录加载到DICOM数据库中”)。导入完成后,转到DICOM模块。

:::

DICOM加载
  1. 转到DICOM模块。如果DICOM数据库窗口尚未显示,请单击“显示DICOM数据库”(显示患者、研究和系列列表)。
  2. 双击要加载的患者、研究或系列。
  3. 单击“显示DICOM数据库”按钮以在数据库浏览器(加载更多数据)和查看器(查看已加载到场景中的内容)之间切换

:::{admonition} 提示

选择的患者/研究/系列可以一次加载,首先选择要加载的项。Shift单击以选择范围,Ctrl单击以选择/取消选择单个项目。如果选择患者或研究列表中的项目,则默认情况下将加载属于该项目的所有系列。单击“加载”按钮加载选定的项目。

:::

高级数据加载:DICOM数据通常可以以不同的方式解释。如果应用程序加载的数据与预期不同,请选中“高级”复选框,单击“检查”按钮,选择底部列表中的所有项目(包含DICOM数据、读取器、警告列),然后单击“加载”。

从DICOM数据库中删除数据

通过右键单击患者、研究或系列,可以从DICOM数据库中删除条目。请注意,为避免意外数据丢失,如果仅将链接添加到数据库,则Slicer不会删除相应的图像数据文件。复制到DICOM数据库的DICOM文件将从数据库中删除。

将数据从场景导出到DICOM数据库

场景中的数据可以导出为DICOM格式,存储在DICOM数据库或导出为DICOM文件:

  1. 确保安装了所有必需的Slicer扩展。Slicer核心包含用于导出图像的DICOM导出插件,但其他信息对象可能需要额外的扩展。
    • SlicerRT扩展需要导入/导出放射治疗信息对象:RT结构集、RT剂量、RT图像、RT计划。
    • 定量报告扩展需要导入/导出DICOM分割对象、结构化报告和参数图。
    • 参见支持的数据格式页面中的完整列表。
  2. 转到数据模块或DICOM模块。
  3. 右键单击数据树中的数据节点,将其转换为DICOM格式。
  4. 在导出对话框的左下角选择导出类型。这是必要的,因为可能有几种DICOM信息对象可以存储相同类型的数据。例如,分割可以存储为DICOM分割对象(现代DICOM)或RT结构集(传统表示,主要用于放射治疗计划)。
    • “Slicer数据包”导出类型通过将场景MRB包封装在DICOM文件中,将整个场景写入DICOM格式。结果是DICOM次要捕获对象,可以存储在任何DICOM存档系统中。此次要捕获信息存储了场景的所有细节,但只有3D Slicer可以解释数据。
    • 导出类型:一旦用户选择了一个节点,DICOM插件会为它们可以导出的系列生成可导出项。结果列表出现在此部分中,按插件分组。置信度数是该插件单个系列的置信度数的平均值。
  5. 可选:编辑将用于导出数据集的DICOM标签。选择研究的元数据将自动填充到导出对话框中,您可以选择要导出的Slicer体积。
    • DICOM标签编辑器由多个表格组成。顶部是患者和研究的常用标签表,下面是各个系列的标签表。
    • 显示表格中的“标签”并不总是直接写入DICOM标签,它们只是供DICOM插件在导出的文件中填写DICOM标签。这提供了更大的灵活性,DICOM插件可以自动填充一些信息,插件可以在此列表中公开其他导出选项(例如压缩、命名约定)。
    • 保存修改的标签:选中此复选框以将新标签值持久保存到场景中。
    • 如何设置唯一标识符标签:
      • StudyInstanceUID标签指定新系列将添加到的患者和研究。如果值设置为空,则会创建一个新研究。建议在同一研究的系列中保持所有患者和研究值(PatientNamePatientIDStudyID等)相同。
      • SeriesInstanceUID标签标识图像系列。默认情况下,其值设置为空,这将导致创建新的UID,从而创建新的系列。在极少数情况下,用户可能希望指定UID,但UID不能是任何现有的UID,因为这会导致导出的图像切片混入另一个系列。因此,仅当UID不用于数据库中已有图像时才接受该UID。
      • FrameOfReferenceUID标签指定空间参考。如果两个图像具有相同的参考框架UID值,则意味着它们在空间上对齐。默认情况下,该值为空,这意味着创建一个新的参考框架UID,因此导出的图像不与任何其他图像相关联。如果一个图像在空间上注册到另一个图像,则建议从另一个图像复制参考框架UID值,因为在某些图像审查软件中,这可能是融合显示图像所必需的。
  6. 单击导出
    • 如果发生任何错误,会显示简短的消息。有关错误的更多详细信息,请参阅应用程序日志。

注意:

  • 要在不将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元数据

  1. 转到DICOM模块
  2. 右键单击要检查的DICOM数据库窗口中的项目
  3. 选择“查看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:

  1. 将包含数据的目录拖放到Slicer窗口。您将收到一个提示“选择用于您的数据的读取器?将目录加载到DICOM数据库中。”接受该选择。您将看到目录内容被索引时的进度更新。如果目录包含DICOM数据,并且导入成功,完成后您将看到成功导入了多少患者/研究/系列/实例项的消息。
  2. 导入完成后,您将看到DICOM浏览器窗口列出当前索引的所有患者/研究/系列。接下来,您可以从DICOM浏览器窗口中选择各个项目并加载它们。
  3. 一旦使用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文件丢失或损坏。没有可靠的机制来区分由于减少患者剂量而未采集的切片(例如,为了减少患者剂量)或采集后丢失的切片。

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

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

相关文章

Redis常见基本类型(5)-List, Set

List 命令小结 命令及解释时间复杂度lpush/rpush key value[key value...](向右/左端插入元素)O(k), k是元素个数linsert key before | after pivot value(在某个坐标之前/右插入元素)O(n), n是pivot距离头尾的距离lrange start end(获取从start到end部分的元素)O(s n): s是…

特朗普竞选带火PoliFi,以Bitget为例

以特朗普系列Meme币为代表的政治金融(PoliFi)概念币市场正在掀起热潮,前美国总统特朗普(Donald Trump)在本月稍早公开力挺加密货币,接着又在周二宣布接受比特币、以太币、SOL、USDC、DOGE…等政治献金,让相关通证高涨。 据CoinGecko数据&…

系统架构设计师【第1章】: 绪论 (核心总结)

文章目录 1.1 系统架构概述1.1.1 系统架构的定义及发展历程1.1.2 软件架构的常用分类及建模方法1.1.3 软件架构的应用场景1.1.4 软件架构的发展未来 1.2 系统架构设计师概述1.2.1 架构设计师的定义、职责和任务1.2.2 架构设计师应具备的专业素质1.2.3 架构设计师的知识…

linux开发之设备树基本语法一

设备树的根节点 设备树子节点和子子节点,子节点在根节点范围内 包含子节点以及子子节点 节点名称 比如这里led就是这个gpio的小名,可以直接用 gpio22020101是这里的名字,也就是要用这个gpio,符号后面的一串数字使用了这个gpio的寄存器地址,因为可能会用很多gpio,所以加入寄存…

纯前端怎么实现不同标签页下的数据通信

前言 我记得之前有做过这样的一个需求——可以简化的看作为一个 TODO List ,我打开了两个 tab 页,都是对应这个 TODO List 。 然后我在 A 页面新增一个,不出意外的话,在 B 页面是看不到的。产品当时跟我提了一下这个&#xff0c…

K-独立钻石(dfs),G-邪恶铭刻(贪心)

这两题&#xff0c;都是应该赛场上A出来的。 K.独立钻石 当时一直关注点在 I. Path Planning&#xff0c;没关注榜单&#xff0c;K,也能写&#xff0c;也就是dfs,从数据范围可以看出&#xff0c;直接暴力搜索。 代码 #include<bits/stdc.h> #define int long long #d…

JavaScript的当前时间设置及Date的运算

作者:私语茶馆 1.场景描述 如下图,在HTML刚加载时,需要将开始时间设置为默认当前时间,结束时间设置为当前时间后7天的时间。手工填写时间时,时间段不超过30天。 这里涉及到两个技术点: 1)Input Date的当前时间设置 2)date的运算 由于是动态修改HTML,所以采用…

【软件设计师】算法

1、算法的效率 时间复杂度:程序从开始到结束所需要的时间 空间复杂度&#xff1a;算法在运行过程中临时占用存储空间大小的度量 时间渐近复杂度&#xff1a;时间复杂度由最高次幂决定(判断大小技巧&#xff1a;将n10代入&#xff09; O(log2 n):二分查找法 O(n&#xff09;:for…

Echarts x轴坐标二级分组

在使用echarts 封装组件的时候&#xff0c;偶尔会遇到需要x轴坐标进行二层分组的需求。那么如何对echarts 进行二层分组呢&#xff0c;有以下几个步骤&#xff1a; 仅介绍二层分组的逻辑。有兴趣的可以进行三层延伸。 1&#xff0c;修改echarts Options 中xAxis 的配置。 此…

OpenHarmony 实战开发PhotoView——支持图片缩放、平移、旋转的一个优雅的三方组件

简介 PhotoView是OpenAtom OpenHarmony&#xff08;简称“OpenHarmony”&#xff09;系统的一款图片缩放及浏览的三方组件&#xff0c;用于声明式应用开发&#xff0c;支持图片缩放、平移、旋转等功能。 使用场景 PhotoView为广大OpenHarmony应用开发者在处理图片时&#xf…

prompt提示词:如何让AI帮你提一个好问题

我们看完一篇文章的时候&#xff0c;有时候发给AI后&#xff0c;不知道如何问AI&#xff0c;不知道问哪些问题&#xff0c;你使用这个提示词&#xff0c;就可以让AI帮你想一个好问题&#xff0c;然后你用AI想好的问题再去问AI 能提出一个好的问题是非常难的 提示词 结合文章…

出现 Transaction rolled back because it has been marked as rollback-only 解决方法

目录 1. 问题所示2. 原理分析3. 解决方法1. 问题所示 用户反馈的Bug如下所示: Transaction rolled back because it has been marked as rollback-only截图如下: 浏览器终端同样显示: 2. 原理分析 错误表明,在事务的生命周期内,遇到了某个异常或条件,导致该事务被标记…

elemnt ui 时间选择器。 当前日期往前推6个月以前的的不可选择

<div class"hengxiang"><div class"lefttitle titlesBt" style"color:#15a66a;"><div>建单起始日期</div><el-date-picker class"elinputs" type"date" placeholder"请输入起始日" v-…

【基础篇-Day7:JAVA面向对象的初级使用】

目录 1、类和对象1.1 类的介绍1.2 类和对象的关系1.3 类的组成 2、对象内存图2.1 单个对象内存图2.2 两个对象内存图2.3 两个引用指向相同内存图 3、成员变量和局部变量3.1 成员变量和局部变量的区别 4、this关键字4.1 this可以解决的问题4.2 this介绍4.3 this内存图4.4 this总…

01 一文理解,Prometheus详细介绍

01 一文理解&#xff0c;Prometheus详细介绍 介绍 大家好&#xff0c;我是秋意零。 Prometheus 是一个开源的系统监控和报警工具包&#xff0c;最初由SoundCloud开发&#xff0c;并在2012年作为开源项目发布。Prometheus 目前由Cloud Native Computing Foundation&#xff08…

git 学习(一)

一、版本控制 &#xff08;一&#xff09;介绍 版本迭代 每一次更新代码 都会出现新的版本如果我们需要之前的版本的文件 我们就得需要版本控制的文件 每一次更新的结果我们都保存下来 多人开发必须要用版本控制器 否则代价会很大 &#xff08;二&#xff09;主流的版本控制…

中科驭数驭云、超低时延网络案例双双入选第七届数字中国建设峰会数字化转型典型应用案例

5月24日-25日&#xff0c;第七届数字中国建设峰会在福州召开。在“数字赋能民营经济专业工作会议”上&#xff0c;中关村云计算产业联盟发布了《2024中小企业数字化转型典型应用案例集》&#xff0c;中科驭数驭云、超低时延网络两大方案入选。 作为国内领先的DPU芯片及解决方案…

初识C语言——第二十六天

函数的递归1 什么是递归呢&#xff1f; 递归的两个必要条件 void print(unsigned int n) {if (n > 9){print(n / 10);}printf("%d ", n % 10); }int main() {unsigned int num 0;scanf("%u", &num);//123//递归-函数自己调用自己print(num);//pr…

Ubuntu20.04安装ffmpeg,并捕获视频流

工控机&#xff1a;幻影峡谷 系统&#xff1a;Ubuntu20.04 摄像头&#xff1a;杰瑞微通环星光USB摄像头记录一下使用ffmpeg拉取视频流的原因&#xff1a;刚开始用的是ubuntu系统自带的 茄子 软件&#xff0c;但是视频流很卡&#xff08;非常卡&#xff0c;基本上不能用&#xf…

nuxt3+Element Plus项目搭建过程记录

背景 本文只记录项目搭建过程中遇到的一些问题和关键点&#xff0c;nuxt框架的说明和API请参照官网学习 官网&#xff1a;https://nuxt.com/docs/getting-started/introduction 1. 初始化项目 指令如下: npx nuxilatest init <project-name>我在安装过程中出现报错&a…