医疗影像中DR的骨抑制

1 背景

在DR的拍摄中,根据肺部和脊肋骨两种组织,在不同能量X射线的照射下,衰减的系数不同的特点,可以通过两次不同剂量的曝光后,通过算法,得到一张骨骼的图像和一张肺部图像。

通过一些机构的统计,双能剪影的后的肺部影像对结节,特别是小结节的检出率有不同程度的提高。统计表明,对3mm一下的结节的检出率,在双能剪影的肺部检出率有47%,而一张普通的胸片的检出率仅仅为22%。但是,双能剪影也有明显的缺点,第一是患者受到两次X光照剂量;第二,双能剪影在拍摄的时候,一般需要病人憋气更长时间,导致拍片失败。

这个时候,骨抑制算法,就是替代两次曝光的一个很好的方案;另外,在现在DR行业如此内卷的时期,骨抑制算法也能算作智能DR设备的亮点功能之一。

2. AI骨抑制算法(Bone Suppress)

整个算法大概分为以下3个步骤,可以给大家一点参考

2.1 对图像中的肺部区域进行裁剪

对DICOM的胸片图像,使用Unet网络,来分割肺部区域蒙板。对分割后的肺部蒙板中,区域较小的区域进行去除。得到如下的图像

2.2 对图像的肋骨进行Unet分割

注意这里分割出脊肋的mask,不是阈值后,然后再将mask二值化的图像,而是阈值后,保留mask的0到1的值,做为第三步中的其中一路初始输入图像,如下图所示:

2.3 将2步中标记的mask作为噪声在原图上进行抑制

将原始图像和第二步中的输出,两个通道,作为输入,目标图作为输出;将脊肋骨视为图像中的噪声信息,使用图像去噪的方法来完成肋骨抑制的任务,采用深度卷积网络作为基础模型,分析并尝试多种策略来提升模型性能,最终,使用Unet网络结构,并且,通过跳跃连接以及残差策略增强网络细节表现能力。 为了在计算中减少对图像的细节纹理的损失,模型采用在原图大小直接计算, 但是,考虑到显存压力,使用1024*1024滑动窗口计算,并采用Overlap-tile策略减少计算边缘信息损失。 这些策略有效的保证了输出结果的准确性,精确性。 模型可以在保留肺部纹理细节清晰同时也能有效的抑制骨影。最终得到的结果如下

3 最后算法可以通过onnx进行工程化,供DR Console工作站调用

为了能提供给设备采集软件进行调用,需要将算法修改为动态库的形式,另外,也可以提高效率。以下是头文件定义,可以输入和输出的接口是很容易集成的。

#ifndef _BONE_SUPRESS_API
#define _BONE_SUPRESS_API
#ifndef DLLAPI_FILTER
#define BONE_SUPRESS_DLLAPI extern "C" __declspec(dllimport)
#endif
enum BoneSupressResult
{BoneSupressResultOK = 0,BoneSupressResultImgErr,BoneSupressResultIniErr, 
};
BONE_SUPRESS_DLLAPI bool IntializeInstance(bool beGpu);
BONE_SUPRESS_DLLAPI BoneSupressResult  ChestBoneSupress(unsigned short* imageData, int imgW, int imgH,unsigned short* resultData, int resultDataLen);
BONE_SUPRESS_DLLAPI bool ReleaseInstance();#endif

最后运算一张4000 * 4000 ,2个字节的输入图像后,在1050Ti的显卡上,计算共需13s的时间,3060Ti上,计算花费8s中,实际应用中,可以满足设备的需求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/295948.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

爬虫字典生成工具,CeWL使用教程

爬虫字典生成工具,CeWL使用教程 1.工具概述2.参数解析3.使用实例1.工具概述 CeWL 是一个 ruby 应用程序,它将给定的 URL 爬到指定的深度,可以选择跟随外部链接,并返回一个单词列表,然后可用于密码破解者 Cewl 是黑客武器库中的强大工具,因为它允许创建有针对性的单词列…

Git常用命令及解释说明

目录 前言1 git config2 git init3 git status4 git add5 git commit6 git reflog7 git log8 git reset结语 前言 Git是一种分布式版本控制系统,广泛用于协作开发和管理项目代码。了解并熟练使用Git的常用命令对于有效地管理项目版本和历史记录至关重要。下面是一些…

鸿蒙WebGL开发入门

WebGL的全称为Web Graphic Library(网页图形库),主要用于交互式渲染2D图形和3D图形。目前HarmonyOS中使用的WebGL是基于OpenGL裁剪的OpenGL ES,可以在HTML5的canvas元素对象中使用,无需使用插件,支持跨平台。WebGL程序是由JavaScr…

利用PySpark进行商业洞察与可视化

利用PySpark进行商业洞察与可视化 引言数据集与技术栈数据集:YELP数据集技术栈:Flask、MySQL、Echarts、PySpark 分析维度与功能创新点与应用 引言 近年来,数据分析和可视化技术在商业决策中的应用越来越广泛。在这个信息爆炸的时代&#xf…

网络协议-BIO实战和NIO编程

网络通信编程基本常识 原生JDK网络编程-BIO 原生JDK网络编程-NIO Buffer 的读写 向 Buffer 中写数据 写数据到 Buffer有两种方式: 1. 读取 Channel写到 Buffer。 2.通过 Buffer 的 put0方法写到 Buffer 里。 从 Channel 写到 Buffer …

.net core 生成jwt+swagger-通过 IHttpContextAccessor读取token信息

1.安装jwt相关包 <ItemGroup><PackageReference Include"Microsoft.AspNetCore.Authentication.JwtBearer" Version"6.0.25" /><PackageReference Include"Microsoft.IdentityModel.Tokens" Version"7.0.3" /><P…

蓝牙物联网在汽车领域的应用

I、蓝牙的技术特点 ​ 1998 年 5 月&#xff0c;瑞典爱立信、芬兰诺基亚、日本东芝、美国IBM 和英特尔公司五家著名厂商&#xff0c;在联合拓展短离线通信技术的标准化活动时提出了蓝牙技术的概念。蓝牙工作在无需许可的 2.4GHz 工业频段 (SIM)之上(我国的频段范围为2400.0~248…

VSCode软件与SCL编程

原创 NingChao NCLib 博途工控人平时在哪里技术交流博途工控人社群 VSCode简称VSC&#xff0c;是Visual studio code的缩写&#xff0c;是由微软开发的跨平台的轻量级编辑器&#xff0c;支持几乎所有主流的开发语言的语法高亮、代码智能补全、插件扩展、代码对比等&#xff0c…

AI创作系统ChatGPT系统源码,支持Midjourney绘画,GPT语音对话+DALL-E3文生图

一、前言 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作Ch…

K8S----RBAC

一、角色、绑定、用户 1、 Role 与ClusterRole 1、Role 总是要在一个命名空间中设置权限,当需要创建一个Role的时候必须指定命名空间; 2、ClusterRole 是非命名空间范围的,不受命名空间局限 2 、RoleBinding 与ClusterRoleBinding 1、RoleBinding 是受命名空间限制的 2、…

持续集成交付CICD:Linux 部署 Jira 9.12.1

目录 一、实验 1.环境 2.K8S master节点部署Jira 3.Jira 初始化设置 4.Jira 使用 一、实验 1.环境 &#xff08;1&#xff09;主机 表1 主机 主机架构版本IP备注master1K8S master节点1.20.6192.168.204.180 jenkins slave &#xff08;从节点&#xff09; jira9.12.1…

set容器的基本使用

文章目录 set默认构造迭代器inserterasefindswapclearlower_bound && upper_boundcountequal_range map和set容器&#xff0c;multimap和multiset是树形结构的关联式容器&#xff0c;这四种容器底层原理都是红黑树&#xff0c;容器中的元素是一个有序序列。 set 1.set…