4. 影像数据预处理与质量控制
在医学影像临床预测模型工程中,原始 DICOM 数据几乎不可能直接送入模型。不同设备、不同扫描协议、不同重建参数带来的差异,会让同一病灶在不同中心呈现出完全不同的像素分布。预处理与质量控制的目标,是把这些异质性压缩到模型可以承受的范围,同时保留真正与临床结局相关的影像信息。本节围绕格式转换、重采样、强度归一化、去噪、伪影识别与数据清洗六个环节,讨论可落地的工程实现方式。
一、格式转换:从 DICOM 到可计算张量
DICOM 是临床存储标准,但它不是建模友好的格式。一个 CT 序列通常由数百个切片文件组成,每个文件包含像素数据与大量元数据。工程上第一步是解析 DICOM 并转换为 NIfTI 或 NumPy 数组,同时保留关键元数据:PixelSpacing、SliceThickness、RescaleSlope、RescaleIntercept、ImageOrientationPatient。其中 RescaleSlope 与 RescaleIntercept 决定如何把存储的整数值还原为物理量,CT 中即 HU 值:
HU = pixel_value * RescaleSlope + RescaleIntercept
# 典型 CT:Slope=1, Intercept=-1024
# 存储值 0 → HU=-1024(空气),存储值 1024 → HU=0(水)
若忽略这一步,直接把原始像素当强度使用,不同设备的 HU 偏移会直接污染特征。转换时还需检查切片顺序,按 ImagePositionPatient 的 z 坐标排序,避免层间错位。对于 MRI,DICOM 中通常没有统一的物理量标定,强度值本身不具备绝对意义,这决定了后续归一化策略必须与 CT 区别对待。
二、重采样:统一体素间距与空间对齐
重采样解决两个问题:各向异性体素和不同中心的空间分辨率差异。CT 常见层厚 1~5 mm,层内像素间距 0.5~1 mm,直接按数组索引计算会引入几何畸变。工程上通常把体素间距统一到各向同性,例如 1×1×1 mm³,使用三线性插值处理图像,使用最近邻插值处理掩膜,避免标签被插值成非整数类别。
重采样顺序建议先重采样再裁剪,或先按物理坐标裁剪再重采样,二者结果不同。若先裁剪后重采样,裁剪边界必须按物理坐标换算,否则 ROI 会随分辨率变化而漂移。对于 PET-CT 等多模态数据,还需以 CT 为参考空间,把 PET 配准并重采样到同一网格,保证通道间体素一一对应。
三、强度归一化:CT 与 MRI 的分野
CT 的 HU 具有物理意义,归一化通常采用固定窗宽窗位截断,再线性映射到 [0,1]。例如肺结节常用窗位 -600 HU、窗宽 1500 HU,肝脏常用窗位 50 HU、窗宽 300 HU。截断后:
lower = level - window/2
upper = level + window/2
x = clip(HU, lower, upper)
x = (x - lower) / (upper - lower)
MRI 没有绝对强度,常用 z-score 或百分位归一化。z-score 对全脑或全器官计算均值与标准差,但容易受背景和脂肪影响;百分位归一化取 1% 与 99% 分位数做截断,再映射到 [0,1],对异常高信号更稳健。工程实现中应把归一化参数按通道、按序列分别记录,推理阶段复用训练集统计量,避免数据泄漏。
四、去噪与伪影识别
低剂量 CT 噪声呈明显条纹与斑点,MRI 有 Rician 噪声。常用去噪包括高斯滤波、非局部均值和高斯-拉普拉斯金字塔,但过度去噪会抹掉小结节边缘。工程上更稳妥的做法是保留原始强度通道,同时增加一个轻度去噪通道,让模型自行选择。伪影识别则依赖规则与统计结合:金属伪影表现为高 HU 放射状条纹,运动伪影表现为层间不连续,环形伪影表现为固定半径亮暗环。可用简单阈值加连通域统计做初筛,例如统计 HU>2000 的体素占比、层间相关系数骤降、以及频域径向能量异常。
五、数据清洗:从单例质控到队列一致性
单例通过质控后,还要做队列级清洗。常见问题包括:同一患者多次检查造成重复样本、标签与影像时间不匹配、扫描协议混杂导致强度分布漂移。工程上可先按患者 ID 去重,保留与标签时间窗最近的检查;再按协议分组,检查各组 HU 直方图是否出现双峰或整体偏移。若某中心数据整体偏亮或偏暗,应单独统计其归一化参数,而不是强行套用全局参数。
下面给出一份可直接参考的质控记录表结构,字段均围绕本节实际处理对象设计:
| 字段 | 示例值 | 判断依据 |
|---|---|---|
| patient_id | P000123 | 去重主键 |
| modality | CT | 决定归一化策略 |
| slice_thickness | 1.25 mm | 重采样前记录 |
| hu_min / hu_max | -1024 / 3071 | 检查 HU 范围合理性 |
| metal_ratio | 0.12% | >0.5% 触发复核 |
| slice_corr_min | 0.91 | <0.85 判为运动伪影 |
| norm_method | window_center_width | 记录参数供推理复用 |
| qc_status | pass / review / reject | 最终处置 |
综合来看,预处理不是一次性脚本,而是一条需要持续监控的数据流水线。格式转换保证物理量正确,重采样保证空间一致,归一化压缩强度异质性,去噪与伪影识别守住质量底线,数据清洗则把单例质量提升为队列质量。只有这些环节在工程上可配置、可记录、可复现,后续的临床预测模型才具备跨中心泛化的基础。