王 鑫
(中北大學(xué) 信息與通信工程學(xué)院,山西 太原 030051)
計(jì)算機(jī)斷層成像(CT)技術(shù)是目前公認(rèn)的最好的無損檢測(cè)(NDT)技術(shù),廣泛應(yīng)用于醫(yī)學(xué)和工業(yè)中。CT 重建算法包括解析法和迭代法。解析法可以很快地重建出高質(zhì)量的圖像,但是在投影噪聲強(qiáng),投影數(shù)據(jù)不完全的情況下重建結(jié)果不理想,而迭代法不需要完整的投影數(shù)據(jù),因此在上述情況下可以重建出較好的圖像。但是迭代法需要大量的計(jì)算和時(shí)間以滿足實(shí)際應(yīng)用。投影矩陣是迭代法中一個(gè)非常重要的參數(shù),假設(shè)有360 個(gè)投影,重建圖像為256 ×256,每個(gè)投影角度下有256 條射線,每個(gè)元素按float 型數(shù)據(jù)存儲(chǔ),那么至少需要22.5GB 內(nèi)存空間,這樣導(dǎo)致存儲(chǔ)和檢索都很困難。因此如何快速、有效地獲得投影矩陣對(duì)于迭代算法來說是非常重要的。
本文首先概述ART 算法,然后特別介紹如何計(jì)算投影系數(shù),如何使用容器稀疏存儲(chǔ)和快速訪問投影矩陣。最后通過詳細(xì)的實(shí)驗(yàn)驗(yàn)證本文提出的方法的有效性。
ART 算法中,將圖像分為n×n 個(gè)相同的正方形,每個(gè)正方形代表一個(gè)像素。
迭代公式為:
其中i 是投影下標(biāo),k 為迭代次數(shù),xj為圖像向量。假設(shè)第i 條射線穿過像素j 的長(zhǎng)度是ωij。ω 為系統(tǒng)矩陣,λk為松弛因子,0 <λk<2。
從上式可以看到ω 在ART 迭代中重復(fù)利用。因此,如果我們?cè)诿看蔚杏?jì)算ω 可以節(jié)省內(nèi)存但是耗時(shí)比較長(zhǎng)。本文僅計(jì)算一次ω 并且稀疏存儲(chǔ),然后在每次迭代中使用。
標(biāo)準(zhǔn)庫vector 類是一個(gè)C++類模板。一個(gè)vector 是單個(gè)類的對(duì)象的集合,每個(gè)類都有相對(duì)應(yīng)的整數(shù)索引訪問。容器可以支持各種數(shù)組并且快速訪問對(duì)象,同時(shí)也可以在程序運(yùn)行時(shí)迅速有效地添加元素。表1 列出了常用的Vector 運(yùn)算。
表1 Vector 運(yùn)算
為了得到投影系數(shù),我們需要計(jì)算網(wǎng)格數(shù)以及相應(yīng)的穿過像素的投影射線長(zhǎng)度。接下來我們用容器代替固定大小的數(shù)組來定義系數(shù)。
一條射線下的系數(shù)計(jì)算如下:
1)確定坐標(biāo)系統(tǒng)和射線方程。
2)計(jì)算射線穿過物體的入射點(diǎn)P(Px,Py)和出射點(diǎn)Q(Qx,Qy)。
3)定義如下兩個(gè)vector 類
合并兩個(gè)vector,然后根據(jù)jx將這些數(shù)據(jù)從小到大進(jìn)行分類。
4)在一次循環(huán)中,計(jì)算相鄰兩個(gè)交點(diǎn)的中點(diǎn),然后計(jì)算網(wǎng)格數(shù)和交線長(zhǎng)度。
相應(yīng)的程序?yàn)?
因?yàn)榫W(wǎng)格數(shù)在0 到n -1 之間,所以我們可以添加這些語句以區(qū)分不同射線的系數(shù)。
相應(yīng)的程序?yàn)?
如果有180 個(gè)投影角度,每個(gè)投影角度下有n 條射線,計(jì)算完一個(gè)角度下的n 條射線的投影系數(shù)后,我們可以將這些系數(shù)以二進(jìn)制格式存儲(chǔ)在名為angle 的txt 文件中。程序如下:
在重建過程中,我們讀取這些txt 文件,然后用容器存儲(chǔ)一個(gè)角度下所有的系數(shù),程序如下:
基于網(wǎng)格數(shù)小于n ×n,我們可以完整地獲得一條射線下的投影系數(shù)。程序如下:
為了驗(yàn)證本文所提出的方法的有效性,我們對(duì)固體火箭發(fā)動(dòng)機(jī)進(jìn)行了重建,并將該方法所用的內(nèi)存和時(shí)間與文獻(xiàn)[5]中所用的方法進(jìn)行了比較。
本文采用錐形光束、圓形軌跡掃描。探測(cè)器大小是1 920 ×1 536,射線源到物體中心的距離是1 060 mm,探測(cè)器中心到物體中心的距離是140 mm。投影角度是0°~359°,間隔是1°。本文采用ART 算法對(duì)第770 層切片進(jìn)行了重建,重建圖像為256 ×256。重建結(jié)果如圖1 所示。
圖1 固體火箭發(fā)動(dòng)機(jī)重建結(jié)果
Siddon 算法計(jì)算投影矩陣大概需要135.24 s,投影數(shù)據(jù)采用稀疏存儲(chǔ)后,內(nèi)存占用是227 MB,比22.5GB 小得多。表2 列出了本文提出的方法和文獻(xiàn)[5]中方法的重建時(shí)間。
表2 重建時(shí)間比較
本文提出的方法的重建時(shí)間包括快速訪問投影矩陣的時(shí)間和ART 算法重建的時(shí)間。因此,本文提出的方法第一次迭代大概需要138.499 s(135.24 +3.259),第二次迭代僅需要3 s。而文獻(xiàn)[5]中的方法在每次迭代中需要158.329 s計(jì)算系數(shù)并用ART 算法重建。實(shí)驗(yàn)結(jié)果可以看出本文提出的方法可以有效地減少存儲(chǔ)投影矩陣的內(nèi)存空間和重建時(shí)間。
本文提出一種基于vector 容器的投影矩陣稀疏存儲(chǔ)與快速訪問方法,該方法可以有效減少投影矩陣的內(nèi)存占用和迭代重建的時(shí)間。在VS2010 環(huán)境下用ART 算法對(duì)固體火箭發(fā)動(dòng)機(jī)的切片進(jìn)行了重建,通過分析內(nèi)存占用和重建時(shí)間驗(yàn)證了該方法的可行性。
[1]曾更生.醫(yī)學(xué)圖像重建[M].北京:高等教育出版社,2010:21 -125.
[2]Jiang Ming,Wang Ge.Convergence Studies on Iterative Algorithms for Image Reconstruction[J].IEEE Transactions on Medical Imaging,2003,22(5):569 -579.
[3]張順利,張定華,趙歆波.ART 算法快速圖像重建研究[J].計(jì)算機(jī)工程與應(yīng)用,2006,24:1 -4.
[4]周斌,王連堂,王俊杰,等.代數(shù)重建算法中一種快速投影系數(shù)計(jì)算方法[J].計(jì)算機(jī)工程與應(yīng)用,2008,44(25):46 -47.
[5]陳洪磊,賀建峰,劉俊卿.基于二維檢索的投影矩陣算法[J].計(jì)算機(jī)工程,2013,39(2):229 -232.