创建或修改目录:/www/wwwroot/104.219.215.234/data 失败!
吉泽明步快播 使用pyradiomics索取影像组学特征【详确】 - 性爱大师第一季

  • 首页
  • 金发美女
  • 金发大奶
  • 大奶人体艺术
  • 大奶女
  • 大奶美女
  • 泷川雅美视频
  • 大奶人体艺术

    吉泽明步快播 使用pyradiomics索取影像组学特征【详确】

    发布日期:2024-09-07 03:45    点击次数:179

    最近由于样式需求要使用pyradiomics索取影像组学特征,网上阅读了好多别东说念主的博客吉泽明步快播,学到一些,然后去视察了pyradiomics的官方文档,临了我方结束了特征的索取,写下此文记载,便捷日后视察。

    当先放上官方文档:https://pyradiomics.readthedocs.io/ 和pyradiomics源代码地址:https://github.com/AIM-Harvard/pyradiomics

    第一步、装配

    在依然装配好的Python环境下,推论:

    pip install pyradiomics
    
    第二步、索取特征

    通过自界说索取特征不错凭证我方的需求来建造并索取。

    当先,不错指定用于索取特征的图像类型。在pyradiomics包中为咱们提供了许多不错使用的滤波器,是以咱们不错使用原始图像及过程多样滤波器之后的图像,如下方表格,具体不错参考官方:图像类型 图像类型阐述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中进行的土产货二进制模式

    指定情势:建造特征索取器后不错不才边指定(若何建造特征索取器:extractor) 不错径直使用:enableAllImageTypes()启用通盘类型 也不错使用:enableImageTypeByName( imageType , enabled=True , customArgs=None )启用你念念用的类型 举例:

    # 通盘类型
    extractor.enableAllFeatures()
    # 指定使用LoG和Wavelet滤波器
    extractor.enableImageTypeByName('LoG')
    extractor.enableImageTypeByName('Wavelet')
    
    然后不错指定所要索取的特征。pyradiomics包也为咱们提供了好多种可选的特征,如下方表格,具体特征类型详确府上可参考:radiomics-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均匀度。是每个强度值的浅近和 特征类型特征阐述Shape Features (3D) (共17个)MeshVolume网格体积VoxelVolume体素体积SurfaceArea名义积SurfaceVolumeRatio名义积体积比Sphericity球形度Compactness1紧凑度1。推断肿瘤情势相对于球形的紧密进程,由于与球形度、紧凑度2、球形不合称联系,默许不启用Compactness2紧凑度2。推断肿瘤情势相对于球形的紧密进程,与1的狡计公式不同,默许不启用SphericalDisproportion球形不合称。是肿瘤区域的名义积与与肿瘤区域具有换取体积的球体的名义积之比,是球形度的倒数,默许不启用Maximum3DDiameter最大3D直径Maximum2DDiameterSlice最大二维直径(切片),界说为行列(经常是轴向)平面中肿瘤名义网格过甚之间的最大成对欧几里得距离。Maximum2DDiameterColumn最大2D直径(列)。界说为行切片(经常是冠状)平面中肿瘤名义网格过甚之间的最大成对欧几里得距离。Maximum2DDiameterRow最大二维直径(行)。界说为列切片(经常为矢状)平面中肿瘤名义网格过甚之间的最大成对欧几里得距离。MajorAxisLength长轴长度MinorAxisLength短轴长度LeastAxisLength最小轴长度Elongation伸长率。示意ROI情势中两个最大的主要素之间的关系Flatness平整度。示意ROI情势中最大和最小主要素之间的关系 特征类型特征阐述Shape Features (2D)MeshSurface网格面。由三角形网格界说,狡计ROI的名义PixelSurface像素面。ROI 中的像素数乘以单个像素的名义积Perimeter周长PerimeterSurfaceRatio周长比。值越低越紧凑Sphericity球形度SphericalDisproportion球形不均匀度。是球形度的倒数 ,与球形度联系,默许不启用MaximumDiameter最大二维直径。界说为肿瘤名义网格过甚之间的最大成对欧几里得距离MajorAxisLength长轴长度MinorAxisLength短轴长度Elongation伸长率。清楚了 ROI 情势中两个最大主要素之间的关​​系 特征类型特征阐述Gray Level Co-occurrence Matrix (GLCM) Features灰度共生矩阵特征(共24个)Autocorrelation自联系。是纹理细度鄙俚度大小的衡量JointAverage和洽平均ClusterProminence集群显耀性。推断 GLCM 偏度和不合称性的斟酌ClusterShade集群暗影。推断 GLCM 偏度和均匀度的斟酌ClusterTendency集群趋势Contrast对比度Correlation联系性DifferenceAverage平均差DifferenceEntropy差分熵DifferenceVariance互异方差。是异质性的一种度量Dissimilarity互异性。已弃用JointEnergy和洽能量JointEntropy和洽熵。是邻域强度值的立时性/可变性的度量Imc1联系性信息度量 (IMC) 1Imc2联系性信息度量 (IMC) 2Idm逆差矩MCC最大相商量数Idmn逆差分矩归一化Id逆差Idn逆差分归一化InverseVariance逆方差MaximumProbability最约略率SumAverage乞降平均SumEntropy总熵SumSquares浅近和 特征类型特征阐述Gray Level Size Zone Matrix (GLSZM) Features灰度级大小区域矩阵特征 (共16个)SmallAreaEmphasis是小尺寸区域漫衍的衡量,数值越大示意区域越小,纹理越综合LargeAreaEmphasis是大面积区域漫衍的度量,值越大示意区域越大,纹理越粗陋。GrayLevelNonUniformity灰度非均匀性。测量图像中灰度级强度值的可变性,值越低示意强度值越均匀。GrayLevelNonUniformityNormalized灰度非均匀归一化。测量图像中灰度强度值的可变性,值越低示意强度值的相通性越大SizeZoneNonUniformity尺寸区域非均匀性。测量图像中大小区域体积的可变性,值越低示意大小区域体积越均匀SizeZoneNonUniformityNormalized尺寸区域非均匀归一化。测量通盘图像中大小区域体积的可变性,值越低示意图像中区域大小体积之间的同质性越高ZonePercentage区域百分比。赢得 ROI 中的区域数和体素数的比率来测量纹理的粗陋度GrayLevelVariance灰度方差ZoneVariance区域方差ZoneEntropy区域熵LowGrayLevelZoneEmphasis低灰度区域强调HighGrayLevelZoneEmphasis高灰度区域强调SmallAreaLowGrayLevelEmphasis小面积低灰度区域强调SmallAreaHighGrayLevelEmphasis小区域高灰度强调LargeAreaLowGrayLevelEmphasis大面积低灰度强调LargeAreaHighGrayLevelEmphasis大面积高灰度强调 特征类型特征阐述Gray Level Run Length Matrix (GLRLM) Features灰度游程矩阵 (GLRLM) 特征 (共16个)ShortRunEmphasis是推断短运转长度漫衍的斟酌,值越大示意运转长度越短,纹理纹理越综合。LongRunEmphasis是对长行程漫衍的度量,值越大示意行程越长,结构纹理越粗陋。GrayLevelNonUniformity灰度非均匀性GrayLevelNonUniformityNormalized灰度非均匀归一化RunLengthNonUniformity运转长度非均匀性RunLengthNonUniformityNormalized运转长度非均匀归一化RunPercentage运转百分比。通过赢得 ROI 中的运转次数和体素数的比率来测量纹理的粗陋度GrayLevelVariance灰度级方差RunVariance运转方差RunEntropy运转熵LowGrayLevelRunEmphasis测量低灰度值的漫衍,值越高示意图像中低灰度值的承接度越高HighGrayLevelRunEmphasis测量较高灰度值的漫衍,值越高示意图像中高灰度值的承接度越高ShortRunLowGrayLevelEmphasis测量具有较低灰度值的较短运转长度的和洽漫衍ShortRunHighGrayLevelEmphasis测量具有较高灰度值的较短运转长度的和洽漫衍LongRunLowGrayLevelEmphasis测量具有较低灰度值的长运转长度的和洽漫衍LongRunHighGrayLevelEmphasis测量具有较高灰度值的长运转长度的和洽漫衍 特征类型特征阐述Neighbouring Gray Tone Difference Matrix (NGTDM) Features相邻灰度差矩阵(共5个) (NGTDM) 特征Coarseness粗陋度Contrast对比度Busyness努力度。从像素到其邻居的变化的度量。努力度的高值示意“努力”图像,像素与其邻域之间的强度快速变化Complexity复杂度Strength强度 特征类型特征阐述Gray Level Dependence Matrix (GLDM) Features 灰度依赖矩阵 (GLDM) 特征(共14个)SmallDependenceEmphasis小依赖漫衍的度量,值越大示意依赖越小,纹理越不均匀LargeDependenceEmphasis大依赖漫衍的度量,值越大示意依赖越大,纹理越均匀GrayLevelNonUniformity灰度非均匀性。测量图像中灰度级强度值的相通性DependenceNonUniformity推断通盘图像中依赖关系的相通性,值越低示意图像中依赖关系之间的同质性越高DependenceNonUniformityNormalized依赖非均匀归一化。推断通盘图像中依赖关系的相通性,值越低示意图像中依赖关系之间的同质性越高GrayLevelVariance灰度方差DependenceVariance依赖方差DependenceEntropy依赖熵LowGrayLevelEmphasis测量低灰度值的漫衍,值越大示意图像中低灰度值的承接度越高HighGrayLevelEmphasis测量较高灰度值的漫衍,值越高示意图像中高灰度值的承接度越高SmallDependenceLowGrayLevelEmphasis测量具有较低灰度值的小联系性的和洽漫衍SmallDependenceHighGrayLevelEmphasis测量具有较高灰度值的小联系性的和洽漫衍LargeDependenceLowGrayLevelEmphasis测量具有较低灰度值的大联系性的和洽漫衍LargeDependenceHighGrayLevelEmphasis测量具有较高灰度值的大联系性的和洽漫衍

    肃穆:除了情势特征类外,其他特征齐不错在原始图像和滤波后的图像上进行狡计

    具体的指定材干: 不错径直使用:enableAllFeatures( )启用通盘类型 也不错使用:enableFeatureClassByName(featureClass, enabled=True)启用你念念用的类型 举例:

    # 建造一阶特征
    extractor.enableFeatureClassByName('firstorder')
    # 建造只索取一阶特征的'Mean'和'Skewness'
    extractor.enableFeaturesByName(firstorder=['Mean', 'Skewness'])
    

    也不错径直通过特征类别来启工具体的特征,示例见:https://github.com/AIM-Harvard/pyradiomics/blob/master/examples/helloFeatureClass.py

    第三步不错对特征索取器进行一些建造。是否对原图归一化、是否重采样,原文档见:feature-extractor-level

    图像归一化:

    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
    

    还有其他的一些建造,凭证我方的需要修改即可。 临了举一个圆善的例子,我要措置的是CT数据,是以我参考了pyradiomics的github源码中ct参数的建造,临了我的代码如下:

    from __future__ import print_function
    import six
    import os  # needed navigate the system to get the input data
    import numpy as np
    import radiomics
    import pandas as pd
    import SimpleITK as sitk
    from radiomics import featureextractor  # This module is used for interaction with pyradiomics
    import argparse
    def catch_features(imagePath,maskPath):
        if imagePath is None or maskPath is None:  # Something went wrong, in this case PyRadiomics will also log an error
            raise Exception('Error getting testcase!')  # Raise exception to prevent cells below from running in case of "run all"
        settings = {}
        settings['binWidth'] = 25  # 5
        settings['sigma'] = [3, 5]
        settings['Interpolator'] = sitk.sitkBSpline
        settings['resampledPixelSpacing'] = [1, 1, 1]  # 3,3,3
        settings['voxelArrayShift'] = 1000  # 300
        settings['normalize'] = True
        settings['normalizeScale'] = 100
        extractor = featureextractor.RadiomicsFeatureExtractor(**settings)
        #extractor = featureextractor.RadiomicsFeatureExtractor()
        print('Extraction parameters:\n\t', extractor.settings)
    
        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'])
    # 上边两句我将一阶特征和情势特征中的默许禁用的特征齐手动启用,为了之后特征筛选
        print('Enabled filters:\n\t', extractor.enabledImagetypes)
        feature_cur = []
        feature_name = []
        result = extractor.execute(imagePath, maskPath, label=255)
            for key, value in six.iteritems(result):
            print('\t', key, ':', value)
            feature_name.append(key)
            feature_cur.append(value)
        print(len(feature_cur[37:]))
        name = feature_name[37:]
        name = np.array(name)
        '''
        flag=1
        if flag:
            name = np.array(feature_name)
            name_df = pd.DataFrame(name)
            writer = pd.ExcelWriter('key.xlsx')
            name_df.to_excel(writer)
            writer.save()
            flag = 0
        '''
        for i in range(len(feature_cur[37:])):
            #if type(feature_cur[i+22]) != type(feature_cur[30]):
            feature_cur[i+37] = float(feature_cur[i+37])
        return feature_cur[37:],name
    
    image_dir = r'D:\study\extract_radiomics_feature\linshi'
    mask_dir = r'D:\study\extract_radiomics_feature\linshi'
    patient_list = os.listdir(image_dir)
    save_file = np.empty(shape=[1,1051])
    id = []
    for patient in patient_list:
        print(patient)
        for file in os.listdir(os.path.join(image_dir,patient)):
            if file =='image.nii':
                imagePath = os.path.join(image_dir,patient,file)
            if file =='mask_gtv-1.nii':
                maskPath = os.path.join(mask_dir,patient,file)
        print(imagePath)
        print(maskPath)
        save_curdata,name = catch_features(imagePath,maskPath)
        save_curdata = np.array(save_curdata)
        save_curdata = save_curdata.reshape([1, 1051])
        id.append(patient.split('.')[0])
        np.concatenate((patient,save_curdata),axis=1)
        save_file = np.append(save_file,save_curdata,axis=0)
        print(save_file.shape)
    save_file = np.delete(save_file,0,0)
    #save_file = save_file.transpose()
    #print(save_file.shape)
    id_num = len(id)
    id = np.array(id)
    name_df = pd.DataFrame(save_file)
    name_df.index = id
    name_df.columns = name
    writer = pd.ExcelWriter('NSCLC-Radiomics-features.xlsx')
    name_df.to_excel(writer)
    writer.save()
    

    临了效果如下:

    图片

    本站仅提供存储工作,通盘履行均由用户发布,如发现存害或侵权履行,请点击举报。

    创建或修改目录:/www/wwwroot/104.219.215.234/data 失败!
    JzEngine Create File False