CN102567944A - 基于fpga的ct图像重建硬件加速方法 - Google Patents
基于fpga的ct图像重建硬件加速方法 Download PDFInfo
- Publication number
- CN102567944A CN102567944A CN2012100616601A CN201210061660A CN102567944A CN 102567944 A CN102567944 A CN 102567944A CN 2012100616601 A CN2012100616601 A CN 2012100616601A CN 201210061660 A CN201210061660 A CN 201210061660A CN 102567944 A CN102567944 A CN 102567944A
- Authority
- CN
- China
- Prior art keywords
- data
- projection
- fpga
- module
- numbering
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Apparatus For Radiation Diagnosis (AREA)
Abstract
本发明涉及一种基于FPGA的CT图像重建硬件加速方法;通过如下步骤实现:步骤1、上位PC机将探测器采集的投影数据传入FPGA中的PCI-E通信模块,PCI-E通信模块接收的投影数据通过总线转换模块进入预处理模块中,预处理模块对接收的投影数据依次进行加权和滤波计算;步骤2、DDR2控制模块将经过加权和滤波预处理的投影数据写入DDR2SDRAM外部存储器中,系统控制模块针对每次重建的区域通过DDR2控制模块从DDR2SDRAM外部存储器中取出相应的数据,再送入反投影模块中进行反投影计算,反投影模块计算后的数据再传回上位PC机;本发明提供了一种计算速度快的基于FPGA的CT图像重建硬件加速方法。
Description
(一)、技术领域:本发明涉及一种CT图像重建的方法,特别是涉及一种基于FPGA的CT图像重建硬件加速方法。
(二)、背景技术:计算机断层成像技术(Computed Tomography,CT)作为一种现代成像技术已经广泛应用于医学、工业等领域。高分辨率工业CT图像三维重建数据量大、计算复杂度高、重建时间长的问题已成为制约其走向实用的瓶颈。因此,CT图像重建速度是衡量CT系统的重要指标之一,对CT重建过程的加速研究是目前该领域研究的热点和难点。
目前国内外对CT重建进行加速的实现方式主要可分为软件加速和硬件加速。软件加速的方法只是通过算法的改进来达到加速目的,一定条件下会受到硬件的制约,加速效果有限,因此近年来研究热点主要集中于采用FPGA(FieldProgrammable 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 FullyThree-Dimensional Image Reconstruction in Radiology and Nuclear Medicine)上发表文章《基于C形臂CT的快速重建》(《High-Speed Reconstruction for C-ArmComputed 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内部所能提供的BlockRAM远满足不了这种需求,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存储量大、数据吞吐率高且成本低廉,因此本发明选用DDR2SDRAM作为外部存储。
针对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 IPMegacore)的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硬核(PCIExpress 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算法的公式为:
根据FDK算法的原理,其主要包括3个步骤:投影加权、一维滤波和反投影。通过对算法的分析可知:每个投影点的加权是相互独立的,每个分度下投影数据是按行进行滤波,滤波过程完全相同,且体素点在每个分度下的反投影过程只与该点映射到探测器坐标系上的坐标有关,具有独立性。也就是说,FDK算法的三个步骤都具有良好的并行性,适合用并行处理的方式进行算法加速。
FDK算法可分为3个步骤:加权、滤波和反投影。在这三个步骤中,反投影耗时最长,是并行加速的重点,在FPGA内实现时要合理分配三个步骤所消耗的资源,以达到加速性能最优。另一方面,FPGA器件适合进行并行流水处理。
在FPGA中,将FDK算法分解为加权、滤波和反投影3个算粒,加权和滤波是对投影数据进行预处理,由预处理模块完成,加权和滤波只是对投影数据进行操作,且适合在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.27GHzIntel 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所示。
Claims (4)
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~iend,其中,1≤istart≤iend≤N;建立查找表A,以编号j作为该查找表A的地址,将编号为j的重建区域对应的投影数据编号的开始值istart和终止值iend存入查找表A中地址为j的空间中;
步骤3、在反投影计算时,将投影数据先根据要重建的区域从DDR2SDRAM外部存储器预取到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中缺少的编号对应的投影数据从DDR2 SDRAM外部存储器中取出,存入FPGA的内部缓存中已不在当前范围的编号对应的数据空间中,同时用当前的投影数据编号i’替代查找表B中原先的编号kn的数值;然后,FPGA对从DDR2 SDRAM外部存储器读到FPGA内部缓存中的数据进行反投影处理。
4.根据权利要求2所述的基于FPGA的CT图像重建硬件加速方法,其特征是:采用以下技术对反投影模块进行了优化:
优化1:将运算过程中需要多次重复计算的中间变量存入查找表;
优化2:将FPGA的部分存储空间采用逻辑资源代替;
优化3:分析每个处理流程的消耗时钟数,消除其中不需要的等待空泡,实现处理流程间的无缝连接;
优化4:对反投影计算的流程进行分析,将时间顺序上重复的计算进行合并,再通过寄存器延时分配回各级运算。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201210061660 CN102567944B (zh) | 2012-03-09 | 2012-03-09 | 基于fpga的ct图像重建硬件加速方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201210061660 CN102567944B (zh) | 2012-03-09 | 2012-03-09 | 基于fpga的ct图像重建硬件加速方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102567944A true CN102567944A (zh) | 2012-07-11 |
CN102567944B CN102567944B (zh) | 2013-10-30 |
Family
ID=46413299
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201210061660 Active CN102567944B (zh) | 2012-03-09 | 2012-03-09 | 基于fpga的ct图像重建硬件加速方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102567944B (zh) |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102789424A (zh) * | 2012-07-16 | 2012-11-21 | 哈尔滨工业大学 | 基于fpga的外扩ddr2的读写方法及基于fpga的外扩ddr2颗粒存储器 |
CN103605628A (zh) * | 2013-11-29 | 2014-02-26 | 迈普通信技术股份有限公司 | 基于pci-e主从设备之间的命令交互方法及系统 |
CN103645999A (zh) * | 2013-12-07 | 2014-03-19 | 天津光电通信技术有限公司 | 基于fpga实现8通道收发串口的高速板卡 |
CN103729867A (zh) * | 2014-01-07 | 2014-04-16 | 南京大学 | 基于bp反投影成像算法的硬件加速器以及数据处理方法 |
CN103995687A (zh) * | 2013-02-18 | 2014-08-20 | 西门子公司 | 分级架构的ct探测器寄存器内容传输方法和ct探测器 |
CN104142845A (zh) * | 2014-07-21 | 2014-11-12 | 中国人民解放军信息工程大学 | 基于OpenCL-To-FPGA的CT图像重建反投影加速方法 |
CN105374006A (zh) * | 2015-11-21 | 2016-03-02 | 中国人民解放军信息工程大学 | 基于遗传算法的ct图像重建反投影加速方法 |
CN105528319A (zh) * | 2015-12-07 | 2016-04-27 | 中国电子科技集团公司第三十二研究所 | 基于fpga的加速卡及其加速方法 |
CN106054380A (zh) * | 2016-07-15 | 2016-10-26 | 中国科学院苏州生物医学工程技术研究所 | 使用fpga加速处理结构光照明光切片荧光图像的方法 |
CN106157230A (zh) * | 2016-05-25 | 2016-11-23 | 华中科技大学 | 海量脑组织三维图像数据快速调用方法 |
CN106919522A (zh) * | 2015-12-28 | 2017-07-04 | 北京航天测控技术有限公司 | 一种基于PXIe接口的DMA控制器 |
CN108074211A (zh) * | 2017-12-26 | 2018-05-25 | 浙江大华技术股份有限公司 | 一种图像处理装置及方法 |
CN109255354A (zh) * | 2018-10-15 | 2019-01-22 | 天津大学 | 面向医用ct的计算机图像处理方法和装置 |
US10482632B2 (en) | 2017-04-28 | 2019-11-19 | Uih America, Inc. | System and method for image reconstruction |
CN111427811A (zh) * | 2020-03-19 | 2020-07-17 | 上海御渡半导体科技有限公司 | 一种提高pcie控制ddr通信速率的装置及方法 |
CN111722930A (zh) * | 2020-06-23 | 2020-09-29 | 恒为科技(上海)股份有限公司 | 一种数据预处理系统 |
CN112419138A (zh) * | 2020-11-18 | 2021-02-26 | 济南浪潮高新科技投资发展有限公司 | 一种点云数据处理加速系统及方法 |
CN112506823A (zh) * | 2020-12-11 | 2021-03-16 | 盛立金融软件开发(杭州)有限公司 | 一种fpga数据读写方法、装置、设备及可读存储介质 |
US10963460B2 (en) | 2018-12-06 | 2021-03-30 | Xilinx, Inc. | Integrated circuits and methods to accelerate data queries |
US11055882B2 (en) | 2018-06-29 | 2021-07-06 | Shanghai United Imaging Healthcare Co., Ltd. | Systems and methods for image reconstruction |
CN113872841A (zh) * | 2021-09-23 | 2021-12-31 | 明峰医疗系统股份有限公司 | 一种自恢复的ct数据传输系统及数据传输方法 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11869121B2 (en) | 2018-06-29 | 2024-01-09 | Shanghai United Imaging Healthcare Co., Ltd. | Systems and methods for image reconstruction |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7142731B1 (en) * | 1999-02-17 | 2006-11-28 | Nec Corporation | Image processing system |
CN102222316A (zh) * | 2011-06-22 | 2011-10-19 | 北京航天自动控制研究所 | 一种基于dma的双缓冲乒乓并行结构图像处理优化方法 |
-
2012
- 2012-03-09 CN CN 201210061660 patent/CN102567944B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7142731B1 (en) * | 1999-02-17 | 2006-11-28 | Nec Corporation | Image processing system |
CN102222316A (zh) * | 2011-06-22 | 2011-10-19 | 北京航天自动控制研究所 | 一种基于dma的双缓冲乒乓并行结构图像处理优化方法 |
Non-Patent Citations (2)
Title |
---|
邓靖飞等: "基于FPGA的CT重建加速技术综述", 《CT理论与应用研究》 * |
邹永宁等: "基于集群并行及指令优化的FDK重建算法", 《计算机工程》 * |
Cited By (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102789424A (zh) * | 2012-07-16 | 2012-11-21 | 哈尔滨工业大学 | 基于fpga的外扩ddr2的读写方法及基于fpga的外扩ddr2颗粒存储器 |
CN102789424B (zh) * | 2012-07-16 | 2014-12-10 | 哈尔滨工业大学 | 基于fpga的外扩ddr2的读写方法及基于fpga的外扩ddr2颗粒存储器 |
CN103995687B (zh) * | 2013-02-18 | 2017-01-04 | 西门子公司 | 分级架构的ct探测器寄存器内容传输方法和ct探测器 |
CN103995687A (zh) * | 2013-02-18 | 2014-08-20 | 西门子公司 | 分级架构的ct探测器寄存器内容传输方法和ct探测器 |
CN103605628A (zh) * | 2013-11-29 | 2014-02-26 | 迈普通信技术股份有限公司 | 基于pci-e主从设备之间的命令交互方法及系统 |
CN103645999A (zh) * | 2013-12-07 | 2014-03-19 | 天津光电通信技术有限公司 | 基于fpga实现8通道收发串口的高速板卡 |
CN103729867A (zh) * | 2014-01-07 | 2014-04-16 | 南京大学 | 基于bp反投影成像算法的硬件加速器以及数据处理方法 |
CN104142845B (zh) * | 2014-07-21 | 2018-08-17 | 中国人民解放军信息工程大学 | 基于OpenCL-To-FPGA的CT图像重建反投影加速方法 |
CN104142845A (zh) * | 2014-07-21 | 2014-11-12 | 中国人民解放军信息工程大学 | 基于OpenCL-To-FPGA的CT图像重建反投影加速方法 |
CN105374006B (zh) * | 2015-11-21 | 2018-04-17 | 中国人民解放军信息工程大学 | 基于遗传算法的ct图像重建反投影加速方法 |
CN105374006A (zh) * | 2015-11-21 | 2016-03-02 | 中国人民解放军信息工程大学 | 基于遗传算法的ct图像重建反投影加速方法 |
CN105528319A (zh) * | 2015-12-07 | 2016-04-27 | 中国电子科技集团公司第三十二研究所 | 基于fpga的加速卡及其加速方法 |
CN106919522A (zh) * | 2015-12-28 | 2017-07-04 | 北京航天测控技术有限公司 | 一种基于PXIe接口的DMA控制器 |
CN106157230B (zh) * | 2016-05-25 | 2019-08-16 | 华中科技大学 | 海量脑组织三维图像数据快速调用方法 |
CN106157230A (zh) * | 2016-05-25 | 2016-11-23 | 华中科技大学 | 海量脑组织三维图像数据快速调用方法 |
CN106054380A (zh) * | 2016-07-15 | 2016-10-26 | 中国科学院苏州生物医学工程技术研究所 | 使用fpga加速处理结构光照明光切片荧光图像的方法 |
US10482632B2 (en) | 2017-04-28 | 2019-11-19 | Uih America, Inc. | System and method for image reconstruction |
US11455756B2 (en) | 2017-04-28 | 2022-09-27 | Shanghai United Imaging Healthcare Co., Ltd. | System and method for image reconstruction |
US11062487B2 (en) | 2017-04-28 | 2021-07-13 | Shanghai United Imaging Healthcare Co., Ltd. | System and method for image reconstruction |
CN108074211A (zh) * | 2017-12-26 | 2018-05-25 | 浙江大华技术股份有限公司 | 一种图像处理装置及方法 |
CN108074211B (zh) * | 2017-12-26 | 2021-03-16 | 浙江芯昇电子技术有限公司 | 一种图像处理装置及方法 |
US11055882B2 (en) | 2018-06-29 | 2021-07-06 | Shanghai United Imaging Healthcare Co., Ltd. | Systems and methods for image reconstruction |
CN109255354A (zh) * | 2018-10-15 | 2019-01-22 | 天津大学 | 面向医用ct的计算机图像处理方法和装置 |
CN109255354B (zh) * | 2018-10-15 | 2021-08-31 | 天津大学 | 面向医用ct的计算机图像处理方法和装置 |
US10963460B2 (en) | 2018-12-06 | 2021-03-30 | Xilinx, Inc. | Integrated circuits and methods to accelerate data queries |
CN111427811A (zh) * | 2020-03-19 | 2020-07-17 | 上海御渡半导体科技有限公司 | 一种提高pcie控制ddr通信速率的装置及方法 |
CN111722930A (zh) * | 2020-06-23 | 2020-09-29 | 恒为科技(上海)股份有限公司 | 一种数据预处理系统 |
CN111722930B (zh) * | 2020-06-23 | 2024-03-01 | 恒为科技(上海)股份有限公司 | 一种数据预处理系统 |
CN112419138A (zh) * | 2020-11-18 | 2021-02-26 | 济南浪潮高新科技投资发展有限公司 | 一种点云数据处理加速系统及方法 |
CN112506823A (zh) * | 2020-12-11 | 2021-03-16 | 盛立金融软件开发(杭州)有限公司 | 一种fpga数据读写方法、装置、设备及可读存储介质 |
CN112506823B (zh) * | 2020-12-11 | 2023-09-29 | 盛立安元科技(杭州)股份有限公司 | 一种fpga数据读写方法、装置、设备及可读存储介质 |
CN113872841A (zh) * | 2021-09-23 | 2021-12-31 | 明峰医疗系统股份有限公司 | 一种自恢复的ct数据传输系统及数据传输方法 |
CN113872841B (zh) * | 2021-09-23 | 2022-12-23 | 明峰医疗系统股份有限公司 | 一种自恢复的ct数据传输系统及数据传输方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102567944B (zh) | 2013-10-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102567944B (zh) | 基于fpga的ct图像重建硬件加速方法 | |
CN113016009B (zh) | 使用一个或更多个神经网络的多级图像重建 | |
US11995029B2 (en) | Multi-tile memory management for detecting cross tile access providing multi-tile inference scaling and providing page migration | |
CN104142845B (zh) | 基于OpenCL-To-FPGA的CT图像重建反投影加速方法 | |
Wang et al. | A survey of GPU-based acceleration techniques in MRI reconstructions | |
Kachelriess et al. | Hyperfast parallel‐beam and cone‐beam backprojection using the cell general purpose hardware | |
US11145105B2 (en) | Multi-tile graphics processor rendering | |
Chou et al. | A fast forward projection using multithreads for multirays on GPUs in medical image reconstruction | |
CN101596113B (zh) | 一种ct并行重建系统及成像方法 | |
Scherl et al. | Evaluation of state-of-the-art hardware architectures for fast cone-beam CT reconstruction | |
CN107194864A (zh) | 基于异构平台的ct图像三维重建加速方法及其装置 | |
CN113766802A (zh) | 用于移动数据中心的智能液体冷却计算舱 | |
Blas et al. | Surfing the optimization space of a multiple-GPU parallel implementation of a X-ray tomography reconstruction algorithm | |
Choi et al. | Acceleration of EM-based 3D CT reconstruction using FPGA | |
Chen et al. | A hybrid architecture for compressive sensing 3-D CT reconstruction | |
DE112020004781T5 (de) | Kernel-fusion für maschinelles lernen | |
WO2021168187A1 (en) | Intelligent and integrated liquid-cooled rack for datacenters | |
Zhai et al. | Zynq SoC based acceleration of the lattice Boltzmann method | |
CN105183562B (zh) | 一种基于cuda技术对栅格化数据进行抽阶的方法 | |
Li | Design of an FPGA-based computing platform for real-time three-dimensional medical imaging | |
CN108921289A (zh) | 一种fpga异构加速方法、装置及系统 | |
Scherl et al. | Implementation of the FDK algorithm for cone-beam CT on the cell broadband engine architecture | |
Brandao et al. | Performance evaluation of optimized implementations of finite difference method for wave propagation problems on gpu architecture | |
CN101751356B (zh) | 用于改进直接存储器存取传送效率的方法、系统和装置 | |
CN101268950B (zh) | 基于cell宽频引擎的螺旋ct精确重建系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |