4. 医学影像数据采集与标注工程
病灶检测模型的性能上限,很大程度上由数据决定。一个肺结节检测模型能否在 3 mm 微小结节上保持召回率,往往不取决于网络结构,而取决于 CT 层厚、重建核、标注边界的一致性。本章围绕数据从设备到训练集的全链路展开:DICOM 解析、标注工具选型、标注规范制定与质量控制。
一、DICOM 解析:从像素到可训练张量
DICOM 不是一张图片,而是一个包含患者信息、采集参数、像素数据与空间几何的多层容器。解析的核心任务是:把像素矩阵还原到正确的物理坐标系中,并保留可用于建模的元数据。
关键标签需要重点掌握。(0028,0010) Rows 与 (0028,0011) Columns 给出矩阵尺寸;(0028,0030) PixelSpacing 给出行、列方向的像素物理间距(单位 mm),顺序为 [行间距, 列间距];(0018,0050) SliceThickness 是标称层厚,而层间真实间距应优先使用 (0018,0088) SpacingBetweenSlices,缺失时用相邻层面的 (0020,0032) ImagePositionPatient 沿法向量投影计算。方向信息由 (0020,0037) ImageOrientationPatient 提供,前三个值为行方向余弦,后三个值为列方向余弦,二者叉乘得到层面法向量,用于判断层序方向与左右、前后翻转。
窗宽窗位决定灰度映射。以肺窗为例,窗位 -600 HU、窗宽 1500 HU,则显示区间为 [-1350, 750] HU,映射公式为:
HU = pixel * RescaleSlope + RescaleIntercept
gray = clip((HU - (WC - WW/2)) / WW, 0, 1) * 255
其中 RescaleSlope 通常为 1,RescaleIntercept 为 -1024。若忽略 Rescale,直接把原始像素当 HU 使用,肺实质与空气的对比会被严重压缩,微小结节的边界信息随之丢失。
工程上还需处理几类常见问题:多帧增强 CT 的层间不一致、压缩传输语法(如 JPEG Lossless)需先解码、以及不同厂商对 SliceLocation 的符号约定差异。建议在解析阶段统一输出为 NIfTI 或 NPZ,并同步保存 spacing、origin、direction 三个仿射参数,避免后续重采样时坐标系错乱。
二、标注工具:按任务形态选型
标注工具的选择取决于标注对象的几何形态与临床工作流。矩形框适合快速筛查,多边形适合不规则边界,而像素级分割需要支持笔刷、区域生长与三维插值。
对于 CT 肺结节,常用方案是 3D Slicer 配合 Segment Editor 模块:在轴位、冠状位、矢状位三视图联动下,用 Draw 或 Grow from seeds 勾画结节,再用 Fill between slices 在层间插值,最后导出为 NIfTI 掩膜。对于 X 线胸片,LabelImg 或 CVAT 的矩形框模式更高效,但需注意框的边界应贴合病灶可见轮廓,而非包含过多正常组织。
工具选型时需评估四点:是否支持 DICOM 直接读取与窗宽窗位调节;是否支持多视图联动与三维插值;是否支持标注版本管理与多人协作;导出格式是否与训练框架兼容(COCO、VOC、NIfTI、DICOM-SEG)。若团队已有 PACS 环境,优先选择支持 DICOMweb 的工具,减少数据搬运成本。
三、标注规范:把临床判断转成可执行规则
标注规范的本质是把“什么算病灶、边界画到哪里”写成可复现的操作定义。规范缺失时,同一批数据在不同标注员之间会产生系统性偏差,模型学到的将是标注风格而非病灶特征。
以肺结节为例,规范应明确:纳入标准(实性结节、部分实性结节、磨玻璃结节分别处理);最小尺寸阈值(如长径 ≥ 3 mm 才标注);边界定义(沿结节边缘的肺组织界面,不包含血管连接处);多结节处理(每个结节独立标注,记录位置与编号);不确定病例的处理(标记为“可疑”并进入仲裁流程)。
规范还应包含坐标系约定。若使用图像坐标,需说明原点在左上角、x 向右、y 向下;若使用患者坐标,需说明 LPS 或 RAS 约定。全文与工具配置必须一致,否则标注框会在训练时发生镜像或偏移。
四、质量控制:从抽样复核到一致性指标
质量控制不是一次性检查,而是贯穿采集、标注、复核、入库的闭环。可操作的做法包括:
- 双人独立标注 + 仲裁:对 10%~20% 的病例进行双标注,计算 Dice 系数或 IoU。以分割任务为例,Dice ≥ 0.85 视为一致,0.70~0.85 进入讨论,低于 0.70 必须仲裁并回溯规范。
- 边界一致性检查:对同一结节,比较两位标注员在三个正交视图上的边界偏差,若某方向偏差超过 2 mm,检查是否因窗宽窗位不同导致可见边界差异。
- 元数据完整性校验:入库前检查 spacing、origin、direction 是否存在,层厚是否与采集协议一致,患者 ID 是否脱敏。
- 分布监控:统计结节尺寸分布、位置分布、标注员工作量,发现某标注员尺寸分布明显偏大或偏小,及时复核。
五、一个可复用的质控检查表示例
下表为肺结节 CT 标注入库前的检查项,可直接用于团队内部复核。字段与阈值根据实际项目调整,此处为示例参数。
| 检查项 | 检查内容 | 判定标准 | 处理方式 |
|---|---|---|---|
| 几何参数 | PixelSpacing、SpacingBetweenSlices 是否存在且合理 | spacing 在 0.5~1.0 mm,层厚 ≤ 2 mm | 缺失则退回采集端补录 |
| HU 转换 | RescaleSlope/Intercept 是否应用 | 肺窗下肺实质 HU 在 -900~-700 | 重新解析并记录 |
| 结节边界 | 双标注 Dice | ≥ 0.85 通过;0.70~0.85 讨论;< 0.70 仲裁 | 仲裁后更新规范 |
| 最小尺寸 | 结节长径 | ≥ 3 mm 才纳入 | 小于阈值标记为忽略 |
| 脱敏 | 患者姓名、ID、生日 | 全部替换为匿名编号 | 未脱敏禁止入库 |
| 版本绑定 | 规范版本号与数据集版本 | 一一对应 | 不匹配则重新标注 |