广源建设集团网站,如何虚拟一个公司网站,wordpress 登入插件,品牌网站建设还来大蝌蚪基于pyradiomics影像组学特征提取 特征提取#xff1a;1 pyradiomics的使用#xff1a;1.1#xff0c;在python环境下安装pyradiomics:1.2,设置特征提取器#xff0c;获得想要特征#xff1a;1.2.1 图像类型1.2.2 目标特征设置1.2.3 特征提取器设置 2 代码示例;参考#… 基于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/
1.1在python环境下安装pyradiomics:
pip install pyradiomics1.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、LLLLoGLaplacian of Gaussian filter高斯滤波器的拉普拉斯算子是一种边缘增强滤波器。使用它需要指定参数sigma低 sigma 强调精细纹理高 sigma 值强调粗糙纹理Square平方。取原始像素的平方并将它们线性缩放回原始范围SquareRoot平方根。取绝对图像强度的平方根并将它们缩放回原始范围Logarithm对数。取绝对强度 1 的对数值缩放到原始范围Exponential指数。采用e^(绝对强度)获取强度的指数值值被缩放到原始范围Gradient梯度。返回局部梯度的大小LocalBinaryPattern2D在每一片中进行的本地二进制模式LocalBinaryPattern3D在3d中进行的本地二进制模式
如何使用 指定方式设置特征提取器后可以在下边指定 可以直接使用enableAllImageTypes() 启用所有类型 也可以使用enableImageTypeByName( imageType , enabledTrue , customArgsNone )启用你想用的类型 如
# 所有类型
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, enabledTrue)启用你想用的类型 例如
# 设置一阶特征
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[
] 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_indexTrue)df.columns features_dict.keys()
df.to_csv(Radiomics-Features.csv, index0)
print(Done)
excel表
参考
[1] https://pyradiomics.readthedocs.io/en/latest/index.html [2] https://blog.csdn.net/weixin_46428351/article/details/123592586