医学影像处理交互平台MITK框架研究

9 篇文章 1 订阅

    研究了MITK(Medical Image Interaction Tool Kit)有段时间了,编译也编了,能添加的插件都添加了,基本使用也用了,现对整个框架做一个简要梳理。

引言:

1895年,德国科学家伦琴发明X射线,促使CT(计算机断层成像)、MRI(核磁共振成像)、CR(计算机X线成像)、B超、电子内窥镜等现代医学影像设备相继出现,并广泛应用在临床诊断和治疗上,极大的提升和丰富了医学诊断的方法和工具。但由于各种成像设备的设计和开发过程相对独立,各设备配套软件又过于封闭且不统一,因此使得临床影像的釆集和处理流程变得复杂。终端用户往往面临着设备与软件不配套、图像功能特性单一,分割、配准、可视化算法单一,可集成性差的问题,增加了用户的使用和维护成本。德国癌症肿瘤研究中心开源的软件系统MITK(The Medical Imaging Interaction Toolkit)是一个具有统一算法接口和数据规范、支持多模态图像和多种引导治疗设备、具备多种数据处理和数据分析功能、丰富的可视化功能的高可复用、可扩展的软件平台。通过对MITK系统的研究分析,总结出系统平台的框架设计结构,各模块功能与相互依赖关系,系统的插件扩展机制及其应用,对构建与实现定制化的多模态医学影像交互处理软件平台系统有重要意义。

 

1MITK系统框架

MITK由德国癌症肿瘤研究中心(GermanCancer Resesarch Center Division of Medical Image Computing)设计并实现,它是一个医学图像处理的开源的软件工具集,它将图像数据分析工作序列化,并集成了医用成像设备或引导设备的硬件驱动,它的设计目标是提供一套高可复用的模块化代码,为快速开发新的功能模块提供支持。系统设计框图如图1所示,该系统可分为应用程序框架(Application-Framework)、插件框架(Plugin-Framework)、图形界面框架(GUI-Frmaework)和Modules组成。MITK的应用程序框由Blueberry-Framework支持,这是一种集成了C++MicroService、插件系统、GUI系统的应用程序框架,可接入各种封装了图形界面的MITK-Modules。CTK(Common Toolkits)是一个专注于DICOM操作和Plugin系统的框架,为Blueberry提供插件系统的支持;Qt是一款跨平台的图形界面框架,为Blueberry提供丰富的界面系统支持;MITK Modules提供了多种算法库、数据结构库、设备驱动库,大多数的Module都是独立于界面的,每个模块只有在它被使用时才会被构建。MITK的这些Modules大多是对ITK和VTK成熟的算法进行封装,并沿用了ITK或VTK的算法风格。

图1  MITK系统平台框架图

Fig.1 Medical image Interaction Toolkitsystem structure

 

         通过对系统的分析和抽象,下图展示了组成MITK系统的各模块相对关系和层次架构。


图2  MITK系统抽象模块结构图

Fig.2 Medical image Interaction Toolkitsystem abstract module structure

 

         MITK系统中的抽象概念繁多,现挑选重要的概念阐述,数据管理、管线、可视化、交互。

1.1数据管理

MITK中所有的数据对象都存储在DataNode中,包括图片、表面、体素,DataNode包含了对象原始数据和渲染属性、交互属性以及在空间域、时间域的几何信息。MITK中DataStorage负责管理当前工程中的所有DataNodes,提供数据对象的增删改查操作。

1.2算法管线

图像处理是MITK平台中最重要的部分,MITK中图像处理过程采用Pipline管线的思想,与物理的管道不同的是,物理管道只起到内容传输作用,软件中的管线会对内容本身做处理,并将处理后的内容传递给接收对象,这样可以提高算法的复用性,降低各模块之间的耦合。

Pipline采用惰性求值策略,只有当终端消费者需要最终数据时,管线上各算法模块才会运作起来。图2为管线运作机制和数据处理的数据模型。

a:(管线运行机制,pipline operation mechanism)    

b:(数据处理的数据模型,data processing data model)

图2 管线运行和数据模型

Fig.2 Pipline operation and data model

 

1.3可视化管线

MITK的可视化技术沿用VTK的可视化管线思想,并对其做了部分封装和修改,图4展示了MITK可视化管线中重要元素与VTK可视化管线中的元素相关关系。

 

图4 可视化管线

Fig.4 The render system pipline

 

MITK创建了vtkMitkRenderProp,继承自vtkProp但增加了一些属性,使之更像vtkPropAsembly。最后渲染丢到VtkPropRender中进行,VtkPropRender继承自BasesRender,BaseRenderer是集成了vtkRenderWindow和vtkRenderer的渲染器。QmitkRenderWindow是实际进行渲染的窗口。

图5展示了MITK可视化管线的工作流程。

1.4用户交互

交互是MITK系统中一个非常重要的概念,因为系统框架复杂,涉及到许多第三方库,如何将各种第三方库、插件成功的集成进来并提供给终端用户一个简单方便的使用方法,MITK将这方面工作独立成一个交互服务(Interaction Service)。

交互概念中一个重要角色是DataInteractor,下图展示了对于图形界面的交互事件处理流程。

图6 对图形界面进行交互事件处理

 

QT图形界面的用户时间触发被送到MITK渲染器,MITK这一层作为QT的图形界面适配层,将事件消息发送到MITK内部的事件分发器,事件分发器这一层由mitk::DataInteractor响应事件。如果DataInactor中已经定义了这个事件,则他会返回该事件变量,更新事件状态并执行相应的动作。

MITK中处理交互事件的事件处理器有两类,分别是DataInteractor和InteractionEventObserver。DataInterator将交互事件与唯一的DataNode相关联,而InteractionEventObserver不会修改任何DataNode。

 



  • 4
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
在使用MITK(Medical Imaging Interaction Toolkit)框架时,可以通过以下步骤来控制主界面的菜单栏叉号事件: 1. 创建一个自定义的MainWindow类,继承自MitkRenderWindowBase(MITK提供的基类)或者QmitkAbstractView(如果你使用的是MITK Workbench)。 2. 重写MainWindow类的closeEvent方法,该方法会在用户点击窗口的叉号按钮时被调用。 3. 在closeEvent方法中执行想要的操作,例如保存工作状态、询问用户是否确认关闭等。 下面是一个简单的示例代码: ```cpp #include <QCloseEvent> #include <QMessageBox> #include <MitkRenderWindowBase.h> class CustomMainWindow : public MitkRenderWindowBase { public: CustomMainWindow() { // 设置窗口标题等其他初始化操作 } protected: void closeEvent(QCloseEvent* event) override { // 弹出对话框询问用户是否确认关闭 QMessageBox::StandardButton reply; reply = QMessageBox::question(this, "确认关闭", "确定要关闭应用程序吗?", QMessageBox::Yes|QMessageBox::No); if (reply == QMessageBox::Yes) { // 用户确认关闭,执行关闭操作 event->accept(); } else { // 用户取消关闭,忽略关闭事件 event->ignore(); } } }; ``` 在这个示例中,我们创建了一个名为CustomMainWindow的自定义主窗口类,并重写了closeEvent方法。在closeEvent方法中,我们弹出一个对话框询问用户是否确认关闭应用程序。如果用户点击了对话框中的"是"按钮,我们调用event->accept()来接受关闭事件;否则,我们调用event->ignore()来忽略关闭事件。 你可以根据自己的需求在closeEvent方法中执行其他操作,例如保存数据、清理资源等。记得在关闭事件处理完成后调用event->accept()或event->ignore()来决定是否关闭应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值