【CV作业06-2】调用pyradiomics库提取图像中病灶的影像组学特征

原始数据集文件结构如下:
在这里插入图片描述

  1. 设置文件夹路径

    # 设置要遍历的文件夹路径
    folder_paths = ['nodule_malignancy_db\\test_set\\benign', 'nodule_malignancy_db\\test_set\\malignant',
                    'nodule_malignancy_db\\train_set\\benign', 'nodule_malignancy_db\\train_set\\malignant']
    
    
  2. 定义一个空的DataFrame用于保存特征、创建特征提取器

    features_dfs = pd.DataFrame()  # 用于最后保存特征为csv文件
    extractor = featureextractor.RadiomicsFeatureExtractor()
    
  3. 遍历文件夹中的所有文件,并将特征合并到 features_dfs 中

    for folder_path in folder_paths:
        if folder_path.endswith('malignant'):
            label = 1
        else:
            label = 0
        # 遍历文件夹中的所有文件
        for filename in os.listdir(folder_path):
            # 判断是否为raw文件
            if filename.endswith('raw.npy'):
                # 构造掩码文件的路径
                mask_filename = filename[:-7] + 'mask.npy'
                mask_filepath = os.path.join(folder_path, mask_filename)
    
                # 构造raw文件的路径
                raw_filepath = os.path.join(folder_path, filename)
    
                # 加载raw文件和mask文件
                raw_array = np.load(raw_filepath)
                mask_array = np.load(mask_filepath)
                # 转换为 SimpleITK.Image类型的数据
                inputImage = sitk.GetImageFromArray(raw_array)
                maskImage = sitk.GetImageFromArray(mask_array)
    
                # 提取影像组学特征
                features = extractor.execute(inputImage, maskImage)
    
                # 将特征转化为DataFrame
                # 将字典转换为Series
                features_series = pd.Series(features)
                # 将Series转换为DataFrame
                features_df = pd.DataFrame(features_series, columns=['value']).transpose()
    
                # 在第一列加上文件名称,最后一列加上分类 benign-0,malignant-1
                features_df.insert(0, 'file_name',filename)
                features_df['label'] = label
    
                # 合并到总df中
                features_dfs = features_dfs.append(features_df)
    
  4. 保存特征为 csv 文件

    features_dfs.to_csv('feature.csv')
    

删除不需要的列,部分数据如下:

image-20230411211131354

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值