基于fpga的ct图像重建硬件加速方法

文档序号:6366020阅读:223来源:国知局
专利名称:基于fpga的ct图像重建硬件加速方法
技术领域
本发明涉及一种CT图像重建的方法,特别是涉及一种基于FPGA 的CT图像重建硬件加速方法。背景技术
计算机断层成像技术(Computed Tomography,CT)作为一种现代成像技术已经广泛应用于医学、工业等领域。高分辨率工业CT图像三维重建数据量大、计算复杂度高、重建时间长的问题已成为制约其走向实用的瓶颈。因此,CT图像重建速度是衡量CT系统的重要指标之一,对CT重建过程的加速研究是目前该领域研究的热点和难点。目前国内外对CT重建进行加速的实现方式主要可分为软件加速和硬件加速。软件加速的方法只是通过算法的改进来达到加速目的,一定条件下会受到硬件的制约,加速效果有限,因此近年来研究热点主要集中于采用FPGA(Field Programmable Gate Array, 现场可编程门阵列)、GPU(Graphics Processing Unit,图形处理器)、DSP (Digital Signal ft~OCeSSOr,数字信号处理器)等一系列硬件加速方法。FPGA 是作为专用集成电路 ASIC (App Ii cat ion 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-EX8接口实现DMA高速数据传输,平均读/写速率达到824MB/S和1012MB/s。CT图像重建所需的数据量庞大,目前现有的FPGA内部所能提供的BlockRAM远满足不了这种需求,DDR2 SDRAM存储量大、数据吞吐率高且成本低廉,因此本发明选用DDR2 SDRAM作为外部专用存储器。在FPGA中,将FDK算法分解为加权、滤波和反投影3个算粒,加权和滤波是对投影数据进行预处理,由预处理模块完成,加权和滤波只是对投影数据进行操作,且适合在FPGA 内部采用流水线的方式进行处理,结合数据传输这一必然过程,将加权和滤波嵌入到投影数据传输的过程中,在传输的过程中同时流水进行加权和滤波计算,减少了处理延迟,发挥了 FPGA流水处理的特点。而反投影涉及大量的数据运算和存储问题,采用分块重建和按分度并行流水计算的方法,提升了资源利用率和重建速度。本发明重建加速的处理流程为当投影数据进入FPGA后,先流水进行加权和滤波算粒的计算,然后存入外部存储器;在进行反投影计算时,则按不同的分度进行并行处理, 最后再进行归约计算,求得重建数据。加权是对锥束光源角度引起的偏差进行修正,具体操作为对每个投影值乘以该点对应的加权系数。在FPGA内部实现加权其主要过程就是实时计算加权系数。滤波采用卷积的方法进行实现,具体实现形式为HR滤波器。采用该方法输出延迟小,适于流水实现,在阶数一定时重建图像的质量和频域滤波的质量相当。反投影模块主要是根据几何投影关系,计算重建体素与投影像素的映射关系,然后根据计算得到的坐标值从投影数据中提取出对应的数据。本发明中主要通过按分度并行处理、无等待流水线和分块重建技术,实现了该模块的计算加速。
FPGA在进行FDK算法计算时,加权和滤波计算在投影数据传输的过程中通过流水方式实现;反投影计算时采用了按分度并行流水计算和分块重建的方法按不同的旋转分度将背投影分解为多个线程并行处理,各线程计算结束后再进行归约计算,求得重建数据; 各线程在反投影计算时沿旋转轴方向将待重建区域分成若干块,重建其中一块时仅从DDR2 SDRAM外部存储器取出对应的投影数据进行重建操作。反投影计算采用了基于编号查找表的数据预取方法,基于编号查找表的数据预取的步骤为步骤1、对投影数据按纵轴进行分块,总分块数目为N,每块对应一个编号i,i = 1,2,...N;再对重建区域进行分块,总分块数目为M,每块对应一个编号j,j = 1,2,...Μ; N和M均为大于等于1的自然数;步骤2、计算每块重建区域对应的投影数据范围,该范围对应的编号为istot iend,其中,1彡istart ( iend ( N ;建立查找表A,以编号j作为该查找表A的地址,将编号为 j的重建区域对应的投影数据编号的开始值istot和终止值imd存入查找表A中地址为j的空间中;步骤3、在反投影计算时,将投影数据先根据要重建的区域从DDR2 SDRAM外部存储器预取到FPGA的内部缓存中,该内部缓存分为P个部分,每个部分对应一个编号χ,χ = 1,2, ...P,且内部缓存的每部分和内部缓存对应的投影数据的每块大小相同;建立编号查找表B,将编号为χ的内部缓存中对应的投影数据编号kx存入查找表B中地址为χ的空间中,其中,1彡N,查找表B内存储的编号的集合为W= {kx,χ = 1,2, ...P} ;P为大于等于1的自然数;步骤4、当重建第一块区域时,从DDR2 SDRAM外部存储器中取出相应的投影数据存入FPGA的内部缓存中,而重建第一块区域以后的区域时,先根据当前重建区域的编号j 寻址查找表A得到投影数据编号的范围起始值istart* imd,对比查找表B中存储的投影数据编号集合W,将查找表B中缺少的编号(如编号i’在Istart iend内却不在W中,1 ^i'^N) 对应的投影数据从DDR2 SDRAM外部存储器中取出,存入FPGA的内部缓存中已不在当前范围的编号(如编号1^在W中却不在istot imd内,1彡η彡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为Si印p-Logan体模重建结果对比图7为体模重建切片第1 行]数据剖线图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存储量大、数据吞吐率高且成本低廉,因此本发明选用DDR2SDRAM作为外部存储。针对CT图像重建中的海量数据传输问题,上位PC机和FPGA间通过PCI-EX8接口实现DMA高速数据传输,平均读/写速率达到824MB/S和1012MB/s。海量数据传输是FPGA硬件加速系统设计中的关键部分。PCI-E总线技术是取代 PCI的第三代I/O技术,是为计算机和通讯平台定义的一种高性能通用I/O互连总线。相比较传统的技术,PCI-E总线支持XI、X2、X4、X8、X 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-EX 8的通道传输。FPGA的型号为EP2AGX125EF35,由于内嵌PCI-E硬核的通用性,PCI-E通信的接口程序只作简单修改就可在Arria II和Mratix 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,ζ)表示重建物体的某一点,称为体素,P ( θ,u,ν)表示在物体旋转分度为θ时探测器采集到f(x,y,z)点的投影数据。FDK算法的公式为
权利要求
1.一种基于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控制模块从DDR2 SDRAM 外部存储器中取出相应的数据,然后送入反投影模块中进行反投影计算,反投影模块计算后的数据再依次通过DDR2控制模块、总线转换模块、PCI-E通信模块和PCI-E接口后传回上位PC机。
2.根据权利要求1所述的基于FPGA的CT图像重建硬件加速方法,其特征是所述FPGA 在进行FDK算法计算时,加权和滤波计算在投影数据传输的过程中通过流水方式实现;反投影计算时采用了按分度并行流水计算和分块重建的方法按不同的旋转分度将背投影分解为多个线程并行处理,各线程计算结束后再进行归约计算,求得重建数据;各线程在反投影计算时沿旋转轴方向将待重建区域分成若干块,重建其中一块时仅从DDR2 SDRAM外部存储器取出对应的投影数据进行重建操作。
3.根据权利要求2所述的基于FPGA的CT图像重建硬件加速方法,其特征是所述反投影计算采用了基于编号查找表的数据预取方法,基于编号查找表的数据预取的步骤为步骤1、对投影数据按纵轴进行分块,总分块数目为N,每块对应一个编号i,i = 1, 2,... N ;再对重建区域进行分块,总分块数目为M,每块对应一个编号j,j = 1,2,. . . M ;N和 M均为大于等于1的自然数;步骤2、计算每块重建区域对应的投影数据范围,该范围对应的编号为istart imd,其中,1 ≤ istart ≤ iend ≤ N ;建立查找表A,以编号j作为该查找表A的地址,将编号为j的重建区域对应的投影数据编号的开始值istot和终止值imd存入查找表A中地址为j的空间中;步骤3、在反投影计算时,将投影数据先根据要重建的区域从DDR2SDRAM外部存储器预取到FPGA的内部缓存中,该内部缓存分为P个部分,每个部分对应一个编号χ,χ = 1, 2,...P,且内部缓存的每部分和内部缓存对应的投影数据的每块大小相同;建立编号查找表B,将编号为χ的内部缓存中对应的投影数据编号kx存入查找表B中地址为χ的空间中, 其中,1≤kx≤N,查找表B内存储的编号的集合为W= {kx,x= 1,2,...P} ;P为大于等于 1的自然数;步骤4、当重建第一块区域时,从DDR2SDRAM外部存储器中取出相应的投影数据存入 FPGA的内部缓存中,而重建第一块区域以后的区域时,先根据当前重建区域的编号j寻址查找表A得到投影数据编号的范围起始值istart和imd,对比查找表B中存储的投影数据编号集合W,将查找表B中缺少的编号对应的投影数据从DDR2 SDRAM外部存储器中取出,存入FPGA的内部缓存中已不在当前范围的编号对应的数据空间中,同时用当前的投影数据编号i’替代查找表B中原先的编号kn的数值;然后,FPGA对从DDR2 SDRAM外部存储器读到FPGA内部缓存中的数据进行反投影处理。
4.根据权利要求2所述的基于FPGA的CT图像重建硬件加速方法,其特征是采用以下技术对反投影模块进行了优化优化1 将运算过程中需要多次重复计算的中间变量存入查找表; 优化2 将FPGA的部分存储空间采用逻辑资源代替;优化3 分析每个处理流程的消耗时钟数,消除其中不需要的等待空泡,实现处理流程间的无缝连接;优化4:对反投影计算的流程进行分析,将时间顺序上重复的计算进行合并,再通过寄存器延时分配回各级运算。
全文摘要
本发明涉及一种基于FPGA的CT图像重建硬件加速方法;通过如下步骤实现步骤1、上位PC机将探测器采集的投影数据传入FPGA中的PCI-E通信模块,PCI-E通信模块接收的投影数据通过总线转换模块进入预处理模块中,预处理模块对接收的投影数据依次进行加权和滤波计算;步骤2、DDR2控制模块将经过加权和滤波预处理的投影数据写入DDR2SDRAM外部存储器中,系统控制模块针对每次重建的区域通过DDR2控制模块从DDR2SDRAM外部存储器中取出相应的数据,再送入反投影模块中进行反投影计算,反投影模块计算后的数据再传回上位PC机;本发明提供了一种计算速度快的基于FPGA的CT图像重建硬件加速方法。
文档编号G06T1/20GK102567944SQ201210061660
公开日2012年7月11日 申请日期2012年3月9日 优先权日2012年3月9日
发明者刘拥军, 张峰, 张瀚铭, 李磊, 潘冬存, 王超, 邓靖飞, 闫镔 申请人:中国人民解放军信息工程大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1