-
2021-07-04 09:40:59
使用Pyradiomics(Python)提取图像(.nrrd)影像组学特征
一、首先要安装Python和Pyradiomics
需要注意的的是Pyradiomics需要C++支持,Microsoft C++ 生成工具可以解决
直接安装pyradiomics,pip会自动安装其他pyradiomics所需的安装包pip install pyradiomics
二、数据格式及数据储存格式
数据格式:图像使用的是.nrrd格式储存,每个受试者两个文件,一个是图像,一个是体素感兴趣区(VOI)
数据储存格式:两个文件夹一个存放所有的图像,一个存放所有的VOI
注意:图像的命名与VOI命名如下,如test1.nrrd(图像文件)和 test1.nrrd(VOI文件)三、组学特征提取
需要修改的是四处:1. tree1,是图像文件的地址;2. tree2,是VOI文件的地址;3. tree3,是参数配置文件,格式为.yaml;4. 特征提取结束后结果文件储存位置
import radiomics import radiomics.featureextractor as FEE import os import csv import pandas as pd tree1 = r'G:\img' tree2 = r'G:\voi' tree3 = r'G:\parameter.yaml' tree4 = r'results.csv' extractor = FEE.RadiomicsFeatureExtractor(tree3) namelist = [] valuelist = [] result = [] for root, dirs, files in os.walk(tree1): for name in files: result = (extractor.execute(os.path.join(tree1, name), os.path.join(tree2, name))) valuelist.append(result.values()) namelist.append(name) with open("./csv.csv",'w',newline='') as t: writer = csv.writer(t) writer.writerow(result.keys()) writer.writerows(valuelist) csv = pd.read_csv("./csv.csv") csv.insert(0, 'Name', namelist) csv.to_csv(tree4, index=False)
更多相关内容 -
【影像组学预测模型-Radiomics】实操教学
2021-02-10 11:39:13影像组学(Radiomics)是一个新兴的概念,2012 年由荷兰学者 Philippe Lambin 首次提出,其定义是借助计算机软件,从医学影像图像中挖掘海量的定量影像特征,使用统计学和/或机器学习的方法, 筛选最有价值的影像组学特征,...影像组学(Radiomics)是一个新兴的概念,2012 年由荷兰学者 Philippe Lambin 首次提出,其定义是借助计算机软件,从医学影像图像中挖掘海量的定量影像特征,使用统计学和/或机器学习的方法, 筛选最有价值的影像组学特征,用以解析临床信息,用于疾病的定性、肿瘤分级分期、疗效评估和预后预测等.
流程概述
第一步:勾画ROI(三维ROI)
这一步很多软件都能做到 (工具见第二部分)。请留意使用的工具应能勾画三维的ROI,并且体素大小、层间距等几何信息能计算准确,否则跟形态/轮廓相关的特征会计算错误。
第二步:计算ROI内影像信号(也就是把ROI内的影像抠出来)的特征集。特征集包括:灰度特征:即常见的直方图信息譬如均值,均方偏差,偏度之类;
形状特征:根据ROI轮廓计算的,如体积、表面积、最大径之类的;
纹理特征:通过灰度共生矩阵计算出来的高阶特征。这些纹理特征其实往往都有显示意义,举例:SizeZone特征用于评估ROI内影像的块状程度,下列两个瓷砖图的Small Area Emphasis / Large Area Emphasis就不同。
这一步需要特别留意的是:应该用信号真实值而不是灰度值进行计算。单纯把0~4095的灰度值放进去计算,难以把不同被试的图归一化。所以作者不推荐用通用的图像纹理计算软件。应使用专业的医学影像处理软件,准确读入DICOM信息得到真实值。
第三步:数据挖掘,预测模型建立与检验。
目前最常见的套路是利用Lasso回归筛选相关变量,然后绘制nomogram,对nomogram性能进行评价。如果再深入一点,那就是基于nomogram做亚组划分与分析。
重点:本文小编将此软件按照,ROIs 绘制,Lasso教程,再到nomogram建立,全流程手把手传授,并结合案例给大家分析讲解。
1. 软件要求和准备工作
1.1 软件安装
Radiomics最主要就是靶区规划(ROIs),有很多软件都可以实现,市面上大部分软件都是基于python开发和运行的,需要安装照Python和设置环境。那么,有没有更省事一步到位的解决办法?答案是,有。这个一步到位的解决方法就是本文要介绍的3D Slicer。3D slicer (https://download.slicer.org/),支持MAC 和Window, 免费!免费!免费!重要的事情说三遍!
1.2 软件简介
假定大家已经从网站下载最新的4.8.1版本,完成了安装。软件启动后,将显示下面的界面:
注意到红色箭头指向的右上方按钮图标了吗?这不就是Python的代表性Logo吗?没错,只要安装好3D Slicer,内部就会直接准备好了Python 2.7的开发环境。点击这个按钮,就会在软件的下方启动Python的交互式开发环境。
1.3 操作示范:
大家可以参考下面这个网站(https://www.slicercn.com),网站里有很多教大家使用的中文视频,我就不重复讲了。
2. 演示如何使用3D Slicer 获取radiomics
2.1 绘制ROIs
这里推荐AI绘制(Nvidia Clara )
PS: 安装NvidiaAIAssistedAnnotation扩展(在“分割”类别中),等待安装完成,然后单击“重新启动”
以肝脏为例
CT对肝脏的基于边界点的分割:转到 示例数据 模块并加载“ CTACardio”数据集
转到 Segment Editor
创建一个新的细分
双击segment名称并输入“ liver”以指定细分内容
单击“ Nvidia AIAA”效果,“从边界点分割”部分
可选:单击“过滤器”图标以仅列出名称中包含“肝脏”的那些型号
选择“ annotation_ct_liver”(训练为在门静脉期CT图像中分割肝脏的模型)
单击“放置标记点”按钮,然后在切片视图中的所有6个侧面的肝脏边缘附近单击,然后单击“开始”
在大约30秒内,自动分割结果将出现在切片视图中。要以3D形式显示结果,请点击Segment Editor列表上方的“显示3D”按钮。
要在分割完成后调整先前放置的边界点,请单击“开始”按钮旁边的“编辑”图标。
在CT上对肝脏和肿瘤进行全自动分割:从http://medicaldecathlon.com/下载Task03_Liver \ imagesTr \ liver_102.nii.gz数据集并将其加载到3D Slicer中
转到 Segment Editor
点击“ Nvidia AIAA”效果
在“自动分割”部分中,选择“ segmentation_ct_liver_and_tumor”模型,然后单击“开始”
自动分割结果应在3-5分钟内显示
可选:转到 Segments 模块以编辑显示设置
label: liver / tumor
2.2 提取radiomics
主要使用pyradiomics组件,引用某大神一个完整的视频给大家介绍下提取,可以只参考视频的最后一部分就可以了,前面的规划,可以参考上述内容。
https://www.bilibili.com/video/BV15V411Z73o?from=search&seid=5989594993256922790
3. lasso回归,确定潜在变量
第一步呢,永远是读入数据和核查数据。
然后,进入到我们此次教程的一个关键环节,分割数据。我们这个数据集当中共有699例样本,我们需要将其随机分割为训练集和测试集,一般的样本比例是2:1,也就是2/3的病人用来做训练,训练出一个准确的模型,剩下1/3病人用来做测试,验证我们的这个模型是否可靠。分割数据的代码如下,整个过程都是随机的:# 分割数据set.seed(123)ind
样本(也就是数据的行)分配好了之后呢,下一步就是把采集到的信息(也就是数据列)进行分配,在我们的这个测试数据中前面V1-V9是采集到的样本信息,最后一列是我们的诊断,也就是肿瘤的良恶性,下面我们把样本信息和样本诊断分割开来:# Convert data to generate input matrices and labels:# x相当于临床信息x
首先,我们尝试做K-fold交叉验证。在glmnet包中使用cv.glmnet()估计λ值,glmnet默认使用10倍交叉验证。所谓K-fold交叉验证,就是将数据分成k个相同的子集(折叠子集),每次用k-1个子集拟合模型,然后将剩余的子集作为测试集,最后将k个结果合并(一般采用平均值)来确定最终的参数。在此方法中,每个子集仅用作测试集一次。在glmnet包中使用K-折交叉验证非常容易。结果包括每个相应的MSE值和相应的λ。在这里,我们将训练集k值定为5,做5-fold cross validation,这也是比较常用的。# 5-fold交叉验证,找出最佳lambda值fitCV
上面的图叫做CV统计图,CV统计图与glmnet中的其他图表有很大的不同,它表示了λ的对数与均方差以及模型中变量数量之间的关系。图表中的两条垂直虚线表示最小均方误差的对数λ(左侧虚线)和最小距离的标准误差的对数λ(右侧虚线)。如果存在过拟合问题,那么从最小值到标准误差位置的距离是解决问题的一个很好的起点。可以看到,我们可以选择的lambda值有两个,具体lambda选值要根据自己实验设计而定。lambda.min是最佳值,lambda.1se则是一倍SE内的更简洁的模型。这也涉及到临床模型一个很重要的考量标准,到底是选择精度高但是复杂的模型,还是放弃部分精度,选择变量更少更有可能有应用价值的模型呢?本例中我们选择最佳lambda值。然后我们来看一下,随着lambda值的变化,每个观察值对应的系数的变化趋势。# check the coeffit
此图显示,随着λ的减少,压缩参数减少,系数的绝对值增加。这个模型应该如何在文章中描述呢?我们来输出系数:# get the coefcoef.min = coef(fitCV, s = 'lambda.min')coef.min
然后就会生成每个变量所对应的系数,我们也可以通过这个系数来对模型进行描述。
……
4. nomogram建立和验证
-
影像组学Python包 pyradiomics 保姆级教程
2021-01-27 01:33:25为什么要强调这个呢,因为在整个过程中,涉及到一个叫做“环境变量”的东西,如果Python安装的时候没有勾选那个勾,那么Python就不会被添加到系统环境变量里去,导致插件安装不成功。安装的时候一定记得选这个“Add ...最近帮我哥装pyradiomics,但是遇到的问题实在太多了,我决定出个教程,从头解决到尾。
第一步:安装Python
为什么要强调这个呢,因为在整个过程中,涉及到一个叫做“环境变量”的东西,如果Python安装的时候没有勾选那个勾,那么Python就不会被添加到系统环境变量里去,导致插件安装不成功。安装的时候一定记得选这个“Add Python 3.9 to PATH”,选完之后安装过程会自动添加到系统环境变量里去。
另外,Install Now是默认安装,会直接帮你装在C盘。Customize installation是自定义安装,包括可勾选的一些安装部分,和自定义安装路径。在本教程的区别在于,如果选择默认安装,安装成功的setup successful界面最底下会有个申请管理员权限的警告,一定要记得点击那个警告,授予权限,否则添加环境变量仍然会失败
如果你忘了勾选,在后面的插件安装过程里就会出现这样的报错:“python或 pip’不是内部或外部命令”
自己手动添加环境变量是可以的,但是我试了很多都不成功,最简单直接的办法就是重装~
正确安装之后,在cmd中输入pip回车,会弹出相关信息无报错;
再输入python回车,会出现python版本信息,此时python已经正确添加到系统环境变量中。(测试完之后记得关掉cmd,因为此时进入了python环境,但是后续的安装是在cmd环境中完成的)
另外,win10环境下,cmd指令可以复制粘贴,这个很省事
第二步:PIP换源
Python3.4以上自带pip,如果没有,建议重装Python~
在用pip安装插件的时候,需要用到网络下载,但是直连会非常的慢,我在安装的时候甚至是20kb/s的速度,导致timeout超时报错。这个时候就需要用到国内镜像。可以把国内镜像当做原始库的复制版。用得比较多的就是清华的镜像。
流程是这样的,win+R键(或者win10 任务栏搜索运行,点击)
输入%HOMEPATH%,打开系统用户文件夹
在用户系统文件夹中建立一个pip文件夹。
在pip文件夹里建立一个txt文档,里面粘贴如下代码[global] index-url = https://pypi.tuna.tsinghua.edu.cn/simple
保存退出,并将txt文档名改为pip.ini。
第三步:pyradiomics包下载和C++ 14.0安装
GitHub下载太慢了,当然你也可以用fast插件,我这里提供一个云盘链接。
链接:https://pan.baidu.com/s/1rr4OHSM-8Pn_9RyvMxc3RA
提取码:q58b下载之后解压,解压路径最好在盘符目录下全英文,因为这样后面输入地址会比较短。当然我也不知道有中文会不会报错。比如这样
在后面的安装过程中,还需要C++ 14.0库的支持,上面的云盘链接里也一并包含,可以下载后自行安装。但是,C++ 14.0需要.net framework 4.5以上的支持,这个可以自行去微软官网下载安装。第四步:安装pyradiomics
- 调出cmd,进入pyradiomics的文件路径。键入“cd /d 你自己的pyradiomics路径”,注意空格,然后回车。参考如图
- 输入python -m pip install -r requirements.txt,回车。此条指令会执行依赖下载,可以理解成插件运行所必要的一些内容。之前pip换源会让下载变快,下载完之后会自动执行安装,最后弹出Successfully字样表示依赖下载成功,
- 输入python setup.py install,回车。此条指令运行会比上一条久一些,弹出很多内容,但是都不用管。
- 打开Python,输入import radiomics,不报错则表示成功。当然,你也可以进入Python路径下的Lib\site-packages,检查是否有对应的包
最后强调:如果安装过程出现Error,则说明安装失败,有报错,需要解决对应问题。
本文参考:
https://blog.csdn.net/qq_36667170/article/details/79275605
https://blog.csdn.net/yuzaipiaofei/article/details/80891108
https://blog.csdn.net/JianJuly/article/details/79017168 - 调出cmd,进入pyradiomics的文件路径。键入“cd /d 你自己的pyradiomics路径”,注意空格,然后回车。参考如图
-
Python 实现遥感影像波段组合的示例代码
2020-09-18 22:20:45主要介绍了Python 实现遥感影像波段组合的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 -
python绘制影像组学训练集、测试集对应的ROC曲线以及瀑布图(rad-score 瀑布图)
2021-07-25 09:29:17python绘制影像组学训练集、测试集对应的ROC曲线以及瀑布图(rad-score 瀑布图) # 所有数据的瀑布图 tagets_all = df['label'] tagets_all = df.iloc[X_lasso.index]['label'] tagets_all.value_counts()...python绘制影像组学训练集、测试集对应的ROC曲线以及瀑布图(rad-score 瀑布图)
# 所有数据的瀑布图
tagets_all = df['label'] tagets_all = df.iloc[X_lasso.index]['label'] tagets_all.value_counts()
#
# plt.style.use('fivethirtyeight') plt.style.use('seaborn-notebook') # plt.style.use('classic') plot_scaler = StandardScaler() plot_feature = plot_scaler.fit_transform(X_lasso) results = svm_model.predict_proba(plot_feature)[:,1] results = results.reshape(-1,1) scaler = MinMaxScaler((-1,1)) results = scaler.fit_transform(results) results = (results.flatten()) results[np.where(results < 0)] = resul
-
python使用TSNE为影像组学(radiomics)数据进行降维可视化分析
2021-09-15 22:36:04python使用TSNE为影像组学(radiomics)数据进行降维可视化分析 目录 python使用TSNE为影像组学(radiomics)数据进行降维可视化分析 #绘制降维的二维可视化图像 #绘制降维的三维可视化图像 #绘制降维的... -
python安装影像组学软件包 pyradiomics
2021-11-04 12:29:50python安装影像组学软件包 pyradiomics 1、win + R输入cmd打开终端(若使用anaconda虚拟环境则打开anaconda prompt) 2、输入 git clone git://github.com/Radiomics/pyradiomics 下载项目(保证电脑提前有安装git)... -
python绘制影像组学训练集、测试集对应的ROC曲线以及瀑布图(rad-score 瀑布图).pdf
2021-09-14 13:29:53python绘制影像组学训练集、测试集对应的ROC曲线以及瀑布图(rad-score 瀑布图).pdf -
影像组学利器--pyradiomics简介
2018-07-16 14:37:43pyradiomics是一个开源的python包,用于医学图像的影像组学特征提取。官方网址:https://pyradiomics.readthedocs.io/en/latest/index.html鉴于之前的教程有些模糊,不太易于操作,现在更新为更加通俗易懂的步骤1. ... -
python使用lassocv生成影像组学(radiomic)模型的系数表
2021-09-15 23:09:19python使用lassocv生成影像组学(radiomic)模型的系数表 目录 python使用lassocv生成影像组学(radiomic)模型的系数表 #lassocv模型构建 #生成特征系数表 #lassocv模型构建 # alpha spaces # However, ... -
使用pyradiomics提取影像组学特征【详细】
2022-03-19 12:36:56使用pyradiomics提取影像组学特征 最近由于项目需求要使用pyradiomics提取影像组学特征,网上阅读了很多别人的博客,学到一些,然后去查看了pyradiomics的官方文档,最后自己实现了特征的提取,写下此文记录,方便... -
影像组学简述
2018-10-11 13:28:39影像组学简述 影像组学的工作流程 一、 图像采集 多模态的数据采集方法,使用各种成像方法的都有,不局限。 二、图像分割 滑降区域生长法、图割法、半自动分割算法、基于容量CT的分割法,目前并无可用的通用的方法,... -
2D 3D图像分割-影像组学-深度学习-Python-疾病诊断 教程全集
2021-09-02 18:52:36本单位联合人工智能专家共同举办“影像组学与人工智能医学影像”专题线上培训,这次培训机会难得、通过案例掌握 2D 以及最新最前沿的 3D 影像案例,源代码及课件PPT都会发送给学员,报名成功将会赠送两天Python精品... -
影像组学在医学影像中的应用
2019-07-01 21:44:03首先介绍一下影像组学:目前来讲,影像设备所生成的图像数据量越来越大,过去对图像数据的处理与使用方式显然难以充分挖掘图像的大数据信息。因此影像组学应运而生。2012年,荷兰学者Lam bin等人[1]正式提出了影像组... -
实现影像组学全流程
2021-12-23 11:08:152012年荷兰学者提出影像组学(radiomics)概念:借助计算机,从医学影像中挖掘海量定量影像特征,使用统计学/机器学习方法,筛选出最有价值的影像学特征,用来解析临床信息。 可以说影像组学是人工智能在医学领域的一... -
Li‘s 影像组学视频学习笔记(21)-影像组学常用软件推荐
2021-01-01 11:58:03本笔记来源于B站Up主: 有Li 的影像组学系列教学视频 本节(21)主要介绍: 压箱底的好用软件推荐 [注]:李博士主要从事脑神经领域的研究,所以部分软件具有专业性。 dicom到nifti的格式转换: AFNI ... -
Li‘s 影像组学视频学习笔记(4)-继续Python进阶学习
2020-12-29 20:25:08本笔记来源于B站Up主: 有Li 的影像组学系列教学视频 本节(4) 继续Python进阶学习 # 数据类型 # 数字:整型(int), 浮点型(float) # 字符串(str) # 布尔型(bool) # 赋值 # 字符串和布尔值的赋值与数字赋值类似 # ... -
首次影像组学实践 基于AI智能打造智能影像学科技术
2021-06-25 19:46:14(1)\人工智能与影像组学课件;目录中文件数:16个 ├─01-1绪论 - dxy-edit.pdf ├─01-2 人工智能在医学领域的应用 - dxy-edit.pdf ├─02-1 医疗大数据与人工智能 - dxy.pdf ├─02-2 python与人工智能 - dxy.pdf ... -
【影像组学pyradiomics教程】 (二) pyradiomics 使用示例
2018-05-07 15:39:21测试用的图片: pyradiomics\data\brain1_image.nrrd 和 pyradiomics\data\brain1_label.nrrd’ 测试用的配置文件: pyradiomics\examples\exampleSettings\Params.yaml 测试文件也可从网盘下载: 影像组学测试文件... -
临床特征 + 影像组学 特征筛选 并 利用逻辑回归进行二分类
2021-11-23 11:30:25任务描述:临床特征 和 影像组学特征 保存在 excel 文件中,需要进行 特征筛选,然后再将筛选出来的特征利用逻辑回归进行二分类。 有如下几个问题和需求: 1. excel 中的特征都是以 str 的形式写入表格中的,... -
Li‘s 影像组学radiomics视频学习笔记(42)-影像组学特征提取问题解决过程复现
2021-03-17 00:25:34作者:北欧森林 ...来源:简书,已获转载授权 本笔记来源于B站Up主: 有Li 的影像组学系列教学视频 ...最开始李博士认为是由于影像组学提取过程中对于边缘层的处理不一样所致,于是建议在这10层的基础上分别外扩5层. -
学员成果分享:影像组学中深度特征结合影像组学(MedicalNet三维深度特征)附代码,有平台的赶紧动手
2022-01-19 11:42:23mid=2247486870&idx=1&sn=c53f361fb5d8138fa36d8503df24553e&chksm=c11ed597f6695c810db87de31c7876ed312010c1cde5f9eed8dba48076edbc4cf1fe1f6752...感谢《David》同学分享的深度特征结合影像组学(Medi.. -
影像组学pyradiomic使用教程 (内含各种报错及详细解决方案)
2021-02-10 11:39:13安装gitclonegit://github.com/Radiomics/pyradiomicscd pyradiomicspython -m pip install -r requirements.txtpythonsetup.pyinstall报错1: 安装完成,打开python,import radiomics,如果不报错,则表示安装成功... -
Li‘s 影像组学视频学习笔记(29)-ICC的计算
2021-01-03 23:15:53本笔记来源于B站Up主: 有Li 的影像组学的系列教学视频 本节(29)主要讲解: 用pingouin包进行ICC的计算 1、ICC的wikipedia定义 In statistics, the intraclass correlation, or the intraclass correlation ... -
医学图像处理——影像组学的建模过程
2019-08-15 22:16:07这篇文章说一下怎么分析医学影像图像,并利用统计学和机器学习建模,实现预后等回归学习。这篇文章会不断的修改,因为我也会不断的学习,不断的添加和改正文章中的内容。 医学影像已经是非常火的一个方向了,对于... -
【影像组学导论】Radiomics实现之R语言入门!
2021-08-19 22:02:58在“导论”的前一篇中,我们提到了国内前者学者2018年经典影像组学JCO(IF = 32.956!)文章《Development and Validation of a Radiomics Nomogram for Preoperative Prediction of Lymph Node Metastasis -
Li‘s 影像组学视频学习笔记(26)-相关系数热图Heatmap
2021-01-03 23:09:47本节(26)主要讲解: 影像组学特征相关系数热图heatmap的Python实现 1、导入工具包 # The code below is modified from # ... -
影像组学nii瘤周扩展Python代码思路
2022-05-20 20:47:03影像组学分析过程中,有时候会进行瘤周的分析,这时候就要用到ROI的扩展。 本文记录我的瘤周扩展的思路,供大家参考。 -
脑肿瘤的影像组学:图像评估、定量特征描述和机器学习方法
2021-10-08 17:29:33影像组学描述了从影像图像中提取定量特征的一系列计算方法。其结果常常被用于评估影像诊断,预后以及肿瘤治疗。然而,在临床环境中,优化特征提取和快速获取信息的方法仍然面临重大挑战。同样重要的是,从临床应用... -
Li‘s 影像组学视频学习笔记(15)-ROC曲线及其绘制
2020-12-31 12:52:47本笔记来源于B站Up主: 有Li 的影像组学系列教学视频 本节(15)主要介绍: ROC曲线及其绘制 ROC 曲线 ROC = receiver operating characteristic curve, 受试者工作特征曲线 横坐标:FPR = false positive rate, 假阳...