提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
最近在尝试用影像组学特征分析的方法对超声造影图像进行分析,第一次使用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中的配置文件,获取方式:
- 在https://github.com/Radiomics/pyradiomics 上把项目下载下来并解压
- 找到解压后保存文件夹的路径,并在该路径下搜索Pyradiomics_Params.yaml
- 这个文件就是我们的第三个文件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,非常感谢大佬的文章,很有帮助(若侵权请私聊删帖)