首页> 中国专利> 基于FPGA的CT图像重建硬件加速方法

基于FPGA的CT图像重建硬件加速方法

摘要

本发明涉及一种基于FPGA的CT图像重建硬件加速方法;通过如下步骤实现:步骤1、上位PC机将探测器采集的投影数据传入FPGA中的PCI-E通信模块,PCI-E通信模块接收的投影数据通过总线转换模块进入预处理模块中,预处理模块对接收的投影数据依次进行加权和滤波计算;步骤2、DDR2控制模块将经过加权和滤波预处理的投影数据写入DDR2SDRAM外部存储器中,系统控制模块针对每次重建的区域通过DDR2控制模块从DDR2SDRAM外部存储器中取出相应的数据,再送入反投影模块中进行反投影计算,反投影模块计算后的数据再传回上位PC机;本发明提供了一种计算速度快的基于FPGA的CT图像重建硬件加速方法。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2013-10-30

    授权

    授权

  • 2012-09-19

    实质审查的生效 IPC(主分类):G06T1/20 申请日:20120309

    实质审查的生效

  • 2012-07-11

    公开

    公开

说明书

(一)、技术领域:本发明涉及一种CT图像重建的方法,特别是涉及一种 基于FPGA的CT图像重建硬件加速方法。

(二)、背景技术:计算机断层成像技术(Computed Tomography,CT)作为 一种现代成像技术已经广泛应用于医学、工业等领域。高分辨率工业CT图像三 维重建数据量大、计算复杂度高、重建时间长的问题已成为制约其走向实用的 瓶颈。因此,CT图像重建速度是衡量CT系统的重要指标之一,对CT重建过 程的加速研究是目前该领域研究的热点和难点。

目前国内外对CT重建进行加速的实现方式主要可分为软件加速和硬件加 速。软件加速的方法只是通过算法的改进来达到加速目的,一定条件下会受到 硬件的制约,加速效果有限,因此近年来研究热点主要集中于采用FPGA(Field  Programmable Gate Array,现场可编程门阵列)、GPU(Graphics Processing Unit, 图形处理器)、DSP(Digital Signal Processor,数字信号处理器)等一系列硬件 加速方法。

FPGA是作为专用集成电路ASIC(Application Specific Integrated Circuit)领 域中的一种半定制电路而出现的。作为一种通用的可编程器件,FPGA拥有丰富 的逻辑资源、存储资源、算法模块和嵌入式硬核模块,采用全数据流的形式进 行数据处理,用空间上全面积并行的方法提升算法速度,同时它的可定制性和 可重构性使其具有很高的灵活性,利用FPGA实现对CT重建过程的加速已成为 该领域的重要研究方向。

使用FPGA进行CT图像重建,数据通信和存储资源的利用是关键的核心。 经过现有技术的文献检索发现,利用FPGA加速CT重建速度的文章采取的存储 调度策略均存在一定的不足,没有同时兼顾CT重建的具体应用和FPGA上的硬 件资源。2008年,Markus Kowarschik等在第九届放射与核医学成像三维图像 重建国际会议(Proceedings of the 9th International Meeting on Fully  Three-Dimensional Image Reconstruction in Radiology and Nuclear Medicine)上发 表文章《基于C形臂CT的快速重建》(《High-Speed Reconstruction for C-Arm  Computed Tomography》),用9块FPGA协调工作完成了FDK算法中滤波及 反投影部分的加速,但他只是采取简单的数据预取策略,没有针对重建算法分 析相适应的数据调度策略,投影数据的反复传输造成了带宽的较大浪费。

2009年,王珏、刘巍等在《核电子学与探测技术》上发表文章《基于硬件 实现的锥束CT图像重建系统的存储机制设计》,他们以SDRAM、SRAM和 FPGA内部缓存建立了三级存储机制,但只能满足小规模的数据重建,且也没有 分析相应的数据调度策略,投影数据的反复传输造成了带宽的浪费。

2010年,邓靖飞学位论文《基于FPGA的锥束CT重建加速关键技术研究》 用并行流水的方式对FDK算法的实现进行了研究,他采用按探测器垂直线平均 分层的方法进行分层重建。该方法每次重建的区域是变化的,靠近重建物体中 心处的单次重建规模大,远离中心时单次重建的规模小,这会造成部分存储资 源的空闲和浪费。另一方面,该方法对投影数据分层后,其相邻两层对应的重 建区域不是按旋转轴进行分割的,会导致后续重建的操作非常复杂,且增大了 数据重排的资源开销和存储空间,难以实现重建数据的实时传输。

(三)、发明内容:

本发明要解决的技术问题是:克服现有技术的缺陷,提供一种计算速度快 的基于FPGA的CT图像重建硬件加速方法。

本发明的技术方案:

一种基于FPGA的CT图像重建硬件加速方法,含有上位PC机、FPGA和 DDR2 SDRAM外部存储器,FPGA中含有PCI-E通信模块、总线转换模块、 预处理模块、DDR2控制模块、反投影模块和系统控制模块,系统控制模块控制 PCI-E通信模块、总线转换模块、预处理模块、DDR2控制模块和反投影模块的 工作,通过如下步骤实现CT图像重建硬件加速:

步骤1、上位PC机将探测器采集的投影数据通过PCI-E接口传入FPGA中 的PCI-E通信模块,PCI-E通信模块接收的投影数据通过总线转换模块进入预处 理模块中,预处理模块对接收的投影数据依次进行加权和滤波计算;

步骤2、DDR2控制模块将经过预处理模块加权和滤波预处理的投影数据写 入DDR2 SDRAM外部存储器中,系统控制模块针对每次重建的区域通过DDR2 控制模块从DDR2SDRAM外部存储器中取出相应的数据,然后送入反投影模 块中进行反投影计算,反投影模块计算后的数据再依次通过DDR2控制模块、 总线转换模块、PCI-E通信模块和PCI-E接口后传回上位PC机。

为保证重建CT图像的质量,在上述所有流程中的数据均存储为32位浮点 格式,FPGA内部实现的计算均为浮点计算,以确保重建数据的精度。

针对CT图像重建中的海量数据传输问题,上位PC机和FPGA间通过 PCI-E×8接口实现DMA高速数据传输,平均读/写速率达到824MB/s和 1012MB/s。

CT图像重建所需的数据量庞大,目前现有的FPGA内部所能提供的Block RAM远满足不了这种需求,DDR2 SDRAM存储量大、数据吞吐率高且成本低廉, 因此本发明选用DDR2 SDRAM作为外部专用存储器。

在FPGA中,将FDK算法分解为加权、滤波和反投影3个算粒,加权和滤 波是对投影数据进行预处理,由预处理模块完成,加权和滤波只是对投影数据 进行操作,且适合在FPGA内部采用流水线的方式进行处理,结合数据传输这 一必然过程,将加权和滤波嵌入到投影数据传输的过程中,在传输的过程中同 时流水进行加权和滤波计算,减少了处理延迟,发挥了FPGA流水处理的特点。 而反投影涉及大量的数据运算和存储问题,采用分块重建和按分度并行流水计 算的方法,提升了资源利用率和重建速度。

本发明重建加速的处理流程为:当投影数据进入FPGA后,先流水进行加 权和滤波算粒的计算,然后存入外部存储器;在进行反投影计算时,则按不同 的分度进行并行处理,最后再进行归约计算,求得重建数据。

加权是对锥束光源角度引起的偏差进行修正,具体操作为:对每个投影值 乘以该点对应的加权系数。在FPGA内部实现加权其主要过程就是实时计算加 权系数。

滤波采用卷积的方法进行实现,具体实现形式为FIR滤波器。采用该方法 输出延迟小,适于流水实现,在阶数一定时重建图像的质量和频域滤波的质量 相当。

反投影模块主要是根据几何投影关系,计算重建体素与投影像素的映射关 系,然后根据计算得到的坐标值从投影数据中提取出对应的数据。本发明中主 要通过按分度并行处理、无等待流水线和分块重建技术,实现了该模块的计算 加速。

FPGA在进行FDK算法计算时,加权和滤波计算在投影数据传输的过程中 通过流水方式实现;反投影计算时采用了按分度并行流水计算和分块重建的方 法:按不同的旋转分度将背投影分解为多个线程并行处理,各线程计算结束后 再进行归约计算,求得重建数据;各线程在反投影计算时沿旋转轴方向将待重 建区域分成若干块,重建其中一块时仅从DDR2 SDRAM外部存储器取出对应 的投影数据进行重建操作。

反投影计算采用了基于编号查找表的数据预取方法,基于编号查找表的数 据预取的步骤为:

步骤1、对投影数据按纵轴进行分块,总分块数目为N,每块对应一个编号 i,i=1,2,...N;再对重建区域进行分块,总分块数目为M,每块对应一个编号 j,j=1,2,...M;N和M均为大于等于1的自然数;

步骤2、计算每块重建区域对应的投影数据范围,该范围对应的编号为istart~ iend,其中,1≤istart≤iend≤N;建立查找表A,以编号j作为该查找表A的地址, 将编号为j的重建区域对应的投影数据编号的开始值istart和终止值iend存入查找 表A中地址为j的空间中;

步骤3、在反投影计算时,将投影数据先根据要重建的区域从DDR2 SDRAM 外部存储器预取到FPGA的内部缓存中,该内部缓存分为P个部分,每个部分 对应一个编号x,x=1,2,...P,且内部缓存的每部分和内部缓存对应的投影数据的 每块大小相同;建立编号查找表B,将编号为x的内部缓存中对应的投影数据编 号kx存入查找表B中地址为x的空间中,其中,1≤kx≤N,查找表B内存储的 编号的集合为W={kx,x=1,2,...P};P为大于等于1的自然数;

步骤4、当重建第一块区域时,从DDR2 SDRAM外部存储器中取出相应的 投影数据存入FPGA的内部缓存中,而重建第一块区域以后的区域时,先根据 当前重建区域的编号j寻址查找表A得到投影数据编号的范围起始值istart和iend, 对比查找表B中存储的投影数据编号集合W,将查找表B中缺少的编号(如编 号i’在istart~iend内却不在W中,1≤i’≤N)对应的投影数据从DDR2 SDRAM 外部存储器中取出,存入FPGA的内部缓存中已不在当前范围的编号(如编号 kn在W中却不在istart~iend内,1≤n≤P,1≤kn≤N)对应的数据空间中,同时 用当前的投影数据编号i’替代查找表B中原先的编号kn的数值;然后,FPGA 对从DDR2 SDRAM外部存储器读到FPGA内部缓存中的数据进行反投影处理。

为了实现加速性能的最优,综合考虑FPGA的硬件特点和反投影算粒的计 算流程,本发明主要采用了以下技术对反投影模块进行了优化:

优化1:将运算过程中需要多次重复计算的中间变量存入查找表,节省计算 资源;

优化2:针对FPGA存储资源少,逻辑资源相对丰富的情况,将FPGA的部 分存储空间采用逻辑资源代替,以匹配内部资源使用率最优;

优化3:分析每个处理流程的消耗时钟数,消除其中不需要的等待空泡,实 现处理流程间的无缝连接,节省不必要的等待时间;

优化4:对反投影计算的流程进行分析,将时间顺序上重复的计算(如其中 的除法运算)进行合并,再通过寄存器延时分配回各级运算,节省计算资源。

上位PC机的软件是面向对象层提供给用户的应用程序,它以实现CT图像 重建为总体框架,核心则是在PC端实现上位机和FPGA硬件加速平台的通信。 上位PC机的软件包括两部分:针对FPGA硬件设备开发出的驱动程序和面向用 户的CT图像重建软件界面。

由于FPGA硬件设备采用PCI-E接口作为通信接口,对上位PC机来言,其 驱动程序的架构符合PCI-E设备的驱动架构。针对CT图像重建这一具体应用, 结合本硬件加速平台自身的特性,整体软件的设计流程如图5所示。

本发明的有益效果:

1、本发明针对CT重建数据规模大、FPGA存储资源少及内存和FPGA 间数据传输慢的瓶颈问题,采用并行无等待流水线的设计方法,在数据传输的 同时流水处理FDK算法中加权和滤波两个算粒的计算,并提出了分块重建和基 于查找表进行数据预取的处理方法;与已有方法不同,本发明对投影数据进行 分块编号,并根据投影关系建立待重建区域和投影数据每块编号间的查找表, 每次重建时根据查找表更新相应的投影数据,减少了数据传输,提升了存储资 源和传输带宽的利用率,从而提高了重建速度。

(四)、附图说明:

图1为基于FPGA的CT图像重建硬件加速方法的硬件总体框图;

图2为FDK几何关系示意图;

图3为PCI-E通信模块框图;

图4为基于编号查找表的数据预取原理框图;

图5为上位PC机软件工作流程图;

图6为Shepp-Logan体模重建结果对比图;

图7为体模重建切片第128行数据剖线图;

图8为汽车火花塞光学图片;

图9为汽车火花塞的投影图像;

图10为汽车火花塞的CT图像重建结果剖面图之一;

图11为汽车火花塞的CT图像重建结果剖面图之二;

图12为汽车火花塞的CT图像重建结果剖面图之二。

(五)、具体实施方式:

参见图1~图12,图中,基于FPGA的CT图像重建硬件加速方法,含有 上位PC机、FPGA和DDR2 SDRAM外部存储器(如图1所示),FPGA中含 有PCI-E通信模块、总线转换模块、预处理模块、DDR2控制模块、反投影模块 和系统控制模块,系统控制模块控制PCI-E通信模块、总线转换模块、预处理 模块、DDR2控制模块和反投影模块的工作,通过如下步骤实现CT图像重建硬 件加速:

步骤1、上位PC机将探测器采集的投影数据通过PCI-E接口传入FPGA中 的PCI-E通信模块,PCI-E通信模块接收的投影数据通过总线转换模块进入预处 理模块中,预处理模块对接收的投影数据依次进行加权和滤波计算;

步骤2、DDR2控制模块将经过预处理模块加权和滤波预处理的投影数据写 入DDR2 SDRAM外部存储器中,系统控制模块针对每次重建的区域通过DDR2 控制模块从DDR2SDRAM外部存储器中取出相应的数据,然后送入反投影模 块中进行反投影计算,反投影模块计算后的数据再依次通过DDR2控制模块、 总线转换模块、PCI-E通信模块和PCI-E接口后传回上位PC机。

为保证重建CT图像的质量,在上述所有流程中的数据均存储为32位浮点 格式,FPGA内部实现的计算均为浮点计算,以确保重建数据的精度。

CT图像重建所需的数据量通常十分庞大,目前现有的FPGA内部所能提供 的Block RAM远满足不了这种需求,只能将投影数据存储在外部专用存储器中。 DDR2 SDRAM存储量大、数据吞吐率高且成本低廉,因此本发明选用DDR2 SDRAM作为外部存储。

针对CT图像重建中的海量数据传输问题,上位PC机和FPGA间通过 PCI-E×8接口实现DMA高速数据传输,平均读/写速率达到824MB/s和 1012MB/s。

海量数据传输是FPGA硬件加速系统设计中的关键部分。PCI-E总线技术是 取代PCI的第三代I/O技术,是为计算机和通讯平台定义的一种高性能通用I/O 互连总线。相比较传统的技术,PCI-E总线支持×1、×2、×4、×8、×16等多种通 道形式,扩展灵活;采用点对点串行连接的设备连接方式,传输速率远超PCI 总线的传输速率,单通道传输速率可达到2.5Gbit/s。

PCI-E总线体系包括物理层、数据链路层和传输层三层体系结构,其协议的 处理非常复杂。在FPGA上实现PCI-E接口的传输一般有2种方案:一是采用 专用的桥接芯片,另一种是采用可实现PCI-E物理接口的特定FPGA。由于目前 桥接芯片支持的PCI-E通道数和传输速率较低,故本发明采用后一种方案。

Altera是目前全世界最大的FPGA产商之一,其产品在工业、通信等领域被 广泛应用。本发明采用Altera公司的内嵌PCI Express硬核(PCI Express hard IP  Megacore)的FPGA作为主控芯片。该类型FPGA内嵌PCI-E硬核,在IP核内 部完成PCI-E的协议转换,为用户提供传输层的通信接口,最大支持PCI-E×8 的通道传输。

FPGA的型号为EP2AGX125EF35,由于内嵌PCI-E硬核的通用性,PCI-E 通信的接口程序只作简单修改就可在Arria II和Stratix IV等系列芯片中使用, 可方便升级和拓展。

PCI-E数据传输可分为2种模式:普通模式和DMA(Direct Memory Access, 直接内存访问)传输模式。其中普通模式主要实现主机和设备之间的指令通信; DMA模式主要针对大块数据传输,传输过程中不需要经过CPU,数据直接从设 备传送到内存中,数据传输的速率快,可以充分利用PCI-E数据带宽。

在本发明中,PCI-E通信模块主要是针对FPGA的硬核进行操作控制,以实 现数据的高速稳定传输。PCI-E通信模块的功能为:PCI Express硬核(PCI  Express hard IP Megacore)配置、TLP(Transaction Layer Packet,传输层数据包) 的打包和解包和DMA传输控制等,具体如图3所示。PCI-E通信模块含有接口 转换模块、DMA传输模块、普通传输模块和存储,DMA传输模块包括DMA 控制模块、DMA读模块和DMA写模块,DMA传输模块是实现高速数据传输 的关键和核心。

PCI Express硬核(PCI Express hard IP Megacore)的通信接口为Altera的 Avalon-ST总线,接口转换模块首先对Avalon-ST总线进行接口转换,将命令和 数据分解到DMA传输模块和普通传输模块中,普通传输模块对一般读写事务进 行打包和解包,DMA控制模块通过读写控制寄存器和状态寄存器确定每次数 据传送的大小、源地址和目的地址这些信息,并利用这些信息控制DMA读模块 和DMA写模块的运行;DMA读模块的功能是将投影数据从上位PC机指定的 内存中导入到FPGA指定的存储中,DMA读模块的主要任务是从DMA控制模 块获取传输数据的相关信息,然后连续启动存储器读事务的打包和存储器写事 务的解包;DMA写模块的功能是将数据从FPGA指定的存储中导入到上位PC 机指定的内存中,DMA写模块的主要任务是从DMA控制模块获取传输数据的 相关信息,然后连续启动存储器写事务的打包和完成TLP的解包,所有的TLP 打包和解包操作采用的都是状态机结合FIFO设计的,以确保数据的高速连续处 理。

CT图像重建算法主要包括两类:解析类算法和迭代类算法。相对于迭代算 法,解析算法数学形式简单,重建速度快,实现方便,是实际CT系统中应用的 主流算法。在各种基于滤波背投影的解析重建算法当中,FDK算法计算效率高, 实现起来容易,而且当锥角较小时,能够取得较好的重建效果,在实际中应用 最为广泛。FDK算法几何关系示意图如图2所示。

图中S表示射线源,f(x,y,z)表示重建物体的某一点,称为体素,P(θ,u,v)表 示在物体旋转分度为θ时探测器采集到f(x,y,z)点的投影数据。

FDK算法的公式为:

f(x,y,z)=12π02π(d+yd+y+xcosθ+ysinθ)2-umump(θ,u,v)h(u-u)DD2+u2+v2du---(1)

根据FDK算法的原理,其主要包括3个步骤:投影加权、一维滤波和反投 影。通过对算法的分析可知:每个投影点的加权是相互独立的,每个分度下投 影数据是按行进行滤波,滤波过程完全相同,且体素点在每个分度下的反投影 过程只与该点映射到探测器坐标系上的坐标有关,具有独立性。也就是说,FDK 算法的三个步骤都具有良好的并行性,适合用并行处理的方式进行算法加速。

FDK算法可分为3个步骤:加权、滤波和反投影。在这三个步骤中,反投 影耗时最长,是并行加速的重点,在FPGA内实现时要合理分配三个步骤所消 耗的资源,以达到加速性能最优。另一方面,FPGA器件适合进行并行流水处理。

在FPGA中,将FDK算法分解为加权、滤波和反投影3个算粒,加权和滤 波是对投影数据进行预处理,由预处理模块完成,加权和滤波只是对投影数据 进行操作,且适合在FPGA内部采用流水线的方式进行处理,结合数据传输这 一必然过程,将加权和滤波嵌入到投影数据传输的过程中,在传输的过程中同 时流水进行加权和滤波计算,减少了处理延迟,发挥了FPGA流水处理的特点。 而反投影涉及大量的数据运算和存储问题,采用分块重建和按分度并行流水计 算的方法,提升了资源利用率和重建速度。

由上分析,本发明重建加速的处理流程为:当投影数据进入FPGA后,先 流水进行加权和滤波算粒的计算,然后存入外部存储器;在进行反投影计算时, 则按不同的分度进行并行处理,最后再进行归约计算,求得重建数据。

加权是对锥束光源角度引起的偏差进行修正,具体操作为:对每个投影值 乘以该点对应的加权系数在FPGA内部实现加权其主要过程就是 实时计算加权系数。

滤波的实现方法主要有两种:一种是频域处理法:先对数据进行傅里叶变 换,再将变换后的数据与频域响应进行点乘,最后进行傅里叶反变换;另一种 是时域卷积法:根据滤波器的时域卷积函数对输入信号进行乘加运算。采用第 一种会产生较大的输出时延,不利于数据的实时流水处理。

本发明采用卷积的方法进行滤波实现,具体实现形式为FIR滤波器。采用 该方法输出延迟小,适于流水实现,在阶数一定时重建图像的质量和频域滤波 的质量相当。

反投影模块主要是根据几何投影关系,计算重建体素与投影像素的映射关 系,然后根据计算得到的坐标值从投影数据中提取出对应的数据。本发明中主 要通过按分度并行处理、无等待流水线和分块重建技术,实现了该模块的计算 加速:按不同的旋转分度将背投影分解为多个线程并行处理,各线程计算结束 后再进行归约计算,求得重建数据;各线程在反投影计算时沿旋转轴方向将待 重建区域分成若干块,重建其中一块时仅从DDR2 SDRAM外部存储器取出对 应的投影数据进行重建操作。

根据FDK算法的公式,重建区域在旋转轴(图2中z轴)方向上的各层数 据和探测器投影数据按纵轴(图2中v轴)方向上的各行数据有严格的投影对 应关系。因此,FPGA在进行FDK算法计算时,可沿旋转轴方向将待重建区域 分成若干块,重建其中一块时仅从DDR2 SDRAM外部存储器取出对应的投影 数据进行重建操作。这样的操作可以解决FPGA内部存储小的问题,待重建区 域划分时,每块区域的存储的大小根据FPGA的资源确定,以充分利用FPGA 的内部资源。

然而,数据分块同时会带来边界效应问题,即每块重建区域对应的投影数 据有部分是重合的,反复读取会造成带宽的浪费,且影响重建速度。为了解决 边界效应,FPGA在进行FDK算法计算时,还进行基于编号查找表的数据预取。

在FDK算法的反投影过程中,对投影数据是随机访问的,而重建的数据需 要进行并行规约和反复累加,这些数据的需要的存储空间极大。FPGA内部无法 存储下重建时所需的全部数据,而DDR2 SDRAM访问延迟较大且不是一个定 值,直接访问会增加大量的传输消耗,且难以进行高速流水处理。为了保证重 建的流水操作,必须采取相应的数据预取策略。本发明采用FPGA的内部RAM 作为外部存储的高速缓存,采用编号查找表结合“乒乓”读取的数据预取方法,隐 藏了DDR2 SDRAM的访问延迟。

FPGA在进行FDK算法计算时,加权和滤波计算在投影数据传输的过程中 通过流水方式实现;反投影计算时采用了按分度并行流水计算和分块重建的方 法:按不同的旋转分度将背投影分解为多个线程并行处理,各线程计算结束后 再进行归约计算,求得重建数据;各线程在反投影计算时沿旋转轴方向将待重 建区域分成若干块,重建其中一块时仅从DDR2 SDRAM外部存储器取出对应 的投影数据进行重建操作。

反投影计算采用了基于编号查找表的数据预取方法,基于编号查找表的数 据预取的步骤为:

步骤1、对投影数据按纵轴进行分块,总分块数目为N,每块对应一个编号 i,i=1,2,...N;再对重建区域进行分块,总分块数目为M,每块对应一个编号 j,j=1,2,...M;N和M均为大于等于1的自然数;

步骤2、计算每块重建区域对应的投影数据范围,该范围对应的编号为istart~ iend,其中,1≤istart≤iend≤N;建立查找表A,以编号j作为该查找表A的地址, 将编号为j的重建区域对应的投影数据编号的开始值istart和终止值iend存入查找 表A中地址为j的空间中;

步骤3、在反投影计算时,将投影数据先根据要重建的区域从DDR2 SDRAM 外部存储器预取到FPGA的内部缓存中,该内部缓存分为P个部分,每个部分 对应一个编号x,x=1,2,...P,且内部缓存的每部分和内部缓存对应的投影数据的 每块大小相同;建立编号查找表B,将编号为x的内部缓存中对应的投影数据编 号kx存入查找表B中地址为x的空间中,其中,1≤kx≤N,查找表B内存储的 编号的集合为W={kx,x=1,2,...P};P为大于等于1的自然数;

步骤4、当重建第一块区域时,从DDR2SDRAM外部存储器中取出相应的 投影数据存入FPGA的内部缓存中,而重建第一块区域以后的区域时,先根据 当前重建区域的编号j寻址查找表A得到投影数据编号的范围起始值istart和iend, 对比查找表B中存储的投影数据编号集合W,将查找表B中缺少的编号(如编 号i’在istart~iend内却不在W中,1≤i’≤N)对应的投影数据从DDR2 SDRAM 外部存储器中取出,存入FPGA的内部缓存中已不在当前范围的编号(如编号 kn在W中却不在istart~iend内,1≤n≤P,1≤kn≤N)对应的数据空间中,同时 用当前的投影数据编号i’替代查找表B中原先的编号kn的数值;然后,FPGA 对从DDR2 SDRAM外部存储器读到FPGA内部缓存中的数据进行反投影处理。

FPGA的内部缓存设立2块,称作为缓存1和缓存2,FPGA对缓存1和缓 存2采用交替(即“乒乓”)读取的操作,如图4所示,状态A和状态B循环进 行,直到数据处理完毕为止。通过基于编号查找表的数据预取技术以及两块缓 存之间的“乒乓”操作避免了随机访问外部存储器带来的延迟,提高了数据调度的 效率。

为了实现加速性能的最优,综合考虑FPGA的硬件特点和反投影算粒的计 算流程,本发明主要采用了以下技术对反投影模块进行了优化:

优化1:将运算过程中需要多次重复计算的中间变量存入查找表,节省计算 资源;

优化2:针对FPGA存储资源少,逻辑资源相对丰富的情况,将FPGA的部 分存储空间采用逻辑资源代替,以匹配内部资源使用率最优;

优化3:分析每个处理流程的消耗时钟数,消除其中不需要的等待空泡,实 现处理流程间的无缝连接,节省不必要的等待时间;

优化4:对反投影计算的流程进行分析,将时间顺序上重复的计算(如其中 的除法运算)进行合并,再通过寄存器延时分配回各级运算,节省计算资源。

上位PC机的软件是面向对象层提供给用户的应用程序,它以实现CT图像 重建为总体框架,核心则是在PC端实现上位机和FPGA硬件加速平台的通信。 上位PC机的软件包括两部分:针对FPGA硬件设备开发出的驱动程序和面向用 户的CT图像重建软件界面。

由于FPGA硬件设备采用PCI-E接口作为通信接口,对上位PC机来言,其 驱动程序的架构符合PCI-E设备的驱动架构。针对CT图像重建这一具体应用, 结合本硬件加速平台自身的特性,整体软件的设计流程如图5所示。

软件设计的核心是上位PC机与FPGA间的DMA数据传输,在DMA传输 时必须在内存中锁定一块专用的物理内存,以保证传输的稳定和连续。但锁定 和释放物理内存存在一定的时间消耗,如果每次启动DMA传输时都进行物理内 存的锁定,会导致时间消耗过多,影响重建速度。为了避免反复锁定和释放物 理内存所带来的消耗,本发明在重建流程开始时就锁定了一块DMA传输专用的 物理内存,直到重建全部结束时才将其释放。

PCI-E传输测试结果:

对本发明中PCI-E×8接口的数据传输速率进行测试,测试平台为:2.27GHz Intel E5520双核CPU,8GB内存。测试结果如表1所示。其中,PCI-E接口传 输速率是在FPGA内部设置计数器测试DMA传输过程中读写数据的速率;但上 位PC机与设备间控制指令交互以及驱动程序运行过程也会消耗部分时间,平均 传输速率是上位机端在数据稳定传输时统计的传输速率。

表1PCI-E接口数据传输速率测试结果

  传输模式   PCI-E接口传输速率   平均传输速率   DMA读   1293MB/s   824MB/s   DMA写   1586MB/s   1012MB/s

重建测试结果:

本发明在EP2AGX125EF35芯片(ALUTs:99280,Memory bits:6727680) 上进行了硬件实现,测试体模采用3D Shepp-Logan体模,FPGA运行频率 100MHz,在充分优化芯片的逻辑资源、存储资源和专用运算资源的情况下,内 部共并行了8条流水线,测试结果如下:

(1)重建速度测试

表2重建速度测试结果

  重建规模   投影数据规模   重建时间   2563  2562×360   7.59s

本发明的加速方法在各类FPGA中具有良好的通用性,针对Altera公司的 部分芯片,程序可以直接移植,方便升级和拓展。当采用资源规模更大的FPGA 或多FPGA并行架构,可以达到更优的加速性能。

(2)重建精度测试

图6为Shepp-Logan体模z=0层切片的重建结果对比图,图7中为体模切片 第128行的数据剖线图。从图中可以看出,FPGA加速所得的重建结果与原始值 比较接近,与FDK算法在小锥角情况下的重建表现一致,重建精度达到了实际 应用的需求。

实物重建结果:

汽车火花塞的CT图像重建结果如图8~图12所示。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号