当前位置: 首页 > news >正文

影像组学介绍

影像组学介绍

  • 1 影像组学介绍
  • 2 具体提取影像组学方法流程及工具代码:
    • 2.1 影像数据获取
    • 2.2 感兴趣区域分割
    • 2.3 特征提取与降维选择
      • 2.3.1 特征提取:
      • 2.3.2 特征降维(特征选择)
    • 2.4 建模分析:
    • 2.5 结果分析
  • 参考:

1 影像组学介绍

其实就是想把图像处理领域的知识点,应用到医学图像里面。当初影像组学方法是,现在人工智能方法也是。

随着精准定量医学影像技术的快速发展、图像识别技术和数据算法的不断更新,医学图像大数据的挖掘和分析得以实现,极大程度扩展了医学图像的信息量。基于对图像信息进行纹理分析后能够得到高通量的特征的特点,受基因组学以及肿瘤异质性的启发,2012年荷兰学者Lambin在先前学者工作的基础上提出了**影像组学(Radiomics) **的概念[1]。
Radiomics: Extracting more information from medical images using advanced feature analysis
image.png
Lambin认为“高通量地从医学影像中提取大量特征,通过自动或半自动分析方法将影像学数据转化为具有高分辨率的可挖掘数据空间”医学影像可以全面、无创、定量地观察肿瘤的空间和时间异质性。Kumar等[3]又对影像组学的定义进行了拓展,**影像组学是指从CT、PET或MRI等医学影像图像中高通量地提取并分析大量高级且定量的影像学特征。**这个理念的提出在随后的七年迅速被越来越多的学者改进与完善。

影像组学,一共4个常见字。但4个字加在一起是啥意思?好吧,拆成“影像”和“组学”两个词来说。“影像”通常指的就是放射影像,主要包括了CT、MR影像,当然,现在也陆续有加入了PET、US影像研究。组学(Omics),专门百度了一下,通俗理解就是把与研究目标相关的所有因素综合在一起作为一个“系统”来研究。目前主要包括基因组学(Genomics),蛋白组学Proteinomics,代谢组学(Metabolomics),转录组学(transcriptomics),免疫组学(Immunomics),RNA组学(RNomics),影像组学(Radiomics)等。

影像组学流程:
影像组学本质上来说其实是一种分析思路方法,从临床问题出发,最后回到解决的临床问题。一般分为五个主要处理步骤:
image.png

  1. 标准医学影像数据获取和筛选:数据收集前,首先需要根据明确的研究方向进行数据筛选,例如做肿瘤分型或肺炎分型的鉴别诊断,所选影像数据是否有病理或病原学检测金标准进行对照;做影像学疗效评估时,是否具有多期治疗相应的影像资料匹配等。
  2. 图像分割:指将图像分成若干个特定、具备独特属性的区域并提取感兴趣目标的技术和过程。根据研究目的的不同,图像分割的目标可以是病灶、正常参考组织或是组织解剖结构,可以是三维也可以是二维区域,影像组学随后的分析研究都围绕这些从图像内分割出来的区域进行。
  3. 特征提取:影像组学的核心步骤就是提取高通量的特征来定量分析ROI的实质属性。基于Image Biomarker Standardization Initiative (IBSI)标准[4]统计划分,常将影像组学特征分为形状特征(Shape features)、一阶统计学特征(First order statistics features)、纹理特征 (texture-basedfeatures)、高阶特征(high-order features)以及基于模型转换的特征。
  4. 机器学习特征选择,上述通过特征提取,提取到的特征数量可能有几百到几万不等,而并不是每一个特征都与要解决的临床问题相关联;另一方面,在实践中,由于特征数量相对较多,而样本数量较少,容易导致随后的模型出现过拟合的现象,从而影响模型的准确率。特征选择是根据某些评估准则,从特征集中直接选取合适的子集,或者将原有的特征经过线性/非线性组合,生成新的特征集,再从新特征集中选取合适的子集过程。
  5. 模型应用:针对医生具体的临床问题,在临床研究问题标签的基础上建立由上述特征筛选出来的关键特征,或进一步结合影像组学以外的特征(如临床体征、病理、基因检测数据)组合而成的预测模型。

2 具体提取影像组学方法流程及工具代码:

具体影像组学的流程如下
1,影像数据准备
2,感兴趣区域分割
3,特征提取与特征选择
4,建模分析
5,结果展示

image.png

2.1 影像数据获取

不同设备厂商、同一厂商不同型号的影像设备在图像扫描和重建协议上往往存在着很大的差异,迄今为止仍然缺乏统一的采集标准规范。这就可能给包含影像组学在内的众多医工结合项目造成了潜在的影响。尽管对数据存储传输、图像勾画和算法运行速度带来诸多不便,但为了最后的建模评估步骤能达到更好的效果,仍然推荐入组分辨率更高、信息量更为丰富的薄层数据。这些数据最好具有相同(或相近)的采集参数,以尽可能降低数据质量被各种成像因素的干扰。目前,国内很多医院都开展过肿瘤的影像组学相关项目,比如肺癌、肝癌、结直肠癌等等。但随着组学科研在全国乃至世界范围内发生“内卷化”,课题总数据量多中心研究都已经成为审稿中的决定性因素。这时,在繁杂的医院数据中,既要严控数据入组条件,同时也要满足项目所需的样本数量,只有兼顾两者才可能取得最优的效果。
此外,多模态影像组学时代的开启给医工两方面的研究者都提出了更大的挑战。数据量的成倍增加、算法工程师的影像专业背景,都可能成为项目推进的阻力。这里有非常重要的一点,要求影像医生做好数据筛选:所有的影像医工交叉项目,数据量的一大原则都是“贵精不贵多”——除了保留与病灶相关的必要序列外,不要有任何冗余的图像,否则会成为后续工作中非常不利的因素。至于质量不过关(如包含伪影、扫描序列不完整)、缺乏完整临床指标的样本,都是应该被排除在项目之外。

当然,你如果没有私有数据集的话,也有一些比赛公开了数据集。或者你可以用公开数据集做泛化性分析:
如:https://github.com/linhandev/dataset
这个项目地址公开了很多医学影像数据集:
image.png

2.2 感兴趣区域分割

影像准备完毕,接下来的重要步骤是病灶ROI的勾画,从而对照影像序列,进一步开展后续的特征提取。医学图像分割经过几十年的发展,目前仍然保持了两大类别:手动/半自动分割,以及全自动分割。
由于病灶的特质性和不规则性,手动/半自动分割仍然是现有条件下的最佳选择,即使手动分割耗时较大,它仍然是金标准获取的唯一途径。课题中既可以采用3D Slicer、ITK-SNAP等传统分割软件,也可以尝试像Pair等新兴工具,甚至可以使用工作站日常诊断中的三维重建结果。全自动分割算法包括阈值/区域生长、分水岭、水平集等,也有近年来非常火热的深度学习算法。
但很遗憾,尽管学术界和工业界都付出了相当大的努力,但迄今为止,仍然没有高精度、全自动的通用分割模型可以完美地应用于影像科研的日常流程和基础IT架构中,自动分割后ROI还是要医生手动调整确认以保证项目的精度效果。
如果当你面对大量数据集的标注时,你可以使用半自动+人工检验的方式进行金标准的制作。
或者你使用公开数据集的话,公开数据集本身就有分割标注,也不用你进行分割了。

2.3 特征提取与降维选择

2.3.1 特征提取:

影像组学特征由一系列传统图像特征的合集构成,既包含了一阶梯度特征(区域内统计信息)、形状特征(如形态学参数、圆形度等)、纹理特征(灰度共生矩阵、灰度区域大小矩阵、灰度游程矩阵),也包含了各种图形滤波变换后的特征,比如高斯-拉普拉斯变换、小波变换、平方根滤波等。这些特征都曾经在医学图像分析中有过较为成功的运用,而影像组学正是把高阶的图像特征聚集在一起、进一步提高分析结果质量的方法。每个影像组学特征都有着独立的计算公式,现在在网上已经可以找到丰富的特征提取工具直接调用,而无需自行学习理解公式、手动编程计算。

时下流行的时是PyRadiomics组学工具包。使用起来方便快捷,而且是基于python。
image.png

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

具体使用代码可以参考:
【使用pyradiomics提取影像组学特征【详细】】
https://blog.csdn.net/weixin_46428351/article/details/123592586

2.3.2 特征降维(特征选择)

面对大量的特征,我们不可能对其直接进行模型构建,我们需要对数据进行降维,给数据“瘦身”,从成千上万的特征数据中获取最为有价值的特征数据。

提取完毕的影像组学特征,少则成百上千;有些“噱头”概念也会在多模态+各种图像预处理后形成高达十万数量级的特征维度;目前还有一种流行的方法是将组学特征和临床数据相互结合,以便最大化综合各种层面的信息优势。这个时候就需要采用一些特征降维和筛选的手段来对特征数目进行一定的限制,避免冗余数据影响机器学习模型的精确和稳定性。
常见的降维和筛选方法有主成分分析、相关性分析以及基于L1惩罚项的特征选择法等——其实当维度达到一定级别的时候,再增加特征对最终的结果影响已经降到很低,反而严重增加了完成组学流程的时间和空间复杂度。

2.4 建模分析:

课题中需要将样本分为训练集和测试集(遵循着7:3或8:2的原则),如果是多中心课题,可以根据不同医院区分样本,以其它医院的数据做外部验证的测试集,评价建模的鲁棒性。
建模时首先使用训练集,通过学习一个函数,找到各类样本的最佳区分“界面”。常用的分类器包括了决策树、逻辑回归、随机森林、支持向量机(SVM)等。在建模过程中,为了减少过拟合和选择偏差、保证更好的模型性能,常常会引入交叉验证(Cross Validation)的方法。交叉验证将数据的训练集样本切割成若干较小子集,然后先在一个子集上做分析,而其它子集则用来做后续对此分析的验证,并确定一些模型的参数。

2.5 结果分析

模型训练完毕后,再采用测试集进行组学预测结果和临床标签的对比,进行性能评估。常用于展现影像组学结果的图或数值有ROC曲线、(95%置信区间下的)AUC值、敏感度、特异度、特征贡献度、相关系数热图等。

image.png

参考:

【影像组学初学者指南】
https://zhuanlan.zhihu.com/p/462293882

【组学浅析之通俗理解影像组学的定义】
https://zhuanlan.zhihu.com/p/352750421

【影像组学十周年:技术,应用与展望】
https://baijiahao.baidu.com/s?id=1719918690339298767

相关文章:

影像组学介绍

影像组学介绍 1 影像组学介绍2 具体提取影像组学方法流程及工具代码:2.1 影像数据获取2.2 感兴趣区域分割2.3 特征提取与降维选择2.3.1 特征提取:2.3.2 特征降维(特征选择) 2.4 建模分析:2.5 结果分析 参考: 1 影像组学介绍 其实…...

什么是云服务器?云服务器的工作原理是介绍

阿里云服务器ECS英文全程Elastic Compute Service,云服务器ECS是一种安全可靠、弹性可伸缩的云计算服务,阿里云提供多种云服务器ECS实例规格,如经济型e实例、通用算力型u1、ECS计算型c7、通用型g7、GPU实例等,阿里云百科aliyunbai…...

【前后端的那些事】前后端环境搭建+树形结构表格实现

文章目录 1. 前后端项目环境搭建2. table-tree2.1 后端准备2.2 前端准备 前言:最近写项目,发现了一些很有意思的功能,想写文章,录视频把这些内容记录下。但这些功能太零碎,如果为每个功能都单独搭建一个项目&#xff0…...

PHP版学校教务管理系统源码带文字安装教程

PHP版学校教务管理系统源码带文字安装教程 运行环境 服务器宝塔面板 PHP 7.0 Mysql 5.5及以上版本 Linux Centos7以上 系统介绍: 后台权限控制:支持多个管理员,学生管理,学生成绩,教师管理,文章管理&#x…...

前端背景收集之烟花背景

文章目录 🐒个人主页🏅Vue项目常用组件模板仓库📖前言:🎀源码如下: 🐒个人主页 🏅Vue项目常用组件模板仓库 📖前言: 本篇博客主要提供前端背景收集之烟花背景…...

PCL 格网法计算点云的占地面积

目录 一、算法原理二、代码实现三、结果展示四、测试数据本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT生成的文章。 一、算法原理 该方法主要用于粗略统计机载点云的占地面积。方法原理是将点云沿 X O Y XOY...

《设计模式的艺术》笔记 - 面向对象设计原则

1、单一职责原则 一个类只负责单一功能领域中的相应职责。 2、开闭原则 一个软件实体应当对扩展开放,对修改关闭。即软件实体应当尽量在不修改原有代码的情况下进行扩展。 3、里氏代换原则 所有引用基类的地方必须能透明地使用其子类的对象。即在软件中将一个基类…...

《Linux C编程实战》笔记:线程同步

这一节主要是解决共享资源的处理。操作系统里也讲过互斥、锁之类的概念。 互斥锁 互斥锁通过锁机制来实现线程同步,同一时刻只允许一个线程执行一个关键部分的代码 一下是操作互斥锁的函数,均声明在pthread.h中。 pthread_mutex_init(初始…...

leetcode141.环形链表

题目 给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置&#…...

景联文科技:以高质量数据赋能文生图大模型

1月5日,在智求共赢・中国AIGC产业应用峰会暨无界AI生态合作伙伴大会上,中国AIGC产业联盟联合无界AI发布了《中国AIGC文生图产业白皮书2023》,从AIGC文生图发展历程、主流工具、产业实践以及规模预测等多个维度,全面揭示了中国AIGC…...

[论文笔记] PAI-Megatron中qwen和mistral合并到Megtron-LM

一、千问 关于tokenizer的改动: 1.1、更改build_tokenizer中tokenizer类的加载。 /mnt/nas/pretrain/code/Megatron-LM/megatron/tokenizer/__init__.py 或者 tokenizer.py 在build_tokenizer.py函数中: ​elif args.tokenizer_type == "QwenTokenizer":assert a…...

python设计模式有哪几种

Python 中常见的设计模式有以下几种 一 单例模式(Singleton Pattern):确保一个类只有一个实例,并提供全局访问点。 二 工厂模式(Factory Pattern):使用工厂方法来创建对象,而不是直…...

C语言从入门到实战——数据在内存中的存储方式

数据在内存中的存储方式 前言1. 整数在内存中的存储2. 大小端字节序和字节序判断2.1 什么是大小端2.2 为什么有大小端2.3 练习2.3.1 练习12.3.2 练习22.3.3 练习32.3.4 练习42.3.5 练习52.3.6 练习6 3. 浮点数在内存中的存储3.1 练习3.2 浮点数的存储3.2.1 浮点数存的过程3.2.2…...

高效便捷的远程管理利器——Royal TSX for Mac软件介绍

Royal TSX for Mac是一款功能强大、操作便捷的远程管理软件。无论是远程桌面、SSH、VNC、Telnet还是FTP,用户都可以通过Royal TSX轻松地远程连接和管理各种服务器、计算机和网络设备。 Royal TSX for Mac提供了直观的界面和丰富的功能,让用户能够快速便…...

Docker 部署后端项目自动化脚本

文章目录 开机自启动docker打包后端项目Dockerfile文件脚本文件使用 开机自启动docker systemctl enable dockersystemctl is-enabled docker打包后端项目 这里的项目位置是target同级目录 1.在项目下面新建一个bin目录 新建一个package.txt 写入下方代码后 后缀改为.bat ec…...

MySQL从0到1全教程【2】SQL语言的通用语法及分类

1 SQL语言的通用语法格式 无论是那种数据库的产品,SQL语法都是通用的。 SQL语句可以单行编写也可以多行编写,以分号结尾。SQL语句可以使用空格或者缩进的方式来增强语句的可读性,空格和缩进的数量没有限制。MySQL数据库的SQL语句是不区分大…...

【npm link】Node命令中的npm link命令的使用,还有CLI全局命令的使用,开发命令行工具必不可少的部分

😁 作者简介:一名大四的学生,致力学习前端开发技术 ⭐️个人主页:夜宵饽饽的主页 ❔ 系列专栏:NodeJs 👐学习格言:成功不是终点,失败也并非末日,最重要的是继续前进的勇气…...

Unity组件开发--相机跟随角色和旋转

1.相机跟随组件,节点: 2.相机跟随组件脚本: using System; using System.Collections; using System.Collections.Generic; using Unity.Burst.Intrinsics; using UnityEngine; using UnityEngine.UI;public class CameraFollow : Singleton&…...

JavaScript系列——Proxy(代理)

文章目录 概要Proxy 语法handler 对象的方法Proxy 示例常用handler 对象的方法的参数handler.get()语法示例 handler.set()语法示例 使用场景验证值修正及附加属性 小结 概要 Proxy 用于创建一个对象的代理,将对原对象上的操作(属性获取、赋值、函数调用…...

QT第三天

使用QT完成水果计价界面和功能&#xff0c;如下图&#xff1a; 运行结果&#xff1a; 代码&#xff1a; widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QListWidgetItem>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_N…...

Jetpack Compose -> 声明式UI Modifier

前言 本章主要介绍下 Compose 的声明式 UI 以及初级写法&#xff1b; 什么是声明式UI 传统UI 传统 UI 方式来声明UI <androidx.appcompat.widget.LinearLayoutCompat android:layout_width"match_parent" android:layout_height"match_parent&quo…...

windows10 装docker和docker compose

一.windows环境准备 开启过程中的问题&#xff0c;进入bios修复 二.docker下载安装 1.下载 Docker Desktop: The #1 Containerization Tool for Developers | Docker 下载最新版有问题&#xff0c;下载老版本试试 Docker Desktop release notes | Docker Docs 2.安装 三.do…...

第二次面试总结 - 宏汉科技 - Java后端开发

&#x1f9f8;欢迎来到dream_ready的博客&#xff0c;&#x1f4dc;相信您对专栏 “本人真实面经” 很感兴趣o (ˉ▽ˉ&#xff1b;) 专栏 —— 本人真实面经&#xff0c;更多真实面试经验&#xff0c;中大厂面试总结等您挖掘 目录 总结 (非详细) 面试内容(提问内容) - 带答案…...

GPT-4:人工智能的新纪元与未来的无限可能

在人工智能的发展史上&#xff0c;GPT-4的问世标志着一个新的里程碑。作为最新一代的自然语言处理模型&#xff0c;GPT-4不仅在技术上取得了突破&#xff0c;更在应用层面展现了前所未有的潜力。本文将探讨GPT-4的核心技术、应用场景以及它对未来社会的潜在影响。 GPT-4的技术…...

2.右值引用和移动语义

文章目录 右值引用和移动语义&&的特性右值引用优化性能&#xff0c;避免深拷贝移动(move )语义forward 完美转发emplace_back 减少内存拷贝和移动unordered container 无序容器map和unordered_map的差别内部实现机理不同优缺点以及适用处 小结优缺点以及适用处 小结 代…...

深入浅出线程原理

Linux 中的线程本质 线程接口由 Native POSIX Thread Library 提供&#xff0c;即&#xff1a;NPTL 库函数 线程被称为轻量级进程 (Light Weight Process) 每一个线程在内核中都对应一个调度实体&#xff0c;拥有独立的结构体 (task_struct) 内核设计&#xff1a;一个进程对…...

openssl3.2 - 官方demo学习 - saccept.c

文章目录 openssl3.2 - 官方demo学习 - saccept.cEND openssl3.2 - 官方demo学习 - saccept.c 建立TLSServer(使用了证书, 和证书中的私钥), 接收客户端的连接, 并将客户端发来的信息打印到屏幕 笔记 /*! \file saccept.c */ /*! \brief 建立TLSServer(使用了证书, 和证书中…...

JavaScript基础(26)_dom增删改练习

<!DOCTYPE html> <html lang"zh"><head><meta charset"UTF-8"><title>DOM增删改练习</title><link rel"stylesheet" href"../browser_default_style/reset.css"><style>table {borde…...

mac上部署单体hbase

1. 简介 HBase 是一个开源的、分布式的、版本化的典型非关系型数据库。它是 Google BigTable 的开源实现&#xff0c;并且是 Apache 基金会的 Hadoop 项目的一部分1。HBase 在 Hadoop Distributed File System (HDFS) 上运行&#xff0c;作为一个列式存储非关系数据库管理系统…...

【RV1126 学习】SDK/ U-Boot/kernel/rootfs 编译学习

文章目录 RV1126芯片介绍rv1126 模块代码目录相关说明 SDK 包下的脚本使用build.sh 脚本使用envsetup.sh 脚本使用mkfirmware.sh 脚本使用rkflash.sh 脚本使用 U-Boot 编译和配置uboot 的配置修改编译操作 kernel 的修改编译rootfs 编译和配置buildroot 配置busybox 配置 RV112…...