利用Altera FPGA/Nios II资源实现MRI Spine图像分割算法

描述

  作者:李伟明,史睿琼,李波   来源:北京交通大学计算机学院信息科学研究所

一。 设计概述

1. 设计意图

迅速发展的医学影像技术不断的推动现代医学进步,CT、MRI、PET广泛地应用与临床诊断分析,其作用已经从人体组织器官解剖结构的非侵入检查和可视化,发展成一种用于手术计划和仿真、手术导航、放疗计划和跟踪病灶变化的基本工具,从医学图象中分割出解剖结构并构造出形状地集合表达。

MR脊柱图像分割的研究对于医学图象的计算机辅助识别及神经病理学的临床研究有着至关重要的作用。如果不能将脊椎准确而清晰从图像中分割和识别出来的话,那么计算机技术对于医学临床研究的价值是非常有限的,然而,仅仅依靠人工的方法完成这项工作也是远远不够的。传统的对椎骨骨折的评估是手动的对每块椎骨标注6个点(四个角和上下边沿的中点),然后测量前面、中间、后面的椎骨的高度。但是这个过程是相当的耗时。文献记载,对于用鼠标定位一位病人1块椎骨要花费大于15分钟,对于整个脊椎的定位的耗时将让人很难接受。因此医学临床上迫切的需要一种方法能够自动完成MR脊柱图像的分割,计算机自动定位椎骨和椎间盘对于辅助诊断具有重要的临床应用价值。

本作品的设计意图即在Nios. II处理器的平台上实现我们研究提出的一种可行的,鲁棒性高的算法,即利用我们实验室研究的关于MRI Spine图像分割算法实现了脊椎核磁共振矢状图(Sagittal Views)自动的椎间盘定位以及量化的标注,充分利用Altera FPGA/Nios II资源,使系统小型化、便携化。该算法的应用,可以改善对骨质疏松引起的椎骨骨折进行自动的评估,对椎间盘进行量化分析,有助于与其他成像图像(如CT)进行图像的配准,以及图像引导的椎骨外科手术。

2. 适用范围及针对用户群

本作品主要适用于各拥有核磁共振仪器的医疗机构。由于本作品是基于Nios II处理器,具有使用方便的特点,因此也适合普通的老百姓,他们可以以此来了解病人的病情,提醒病人在生活上注意预防各种脊椎病情。并且本作品有网络传输功能,方便医生进行远程会诊。

3. 本设计采用Nios II 处理器的优势

(1)Nios II处理器提供的创新的SOPC设计理念

Nios II软核系统的性能是可以根据应用来进行裁减的,定制用户自己的系统,与固定的处理器相比,在较低的时钟速率下具备更高的性能。具有丰富的IP核库,方便用户设计,有效的提高系统的运算能力。Nios II的用户逻辑功能和用户指令突现NiosII 处理器的技术亮点,提供了运算优化、加速的一个有效途径,将处理速度提高到一个相当的层次,易于实现算法的商用化。

(2)Nios II IDE开发环境集成了已经移植到Nios II 处理器的RTOS ucosII操作系统,方便我们直接利用该操作系统完成系统的功能设计及功能行扩展。

(3)Dsp Builder丰富的功能模块和IP核

有了在DSP Builder,使得我们能在Simulink下进行算法级的系统开发。并且可以将算法设计成自定义用户指令,利用SoPC Builder和Quartus. II软件集成至Nios II嵌入式系统处理器中,通过软件调用该自定义指令完成DSP算法。

(4)C2H对设计的有力支持

Nios II提供的C2H编译器能够将对性能要求较高的C语言程序自动转换为硬件加速器,集成到基于FPGA的Nios II子系统中。这样,分担了Nios II处理器的数据计算和存储器访问功能,使处理器能够更好的处理其他任务。由于Avalon互联架构并没有限制主机和从机的数量,因此,Nios II C2H编译器可以根据转换目标代码的要求,产生多个存储器自治硬件加速器。帮助嵌入式系统开发人员提高效率,实现成功的设计。

二。 功能描述

MRI脊柱图像分割的研究是利用磁共振成像设备对人体组织进行定性或定量分析所必不可少的关键步骤。引入计算机辅助MRI脊柱图像分割技术将使得医生的临床诊断更加准确及时,降低医疗费用,减轻医生的工作压力,具有良好的应用前景。

本设计硬件板块主要包括DE1开发平台、MRI图像LCD显示板、与MR设备及PC机网络接口板构成。系统的功能模块主要分成以下六个:MRI图像预处理模块、脊髓提取模块、脊椎检测分割模块,LCD图像显示及人机交互模块,MRI图像数据存取模块,网络传输模块。

1. MRI图像预处理模块、脊髓提取模块、脊椎检测分割模块是本设计的算法部分,也是本作品的功能核心所在。我们利用 Nios II处理器强大的运算能力,将大部分的算法使用C程序实现,得益于C2H工具的加速功能,我们将算法中最耗时间的部分使用该工具进行加速,缩短了开发周期。

2. LCD图像显示及人机交互模块:我们采用LCD屏及鼠标来实现图像的显示和人机交互的功能。鼠标和lcd通过自己编写的IP核,以Avalon从设备的方式连接到 Nios II处理器。设计时我们使用了IED开发环境下的UCOSII实时操作系统来完成系统的任务管理及算法调度,移植对应于我们采用的LCD控制器芯片TCB8000C的UCGUI图形操作界面,使系统具有良好的人机交互性。

3. MRI图像数据存取模块:直接从成像设备中获取的图像一般符合标准的医学图像格式,即dicom格式,这种格式的图像对于普通的用户是不常见的,要用专门的软件或医学设备读取,所以为了使得图像在任何情况下,在大多数环境下可以方便的读取,我们在处理前经过由dicom格式向bmp格式的转换,通过网络下载到硬件平台的存储设备上的图像是已经进行过格式转换的bmp格式图像,处理后仍然以bmp格式的图像上传到PC机。在这种情况下,就需要比较大的存储空间,因此采用sd卡作为数据存储区,并且移植对应于sd卡的UCFS文件系统,增强了系统的扩展性和系统的数据管理能力。

4. 网络传输模块:采用以太网方式,实现数据的交互。以太网口方便系统从MR设备上获取图像。利用DE1的扩展接口,以DM9000A芯片为核心,自行开发了网络接口板,由于以太网的引入使得系统具有更好的扩展性。

Nios II处理器的特点和sopc的设计理念使我们的设计过程变得不那么枯燥,这是一个不断优化算法,完善设计,使系统速度运行速度更快的一个过程。我们将设计分成一下两个步骤进行:

1)搭建Nios II系统,将算法用纯软件的方式在Nios II上运行起来,并初步实现系统的功能。

2)利用自定义指令和自定义外设,加速算法的运行。

三。 性能参数

系统性能参数:

脊柱核磁共振图像对于诊断脊骨的疾病方面扮演着非常重要的角色,例如对于退化椎间盘的描述比其他形式的图像有更好的效果,并且能够对脊椎外科手术的治疗进行评估。对脊椎核磁共振图像进行分析处理可以辅助诊断更加精确,节省时间和花费。因此对于本系统来说,最重要的就是要将脊椎准确而清晰从图像中分割和识别出来,在保证图像分割的准确性的同时,通过优化代码、使用C2H工具及自定义用户外设等方法加块运算速度。

下图是系统工程编译之后各种资源的占用情况:

计算机

算法各个步骤运行时间如下:(以下是经过代码优化后的运行时间)

图像预处理:4128.77ms ms

脊髓的提取(Spinal Cord extraction): 24208.14ms

椎间盘的探测(Disks Detection): 6.03ms

图像存入sd卡时间:15881.59 ms

图像从sd卡读入时间:5730.02ms

算法分割的准确性从系统运行后生成的最终处理图像可以看出,系统能够比较准确的将脊椎标注出来,并且在平台上将各个脊椎按照编号标注出来。医疗仪器的具体性能还需要长期的临床实验来得到验证,并通过这些数据改善我们的算法。

下图是直接拍摄作品显示的处理效果,在后面章节显示的图片是系统通过网络将图片传输到计算机上得到的。

计算机

 

四。 设计结构

计算机

基于Nios II的MRI脊柱图像分割系统硬件结构图

软件流程如下:

计算机

五。 设计方法

1. 系统硬件设计

SOPC Builder设置如下图

计算机

Quartus II 软件下模块示意图如下

计算机

系统实物图片:

2. 实现步骤及实现方法

1)。 LCD图像显示及人机交互模块

(1) LCD及鼠标硬件部分

LCD控制器芯片采用TCB8000C,控制5.7寸TFT65000色LCD显示屏。控制器接口与MCU接口图如下,通过编写了硬件程序以Avalon总线从设备的方式连接到Avalon总线上,实现 Nios直接访问LCD控制器的功能,利于驱动程序编写,简化后续的GUI移植中有关LCD驱动部分。

计算机

系统采用PS/2接口鼠标,PS/2鼠标接口采用一种双向同步串行协议。即每在时钟线上发一个脉冲,就在数据线上发送一位数据。与nios的连接仍然采用verilog语言编写Avolon从设备,实现PS/2鼠标的传输协议。程序包括mouse_avalon_interFace.v,mouse_register_file.v , ps2_mouse_interface.v 。其中mouse_avalon_interface.v 是avalon总线从设备接口,mouse_register_file.v,ps2_mouse_interface.v完成PS/2鼠标协议的数据转换和传输。编写对应的GUI下的驱动程序,实现GUI的鼠标操作功能。

(2) μc/gui移植

μC/GUI是一款针对嵌入式系统的优秀图形软件,它具有源码公开、可移植、可裁减、稳定性和可靠性高的特点。μC/GUI提供了丰富的界面元素,例如按钮、编辑框、滑动条等控件,同时支持高效的窗口会调机制,为界面与应用函数之间提供了良好的接口机制。多功能数字小相框系统的人机交互界面正是利用这个工具进行开发的。

μC/GUI软件体系结构如下:

计算机

μC/GUI函数库为用户程序提供GUI接口,包含的函数有文本、数值、二维图形、输入设备以及各种窗口对象。其中,输入设备可以是键盘、鼠标或触摸屏;二维图形包括图片、直线、多边形、园、椭圆、圆弧等;窗口对象包括按钮、编辑框、进度条、复选框等。

μC/GUI函数库可以通过GUIConf.h文件进行配置,配置的内容包括是否采用内存设备,是否采用窗口管理器,是否支持操作系统、触摸屏,以及配置动态内存的大小等。

在LCDConf.h文件中定义了与硬件有关的各种属性,如液晶的大小、颜色以及与液晶的接口函数。而LCD驱动文件则负责把μC/GUI的各种函数解释成LCDConf.h文件中定义的液晶接口函数,这个文件与具体的硬件连接无关。

μC/GUI与LCD的硬件接口通过驱动文件把硬件接口函数转化为LCDConf.h中定义的LCD读写函数。

2)μC/GUI移植过程:

1. 配置文件的移植

移植工作首先需要完成的是对配置文件的GUIConf.h, LCDConf.h移植,根据数字相册系统的显示模块的要求,对配置文件的相关的参数进行配置。

2. LCD驱动的移植

μC/GUI针对不同的液晶控制器提供了多种驱动程序,如KS0713、SEDl335、T6963等控制器都有对应的液晶驱动程序。但是由于在本系统中,采用的显示模块为TOPWAY TCB8000A LCD控制器和TFT、 65000色、LCD屏。而μC/GUI没有提供相关控制器的驱动,并且与μC/GUI提供驱动支持的LCD控制器相比较,TCB8000A控制器拥有自己独立的屏幕控制指令体系,这给μC/GUI在TCB8000A控制器的移植工作带来了很大的难度。

在移植的过程中,我们首先运用TCB8000A的指令体系,实现了μC/GUI为上层应用函数提供的大部分API函数,接着对于TCB8000A控制器不能在硬件支持的API函数,我们采用软件实现的方法对驱动进行了修补,最后通过对大量控件显示测试实验,调整了在LCD驱动中运用的TCB8000A显示指令中的参数,使得LCD驱动的性能达到最优。最终实现了μC/GUI在TCB8000A控制器上的无缝移植。

3. MRI图像数据存取模块

SD卡是Secure Digital Card卡的简称,直译成汉语就是“安全数字卡”,是由日本松下公司、东芝公司和美国SANDISK公司共同开发研制的全新的存储卡产品。SD存储卡是一个完全开放的标准(系统),多用于MP3、数码摄像机、数码相机、电子图书、AV器材等等,尤其是被广泛应用在超薄数码相机上。SD卡在外形上同MultiMedia Card卡保持一致,大小尺寸比MMC卡略厚,容量也大很多。并且兼容MMC卡接口规范。另外,SD卡为9引脚,目的是通过把传输方式由串行变成并行,以提高传输速度。它的读写速度比MMC卡要快一些,同时,安全性也更高。

我们为了使系统更具有广泛的应用性、兼容性,我们决定使用SD卡作为设备的主要存储介质,用于存放我们的照片、音乐、素材等重要数据。DE2上的SD读卡装置为1线方式,其速度受到了很大限制。我们把装置改动为4线方式,使其更加符合我们系统的要求。

在Nios II软件开发集成环境下,包含了uc/os,可以使用户方便的应用到自己的软件工程里,我们为了更合理使各任务共同执行、共享cpu,我们使用了uc/os操作系统,并为其加挂文件系统。一开始我们选用了zlg文件系统,在成功移植后,我们测试了他的速度,速度不尽人意。在向sd卡读写1M数据分别需要用时37sec和57sec。我们分析了它的耗时所在,一方面sd卡读写模式限制,在标准的DE2开发板上,sd卡使用的是1线读写模式,其数据线只有1根,速度受到了很大的限制,我们通过修改其模式,增加数据线的方式,使sd卡的读写模式改变为4线的sd模式,经过测试,速度有了提高,分别为17sec和27sec,但是速度并不是我们假想的快到原来的四倍,这是因为另一方面的影响—文件系统,经过上网查询,发现zlg/fs的性能不高,浪费了很多时间,我们决定使用Micrium 公司的Uc/fs,他和uc/os有着很好的兼容性,在性能上也是得到了大众的好评。经过几周的努力我们成功移植了uc/fs 1.34版本到de2平台上,为四线模式的sd卡架起了文件系统。

经过比较测试,读写速度有了很大提高,1M数据读写分别只用时3.6s和11s。这样基本满足了我们存取数据文件的速度要求。但是仍存在着写较慢的问题,原因在于在写数据到sd卡的时候每一个block都需要计算16位的CRC校验,占用了一部分发送的时间,我们选择采用自定义用户指令的方式加快CRC16运算速度,往SD卡写入一张MR图像 (约1.5M)的时间从21.7S降低到15.8S。选用更高速的sd卡,还能有效的加块写卡的速度。

计算机

SD模式时序

CLK: Host to card clock signal

CMD: Bidirectional Command/Response signal

DAT0 - DAT3: 4 Bidirectional data signals.

VDD, VSS1, VSS2: Power and ground signals.

1线与4线区别

计算机

计算机

Single Block Read

计算机

4. 网络接口

DE1上没有网络接口的功能,为了增强系统的可扩展性,我们自行设计了网络接口板,通过DE1的扩展口连接接起来,这样就使得开发板就有网络功能。考虑到扩展口IO口有限,我们还需要使用IO连接LCD显示屏,一次选用IO口数量相对较少的网络芯片dm9000a。在发数据上,我们是开发板以定时的方式发数据,在PC机上以查询方式收数据。网络使用上,发数据是借助ucosII 的驱动程序实现的,收数据是在网络第二层以中断方式实现的。

5. 图象处理算法实现:

典型的人体脊椎有24块骶骨前(pre-sacral)椎骨,将其结构划分,颈部的椎骨(Cervical)7块, 胸部的椎骨(Thoracic)12块,腰部的椎骨(Lumbar)5块。所以在我们的脊椎矢状图中,相应的典型的图像中可见的椎间盘有23块,分别是C2-3、C3-4、C4-5、C5-6、C6-7、C7-T1、T1-2、T2-3、T3-4、T4-5、T5-6、T6-7、T7-8、T8-9、T9-10、T10-11、T11-12、T12-L1、L1-2、L2-3、L3-4、L4-5、L5-S1。

本算法的目标是将可见的椎间盘进行量化标志,并且对不清晰的椎间盘进行预测估计,也将其标出。算法采用基于uc/osII操作系统编写的c程序实现,加上我们移植的ucgui和ucfs,实现了具有良好的人机交互性的MRI脊椎图像分割系统,易于系统的推广应用。

具体算法分为3步:

(a) 图像的预处理(Preprocessing): 由于原始的核磁共振图像对比度比较低,视觉效果非常不清晰,所以首先要进行图像质量的改善,增强椎间盘的可见度。以下两图为预处理前后的对比。

计算机

该步骤中的图像中值滤波部分比较耗费时间,可喜的是该部分程序非常适合采用c2h工具进行算法加速,加速前后的时间对比如下:

预处理前 预处理后

(b) 脊髓的提取(Spinal Cord extraction): 脊髓在脊柱核磁共振图像中是一个明显的典型的部分,可以为椎间盘的定位提供方向性的信息,应用统计模式识别的模式匹配的方法,进行脊髓的提取。这里我们仅进行上半身的脊髓的提取,是因为上半身的脊髓曲线因人而异的变化比较复杂,而下半身的则可以根据上半身进行预测。

左下图中的红线是提取出来的上半身的脊髓。这部分的算法相对于其他部分来说比较耗时,但是从目前的算法结构上看并不适合使用C2H 进行加速,考虑到我们的算法会进一步优化,因此没有采用其他的方式进行算法加速,我们将在今后的工作中从算法结构和加速实现方式上完善本系统的功能。

脊髓提取图像 椎间盘定位图像

(c) 椎间盘的探测(Disks Detection): 对每个椎间盘进行定位,并将其标注。见右上图,红点代表定位的椎间盘,由黄线引出进行标注。

我们运用SOPC的设计理念,成功的完成了本系统的设计任务,基本完成了预先设置功能。在系统设计过程中,SOPC概念在以下几个方面得到了体现:

(1、 系统的可重构性

由于Nios II是软核处理器,具有可裁剪的特性。因此对于我们设计的系统具有广阔的升级空间,比如,因为时间的原因,一些适合FPGA硬件实现的算法我们采用的c程序实现,速度受到限制,在后续的工作中我们可以在不更改硬件平台的情况下升级我们;还有就是目前的显示屏像素值不够,编写不同的LCD控制器便能够兼容同类型的LCD显示,这些都是SOPC给我们带来的系统可重构优点。

(2、 系统设计模块化

系统设计过程是个团队密切协作分工合作的过程。普通的嵌入式处理器平台设计必须针对特定的处理器进行设计,硬件工作完成后才能够进行软件调试。但是Nios就不同了,只要是能够支持Nios 的Altera 的 FPGA芯片,在其他 FPGA平台上进行调试是没有任何区别的。这样能够使得设计过程的软硬件工作同步进行,在实际产品的设计过程中,就可以将市场拓展和产品研发同时启动,缩短了整个产品的面世周期,这对企业无疑具有无可估量的意义。

(3、 实现方式多样化

利用SOPC概念进行系统设计的时候,系统实现方式是多种多样的,比如要实现一个算法的加速你可以采用自定义用户指令、自定义用户外设或者C2H 的方式实现,通过比较找到最佳的实现方式。

六。 设计特点

基于Nios II的MRI脊柱图像分割系统具有运算速度快,体积小,操作简单,易于同原有的MRI设备共建形成一个新的完整的系统,且便于医生们使用分割后的图像进行集体会诊。

1. 基于Nios II处理器的ucosII操作系统的引入,ucosII在世界范围内得到广泛的应用、包括诸多领域,如手机,路由器,集线器、飞行器、 医疗设备等等。uC/OS适合小型控制系统,具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点。Nios II的开发环境IDE下已经集成了该操作系统,免去了移植工作,非常方便,在使用过程中发现,在Nios II运行基于ucosII及任务时非常稳定。本系统的软件开发均在Nios II集成的μc/os-II操作系统上面完成。

2. 系统引入了ucGUI,系统具有了非常好的人机交互性,只需要使用鼠标就能操作实现该系统所有的功能。这对于本系统的推广有着很大的帮助。

3. 系统设计时考虑到大量MRI图像存储的问题,采用大容量的SD卡就解决了这方面的问题,得益于Nios 软核处理器的优势,我们非常方便了加入了四线制的sd卡控制器,提高了sd卡读取速度。同时我们移植了对应于sd卡ucFS文件系统,大大方便了对文件访问操作。

4. 基于ucosII 操作系统的网络接口,使得我们的系统具有了很强的可扩展性。同时网络的支持也可以使得我们保持图像的更新和对远程医疗的良好支持。

5. Nios II提供一系列的处理器成员,用户可以针对本身系统的需求,创建一个在处理器、外设、存储器和I/O接口方面的完美的方案,这样,既能提供合理的性能组合,另一方面也节省了系统开发的成本,增强了系统在成本上的竞争力。

6. NiosⅡ提供的C2H编译器能够将对性能要求较高的C语言程序自动转换为硬件加速器,集成到基于FPGA的NiosⅡ子系统中,对我们提高系统运行速度提供了有利的支持。

七。 总结

我们本次大赛的设计作品“基于Nios II的MRI脊柱图像分割系统”按照预定计划完成了设计的全部任务,实现了系统的功能,在一些细节上我们还需要努力改进。大赛过程中我们学到了很多新的有关Nios II处理器的支持,首次尝试了医学图像方面算法在Nios II嵌入式处理器实现的方式,体现了Nios II处理器强大处理功能和可靠的运行特性。积累了在Nios II上使用uc/osII、ucGUI、ucFS的使用经验。调试过程中,出现了的不少问题在团队协作的力量下,我们一一将它们克服。

Nios Ⅱ软核系统的性能是可以根据应用来进行裁减的,定制用户自己的系统,与固定的处理器相比,具有很强的优势。Nios II的用户逻辑功能和用户指令突现Nios II处理器的技术亮点,提供了系统实现的多样化特点。对于学生来说,SOPC设计理念带来的就是创新的设计思想。有利于激发我们的创新性。

感谢Altera公司为我们提供了非常好的理论与实现相结合的时间机会,通过大赛,验证了我们设计的算法硬件实现可行性!对于我们的理论研究也具有相当的促进作用。

责任编辑:gt

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分