基于pyradiomics影像组学特征提取

2024-01-14 14:28

本文主要是介绍基于pyradiomics影像组学特征提取,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

基于pyradiomics影像组学特征提取

  • 特征提取:
  • 1 pyradiomics的使用:
    • 1.1,在python环境下安装pyradiomics:
    • 1.2,设置特征提取器,获得想要特征:
      • 1.2.1 图像类型
      • 1.2.2 目标特征设置
      • 1.2.3 特征提取器设置
  • 2 代码示例;
  • 参考:

特征提取:

在这里,我们使用pyradiomics来提取影像组学特征。首先,我们先介绍pyradiomica工具包,然后我们进行特征的提取。

1 pyradiomics的使用:

PyRadiomics的官方文档:https://pyradiomics.readthedocs.io/en/latest/
image.png

1.1,在python环境下安装pyradiomics:

pip install pyradiomics

1.2,设置特征提取器,获得想要特征:

通过自定义特征提取器,可以根据自己的需求来设置并提取特征。
其实,需要设置两个方面:1,图像类型;2,所要提取的特征;3,提取器设置

1.2.1 图像类型

第一步:图像类型:首先,设置提取特征的图像类型,可以指定用于提取特征的图像类型。在pyradiomics包中为我们提供了许多可以使用的滤波器,所以我们可以使用原始图像及经过各种滤波器之后的图像,如下方表格。
具体可以参考官方:https://pyradiomics.readthedocs.io/en/latest/customization.html#image-types

图像类型解释
Original原始图像
Wavelet小波变换。产生在三个维度中每个维度分别使用高通、低通滤波器的所有组合(LLH、LHL、LHH、HLL、HLH、HHL、HHH、LLL)
LoGLaplacian of Gaussian filter高斯滤波器的拉普拉斯算子,是一种边缘增强滤波器。使用它需要指定参数sigma,低 sigma 强调精细纹理,高 sigma 值强调粗糙纹理
Square平方。取原始像素的平方并将它们线性缩放回原始范围
SquareRoot平方根。取绝对图像强度的平方根并将它们缩放回原始范围
Logarithm对数。取绝对强度 + 1 的对数,值缩放到原始范围
Exponential指数。采用e^(绝对强度)获取强度的指数值,值被缩放到原始范围
Gradient梯度。返回局部梯度的大小
LocalBinaryPattern2D在每一片中进行的本地二进制模式
LocalBinaryPattern3D在3d中进行的本地二进制模式

如何使用:
指定方式:设置特征提取器后可以在下边指定
可以直接使用:enableAllImageTypes() 启用所有类型
也可以使用:enableImageTypeByName( imageType , enabled=True , customArgs=None )启用你想用的类型
如:

# 所有类型
extractor.enableAllFeatures()
# 指定使用LoG和Wavelet滤波器
extractor.enableImageTypeByName('LoG')
extractor.enableImageTypeByName('Wavelet')

1.2.2 目标特征设置

第二步:目标特征设置
pyradiomics包也为我们提供了很多种可选的特征,如下表格所示:
具体可参考资料:https://pyradiomics.readthedocs.io/en/latest/features.html
这些特征主要包含:

  • 一阶特征 First Order Statistics (19 features)
  • 3D形状特征 Shape-based (3D) (16 features)
  • 2D形状特征 Shape-based (2D) (10 features)
  • 灰度级共生矩阵 Gray Level Co-occurrence Matrix (24 features)
  • 灰度级游程矩阵 Gray Level Run Length Matrix (16 features)
  • 灰度大小区域矩阵 Gray Level Size Zone Matrix (16 features)
  • 相邻灰度色调差异矩阵 Neighbouring Gray Tone Difference Matrix (5 features)
  • 灰度依赖矩阵 Gray Level Dependence Matrix (14 features)

下面展示一阶特征及其解释,更多的可以参考官方文档。

特征类型特征解释
First Order Features(共19个)Energy能量
Total Energy总能量
Entropy
Minimum最小特征值
10Percentile特征值的百分之10的值
90Percentile特征值得百分之90的值
Maximum最大特征值
Mean均值
Median中位数
InterquartileRange四分位距离
Range灰度值范围
MeanAbsoluteDeviation(MAD)平均绝对误差
RobustMeanAbsoluteDeviation(rMAD) 鲁棒平均绝对偏差
RootMeanSquared(RMS)均方根误差
StandardDeviation标准差。测量平均值的变化或离散量,默认不启用,因为与方差相关
Skewness偏度。测量值的分布关于平均值的不对称性
Kurtosis峰度。是图像 ROI 中值分布的“峰值”的量度
Variance方差。是每个强度值与平均值的平方距离的平均值
Uniformity均匀度。是每个强度值的平方和

注意:除了形状特征类外,其他特征都可以在原始图像和滤波后的图像上进行计算。

具体的指定方法:
可以直接使用:enableAllFeatures( )启用所有类型
也可以使用:enableFeatureClassByName(featureClass, enabled=True)启用你想用的类型
例如:

# 设置一阶特征
extractor.enableFeatureClassByName('firstorder')
# 设置只提取一阶特征的'Mean'和'Skewness'
extractor.enableFeaturesByName(firstorder=['Mean', 'Skewness'])

1.2.3 特征提取器设置

第三步:特征提取器设置:
是否对原图归一化、是否重采样。
图像归一化:

  • normalize:默认为false。设置为true时进行图像归一化。
  • normalizeScale:确定图像归一化后的比例。默认为1。
  • removeOutliers:定义要从图像中删除的异常值。默认为0。

图像/mask重采样:

  • resampledPixelSpacing:设置重采样时的体素大小。默认无。
  • interpolator:设置用于重采样的插值器。仅适用于重采样图像,sitkNearestNeighbor始终用于重采样掩码以保留标签值。可选的插值器:

  • padDistance:设置重采样期间裁剪肿瘤体时的体素补充数量。

例如:

settings = {}
settings['![binWidth](https://img-blog.csdnimg.cn/c9b0896a5eea4eaf8217d0ed7f23e92b.png)
'] = 25
settings['resampledPixelSpacing'] = [3,3,3]  # [3,3,3] is an example for defining resampling (voxels with size 3x3x3mm)
settings['interpolator'] = sitk.sitkBSpline

还有其他的一些设置,根据自己的需要修改即可。

2 代码示例;

下面是一个CT肺部特征提取特征的代码示例:

特征提取块设置:当然,你可以把这一块写成函数:

import radiomics
from radiomics import featureextractor# 定义特征提取设置
settings = {}
settings['binWidth'] = 25
settings['sigma'] = [3, 5]
settings['resampledPixelSpacing'] = [1,1,1] # 3,3,3
settings['voxelArrayShift'] = 1000 # 300
settings['normalize'] = True
settings['normalizeScale'] = 100# 实例化特征提取器
extractor = featureextractor.RadiomicsFeatureExtractor(**settings)# 指定使用 LoG 和 Wavelet 滤波器
extractor.enableImageTypeByName('LoG')
extractor.enableImageTypeByName('Wavelet')
# 所有类型
extractor.enableAllFeatures()
extractor.enableFeaturesByName(firstorder=['Energy', 'TotalEnergy', 'Entropy','Minimum', '10Percentile', '90Percentile','Maximum', 'Mean', 'Median', 'InterquartileRange', 'Range','MeanAbsoluteDeviation', 'RobustMeanAbsoluteDeviation','RootMeanSquared','StandardDeviation', 'Skewness', 'Kurtosis', 'Variance', 'Uniformity'])
extractor.enableFeaturesByName(shape=['VoxelVolume', 'MeshVolume', 'SurfaceArea', 'SurfaceVolumeRatio', 'Compactness1', 'Compactness2', 'Sphericity', 'SphericalDisproportion',  'Maximum3DDiameter', 'Maximum2DDiameterSlice', 'Maximum2DDiameterColumn', 'Maximum2DDiameterRow', 'MajorAxisLength', 'MinorAxisLength', 'LeastAxisLength', 'Elongation', 'Flatness'])

将输出特征保存:
我们使用单例数据进行测试,当然,你可以在此基础上写个循环对整个文件夹进行测试:

import pandas as pd
import numpy as np# Get the testCase
nii_Path = './test/Image/'
seg_Path = './test/Mask/'features_dict = dict()
df = pd.DataFrame()imagePath = nii_Path + 'sub-strokecase0001_ses-0001_dwi_reg_norm.nii.gz'
maskPath = seg_Path + 'sub-strokecase0001_ses-0001_msk_reg.nii.gz'
print(imagePath)
features = extractor.execute(imagePath, maskPath)  # 抽取特征for key, value in features.items():  # 输出特征features_dict[key] = valuedf = df._append(pd.DataFrame.from_dict(features_dict.values()).T, ignore_index=True)df.columns = features_dict.keys()
df.to_csv('Radiomics-Features.csv', index=0)
print('Done')

excel表:
image.png

参考:

[1] https://pyradiomics.readthedocs.io/en/latest/index.html
[2] https://blog.csdn.net/weixin_46428351/article/details/123592586

这篇关于基于pyradiomics影像组学特征提取的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/605486

相关文章

参会邀请 | 第二届机器视觉、图像处理与影像技术国际会议(MVIPIT 2024)

第二届机器视觉、图像处理与影像技术国际会议(MVIPIT 2024)将于2024年9月13日-15日在中国张家口召开。 MVIPIT 2024聚焦机器视觉、图像处理与影像技术,旨在为专家、学者和研究人员提供一个国际平台,分享研究成果,讨论问题和挑战,探索前沿技术。诚邀高校、科研院所、企业等有关方面的专家学者参加会议。 9月13日(周五):签到日 9月14日(周六):会议日 9月15日(周日

【LVI-SAM】激光雷达点云处理特征提取LIO-SAM 之FeatureExtraction实现细节

激光雷达点云处理特征提取LIO-SAM 之FeatureExtraction实现细节 1. 特征提取实现过程总结1.0 特征提取过程小结1.1 类 `FeatureExtraction` 的整体结构与作用1.2 详细特征提取的过程1. 平滑度计算(`calculateSmoothness()`)2. 标记遮挡点(`markOccludedPoints()`)3. 特征提取(`extractF

图特征工程实践指南:从节点中心性到全局拓扑的多尺度特征提取

图结构在多个领域中扮演着重要角色,它能有效地模拟实体间的连接关系,通过从图中提取有意义的特征,可以获得宝贵的信息提升机器学习算法的性能。 本文将介绍如何利用NetworkX在不同层面(节点、边和整体图)提取重要的图特征。 本文将以NetworkX库中提供的Zachary网络作为示例。这个广为人知的数据集代表了一个大学空手道俱乐部的社交网络,是理解图特征提取的理想起点。 我们先定义一些辅助函数

1.39TB高清卫星影像更新(WGS84坐标投影)

最近对WGS84版的高清卫星影像数据进行了一次更新,并基于更新区域生成了相应的接图表。 1.39TB高清卫星影像更新 本次数据更新了1576个离线包,共1.39TB大小,并全部生成了更新接图表。 更新接图表范围 更新接图表由每一个离线包文件的范围构成,放大地图可以查看接图表的编号。    接图表编号 我们打开瓦片编号并放到到第12级,可以发现接图表的编号与瓦片编号完全一

语音特征提取方法 (二)MFCC

下面总结的是第四个知识点:MFCC。因为花的时间不多,所以可能会有不少说的不妥的地方,还望大家指正。谢谢。         在任意一个Automatic speech recognition 系统中,第一步就是提取特征。换句话说,我们需要把音频信号中具有辨识性的成分提取出来,然后把其他的乱七八糟的信息扔掉,例如背景噪声啊,情绪啊等等。       搞清语音是怎么产生的对于我们理解语音有很大

Dimension out of range 等报错解决,可以加拼接后的深度特征提取了

报错 Extracting test features for class bagel: 0%| | 0/110 [00:00<?, ?it/s]Traceback (most recent call last):File "/home/cszx/c1/zgp/3D-ADS-main/patchcore_runner.py", line 46, in evaluatemet

Brain Commun | 推动组学和影像学数据走向综合

摘要 目前还没有能完全治愈脑部疾病的治疗方法。组学是一种新兴技术,能够帮助研究人员了解潜在脑部疾病的分子机制。包括基因组学、转录组学和蛋白质组学在内的多组学技术,以及MRI、PET和EEG等脑影像技术,都对脑疾病相关治疗靶点的检测做出了贡献。本研究致力于通过整合组学和影像学的方法来建立脑部多分子图谱,以提供对脑部疾病诊断和治疗的新见解。这种方法需要使用组学和影像学技术进行精确的数据收集、数据处理

跨模态检索研究进展综述【跨模态检索的核心工作在于:①不同模态数据的特征提取、②不同模态数据之间内容的相关性度量】【主流研究方法:基于传统统计分析的技术、基于深度学习的技术】【哈希编码提高检索速度】

随着互联网上多媒体数据的爆炸式增长,单一模态的检索已经无法满足用户需求,跨模态检索应运而生. 跨模态检索旨在以一种模态的数据去检索另一种模态的相关数据。 跨模态检索的核心任务是:数据特征提取 和 不同模态数据之间内容的相关性度量。 文中梳理了跨模态检索领域近期的研究进展,从以下角度归纳论述了跨模态检索领域的研究成果.: 传统方法;深度学习方法;手工特征的哈希编码方法;深度学习的哈希编码方法

GEE土地分类预处理:NAIP和NLCD影像的数据进行随机样本点提取采样作为土地分类的标签数据(R\G\B和landcover)

目录 简介 数据集 NAIP National Agriculture Imagery Program NLCD 2021: USGS National Land Cover Database 函数 neighborhoodToArray(kernel, defaultValue) Arguments: Returns: Image Export.table.toCloudS

Pointnet++改进即插即用系列:全网首发ACConv2d|即插即用,提升特征提取模块性能

简介:1.该教程提供大量的首发改进的方式,降低上手难度,多种结构改进,助力寻找创新点!2.本篇文章对Pointnet++特征提取模块进行改进,加入ACConv2d,提升性能。3.专栏持续更新,紧随最新的研究内容。 目录 1.理论介绍 2.修改步骤 2.1 步骤一          2.2 步骤二          2.3 步骤三 1.理论介绍 由于在给定的应用环境中