提取Pyradiomics网站上给出所有的特征,以及Log对数变换,小波变换等处理后的全部特征放射组学特征 — pyradiomics v3.1.0rc2.post5+g6a761c4 文档
都是和B站和博客的老师们学的,当作学习笔记
import pandas as pd
import os
import radiomics
from radiomics import featureextractor
path = r'C:\Users\lyp\Desktop\test'#test文件夹下存放多个病例的文件夹,每个病例文件夹下包含一个原始图像和一个label图像
folders = os.listdir(path)#创建一个子文件夹文件名的list,便于后续的遍历
df = pd.DataFrame()#创建一个空表
# 定义特征提取设置
settings = {}
settings['binWidth'] = 25
settings['sigma'] = [3, 5]
settings['resampledPixelSpacing'] = [1,1,1]
settings['voxelArrayShift'] = 1000
settings['normalize'] = True
settings['normalizeScale'] = 100# 这些全部按自己需要来设置
# 实例化特征提取器
extractor = featureextractor.RadiomicsFeatureExtractor(**settings)
#批量提取特征:
extractor.enableAllImageTypes()#设置图像类型
for folder in folders:
#循环遍历每一个病例
print(folder)
image_file = os.path.join(path,folder,'image.nrrd')#获取原始图像路径
label_file = os.path.join(path,folder,'label.nrrd')#获取label图像路径
feature = extractor.execute(image_file,label_file)#提取特征
df_new = pd.DataFrame.from_dict(feature.values()).T#获取特征值,转为表格形式,并转置
df_new.columns = feature.keys()#获得特征名
df_new.insert(0,'ID',folder)#在表格第一列插入病例文件夹名称
df = pd.concat([df,df_new])#将所有病例放入一个表格中
df.to_excel(os.path.join(path,'result.xlsx'))