跳转到内容

MINC/软件开发/MINC1 文件格式参考

来自维基教科书,开放的书籍,为开放的世界

MINC 1.0 命名和使用约定

[编辑 | 编辑源代码]

MINC(医学影像 NetCDF)1.0 文件格式被设计为医学影像数据的规范,建立在 NetCDF(网络通用数据格式)标准之上。

本文档旨在通过定义 MINC 文件使用的基本变量、属性和约定来描述这种分层结构的细节。虽然此信息专门适用于 MINC 1.0 的实现,但其中大部分信息预计将适用于 MINC 2.0。主要的改变将是由于从 NetCDF 到 HDF5(分层数据格式)的转变而导致的结构化对象的适应或消除。MINC 2.0 可能需要对此规范进行大量的扩展和澄清。

本文档中的大部分信息摘自 Peter Neelin 的《MINC 程序员参考手册》。

注意:在本文档中,文字 MINC 变量名、属性名和预定义值将使用固定宽度字体。

MINC 将医学图像的维度与标准文本名称相关联,例如 'xspace' 或 'time'。这种关联既有助于澄清对每个维度的解释,也用于指定共享同一坐标空间的变量之间的关系。维度的长度在文件创建时定义。

NetCDF 对维度的模型非常简单,每个维度只与一个名称、一个数字标识符和一个长度相关联。为了扩展此模型以表示与 MINC 维度对象相关联的全部属性集,MINC 依赖于“维度变量”的概念,即与相应维度对象具有相同名称的变量。

虽然专用应用程序可以并且偶尔确实定义额外的维度,但 MINC 定义了以下标准维度名称


  • xspace - 空间轴,定义为从患者左侧增加到患者右侧。
  • yspace - 空间轴,定义为从患者后部增加到患者前部。
  • zspace - 空间轴,定义为从患者下部增加到患者上部。
  • time - 时间轴。
  • xfrequency - 空间频率轴。
  • yfrequency - 空间频率轴。
  • zfrequency - 空间频率轴。
  • tfrequency - 时间频率轴。
  • vector_dimension - 用于矢量场分量的轴。如果存在,此维度应是image变量变化最快的维度。与其他维度不同,此维度不与维度变量相关联。


MINC 变量分为四类。第一类是类,它定义用于保存实际图像数据和支持信息的数据对象和名称。第二类是变量属性类,它包含限定另一个变量的数据,例如,通过指定另一个变量数据的范围。第三类和第四类分别是维度类和维度宽度类,它们用于指定 MINC 文件中维度的属性。

标准 MINC 变量名称

[编辑 | 编辑源代码]
  • rootvariable - 此变量属于类,仅用于结构目的。它构成 MINC 变量层次结构的基础。
  • image - image变量属于类。它是实际包含 MINC 文件中图像数据的变量,因此它是使用任何类型和维度来定义的,以表示图像。按照惯例,MINC 认为image变量的第一个空间维度是“切片”维度,任何其他空间维度都被认为是“图像”维度。图像变量是 MINC 文件中唯一强制存在的变量
  • image-min - image-min变量属于变量属性类。如果启用按切片缩放图像数据,则此变量将包含 64 位浮点数据,它提供每个切片的实际范围的最低值。此变量和image-max变量的维数将对应于image变量的维数,省略“图像”维度和向量维度(如果使用)。例如,对于典型的 fMRI 数据,image-min变量将是一个 2D 数组,其维度为time和第一个声明的空间维度。请注意,image-min具有较低的维数是合法的。例如,该变量可以是一个标量,用于指定单个全局最大实际值。
  • image-max - image-maximage-min变量的对应变量。它的用法和结构直接类似,但它包含每个数据切片的实际数据范围的最大值。
  • study - 此变量属于类。它不包含任何有用的数据,仅用于对包含有关此图像所属研究的信息的属性进行分组。由于该变量不包含数据,因此类型无关紧要。
  • patient - 与study变量类似,此变量属于类,也不包含任何数据。它用于对指定患者识别和特征的属性进行分组。
  • acquisition - acquisition变量属于类。与studypatient变量类似,acquisition变量从不包含有用的数据,仅用于对包含有关图像采集参数、模态等信息属性进行分组。
  • xspace - 属于维度类的变量,它对指定 X 轴的属性进行分组。
  • yspace - 属于维度类的变量,它对指定 Y 轴的属性进行分组。
  • zspace - 属于维度类的变量,它对指定 Z 轴的属性进行分组。
  • time - 属于维度类的变量,它对指定时间轴的属性进行分组。
  • xfrequency - 属于维度类的变量,它对指定空间频率轴的属性进行分组。
  • yfrequency - 属于维度类的变量,它对指定空间频率轴的属性进行分组。
  • zfrequency - 属于维度类的变量,它对指定空间频率轴的属性进行分组。
  • tfrequency - 属于维度类的变量,它对指定时间频率轴的属性进行分组。
  • xspace-width - 属于维度宽度类的变量,它对指定沿 X 轴的样本宽度的属性进行分组。
  • yspace-width - 属于维度宽度类的变量,它对指定沿 Y 轴的样本宽度的属性进行分组。
  • zspace-width - 属于维度宽度类的变量,它对指定沿 Z 轴的样本宽度的属性进行分组。
  • time-width - 属于维度宽度类的变量,它对指定沿时间轴的样本宽度的属性进行分组。
  • xfrequency-width - 属于维度宽度类的变量,它对指定沿空间频率轴的样本宽度的属性进行分组。
  • yfrequency-width - 属于维度宽度类的变量,它对指定沿空间频率轴的样本宽度的属性进行分组。
  • zfrequency-width - 属于维度宽度类的变量,它对指定沿空间频率轴的样本宽度的属性进行分组。
  • tfrequency-width - 类别为dimension的变量,它对指定样本沿时间频率轴的宽度进行分组。


层次结构

[edit | edit source]

在 MINC 1.0 中,groupvar-attribute 变量可以被认为存在于一个树状结构的层次结构中。层次结构的底部位于 rootvariable。这个变量仅仅存在于构成层次结构树的根节点。imageacquisitionpatientstudy 变量形成了层次结构的下一层。在 image 变量之下是 image-minimage-max 变量。

可以根据需要在此层次结构中添加其他非标准变量。

因为 NetCDF 是一种非层次格式,所以 MINC 使用 {\tt parent} 和 children 属性来实现此层次结构。在实际应用中,MINC 1.0 格式非常松散地依赖此层次结构,如果有的话。但是,MINC 2.0 基于一种本质上是层次化的格式 (HDF5),它将使用并扩展此层次结构。


属性

[edit | edit source]

在 MINC 中,属性用于指定有关对象的附加信息。这些属性可以被认为属于三大类:由 NetCDF 标准本身定义的属性、在定义 MINC 文件组织中起结构性作用的属性以及包含与文件关联的实际数据或参数的属性。

NetCDF 属性可以是全局的(针对文件)或局部的(针对特定变量)。MINC 规范中仅使用两个全局属性,historytitle。这两个字符串属性都是 NetCDF 规范的一部分。所有其他 MINC 属性都属于特定变量。

标准 NetCDF 属性使用

[edit | edit source]

这些属性由 NetCDF 标准本身定义。

  • units - 指定变量数据的单位(如果适用)的字符串。单位应与 UCAR udunits 库兼容。在 MINC 1.0 中,此属性通常仅出于信息目的而包含,不会被 MINC 库代码解释。
  • long_name - 提供变量的可读文本描述的字符串。包含在内是为了提供信息。
  • valid_range - 包含两个数字的向量,它指定了此变量的最小值和最大值。超出此范围的值必须视为丢失或未初始化。在 MINC 中,向量中两个值的顺序并不重要。

如果定义了 valid_minvalid_max 属性,则不得定义此属性。

这些属性应被认为是 MINC image 变量的强制性属性,除非变量使用默认范围,该范围被定义为(可能是带符号或无符号的)整数类型的完整范围,或者对于浮点类型,该范围被定义为 [0.0, 1.0] 区间。它们不是其他任何 MINC 变量所必需的。

  • valid_max - 标量数字,它给出变量允许的最大值。请注意,valid_maxvalid_range 的存在是互斥的。
  • valid_min - 标量数字,它给出变量允许的最小值。请注意,valid_maxvalid_range 的存在是互斥的。
  • _FillValue 这是一个标量数值,它给出用于填充任何未显式写入或超出定义的数据有效范围的值的值。
  • history - 全局字符串属性,用于审计跟踪。这是一个字符数组,其中包含每个修改数据集的程序调用的行。所有 MINC 和 NetCDF 应用程序应为每个处理步骤附加一行,包含:日期、时间、用户名、程序名称和命令参数。此属性应被认为是强制性的。
  • title - 一个全局字符串属性,它提供了对 MINC 文件内容的描述。在实践中,这是可选的,并且很少使用。


MINC 结构属性

[edit | edit source]

许多 MINC 属性用于描述变量的类型以及变量之间的关系。

从某种意义上说,这些变量被认为是“结构性的”,因为它们不会传达有关存储在 MINC 文件中的医学图像的任何有用信息,而是用于支持 MINC 格式本身。

每个属性都应被认为是任何 MINC 标准变量的强制性属性,以下情况除外:{\tt signtype} 属性仅对整数类型变量是必需的,parentchildren 属性仅对类别为 groupvar-attribute 的变量是必需的。它们不用于类别为 dimensiondimension-width 的变量。


  • vartype - 标识变量类型(或类别)的字符串。它必须是 'group________'、'{\tt dimension____}'、'dim-width____ 或 'var_attribute' 之一。
  • varid - 标识变量与 MINC 规范之间关系的字符串。所有 MINC 标准变量都应将此属性设置为 'MINC standard variable'。非标准变量可以忽略此属性或将其设置为其他字符串值。
  • signtype - 由于 MINC 与 NetCDF 不同,它区分带符号和无符号整数类型,因此此属性是定义存储整数类型数据的变量的格式所必需的。唯一合法的值为字符串 '{\tt signed__}' 或字符串 'unsigned'。对于 8 位整数,默认值为 unsigned,对于所有其他整数类型,默认值为 signed__
  • parent - 用名称标识此变量的父变量的字符串。如果字符串为空(长度为零),则该变量位于层次结构的根部。
  • children - 被视为此变量的子变量的名称列表。该列表以换行符分隔。
  • version - 标识此变量的版本的字符串。在 MINC 1.0 中,此字符串始终针对 MINC 标准变量设置为 'MINC Version\ \ \ \ 1.0'。


MINC 信息属性

[edit | edit source]

MINC 中的信息属性可以是文本字符串或数字。

一些字符串属性是“自由格式的”,可以包含任何值,而不对格式和长度施加限制。其他字符串属性假定具有特定格式。还有一些其他字符串属性必须包含多个知名值中的一个。在这种情况下,知名字符串将用下划线字符填充到最长合法值的长度。

另一种类型的字符串属性是“指针”或“变量”属性。这些属性采用 '{\tt --->{\it var-name}}' 的形式。一个典型的例子是 image 变量的 '{\tt image-max}' 属性,它在大多数 MINC 文件中包含的值是 '--->image-max',表示 image-max 属性值存储在同名变量中。

数值属性可以是整数格式或浮点格式。MINC 包含属性访问例程,这些例程将在检索时自动将值转换为所需类型。

image 变量属性

[edit | edit source]
  • image-max - 包含存储图像实际值最大值的变量名称的字符串“指针”属性。在大多数情况下,变量的名称与属性的名称相同。
  • image-min - 与 image-max 相似,但指向图像的 {\tt image-min} 变量。
  • complete - 一个布尔属性(值为 'true_' 或 'false'),指示变量是否已完整写入。这可以用于检测在处理图像时写入图像时发生的程序故障:在开始时将 complete 设置为 {\tt false},并在所有数据都已处理并写入文件后将其设置为 true_


study 变量属性

[edit | edit source]

这些属性与 study 变量分组,以实现命名空间组织。它们是根据 ACR-NEMA 约定建模的。所有这些属性都是可选的,并且没有定义默认值。


  • start_time - 以 'YYYYMMDD HHMMSS.FFFFFF' 格式给出研究开始时间和日期的字符串,其中 'FFFFFF' 是分数秒的字符串表示形式。如果不需要,可以省略整个时间表示形式或分数秒。
  • start_year - 给出研究开始日期的年份的数字。
  • start_month - 给出研究开始日期的月份(1-12)的数字。
  • start_day - 给出研究开始日期的日期(1-31)的数字。
  • start_hour - 给出研究开始时间的时数(0-23)的数字。
  • start_minute - 给出研究开始时间的分钟数(0-59)的数字。
  • start_seconds - 给出研究开始时间的秒数(如果需要,包括分数秒)的数字。
  • modality - 表示所用成像模式的字符串,其中之一:PET__SPECTGAMMAMRI__MRS__MRA__CT___DSA__DR___label
  • manufacturer - 指定成像设备制造商名称的字符串。
  • device_model - 指定成像设备型号的字符串。
  • institution - 标识进行研究的机构的字符串。
  • department - 标识进行研究的部门的字符串。
  • station_id - 标识生成图像的特定成像系统的字符串。
  • referring_physician - 给出患者主治医师姓名的字符串。
  • attending_physician - 给出执行检查的医师姓名的字符串。
  • radiologist - 给出解释检查的放射科医师姓名的字符串。
  • operator - 给出成像设备操作员姓名的字符串。
  • admitting_diagnosis - 接受诊断的字符串描述。
  • procedure - 所用程序的字符串描述。
  • study_id - 标识研究的字符串。


patient 变量属性

[编辑 | 编辑源代码]

这些属性出于命名空间组织的目的与 patient 变量分组。它们以 ACR-NEMA 患者识别约定为模型。所有这些属性都是可选的,并且没有定义默认值。

  • full_name - 指定患者全名的字符串。
  • other_names - 给出患者其他姓名的字符串。
  • identification - 指定患者识别信息的字符串。
  • other_ids - 给出患者其他识别信息的字符串。
  • birthdate - 以 'YYYYMMDD' 格式指定患者出生日期的字符串。
  • sex - 指定患者性别的字符串:'male__'、'female' 或 'other_'。
  • age - 给出患者年龄(以年计)的数字。
  • weight - 给出患者体重(以公斤计)的数字。
  • size - 给出患者身高或身长(以米计)的数字。
  • address - 给出患者地址的字符串。
  • insurance_id - 给出患者保险计划 ID 的字符串。


acquisition 变量属性

[编辑 | 编辑源代码]

这些属性存储有关采集的参数。所有这些属性都是可选的,并且没有定义默认值。


  • protocol - 图像采集协议的字符串描述。
  • scanning_sequence - 获取数据类型的字符串描述(例如,对于 MR - IR、SE、PS 等)。
  • repetition_time - 给出脉冲序列之间时间(以秒计)的数字。
  • echo_time - 给出 90 度脉冲的中心和自旋回波产生的中心之间的时间(以秒计)。
  • inversion_time - 倒置 RF 脉冲的中心到检测纵向磁化量的 90 度脉冲的中心之间的时间(以秒计)。
  • num_averages - 在更改任何参数之前,重复给定脉冲序列的次数。
  • imaging_frequency - 成像核的进动频率(以赫兹计)。
  • imaged_nucleus - 指定在成像频率下共振的核的字符串。
  • radionuclide - 指定给药同位素的字符串。
  • contrast_agent - 标识造影剂或推注剂的字符串。
  • radionuclide_halflife 放射性核素的半衰期(以秒计)。
  • tracer - 标识用注射的放射性核素标记的示踪剂的字符串。
  • injection_time - 给出注射时间(和日期)的字符串。
  • injection_year - 给出注射年份的整数。
  • injection_month - 给出注射月份(1-12)的整数。
  • injection_day - 给出注射日期(1-31)的整数。
  • injection_hour - 给出注射小时(0-23)的整数。
  • injection_minute 给出注射分钟(0-59)的整数。
  • injection_seconds - 给出注射秒的浮点数。
  • injection_length - 给出注射持续时间的数字(以秒计)。
  • injection_dose - 注射的放射性核素或造影剂的总剂量(以 dose_units 指定的单位计)。
  • dose_units - 给出剂量单位的字符串。
  • injection_volume - 给出注射体积(以毫升计)的数字。
  • injection_route - 标识注射给药途径的字符串。


维度变量属性

[编辑 | 编辑源代码]

本节介绍与维度或维度宽度变量相关的属性。


  • spacing - 字符串,其值为 'regular__' 表示规则间隔的网格,或 'irregular' 表示样本的间隔不规则。如果该属性的值为 'irregular,则维度变量必须是随同名维度的向量变化的向量。如果该属性缺失,应假定其值为 regular__。可用于维度和维度宽度变量。
  • step - 表示规则间隔样本之间步长的数字。该值可以为负数以反转方向(例如,指定 xspace 从患者右侧运行到左侧)。如果间隔为 irregular,则该值可以是平均步长。如果该属性缺失,应假定其值为 1.0。仅适用于维度变量。
  • start - 指定维度索引 0 的坐标的数字。如果该属性缺失,应假定其值为 0.0。仅适用于维度变量。
  • spacetype - 标识坐标空间类型的字符串。目前是 'native___'(扫描仪的坐标系)、'talairach_'(大脑图像的标准化坐标系)或 'callosal__'(另一个标准化坐标系)之一。如果该属性缺失,应假定 {\tt spacetype} 为原生。仅适用于维度变量。
  • alignment - 指示坐标相对于每个样本的位置的字符串,其中之一为 'start_'、'{\tt centre}' 或 'end___'。如果该属性缺失,则假定它对于 time 维度为 start_,对于空间维度为 centre。仅适用于维度变量。
  • direction_cosines - 包含 3 个元素的数字向量,给出轴的方向余弦。尽管轴被标记为 x、y 和 z,但它们实际上可能具有显著不同的方向 - 此属性允许精确指定相对于真实轴的方向。向量应该是归一化的单位向量。

如果这些属性不存在,则假定它们具有以下默认值

对于 xspace:[1, 0, 0],对于 yspace:[0, 1, 0],对于 zspace:[0, 0, 1]

direction_cosines 属性仅适用于维度变量。

  • width - 数字属性,给出规则采样维度的所有样本的全宽半最大宽度。它可以用于不规则宽度以指定平均宽度。如果该属性缺失,应假定其值为 1.0。仅适用于维度宽度变量。
  • filtertype - 指定卷积滤波器形状的字符串。目前,可以是 'square____'、'{\tt gaussian__}' 或 'triangular' 之一。如果该属性缺失,应假定其值为 square____。仅适用于维度宽度变量。


最小 MINC 文件

[编辑 | 编辑源代码]

在所有此处描述的变量、维度和属性中,只有 'image' 变量及其关联的维度是定义有效 MINC 文件所必需的。

任何缺失的属性都假定具有默认值或未定义。

非标准对象

[编辑 | 编辑源代码]

虽然 MINC 指定了许多对象的结构和解释,但典型的 MINC 程序将能够优雅地处理包含非标准结构的 MINC 文件。这给 MINC 程序带来了两项要求。首先,MINC 程序必须能够在包含非标准变量和属性的文件上正常运行。其次,MINC 程序必须将非标准属性和变量从输入文件复制到结果输出文件,而无需更改。

此行为允许添加任意变量和/或属性以用于扩展标准 MINC 命名空间的信息目的。

参考资料

[编辑 | 编辑源代码]
 Russell K.~Rew et al, 'NetCDF User's Guide for C'
 [online], Unidata Program Center, Boulder, CO, 1997
 (http://www.unidata.ucar.edu/packages/netcdf/guidec/).
 
 'HDF5: A New Generation of HDF' [online], National Center for 
 Supercomputing Applications, University of Illinois, Urbana-Champaign,
 IL 2003 (http://hdf.ncsa.uiuc.edu/HDF5/).
 
 Peter Neelin, 'MINC Programmer's Reference Manual' [online], Montreal
 Neurological Institute, Montreal, QC, 1993
 
 American College of Radiology, National Electrical Manufacturers
 Association (ACR-NEMA) Standards Publication Number 300-1985, {\bf
 Digital Imaging and Communications}, National Electrical
 Manufacturers Association (NEMA), Washington, DC, 1986.

Robert D. Vincent

华夏公益教科书