疗效预测中的影像组学特征提取

介绍

最近一直在做关于肿瘤的放疗疗效预测相关的工作,遇到了一些问题主要是关于影像组学特征提取相关的问题,在这里做一个总结,主要是关于基于python提取影像组学特征:

需要的module:

主要需要的是SimpleITK,NRRD和pyradiomics这几个包,安装的话直接pip就可以

pip install pyradiomics
pip install SimpleITK
pip install pynrrd

 具体流程:

因为我们收到的数据都是图像是dicom格式的,标注为nii格式的,但是pyradiomics这个包,他说明只支持nrrd格式的输入,所以前期我们踩了大量的坑,思路都停留在将dicom和nii格式的数据转换为nrrd格式的数据,但是一直都是会缺少部分信息,最近才有部分进展,现在的流程如下:

  1. 使用ITK-SNAP这个软件将nii格式的标注转换为nrrd格式的数据,过程很简单只需要将nii文件打开,选择file-save image-main image即可,然后再弹出框中选择nrrd格式,即可在对应文件目录下生成一个对应格式的标注文件

    疗效预测中的影像组学特征提取_第1张图片

    疗效预测中的影像组学特征提取_第2张图片

  2. 数据的处理过程,还有一个问题就是,我们收到的标注中既包含肿瘤区也包含了淋巴区,但是我们需要将这两部分数据分开处理,所以需要形成不同的标注文件,两部分的标注的区别是肿瘤区标注为1,淋巴区标注为5。这里的思路是我们先使用nrrd包将生成的nrrd中的数据读出来,进行修改,在反写回去即可。
    
    import numpy as np
    import nrrd
    
    
    data, header = nrrd.read(nrrdpath)
    
    # 提取淋巴结的标注
    data = np.where(data[:, :, :] == 1, 0, data[:, :, :])
    lymph_data = np.where(data[:, :, :] == 5, 1, data[:, :, :])
    
    nrrd.write(lymphpath, lymph_data, header)
    

     

  3.  数据的读入过程:主要包含两部分,图像的读入和标注的读入;在这里之前陷入一个误区,以为只能输入nrrd格式,但是后来发现只要是simpleitk读入的数据,pyradiomics都能处理,于是在这里同时使用simpleitk进行数据的读取,最后抽取数据即可

    # get image
    series_IDs = sitk.ImageSeriesReader.GetGDCMSeriesIDs(image_path)
    nb_series = len(series_IDs)
    print(nb_series)
    series_file_names = sitk.ImageSeriesReader.GetGDCMSeriesFileNames(image_path,series_IDs[0])
    series_reader = sitk.ImageSeriesReader()
    series_reader.SetFileNames(series_file_names)
    image3D = series_reader.Execute()
    
    # get mask
    mask = sitk.ReadImage(nrrdpath)
    extractor = featureextractor.RadiomicsFeatureExtractor(geometryTolerance=0.001)
    
    print('Extraction parameters:\n\t', extractor.settings)
    print('Enabled filters:\n\t', extractor.enabledImagetypes)
    print('Enabled features:\n\t', extractor.enabledFeatures)
    
    features = extractor.execute(image3D, mask)

    最终得到的features是一个元组,大约包含100多个数据,每个数据都是浮点数,衡量了肿瘤的统计学,形状,纹理等特征,基于这些特征,经过特征筛选,使用机器学习方法进行建模,是当前比较流行的肿瘤疗效预测,预后预测的研究思路

  4.   影像组学的包的地址:影像组学特征介绍,此外还会使用不同的滤波器对图像进行处理提取更多的特征,但思路是一样的:filter介绍

     

 

你可能感兴趣的:(医学图像)