專利名稱:基于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日
發明者劉擁軍, 張峰, 張瀚銘, 李磊, 潘冬存, 王超, 鄧靖飛, 閆鑌 申請人:中國人民解放軍信息工程大學