Batch Registration Qc
多期相 CT 批量配准和 QC 记录 0. 背景 之前已经写过单个 fixed 和 moving 的配准脚本,但真正开始处理病例的时候才发现,单个脚本只能证明“这件事情理论上可以做”,不能证明“这件事情可以批量稳定地做”。 因为一个病例里面往往不止两个序列,可能有平扫、动脉期、门静脉期、延迟期,也可能夹杂 localizer、lung、std、薄层、厚层之类的序列。更麻烦的是,即使它们都来自同一个病例,也不能默认它们的切片编号就是一一对应的。 所以这次想做的是: 批量读取同一个病例下的多个 DICOM series,自动筛选、配准、评价配准效果,并输出可以作为 nnU-Net 多通道输入的 NIfTI 文件。 完整代码见 GitHub:medical-image-registration-scripts 1. 一开始的想法 最初的思路其实很朴素: 读取一个病例下面所有 seriesXXX 文件夹; 自动选一个序列作为 fixed image; 其余序列作为 moving image; 先通过 DICOM header 做第一轮筛选; 对筛选通过的 moving 做刚性配准和重采样; 配准后计算一组无标签 QC 指标; 根据 QC 结果打 PASS、WARNING、FAIL; 只把合格的序列放入最终多通道; 最后对保留下来的通道做共同区域裁剪; 输出 nnU-Net 的 imagesTr 格式。 看起来非常顺理成章,甚至有点过于顺理成章。 但是医学图像处理很多时候就是这样:流程图画出来的时候像一条笔直的路,真正跑起来的时候才发现中间到处是坑。 2. fixed image 的选择 脚本里暂时采用了一个比较直接的规则: 选择切片数最多的 seriesXXX 作为 fixed image。 这样做的原因是,切片数最多的序列通常扫描范围更完整,更适合作为统一空间的参考。 当然这不是一个绝对正确的规则。更严谨的做法应该结合: 序列描述; 扫描范围; 图像质量; 老师指定的标准期相; 是否为薄层或厚层重建; 是否包含目标器官区域。 但在当前阶段,为了先把批量流程跑通,先用“切片数最多”作为自动选择规则。 3. 配准前 header 筛选 在真正做配准之前,脚本会先比较 fixed 和 moving 的空间信息。 主要检查:
阅读全文 »