4. 医学图像预处理工程

器官分割模型对输入图像的几何与灰度一致性极为敏感。同一台CT在不同层厚、不同重建核、不同扫描协议下产生的图像,其体素间距、灰度范围、噪声水平和低频亮度分布都可能显著不同。如果直接把原始DICOM像素送入分割网络,模型学到的往往是“扫描仪指纹”而非器官边界。因此,预处理工程的目标不是让图像“更好看”,而是把多来源图像映射到一个统一的几何与灰度参考系中,使分割网络面对的是可比较、可复现的输入。

一、重采样:把不同几何的图像放到同一体素网格

重采样解决的是几何不一致问题。CT常见的层厚有0.625 mm、1.0 mm、1.25 mm、2.5 mm、5.0 mm,而面内像素间距也随重建视野变化。若直接按原始体素训练,同一器官在不同扫描中的“像素尺寸”不同,卷积核感受野对应的物理尺度也随之漂移。

工程上通常把图像重采样到各向同性或接近各向同性的目标间距,例如 spacing = (1.0, 1.0, 1.0) mm。实现时先读取原始 PixelSpacing 与 SliceThickness(或由相邻层 ImagePositionPatient 计算实际层间距),再计算缩放因子:

scale = original_spacing / target_spacing
new_shape = round(original_shape * scale)

插值方式需要区分对象:器官、软组织等灰度连续区域可用三线性插值;二值掩膜必须用最近邻插值,否则会引入0.3、0.7这类非标签值,破坏分割监督信号。若图像各向异性很强(如层厚5 mm、面内0.7 mm),直接三线性插值会在层间产生明显模糊,可考虑先做层间插值或使用各向异性卷积网络,但作为标准化流程,统一重采样仍是首选。

二、归一化与去噪:稳定灰度分布

归一化处理灰度尺度。CT的HU值具有物理意义,常用窗口截断加线性映射:以腹部器官为例,取窗宽 WL=40, WW=400,将 [-160, 240] HU 截断后线性映射到 [0, 1]。这样既保留肝脏、脾脏、肾脏等软组织的对比度,又抑制骨与空气的极端值。MRI没有统一灰度单位,常用Z-score:(x - mean) / std,其中均值和标准差应在非零体素上统计,避免背景零值拉偏分布。

去噪要谨慎。高斯滤波会模糊器官边缘,对小结节和血管壁分割不利;非局部均值或双边滤波能在保边前提下去除噪声,但计算量大。实际工程中更常见的做法是:不做强去噪,而是通过归一化和数据增强让网络适应噪声;仅在低剂量CT或超声等噪声显著模态中,才引入轻量去噪。若使用去噪,应固定参数并在验证集上确认Dice没有下降。

三、偏置场校正:消除MRI低频亮度不均

MRI的偏置场来自射频线圈不均匀性和组织电导率差异,表现为同一组织在不同空间位置灰度缓慢变化。若不做校正,阈值法和基于灰度分布的分割会严重偏移。N4ITK是常用方法:先取对数域,迭代估计平滑的偏置场,再相除还原。工程参数通常设为:控制点间距约 200 mm、迭代 [50, 50, 30, 20]、样条阶数3。校正后应检查白质、灰质内部灰度是否更均匀,同时确认脑表面亮度没有被过度拉平。

四、直方图匹配:跨中心灰度对齐

当训练集来自多中心、多扫描仪时,即使都做了归一化,灰度分布仍可能不同。直方图匹配把源图像累积分布函数映射到参考图像的CDF,使两者灰度分布接近。参考图像应选择同一模态、同一解剖区域、质量稳定的样本。匹配后需检查器官对比度是否保留,避免把病理区域的灰度差异“匹配掉”。

器官分割前标准化流程:从原始DICOM到统一输入张量 原始DICOM 层厚 0.625~5 mm HU / MRI灰度 ① 重采样 目标 spacing 1×1×1 mm 图像三线性 / 掩膜最近邻 ② 偏置场校正 N4ITK(MRI) 迭代 [50,50,30,20] ③ 去噪 双边/非局部均值 保边优先 ④ 归一化 CT: WL=40 WW=400 MRI: Z-score ⑤ 直方图匹配 多中心灰度对齐 参考图像CDF映射 标准化张量 固定尺寸/间距 灰度 [0,1] 或 N(0,1) 器官分割网络 U-Net / nnU-Net / Transformer 预处理质量检查点 • 重采样后 spacing 是否一致 • 掩膜是否仍为二值 • 器官对比度是否保留 • 偏置场校正是否过度 • 直方图匹配后病理是否丢失 顺序原则:几何统一 → 灰度稳定 → 分布对齐 → 送入网络。 所有参数需在验证集上确认 Dice 不下降,避免“预处理过度”。

五、标准化流程的工程落地

把上述步骤串成可复现的流水线,关键是固定顺序和参数。推荐顺序为:重采样 → 偏置场校正(仅MRI)→ 去噪(可选)→ 归一化 → 直方图匹配(多中心时)。重采样放在最前,因为后续所有操作都应在统一几何上进行;偏置场校正必须在归一化之前,否则灰度映射会掩盖低频偏差;直方图匹配放在归一化之后,用于跨中心对齐。

以下是一个可参考的配置示例,参数为教学假设值,实际需根据数据集调整:

preprocess:
  target_spacing: [1.0, 1.0, 1.0]
  image_interp: trilinear
  mask_interp: nearest
  n4:
    enabled: true          # 仅MRI
    shrink_factor: 4
    iterations: [50, 50, 30, 20]
  denoise:
    method: bilateral
    sigma_color: 0.05
    sigma_space: 2.0
  norm:
    ct_window: {level: 40, width: 400}
    mri: zscore
  histogram_matching:
    enabled: true
    reference: "site_A_median.npy"

验证预处理是否合理,不能只看图像。应把同一病例的原始图、预处理图、掩膜叠加图并排检查:器官边界是否清晰、掩膜是否与图像对齐、灰度是否过曝或过暗。更客观的做法是在小验证集上比较预处理前后的Dice,若Dice下降超过1~2个百分点,说明某一步过度处理,应回退或调参。

重采样后务必同步更新掩膜和所有空间标注(如关键点、边界框),否则会出现图像与标签错位。建议把 spacing、origin、direction 一并写入预处理后的元数据,便于回溯。
直方图匹配不是万能的。若参考图像本身包含大量病理区域,匹配后可能把正常组织的灰度分布拉向病理分布。多中心场景下,优先选择质量稳定、病理占比低的参考图像,或改用更稳健的灰度标准化方法。

预处理工程的核心判断标准只有一条:让分割网络在验证集上稳定收敛,且跨中心、跨扫描协议的Dice波动尽可能小。所有参数、顺序和插值方式都应围绕这一目标取舍,而不是追求单张图像视觉上的“干净”。