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

    研究了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系统抽象模块结构图server

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。