首页 > 其他分享 >【影像组学pyradiomics学习笔记】png图像提取组学特征

【影像组学pyradiomics学习笔记】png图像提取组学特征

时间:2024-09-12 20:52:48浏览次数:3  
标签:pyradiomics plt 组学 image mask import path png

1、提取单张png图像组学特征示例:

import SimpleITK as sitk
import numpy as np
import matplotlib.pyplot as plt
from radiomics import featureextractor
import os
import cv2


def load_image(image_path):
    image = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE)  # Load image in grayscale
    return sitk.GetImageFromArray(image)


if __name__ == '__main__':

    # 指定image和mask路径
    image_path = 'xxx_img.jpg'
    mask_path = 'xxx_mask.png'

    # 加载图像
    image = load_image(image_path)
    mask = load_image(mask_path)

    # 获取掩码
    mask = sitk.BinaryThreshold(mask, 1, 255, 1, 0)

    # 可视化
    plt.subplot(1, 2, 1)
    plt.imshow(sitk.GetArrayFromImage(image), cmap='gray')
    plt.title('Image')
    plt.subplot(1, 2, 2)
    plt.imshow(sitk.GetArrayFromImage(mask), cmap='gray')
    plt.title('Mask')
    plt.show()

    # 初始化特征提取器
    extractor = featureextractor.RadiomicsFeatureExtractor()

    # 提取特征
    features = extractor.execute(image, mask)

    # 打印特征
    for feature_name, feature_value in features.items():
        print(f'{feature_name}: {feature_value}')

2、遍历文件夹提取多张png图像组学特征示例(数据需要自行准备,一张原图对应一张掩膜图,原图命名格式为*_image.png,掩膜图命名格式为*_label.png,将图像数据放在一个文件夹内即可):

import SimpleITK as sitk
import numpy as np
import matplotlib.pyplot as plt
from radiomics import featureextractor
import os
import cv2
import pandas as pd

def load_image(image_path):
    image = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE)  # 加载灰度图像
    return sitk.GetImageFromArray(image)

# 遍历文件夹内的所有文件
#params = 'Params.yaml'
folder_path = 'data/all'
all_features = []
image_names = []

for root, dirs, files in os.walk(folder_path):
    for file in files:
        if file.endswith('_image.png'):
            image_path = os.path.join(root, file)
            mask_path = os.path.join(root, file.replace('_image.png', '_label.png'))

            # 加载图像和掩码
            image = load_image(image_path)
            mask = load_image(mask_path)

            # 获取掩码
            mask = sitk.BinaryThreshold(mask, 1, 255, 1, 0)

            # 初始化特征提取器
            extractor = featureextractor.RadiomicsFeatureExtractor()

            # 提取特征
            extractor.enableAllFeatures()
            extractor.enableAllImageTypes()
            extractor.enabledFeatures['glcm'] = ['Autocorrelation',
                                                 'JointAverage',
                                                 'ClusterProminence',
                                                 'ClusterShade',
                                                 'ClusterTendency',
                                                 'Contrast',
                                                 'Correlation',
                                                 'DifferenceAverage',
                                                 'DifferenceEntropy',
                                                 'DifferenceVariance',
                                                 'JointEnergy',
                                                 'JointEntropy',
                                                 'Imc1',
                                                 'Imc2',
                                                 'Idm',
                                                 'MCC',
                                                 'Idmn',
                                                 'Id',
                                                 'Idn',
                                                 'InverseVariance',
                                                 'MaximumProbability',
                                                 'SumEntropy',
                                                 'SumSquares']

            # 由于图像是2D,所以专门去除了GLCM中的3D特征

            features = extractor.execute(image, mask)
            features_dict = dict(features.items())  # 将特征转换为字典形式
            all_features.append(features_dict)  # 将字典添加到列表中
            image_names.append(file.replace('_image.png', ''))  # 记录图像名称

# 将所有特征合并到一个 DataFrame 中
df = pd.DataFrame.from_dict(all_features)  # 使用 from_dict 方法并指定 orient='index' 来实现转置

# 添加图像名称作为索引
df['ImageName'] = image_names
df.set_index('ImageName', inplace=True)


# 保存为 Excel 表格
df.to_excel('result.xlsx', index=False, header=True)  # 保留表头特征名称和索引

生成的特征数据为:

标签:pyradiomics,plt,组学,image,mask,import,path,png
From: https://blog.csdn.net/Gu104/article/details/142150928

相关文章

  • 【图像去噪】实用小技巧 | 使用matlab将.mat格式的图像转成.png格式的图像,适用于DnD数
    请先看【专栏介绍文章】:【图像去噪(ImageDenoising)】关于【图像去噪】专栏的相关说明,包含适配人群、专栏简介、专栏亮点、阅读方法、定价理由、品质承诺、关于更新、去噪概述、文章目录、资料汇总、问题汇总(更新中)图像形式的DND数据集(.png格式)下载链接见本文底部,订阅专栏免......
  • 中移ML307A(4G Cat1,C-SDK,OpenCPU)模组学习开发-使用i2c采集sht30温湿度数据
    <p><iframename="ifd"src="https://mnifdv.cn/resource/cnblogs/ML307A_OPEN"frameborder="0"scrolling="auto"width="100%"height="1500"></iframe></p>  测试1,把文件拷贝到自己工程的 ......
  • 中移ML307R(4G Cat1,C-SDK,OpenCPU)模组学习开发-使用i2c采集sht30温湿度数据
    <p><iframename="ifd"src="https://mnifdv.cn/resource/cnblogs/ML307R_OPEN"frameborder="0"scrolling="auto"width="100%"height="1500"></iframe></p>  测试1,把文件拷贝到自己工程的 ......
  • Nature Com. | 鲲鹏院王培培等团队整合多组学数据预测植物复杂性状
    全基因组预测(或全基因组选择)在缩短动植物育种周期、提高育种效率等方面起到越来越重要的作用。在以往的研究中,通常只有基因组序列信息被用于全基因组预测中,但植物复杂性状的形成受到多个维度的遗传信息调控,包括基因组序列、基因转录调控、基因甲基化修饰、染色体三维结构与修饰等......
  • aspose word转换pdf文件后将pdf文件转换为图片png
    asposeword转换pdf文件后将pdf文件转换为图片png链接:asposeword模板文件生成pdfhttps://www.cnblogs.com/oktokeep/p/16615900.htmlpackagecom.example.core.mydemo.aspose;importorg.apache.pdfbox.pdmodel.PDDocument;importorg.apache.pdfbox.rendering.ImageType;......
  • mics-Make Png Great Again
    一、前言今天群友分享了一道很有意思的一道mics,附件如下;123网盘下载;https://www.123pan.com/s/q2J1jv-beBvd.html提取码:0905解压得到一张打不开的图片,010分析,发现4位倒转了;“打不开的图片”010打开分析,发现4位倒转了;翻到最底下又有意外发现,发现是一个“zip”;......
  • LCD屏幕显示PNG图像
    正点原子LCD屏幕显示PNG图像本文概要这段时间在学习正点原子的IMX6ULL开发板,在应用编程中有一个代码练习是需要在LCD屏幕上显示PNG图像,但由于我的屏幕参数和教程中的有些出入,于是经过自己查阅和修改,终于成功在自己的LCD屏幕上显示PNG图像。LCD屏幕参数我的LCD参数如下所示:......
  • 后缀数组学习笔记
    后缀数组挺好玩的,于是来写后缀数组学习笔记了。什么是后缀数组?后缀数组主要关系到2个数组:\(sa\)和\(rk\)。\(sa[i]\)表示将所有后缀按照字典序从小到大排序,排名第\(i\)的后缀的开头为第\(sa[i]\)个字符。\(rk[i]\)表示将所有后缀按照字典序从小到大排序,后缀开......
  • 数组学习
    可变参数◆JDK1.5开始,Java支持传递同类型的可变参数给一个方法。◆在方法声明中,在指定参数类型后加一个省略号(...)。◆一个方法中只能指定一个可变参数,它必须是方法的最后一个参数。任何普通的参数必须在它之前声明。packagecom.yanna.method;publicclassDemo04......
  • 易基因:多组学测序分析揭示m5C甲基化上调E2F1表达以促进卵巢癌肿瘤进展|Nature子刊
    大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。卵巢癌是全球死亡率最高的妇科癌症,其中上皮性卵巢癌是最常见的卵巢癌类型。由于缺乏可靠的卵巢癌早期筛查,导致诊断延迟,5年生存率仅为50%。尽管近些年来治疗技术取得了进展,但由于其发病机制的基因调控网络不明确,卵巢癌......