2. 医学影像数据基础

做数据漂移监测,第一步不是选算法,而是把“监测对象”钉死。医学影像数据从设备产生到进入模型推理,中间会经过格式转换、归档、脱敏、标注、重采样等多个环节,每个环节都可能改变数据的统计分布。如果边界不清,漂移信号可能来自格式转换而非真实分布变化,导致误报。本节围绕 DICOM、NIfTI、PACS、影像模态、采集参数、标注格式与数据流,梳理漂移监测需要锁定的数据对象与字段。

一、DICOM:漂移监测的原始锚点

DICOM 是设备输出的原始格式,也是漂移监测最可靠的锚点。一个 DICOM 文件由文件元信息(File Meta Information)和数据集(Dataset)组成,数据集按标签(Tag)组织,常见标签包括:

  • 患者与检查标识:PatientID (0010,0020)、StudyInstanceUID (0020,000D)、SeriesInstanceUID (0020,000E)、SOPInstanceUID (0008,0018)。这些是数据溯源与去重的主键。
  • 采集参数:Modality (0008,0060)、Manufacturer (0008,0070)、KVP (0018,0060)、ExposureTime (0018,1150)、SliceThickness (0018,0050)、PixelSpacing (0028,0030)、Rows/Columns (0028,0010/0011)、BitsAllocated (0028,0100)、PhotometricInterpretation (0028,0004)。
  • 重建与显示:RescaleSlope/Intercept (0028,1052/1053)、WindowCenter/Width (0028,1050/1051)、ImageOrientationPatient (0020,0037)、ImagePositionPatient (0020,0032)。

漂移监测应优先在 DICOM 层采集这些字段的分布。例如,KVP 从 120 kV 漂移到 100 kV,会直接改变 CT 图像的 HU 分布;SliceThickness 从 1 mm 变为 5 mm,会改变层间相关性。这些变化在像素层面可能表现为均值、方差、直方图形态的偏移,但根因在采集参数。因此,监测系统需要同时记录“参数分布”和“像素分布”,并建立两者的关联。

建议将 DICOM 标签分为三类:标识类(用于去重与溯源)、采集类(用于解释漂移根因)、像素类(用于直接计算统计量)。监测配置中应明确每类字段的采集频率与存储策略。

二、NIfTI:模型输入的实际载体

NIfTI 是神经影像与部分 AI 训练流程常用的格式,通常由 DICOM 转换而来。与 DICOM 不同,NIfTI 将三维或四维数据存储为单个文件(.nii 或 .nii.gz),头信息包含 dim、pixdim、datatype、scl_slope、scl_inter、qform/sform 等字段。转换过程中常见的操作包括:重采样、方向校正、强度归一化、层厚插值。这些操作会改变数据分布,因此漂移监测必须区分“DICOM 原始分布”与“NIfTI 转换后分布”。

例如,某 CT 数据集在 DICOM 层 HU 均值为 40±200,经过窗宽窗位截断到 [0,1] 后,NIfTI 层均值变为 0.35±0.18。如果监测系统只记录 NIfTI 层统计量,当窗宽窗位配置变化时,会被误判为数据漂移。正确做法是:在转换脚本中固定预处理参数,并将这些参数作为监测元数据一并记录。

三、PACS:数据流的枢纽与监测接入点

PACS 负责 DICOM 的存储、检索与传输,常见交互包括 C-STORE、C-FIND、C-MOVE、WADO-RS。漂移监测系统通常以“旁路”方式接入:从 PACS 拉取或订阅检查列表,按 StudyInstanceUID 获取影像,再在本地计算统计量。接入时需注意:

  • 查询边界:按 Modality、StudyDate、BodyPartExamined 限定范围,避免全量拉取造成压力。
  • 去重:同一 Study 可能包含多个 Series,需按 SeriesInstanceUID 去重,并排除定位像、剂量报告等非诊断序列。
  • 时序对齐:漂移监测需要时间轴,应记录 StudyDate 与 StudyTime,并统一时区。

PACS 中的影像可能经过压缩(如 JPEG2000、JPEG-LS),有损压缩会轻微改变像素统计。监测时应记录 TransferSyntaxUID (0002,0010),并对有损压缩序列单独分组分析。

四、影像模态与采集参数:漂移的物理来源

不同模态的漂移敏感参数不同。CT 关注 KVP、mAs、SliceThickness、重建核(ConvolutionKernel);MRI 关注 FieldStrength、RepetitionTime、EchoTime、FlipAngle、序列类型(T1/T2/DWI);X 光关注 ExposureIndex、Grid、Distance;超声关注探头频率、增益、深度。监测系统应按模态建立参数白名单,只采集与图像质量或诊断语义相关的字段。

以 CT 为例,若某月新增了一台设备,其重建核从 STANDARD 变为 SHARP,图像高频成分增加,像素梯度分布会明显右移。此时若只看像素均值,可能变化不大;但若监测梯度幅值直方图,就能捕捉到差异。这说明监测指标必须与采集参数联动设计。

五、标注格式:语义漂移的载体

标注格式直接影响模型训练目标,也是语义漂移的主要来源。常见格式包括:DICOM-SEG(像素级分割)、DICOM-RTSTRUCT(放疗结构)、NIfTI 掩膜、JSON/XML(检测框、关键点)、COCO 风格(2D 检测)。漂移监测需要关注:

  • 标注者一致性:同一病例由不同标注者标注,边界差异可能被误判为数据漂移。
  • 标签分布:阳性率、病灶大小分布、类别频率的变化。
  • 标注版本:标注规范更新后,旧标签与新标签不可直接混合统计。

建议为每个标注任务维护“标注版本号 + 标注者ID + 标注时间”,并在漂移分析时按版本分组。

六、数据流与监测边界

综合以上环节,一条典型的医学影像 AI 数据流为:设备 → DICOM → PACS → 转换/预处理 → NIfTI/张量 → 标注 → 训练/推理。漂移监测应在关键节点设置“探针”,并明确每个探针的输入对象与输出指标。

医学影像数据流与漂移监测探针 影像设备 CT / MR / XR / US DICOM 原始标签 + 像素 PACS 存储 / 检索 / 传输 转换/预处理 重采样 / 归一化 NIfTI / 张量 模型输入载体 标注 SEG / RTSTRUCT / JSON 训练 / 推理 模型输入输出 探针A 采集参数分布 探针B 序列完整性 探针C 预处理参数 探针D 像素统计量 探针E 标签分布 漂移监测聚合层 参数分布 · 像素统计 · 标签分布 · 时间序列对齐 · 根因归因 输出:漂移告警 / 漂移评分 / 影响范围 / 建议动作 图例 采集参数探针 预处理探针 像素统计探针

图中给出了五个探针位置:探针A在 DICOM 层采集采集参数分布;探针B在 PACS 层检查序列完整性与压缩方式;探针C在转换层记录预处理参数;探针D在 NIfTI/张量层计算像素统计量;探针E在标注层统计标签分布。五个探针的输出统一进入漂移监测聚合层,按时间轴对齐后计算漂移评分,并支持根因归因。

七、监测对象边界清单

综合以上分析,本节建议将漂移监测的数据对象边界定义为以下清单,工程实现时可据此设计采集任务:

层级监测对象关键字段/指标采集频率
DICOM采集参数KVP、mAs、SliceThickness、ConvolutionKernel、PixelSpacing每序列
DICOM像素统计均值、标准差、直方图分位数、梯度幅值每序列
PACS序列完整性SeriesInstanceUID 数量、缺失层数、TransferSyntaxUID每检查
转换预处理参数重采样尺寸、归一化方式、窗宽窗位、方向矩阵每批次
NIfTI张量统计通道均值/方差、空间维度、强度范围每样本
标注标签分布阳性率、病灶体积、类别频率、标注版本每批次
注意:监测对象边界一旦确定,应在配置文件中版本化。当数据流新增环节(如新增一个预处理步骤)时,必须同步更新探针位置与字段映射,否则漂移信号会出现“盲区”或“错位”。

最后需要强调,漂移监测不是对单一指标的阈值判断,而是对“参数—像素—标签”三元关系的持续追踪。只有把 DICOM 标签、PACS 元数据、转换参数、NIfTI 统计量和标注分布放在同一时间轴上,才能区分“真实分布漂移”与“工程配置变化”,从而为后续的模型重训练、数据补采或流程修正提供可靠依据。