影像组学特征提取与建模(PyRadiomics)
影像组学(Radiomics)把 CT、MRI、PET 影像中勾画的感兴趣区域转化为大量定量特征,再用统计或机器学习方法与诊断、分型、疗效或预后关联。特征分为形状、一阶灰度统计和纹理(GLCM、GLRLM、GLSZM、GLDM、NGTDM)几类,还可在小波、LoG 滤波图像上重复计算,单个病灶常得到上千个特征。PyRadiomics 是常用的开源提取工具,特征定义大多参照 IBSI 标准。因为特征多、样本少,关键在预处理一致、特征稳定和严格验证。影像组学属于科研分析,不替代临床诊断或治疗决策。
什么时候用
- 用术前 CT 或 MRI 区分良恶性、病理分级或分子分型
- 预测淋巴结转移等难以在影像上直接判断的结局
- 评估治疗疗效,比较治疗前后特征的变化(delta 影像组学)
- 构建影像组学评分,与临床变量合并做预后分层
- 研究影像特征与基因表达、突变等分子数据的关联
不适合的情况
- 样本很少却用上千个特征直接建模:几乎必然过拟合
- 各中心扫描参数差异很大且未做协调:模型学到的是设备差异
- 病灶边界难以界定、勾画一致性差的部位:特征无法重复
需要准备的数据
- 医学影像
- DICOM 或 NIfTI;记录设备、层厚、重建核、对比剂期相和 MRI 序列等采集参数
- 分割掩膜
- 与图像尺寸、间距、方向和原点完全一致的标签图;注明标签值和勾画者
- 重复勾画
- 部分病例由两名医师独立勾画,或同一人间隔一段时间重复勾画,用于评估特征一致性
- 临床与结局数据
- 结局标签、随访时间、临床病理变量;与影像用匿名编号一一对应
- 外部验证集(建议)
- 来自其他中心或其他时间段的独立数据,用于检验模型的泛化能力
分析步骤
- 1
数据整理与匿名化
用 dcm2niix 等工具把 DICOM 转为 NIfTI,并去除可识别患者的信息;核对每例的序列和期相是否一致,剔除伪影严重或扫描参数明显异常的病例。
- 2
图像预处理
把全部病例重采样到相同体素间距;MRI 需要强度标准化,必要时先做 N4 偏置场校正。CT 的 HU 值本身有物理意义,一般不做 z-score 标准化。
- 3
勾画与一致性评估
在 ITK-SNAP 或 3D Slicer 中勾画病灶,抽取部分病例重复勾画,计算每个特征的组内相关系数(ICC)。同时核对掩膜与图像的几何信息是否匹配。
- 4
特征提取
用 PyRadiomics 按统一的参数文件提取原始图像和滤波图像的形状、一阶和纹理特征,并保存参数文件以便复现。检查是否有全为常数或缺失的特征。
- 5
划分数据集
在任何特征筛选之前先划分训练集和测试集,或确定外部验证集;按结局分层抽样,让两组的阳性比例接近。之后所有筛选和调参只在训练集上进行。
- 6
特征筛选
在训练集上依次做稳定性过滤(ICC)、低方差过滤和高相关冗余去除,再用 LASSO 或 mRMR 等方法选出少量特征,正则化强度用交叉验证确定。
- 7
建模与评分
用逻辑回归、Cox 回归或随机森林等建模,线性模型可得到 Rad-score;需要时与临床变量合并构建列线图。超参数只在训练集内交叉验证调整。
- 8
验证与报告
在测试集和外部验证集上报告 AUC 及 95% 置信区间、校准曲线和决策曲线,并按 TRIPOD 等报告规范写明数据来源、预处理和模型细节。
关键参数与决策
灰度离散化
纹理特征需要先把灰度分箱。PyRadiomics 默认固定箱宽 binWidth 为 25,适合 CT;MRI 强度无绝对单位,常改用固定箱数或先标准化。箱宽改变会明显改变纹理特征值。
重采样间距
体素间距不一致时纹理特征不可比,需用 resampledPixelSpacing 统一。层厚很大时做各向同性重采样会插值出不存在的信息,可考虑开启 force2D 逐层提取。
滤波图像类型
开启小波和 LoG 会让特征数成倍增加,过拟合风险随之升高。小样本研究建议只用原始图像或少量滤波,LoG 的 sigma 应与体素大小相匹配。
ICC 阈值
常用经验是保留 ICC 大于 0.75 的特征,剔除受勾画差异影响大的特征。所用 ICC 类型(如双向随机、绝对一致)应在文中注明。
特征数与样本量
进入最终模型的特征数应远少于样本量。二分类常参考每个特征约 10 个阳性事件的经验,事件少时进一步压缩特征数,或使用正则化模型。
多中心协调
不同设备和中心的特征分布可能整体偏移,可用 ComBat 在特征层面协调。协调参数只能从训练数据估计,否则会把测试集信息带入模型。
常见错误
- 在全部数据上做特征筛选后再划分训练测试集:测试集信息已泄漏到筛选过程,测试 AUC 被高估,外部验证时明显下降。
- 只做内部随机划分就宣称模型可推广:同中心同设备的数据分布相近,没有外部或时间验证,无法说明模型在其他地方可用。
- 掩膜与图像空间信息不一致:原点、方向或间距错位会让特征从错误区域提取,结果看似正常但没有意义。
- 混用不同期相或序列:动脉期与门脉期、T1 与 T2 的特征分布差异很大,混在一起会把期相差异当作生物学差异。
- 只报告 AUC:区分度高但校准差的模型给出的概率不可信,应同时报告校准曲线和决策曲线。
- 结果其实由肿瘤体积驱动:不少纹理特征与体积高度相关,应检查特征与体积的相关性,并与只用体积的模型比较。
结果怎么看
特征稳定性分布图
展示每个特征的 ICC 分布和保留比例。若大部分纹理特征 ICC 都很低,说明勾画一致性差或病灶太小,需要先统一勾画规范再提取,而不是继续往下建模。
LASSO 系数路径与交叉验证曲线
随 λ 增大系数逐步收缩为零,交叉验证曲线给出最优 λ(如 lambda.min 或 lambda.1se)。换随机种子后选中的特征变化很大,说明特征筛选不稳定。
ROC 曲线与 AUC
训练集、测试集和外部验证集分别画出。训练集明显高于验证集提示过拟合;报告 AUC 时附 95% 置信区间,样本少时区间往往很宽,单个点估计说服力有限。
校准曲线
预测概率与实际发生率的对应关系,越贴近对角线越好。整体偏离对角线说明需要重新校准,外部验证集的阳性比例与训练集不同时常出现这种情况。
决策曲线(DCA)
在不同阈值概率下比较模型、全部干预和全部不干预三种策略的净获益。模型曲线只在很窄的阈值范围内高于两条参考线时,实际应用价值有限。
和相近方法怎么选
影像组学与深度学习影像分析
影像组学使用预先定义的特征,依赖 ROI 勾画,特征可解释,小样本下较易训练;深度学习端到端学习特征,通常需要更多样本,可解释性较弱。数据有限时影像组学更常用,也可把两类特征合并比较。
影像组学模型与临床预测模型
临床模型用年龄、分期、实验室指标等变量;影像组学提供影像层面的补充信息。常见做法是比较单独临床模型、单独影像组学模型和合并模型,用 AUC 比较和净重分类改善判断影像组学是否带来增量价值。
二维与三维特征提取
三维提取利用整个病灶体积,信息更完整;层厚大或各向异性明显时,三维纹理受插值影响较大,二维最大层面提取更稳定但信息较少。按数据层厚选择,并在全队列保持一致。
常见问题
影像组学研究需要多少样本?
没有统一的硬门槛,取决于结局事件数和最终特征数。常用经验是每个入模特征约对应 10 个阳性事件,并尽量有独立的外部验证集。样本少时应减少滤波类型、严格做稳定性筛选,并使用正则化模型。
PyRadiomics 参数文件怎么写?
参数文件为 YAML 格式,分三部分:imageType 指定原始图像和滤波类型(如 LoG 及其 sigma);featureClass 指定特征类别;setting 设置 binWidth、重采样间距、插值方式、是否标准化和标签值等。整个队列应使用同一份文件。
Rad-score 是怎么计算的?
通常是在训练集上用 LASSO 逻辑回归选出特征后,把每个特征的值乘以对应系数再求和,加上截距得到。特征需要按训练集的均值和标准差标准化,测试集和外部验证集也必须使用训练集的标准化参数和系数。
MRI 影像组学需要做哪些预处理?
MRI 信号强度没有绝对单位,常见步骤包括 N4 偏置场校正、强度标准化(如 z-score)、重采样到统一体素间距,以及采用固定箱数或标准化后再分箱。不同序列要分别处理,不能混在一起提取特征。
影像组学研究的质量怎么评价?
常用 RQS(Radiomics Quality Score)评分,关注是否有多次分割、是否有外部验证、是否开放代码和数据等;预测模型的报告可参照 TRIPOD,另有专门面向影像组学的 CLEAR 清单。投稿前按这些清单自查可以减少审稿意见。
在 Codar 里怎么做
在 Codar 里,你提供影像与分割掩膜(DICOM 或 NIfTI)和临床结局表。Codar 先做影像数据准备与质量检查:格式转换、核对掩膜与图像几何一致性、汇总采集参数和异常病例;确认预处理方案后提取放射组学特征,在训练集内完成筛选和建模。交付特征矩阵、ROC、校准曲线、决策曲线和可复现脚本。
我有 200 例肝癌术前增强 CT 和肿瘤掩膜(NIfTI)及微血管侵犯标签,想用 PyRadiomics 提取特征、建 LASSO 模型并按 7:3 验证。