摘 要: 針對三維圖像重建的經(jīng)典算法(FDK算法)在FPGA上的加速,提出了并行無等待流水線的實現(xiàn)方法。實驗結(jié)果表明,該方法獲得了較高的加速比。
關(guān)鍵詞: FPGA;CT重建;FDK;流水線
計算機斷層成像技術(shù)CT(Computed Tomography)作為一種新型的成像方式已經(jīng)被廣泛應用于醫(yī)學、工業(yè)等領(lǐng)域。三維CT相對于傳統(tǒng)二維CT有空間分辨率高,各向同性的優(yōu)勢[1]。但是由于三維圖像重建運算量大,重建時間長的問題已成為制約其走向?qū)嵱玫钠款i。
目前,重建加速研究主要集中在通過改進算法的軟件加速及利用GPU、FPGA進行的硬件加速。其中,F(xiàn)PGA由于具有極佳的并行計算能力及可重構(gòu)可定制的特點[2],利用FPGA實現(xiàn)CT重建加速正逐漸引起研究人員的注意。
2002年Miriam Leeser[3]首次利用FPGA對二維CT重建進行了加速,重建規(guī)模為512^2時需要3.6 s。2003年Iain Goddard[4]首次對三維CT重建FDK算法中的反投影過程用FPGA實現(xiàn)加速,重建規(guī)模為512^3時,反投影過程需要38.7 s;2008年Benno Heigl[5]用9塊FPGA協(xié)調(diào)配合完成了FDK算法中濾波及反投影部分的加速,重建規(guī)模為512^3時,該過程共需要9 s。2009年Nikhil Subramanian[6]利用FPGA作為協(xié)處理器用Impulse c語言開發(fā)實現(xiàn)了二維CT重建過程的加速,重建規(guī)模為512^2時,反投影過程需要38.4 ms。
在FPGA內(nèi)實現(xiàn)硬件加速是通過全數(shù)據(jù)流的形式處理,脫離了指令的操作。為了充分利用FPGA的片內(nèi)資源以獲得更高的加速效果,本文設(shè)計了一種并行無等待流水線的處理結(jié)構(gòu),同時對核心算法電路進行資源優(yōu)化,在保持高度并行性的同時保證了較高的資源利用率。
1 FDK算法
在FDK算法中,反投影的計算復雜度與時間消耗都是最大的,是制約重建速度的瓶頸所在,因此本文研究在FPGA內(nèi)實現(xiàn)反投影部分的加速方法。
2 FPGA反投影加速實現(xiàn)
反投影過程需要對重建物體旋轉(zhuǎn)一周所采集到的數(shù)據(jù)進行處理。實際情況中采集數(shù)據(jù)的過程是離散的,且每一個分度下投影數(shù)據(jù)的處理過程不相關(guān)?;谶@種可并行性,用FPGA加速的思路是并行計算反投影過程,并且在保證每一個反投影單元速度最快時并行盡可能多的反投影單元。
2.1 無等待流水線的設(shè)計
重建物體體素的反投影流程有3個步驟。首先根據(jù)圖1的幾何關(guān)系定位出重建體素在探測器上的位置;然后從存儲器中讀取相應數(shù)據(jù);最后對所讀取數(shù)據(jù)進行雙線性插值。
通過流水線設(shè)計,雙線性插值部分可以在每一個時鐘更新一個數(shù)據(jù),但是每更新一個數(shù)據(jù)需要從數(shù)據(jù)存儲空間讀取4個數(shù)據(jù)來計算,如果花費4個時鐘周期來讀取這4個數(shù)據(jù),就會造成前級數(shù)據(jù)讀取時間大于后級雙線性插值時間,雙線性插值處理單元會產(chǎn)生空泡??张莸漠a(chǎn)生,不但制約了后級處理單元的計算速度,也造成FPGA內(nèi)資源利用率的降低。
為了解決上述問題,提高處理速度以及資源利用率,分析雙線性插值過程所讀取4個數(shù)據(jù)之間的關(guān)系,如圖2所示。
圖3中兩組共四個存儲空間均為FPGA片內(nèi)設(shè)計的雙口RAM。通過數(shù)據(jù)預取技術(shù)以及兩組RAM之間的乒乓操作避免了雙線性插值時隨機訪問外部存儲器帶來的延遲。在反投影處理中,第一組RAM處于數(shù)據(jù)寫入過程時,分別向該組兩塊RAM寫入探測器上奇數(shù)行數(shù)據(jù)與偶數(shù)行數(shù)據(jù)。同時另一組RAM中的數(shù)據(jù)進行雙線性插值。計算完成后,兩組RAM進行讀寫狀態(tài)的互換,完成一次乒乓循環(huán)。在投影尋址單元中,計算出A(Xn,Yn)的縱坐標Yn,對其奇偶性進行判斷,當其為奇數(shù)時,從兩塊RAM中所取數(shù)據(jù)與地址分別為:
通過這種雙組奇偶雙口RAM緩存結(jié)構(gòu)的設(shè)計在不增加片內(nèi)存儲資源消耗的前提下一個時鐘周期內(nèi)取出四個數(shù)據(jù),消除了空泡,實現(xiàn)了無等待流水線,在一個時鐘周期內(nèi)可更新一個重建點的結(jié)果。
單條反投影流水線設(shè)計原理如圖4所示。圖中總體邏輯與時序控制模塊通過狀態(tài)機實現(xiàn)對流水線的控制;緩存寫入控制單元對投影數(shù)據(jù)的寫入操作進行判斷與控制;重建點生成器產(chǎn)生重建點坐標,并根據(jù)此坐標由讀地址生成器計算雙線性插值數(shù)據(jù)的地址,同時通過查表找出空間系數(shù)sin?茲與cos?茲;循環(huán)累加控制器完成對各分度下反投影結(jié)果的歸約過程。
2.2 并行流水線處理結(jié)構(gòu)
基于各個分度下反投影過程的不相關(guān)性,在FPGA內(nèi)設(shè)計一種基于分度的并行流水線處理結(jié)構(gòu),如圖5所示。數(shù)據(jù)控制接口以及時序狀態(tài)控制模塊完成對輸入數(shù)據(jù)的分配調(diào)度,通過多條反投影流水線并行計算后,由循環(huán)歸約單元完成反投影結(jié)果的歸約。
假如投影分度數(shù)為360,理想情況是在FPGA內(nèi)部實現(xiàn)360條并行的反投影流水線,但由于FPGA片內(nèi)資源的限制無法達到如此高的并行性,因此需要對每一次并行計算結(jié)果進行存儲,并完成累加計算。設(shè)計循環(huán)歸約單元完成上述操作。當有N條并行流水線并行計算
在FPGA內(nèi)設(shè)計時,預先算出該公因式的值,然后通過移位寄存的方法進行延遲同步,使之在相應的節(jié)拍打入到指定的計算單元。雖然這樣增加了乘法運算,但是將三次除法運算優(yōu)化為一次,節(jié)省了大量的資源。表1給出了優(yōu)化前后資源占有情況對比。
通過優(yōu)化,在XC5VLX330 FPGA內(nèi)部可以并行14條反投影流水線,相比優(yōu)化以前,流水線數(shù)增加1倍。
3 實驗結(jié)果與分析
通過編寫Verilog語言程序,在XC5VLX330 FPGA上進行綜合仿真,采取14條并行反投影流水線對Shepp-Logan標準體模進行重建,得到圖6所示結(jié)果。
圖6(a)為CPU重建圖像的一個切片,圖6(b)為FPGA加速重建的圖像切片,圖6(c),圖6(d)分別為圖6(a),圖6(b)切片圖像中心橫線的統(tǒng)計圖,從圖中可以看出FPGA加速重建結(jié)果的精度達到要求。表2給出FPGA與CPU對不同規(guī)模數(shù)據(jù)進行重建時速度對比,計算機CPU為Inter Xeon E5430 2.66 GB,內(nèi)存為16 GB。
可以看出,通過FPGA加速FDK算法中的反投影過程加速比達到了115,具有顯著效果。獲得加速比的原因由FPGA的體系結(jié)構(gòu)所決定,其基于數(shù)據(jù)流的處理方式脫離了指令的操作,保證每一個時鐘周期都是用來計算。當采取多條流水線并行處理時,加速比進一步提高,加速比與在FPGA內(nèi)并行流水線數(shù)目成正比。
本文在FPGA上實現(xiàn)了對三維CT重建過程的加速。針對FDK算法中計算復雜度最高的反投影過程,通過雙組奇偶雙口RAM的緩存結(jié)構(gòu)實現(xiàn)了無等待流水線,達到每一個時鐘周期可更新一個重建點的速度。另外通過優(yōu)化電路設(shè)計降低了單條流水線的資源占有率,在XC5VLX330上實現(xiàn)了14條流水線的并行處理,在保證重建圖像質(zhì)量的同時,取得了115倍的加速比。在利用FPGA實現(xiàn)CT重建加速時,影響加速效果的主要因素是FPGA內(nèi)部資源利用率以及數(shù)據(jù)傳輸效率,隨著未來FPGA以及存儲器技術(shù)的發(fā)展,F(xiàn)PGA可以實現(xiàn)更快的CT重建速度。
參考文獻
[1] 包尚聯(lián).現(xiàn)代醫(yī)學影像物理學[M].北京:北京大學醫(yī)學出版社,2003.
[2] 劉佳,焦斌亮.FPGA的發(fā)展趨勢及其新應用[J].電子技術(shù),2008(4).
[3] LEESER M.Parallel-beam backprojection:an FPGA implementation optimized for medical imaging[J].Proc of the Tenth Int.Symposium on FPGA.2002(2):217-226.
[4] GODDARD I.High-speed cone-beam reconstruction:an embedded systems approach[J].Proceedings of SPIE,2003:483-491.
[5] Benno Heig.High-speed reconstruction for C-arm computed tomography[C].Proceedings of the 9th International Meeting on Fully Three-Dimensional Image Reconstruction in Radiology and Nuclear Medicine.2008:25-28.
[6] Nikhil Subramanian.A C-to-FPGA solution for accelerating tomographic reconstruction[D].University of Washington,
2009.
[7] 張劍,陳志強.三維錐形束CT成像FDK重建算法發(fā)展綜述[J].中國體視學與圖像分析,2005(2):116-121.