使用pyradiomics进行医学图像特征提取

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

最近在尝试用影像组学特征分析的方法对超声造影图像进行分析,第一次使用pyradiomics工具包。借鉴了很多大佬的文章,尝试了许多方法,下面将自认为最不容易报错、初步提取特征最全的方法,记录于此,方便日后查看。


提示:以下是本篇文章正文内容,下面案例可供参考

一、安装pyradiomics步骤

1.1、运行环境配置

1.安装python,可直接进入python官网进行安装

2.在已经安装好python环境的terminal中执行:

pip install pyradiomics

等待安装结束。

1.2、检查pyradiomics工具包是否安装成功

在 terminal 中输入 python ,在三箭头后输入 import radiomics,若无任何输出,则安装完成。

二、pyradiomics使用步骤

2.1、运行准备

1.只需要准备以下四个文件,并将这四个文件放在一个项目下即可,如图:

其中img.nrrd为原始图片转.nrrd格式(图片转.nrrd代码如下)label.nrrd同理。

import SimpleITK as sitk
from skimage import io, color

# 读取PNG图像
png_image = io.imread('img.png', as_gray=True)

# 将灰度图转换为RGB图像(如果原图是彩色图像,则可以跳过此步骤)
png_image_rgb = color.gray2rgb(png_image)

# 将图像转换为SimpleITK格式
sitk_image = sitk.GetImageFromArray(png_image_rgb)

# 保存为NRRD格式
sitk.WriteImage(sitk_image, 'img.nrrd')

第三个文件为Params.yaml文件,这是pyradiomics中的配置文件,获取方式:

  1. https://github.com/Radiomics/pyradiomics 上把项目下载下来并解压
  2. 找到解压后保存文件夹的路径,并在该路径下搜索Pyradiomics_Params.yaml
  3. 这个文件就是我们的第三个文件Params.yaml文件

第四个文件test.py代码如下:

import radiomics.featureextractor as FEE
import SimpleITK as sitk
import pandas as pd

# 文件名
main_path = '.'
ori_name = r'\img.nrrd'
lab_name = r'\label.nrrd'
para_name = r'\Params.yaml'

# 文件全部路径
ori_path = main_path + ori_name
lab_path = main_path + lab_name
para_path = main_path + para_name
print("原始路径:" + ori_path)
print("标签路径:" + lab_path)
print("参数路径:" + para_path)

# 使用配置文件初始化特征抽取器
extractor = FEE.RadiomicsFeatureExtractor(para_path)
print("抽取参数:\n\t", extractor.settings)
print("启用的滤波器:\n\t", extractor.enabledImagetypes)
print("启用的特征:\n\t", extractor.enabledFeatures)

# 读取掩模图像,查看唯一标签值
mask_image = sitk.ReadImage(lab_path)
unique_labels = set(sitk.GetArrayFromImage(mask_image).ravel())
print("掩模中的唯一标签:", unique_labels)

# 运行
if 27 in unique_labels:
    result = extractor.execute(ori_path, lab_path, label=27)  # 抽取特征
    print("结果类型:", type(result))  # 结果以 Python 有序字典的形式返回
    print("")
    print("计算的特征")
    for key, value in result.items():  # 输出特征
        print("\t", key, ":", value)

    # 将结果写入 Excel 文件
    df = pd.DataFrame.from_dict(result, orient='index', columns=['特征值'])
    writer = pd.ExcelWriter('提取的特征信息.xlsx', engine='xlsxwriter')
    df.to_excel(writer, sheet_name='Sheet1', index=True)  # 设置 index=True 将索引也写入 Excel
    writer.save()
    print("特征已保存至提取的特征信息.xlsx")
else:
    print("错误:掩模中不存在标签 27。")

2.2、运行

运行test.py

运行代码时要注意:掩膜中的唯一标签要对应好,上述代码将标签值打印出来了,对应打印的标签值进行填写(例如我所用的标签值为27)。

最后特征值以表格的形式展现。


总结

这里借鉴了很多大佬的文章,尤其感谢:Repo Kristx,非常感谢大佬的文章,很有帮助(若侵权请私聊删帖)

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值