【转】介绍一些免费/开源的医学影像后处理工具

转自:https://blog.csdn.net/liaopiankun0618/article/details/84328331

来源:融视影像科技

综述

医学影像的处理有两个特质。一是复杂,整个处理流程涉及多种算法,需要调整的参数较多。二是发展快,从采集、重建到后处理,新处理方法层出不穷,每年都有新工具,每五年又有个大热点。因此影像后处理工具主要有两方面的要求:易用性(交互参数少)和易拓展性(加入新功能快,第三方开发容易)。所有的工具都必须要平衡这两方面上找到一个定位(下图)。
在这里插入图片描述

果要强调易用性,整个软件架构就要封闭一些,首先开放给用户调整的参数就不能太多,其次要保证计算速度,设计上多考虑并发和内存传递,最后是要有一个设计良好的用户界面。各种工作站就是此类产品的例子,操作按照解剖部位和处理需求进行流程优化,基本上点点鼠标就能完成。但是这样一来,可扩展性就不强,虽然也有可能做一些插件接口支持用户开发(如飞利浦的PRIDE和GE的Func2),但开发必须符合设定好的框架,空间很小。更极端的例子是CAD软件,譬如invivo的DynaCAD之类,使用上非常简便,但基本不考虑扩展。

如果要强调可拓展性,整个软件架构就要非常开放。开放的极致就是一个各种工具组成的包,譬如FSL,DIPY等,用户自己设计处理流程,自由组合工具函数,并加入自己开发的模块。可扩展性极强。稍微用户友好一些的是MITK(作者为德国癌症研究中心的那套软件www.mitk.org),MRtrix之类带图形界面的后处理工具包,用户可以通过修改编译脚本来自行调配处理流程和组件。开放的代价是易用性很差,如果科研团队里没有熟悉编程的计算机背景的成员,几乎不能真正用上这些工具。

我们在开发IMAge/enGINE(核磁弥散处理工具新版本)的时候,考虑面向的用户是没有工程团队支持的医学背景的大夫和研究生,因此尽量向易用性优化了,因此界面操作简单,计算速度快。举例来说,在i5-4570 CPU的计算机上测试,与其它开源工具比较如下。

在这里插入图片描述

在这里插入图片描述
OsiriX(http://www.osirix-viewer.com)是一款运行在iOS上的DICOM浏览器 (只有iOS版,无MAC的同学请跳过此节 )。其收费版,也就是OsiriX MD版是通过FDA认证的,可以在很多国家和地区直接用于临床。OsiriX也提供免费版,代价是运行过程中有弹窗跳出,需要等待若干秒才能继续使用。OsiriX的功能主要集中在影像融合,影像渲染,影像标注上,计算参数图并不是强项。其提供了第三方开发接口(https://github.com/pixmeo/osirixplugins),有很多第三方的插件,譬如提供结构化报告的Pi-RADS Bi-RADS 冠脉分析等插件,也有计算ADC的IB diffusion,计算DCE的IB DCE等等。
在这里插入图片描述
3DSlicer (https://www.slicer.org/)可能是发展最好,最全面的免费+开源影像处理工具了。它可以运行在iOS, windows和linux上。3DSlicer主要是哈佛大学医学院布列根妇女医院(BWH),麻省总医院(MGH),依阿华大学(University of Iowa)和GE医疗开发的。3DSlicer是用04年到现在超过47个的NIH经费灌溉出来的。光弥散方向的插件,就有04,13,15年的3项经费。另外还有放疗引导,手术引导,放射组学,深度学习,XNAT接口,胸部影像平台(Chest Imaging Platform)等海量功能组件。而且要相信哈佛医学院系统拿funding的能力,他们可以一直搞新玩意儿,因此开发社区也极其活跃,新东西层出不穷。譬如这两年火爆的深度学习,就已经有Deep Infer提供的前列腺分割和肺外形分割组件了。其中前列腺分割号称DICE85+,建议各位把自己数据灌进去玩一玩,省得天天吹CNN也不知道最后替谁背了锅。基本上,掌握了3DSlicer,大部分花钱的科研平台就是来搞笑的……(部分组件见下图)
在这里插入图片描述
更加难能可贵的是,这是一个开源平台(Why?在美国,纳税人经费做的当然要开源),许可非常宽松,允许改造、商用等等。我们仔细阅读过它的源码,在开发IMAgen/enGINE的过程中,也借鉴了它的很多模块(如DICOM导入管理部分)。我们码农界有句老话,叫Talk is cheap, show me the code (吹水无用,请给代码)。我们看了Slicer的代码,真心膜拜人家在代码架构,多团队合作管理,版本控制方面的专业性。

但是,正如它在易用性-易扩展性图中的位置一样,它为了多单位合作,支持更多的开发者,将插件接口做得极其开放。因此有2个缺点,1是暴露的参数太多了,使用非常复杂,必须仔细看文档或者参加培训班才容易上手。自己瞎玩的话,大概率连个弥散数据都灌不进去。(或许……我们可以开个培训班赚钱?)2是计算速度慢,缘于其使用了大量的硬盘文件缓存方式进行模块间通讯。举例来说,下图是UKF(Unscented Karman Filter)白质纤维束追踪插件的参数界面,此种纤维束追踪方法比较新,对数据量要求小追踪效果好纤维束不容易断,而且支持NODDI模型的追踪。不过我感觉对于不懂技术细节的临床背景研究者,只能抓瞎了:
在这里插入图片描述
在这里插入图片描述
ImageJ(https://imagej.nih.gov)是一个工程师界的传奇。它是NIH一个工作人员Wayne Rasband利用自己的业余时间搭建的影像处理工具,开发者2010年从NIH退休之后,还在继续做很多工作。它也拥有大量的第三方插件(列表见此https://imagej.nih.gov/ij/plugins)。和大部分影像处理软件不同,这是个使用Java语言开发的工具,曾经还以applet方式提供在线使用。假设您团队的开发者更熟悉Java系的工具,这应该是您首选的科研工具。不过它也存在用户友好性的问题,而且界面比3DSlicer更加粗陋。因为我们不用Java,这个工具我们用得比较少。各位可以自己官网查阅资料。
MITK
在这里插入图片描述
The Medical Imaging Toolkit (MITK, www.mitk.org)是德国癌症协会(German Cancer Research Center)搞的一套跨平台的免费+开源软件。虽然有图形界面,但它更像是一套工具集而不是一个软件。它可以理解为基于QT,ITK,VTK,OpenCV编写了一些自有的图形组件和算法库。然后通过灵活编写cmake脚本和使用它的预编译宏,可以把这些组件组成一个应用软件。譬如官方搞的MITK Diffusion,可以做HARDI之类的运算和追踪。下图是一个DTI的一个界面:

在这里插入在这里插入图片描述图片描述

根据上次文章所说的易用性和开放性成反比的理论,MITK架构设计灵活,易用性就比较差。根据我的使用经验,以它的工具库组织起来的软件往往不太稳定,bug比较多。各位可以试着下载安装版试试,不经历一番摸爬滚打恐怕是用不了的。MITK更像是给研究团队中的工程技术人员根据科研需求,快速定制自制软件用的。同样在德国的一家公司出品的mevislab软件应该是延续了这个思路(https://www.mevislab.de/),工程团队可以用mevislab快速把算法界面化,给医疗团队使用。这种研究团队种包含了有开发实力的工程技术人员的情况,在国内可能不太多见。这也是我们把IMAge/enGINE往易用性方面优化的原因。

另外再介绍两种专门用来做分割的后处理工具:

ITK Snap
在这里插入图片描述
ITK Snap (http://itksnap.org) 是跨平台的免费开源软件。支持iOS,WIN和Linux。其界面走技术硬核风,如下图:

在这里插入图片描述

手动分割工具齐全而且实现了大量的ITK半自动方法,而且软件架构比较开放,很方便往里塞ITK写的新方法,比较适合做分割算法开发的工程师们用来调参数或者尝试新算法。对于医学背景的同学们,我更推荐下面这个软件:

Seg3D

Seg3D (http://www.sci.utah.edu/download/seg3d/)是一款交互设计非常独树一帜的免费开源影像处理软件。考虑到它的开发单位犹他大学与Photoshop的渊源,Seg3D基于“蒙版”和“图层”的使用也并不意外。每一步分割算法都是生成一个新的“蒙版”,蒙版之间也可以便捷的逻辑运算。不过Seg3D里的半自动方法比较有限,只有区域生长,阈值之类的几种。软件比较封闭,想要二次开发加入新的方法也不是那么容易。下图是一个CT增强的颅内血管分割的小例子

在这里插入图片描述

首先可以使用阈值和联通域找到血管(图层一,绿色),但很容易连到骨皮之类其它类似信号的区域上。

然后再从原始数据使用Otsu法找到颅内,进行几次腐蚀,确保颅内区域远离骨皮(图层二,黄色)。

最后把图层一和图层二做一个“与”逻辑(图层三,紫色),就能粗略地得到颅内的血管部分了。

结合手动方法,愿意花时间的话,应该说可以满足绝大多数医学影像分割需求了。还可以把分割好的模型直接3D打印。

 

MITK--医学影像处理插件

集成化的医学影像处理与分析C++类库。开发MITK的灵感得自于开源软件VTK和ITK的巨大成功, 其目的主要是为医学影像领域提供一套整合了医学图像分割、配准和可视化等功能的,具有一致接口的、可复用的、灵活高效的算法开发工具。和VTK的风格类似, MITK采用传统的面向对象的设计方法, 而没有采用ITK的范型编程风格。因而其语法和接口是简单而直观的。

ITK在医学图像分割和配准方面具有非常强大的功能,在进行分割与配准研究及开发医学图像处理与分析系统时,我们常常需要应用这一重要的工具。但ITK不具备可视化方面的功能,因此,在应用ITK进行图像处理后,一般会再利用VTK或者FLTK进行可视化,观察结果及进行交互显示.

 

ITK医学图像分割配准库
dmctk德国的一个医学图像处理库
vtk用来显示的库

FLTK (pronounced "fulltick") is a cross-platform C++ GUI toolkit for UNIX®/Linux® (X11), Microsoft® Windows®, and MacOS® X.
FLTK provides modern GUI functionality without the bloat and supports 3D graphics via OpenGL® and its built-in GLUT emulation.FLTK is designed to be small and modular enough to be statically linked, but works fine as a shared library. FLTK also includes an excellent UI builder called FLUID that can be used to create applications in minutes.
FLTK is provided under the terms of the GNU Library Public License, Version 2 with exceptions that allow for static linking.

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

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

相关文章

android 安卓市场,安卓市场(Android Market).doc

安卓市场(Android Market)安卓市场(Android Market)Android (HiMarket) China market is the earliest and largest Android software and online game download platform, Netdragon well-known products, provide good service for users of mobile phone software. Since it…

IROM 浅见

IROM其实是三星已经固化在CPU里面的一段代码,我们要做的事情就是提供一段可以供IROM读取的8K代码程序,至于这8K代码放在哪里,由CPU的相关引脚决定(OM1-OM4,GPN13-GPN15)。也就是说从哪里启动的意思。 如果从…

LINQ是死是活?——很奇怪为什么会有这样的话题?

LINQ是死是活??? 如果我问您:机器代码死了吗?汇编死了吗?C死了吗?VB6.0死了吗?Delphi死了吗?您可能会觉得我很无聊。所以我觉得“LINQ是死是活”的说法也很奇怪? LINQ诞…

android gradle 语法,Gradle 1.语法

8种机械键盘轴体对比本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?gradle 语法解析:gradle的语法十分简洁,以至于看起来跟像是配置文件。先看一个简单的android项目完整的gradle脚本:build.gradle123456789101112131415…

【转】二维异形件排版算法介绍(三)

转自:https://bbs.huaweicloud.com/blogs/203947 【摘要】 相比于基于可行解的排样算法,重叠移除算法在改变解的状态时,允许零件之间发生重叠,然后采用分离技术消除重叠,直到达到算法的终止条件为止。重叠移除算法的关…

WinCE6.0中应用程序如何直接访问物理空间

在实际开发过程中,经常希望能在应用程序中直接读写设备的物理空间。以前在做WinCE6.0下的MEMMgr时通过秘密加载一个内核态驱动实现了这个需求。但这种方式有一个明显的缺陷,每次读写都必须经由它才能完成。如果只是读取GPIO,那问题不算大。如…

开博之文

逛园子很久了,读而不写非礼也。分享技术,交流经验,体味人生,本博主旨,此为09年的开年大事。转载于:https://www.cnblogs.com/imstand/archive/2009/01/11/1373712.html

【转】Dicom格式文件解析器!!!!!!!

转自:https://www.cnblogs.com/assassinx/archive/2013/01/09/dicomViewer.html Dicom全称是医学数字图像与通讯,这里讲的暂不涉及通讯的问题 只讲*.dcm 也就是diocm格式文件的读取,读取本身是没啥难度的 无非就是字节码数据流处理。只不过确…

android 设置view最大高度,android-在RecyclerView上设置最大高度

我有一个对话框片段,其中包含线性布局,其中涉及RecyclerView上方的titleText,在最底部,recyclerView下方有一个按钮.由于recyclerView根据适配器设置的项目数展开或折叠,因此按钮有时会被截断并且不再显示在屏幕上,因为recyclerView仅覆盖整个屏幕.我的问题是,有没有一种方法可…

【转贴】利用 Javascript 获取 URL 参数(适合IE、FF)

.  ... .../test.html?str123456如何用Javascript接收类似上面的url参数呢?这个问题网上有很多答案,看了看,主要有两种,一个是利用字符串的截取,另一种是利用正则表达式。[正则式&#xff3d…

【WinCE】流设备驱动简介及GPIO驱动的实现

流设备驱动实际上就是导出标准的流接口函数的驱动,这是文档上面的定义。在WinCE中,所有的流设备都导出流设备接口,这样WinCE中的Device Manager可以加载和管理这些流设备驱动。 流设备驱动的架构如图: 首先我声明一下,…

android contentprovider api,Content Provider Basics

一个内容提供者访问数据的中央资源库。提供者是应用程序的一部分,提供自己的操作数据的UI。然而,内容提供者主要是被其他应用程序引用,通过提供者客户对象访问提供者。提供者和提供者客户端为数据提供一个一致的,标准的接口&#…

【转】医学影像调窗技术!!!!

转自:https://www.cnblogs.com/assassinx/p/3139505.html 在年初的时候做过一个dicom格式文件解析,当时只是提了下。看着跟别人的显示出来也差不多 其实是我想太简单了。整理了下思路 这里提供正确的调窗代码。 医学影像 说得挺高科技的 其实在这个过程…

开始-运行 下常用快捷命令

在“开始”菜单上单击“运行“,输入 1. eventvwr.msc /s 打开事件查看器 (可查看系统日志) 2.gpedit.msc 打开组策略 示例:在Windows Server 2003中关闭系统事件跟踪程序: 单击“开始→运行”,输入gped…

解决6410 WINCE6 应用层调用SetSystemPowerState api关机无效的问题

6410平台下的wince6系统,在应用层中使用SetSystemPowerState api函数关机发现无效。 应用层调用如下: [cpp]view plaincopy SetSystemPowerState(NULL, POWER_STATE_OFF, POWER_FORCE); 注:该调用需要引用pm.h头文件,该头文件在…

【转】理解字节序 大端字节序和小端字节序

转自:https://www.cnblogs.com/gremount/p/8830707.html 以下内容参考了 http://www.ruanyifeng.com/blog/2016/11/byte-order.html https://blog.csdn.net/yishengzhiai005/article/details/39672529 1. 计算机硬件有两种储存数据的方式:大端字节序…

Web-DispatcherServletUrlPatterns

Web-DispatcherServletUrlPatterns 在MANIFEST.MF文件中指定了Web-DispatcherServletUrlPatterns时千万要注意它的规则,首先它必须是符合servlet的url-pattern的,其规则如下: 在web.xml文件中,以下语法用于定义映射: …

WCHAR char CString等常用类型互转

1、CString to WCHAR*: [cpp]view plaincopy WCHAR *wch (WCHAR*)str.GetBuffer(str.GetLength()); str为CString类型。 2、WCHRA* to char*: [cpp]view plaincopy memset(buf, 0, bufInLen); // WCHRA to char WideCharToMultiByte( CP_ACP, 0, wch, -1, buf,…

html文件自动批阅器怎么设计,作业作业提交与批改系统HTML界面.doc

作业作业提交与批改系统HTML界面作业1-作业提交与批改系统HTML界面请根据以下需求部分功能或全部全部功能HTML界面代码;注意HTML代码附在本文后面一、作业提交与批改系统系统功能图基本功能1.学生注册2.学生、教师、管理员密码找回功能3&…

【转】Photoshop保存格式介绍大全

01 PSD格式 PSD格式:PSD是Photoshop默认的文件格式,他可以保留文档中的所有图层、蒙蔽、通道、路径、未栅格化的文字、图层样式等。通常情况下,我们都是将文件保存为PSD格式,以后可以对其修改。PSD是除大型文档格式(PS…