医学影像组学特征值(Radiomics Features)提取之Pyradiomics(二)使用篇——转载

本文介绍Pyradiomics的使用方法,和安装时遇到的坑。上一篇文章(医学影像组学特征值(Radiomics Features)提取之Pyradiomics(一)理论篇)介绍了Pyradiomics支持的图像类型和组学特征类型,将医学图像和Mask用作PyRadiomics的输入,对原图和经过滤波的派生图像进行影像组学特征提取,之后可以对组学特征进行进一步分析。

1 安装过程

安装Radiomics有两种方法,第一种是直接pip install radiomics,会生成一个radiomics包,在上一篇文章介绍的;

第二种是采用官方链接安装Pyradiomics,下面详细给一下安装步骤,为了避开之前采用第一种方法安装但实际想用第二个radiomics包导致的坑,我们重新建一个conda环境,pyradiomic是python编写的程序,运行需要环境支持。所以在这之前需要安装anaconda。

首先查看conda存在的环境:

conda env list

创建我们需要的新环境:

conda create -n Radiomics python=3.7

进入Radiomics环境:

source activate Radiomics

下载Pyradiomics安装包

git clone git://github.com/Radiomics/pyradiomics

进入Pyradiomics路径下

cd pyradiomics

安装Pyradiomics的依赖包

python -m pip install -r requirements.txt

安装Pyradiomics

python setup.py install

安装完之后,在命令行进入python环境中进行测试

发现有问题,我们就按照报错提示的进行处理,可以发现这样就没问题了,可以正常import和使用了。

我们可以查看一下这个radiomics包所在的位置

这里补充一下两种方法使用时的区别,如果之前已经用第一种方法安装了radiomics包,那在用第二种方法再安装之后,python环境默认首先使用第一种方法,这里有一些不兼容的地方,如:

from radiomics import featureextractor
featureextractor.RadiomicsFeatureExtractor

会出现下面的报错

我们发现在第一个包的安装目录下radiomics的featureextractor下面确实没有RadiomicsFeatureExtractor,而是存在RadiomicsFeaturesExtractor,但是在第二个包的安装目录下是存在RadiomicsFeatureExtractor的,两者有些函数命名是不太一样的。

2 使用方法

首先导入必要的包

import SimpleITK as sitk
import radiomics
from radiomics import featureextractor

导入输入的CT数据

imageName, maskName = path_to_img, path_to_mask 
print('imageName, maskName', imageName, maskName)
if imageName is None or maskName is None:  # Something went wrong, in this case PyRadiomics will also log an error
  print('Error getting testcase!')
  exit()

一些设置文件

# Define settings for signature calculation
# These are currently set equal to the respective default values
settings = {}
settings['binWidth'] = 25
settings['resampledPixelSpacing'] = None  # [3,3,3] is an example for defining resampling (voxels with size 3x3x3mm)
settings['interpolator'] = sitk.sitkBSpline

初始化feature extractor

# Initialize feature extractor
extractor = featureextractor.RadiomicsFeatureExtractor(**settings)

设置图像类型,如原始图像,LoG、Wavelet等派生图像,默认情况下只使用原始图像

# By default, only original is enabled. Optionally enable some image types:
# extractor.enableImageTypes(Original={}, LoG={}, Wavelet={})

设置特征类型,首先屏蔽所有类型

# Disable all classes
extractor.disableAllFeatures()

输出Pyradiomics包的信息和图像的基本信息

print("Calculating features")
featureVector = extractor.execute(imageName, maskName)
for featureName in featureVector.keys():
  print("Computed %s: %s" % (featureName, featureVector[featureName]))

从输出可以看到Pyradiomics包的依赖环境Numpy、SimpleITK、PyWavelet、Python等版本, Configuration_Settings设置文件,和图像的基本信息,如Dimension、Spacing、Size、Mean、Minimun、Maximun,图像Mask的基本信息,如Spacing、Size、BoundingBox等。

设置特征类型,选择firstorder类型

# Enable all features in firstorder
extractor.enableFeatureClassByName('firstorder')

设置firstorder特征的内部特征类型,选择meanskewness,我们这里不设置,直接输出全部特征

# Only enable mean and skewness in firstorder
# extractor.enableFeaturesByName(firstorder=['Mean', 'Skewness'])

设置提取的特征类型后就可以输出影像组学特征

可以看到我们提取了firstordr的18个特征,其他的特征提取方法类似,也可以设置一些派生图像。

 

posted @ 2021-12-12 18:38  编程coding小白  阅读(3387)  评论(0编辑  收藏  举报