基于遺傳算法的ct圖像重建反投影加速方法
【技術(shù)領(lǐng)域】
[0001] 該發(fā)明涉及一種CT圖像重建的方法,特別是涉及一種基于遺傳算法的CT圖像重 建反投影加速方法。
【背景技術(shù)】
[0002] 計(jì)算機(jī)斷層成像(ComputedTomography,CT)以其無損、精確、三維可視化等優(yōu)點(diǎn) 在工業(yè)無損檢測和醫(yī)療診斷領(lǐng)域獲得了廣泛的應(yīng)用。然而CT設(shè)備在提高成像質(zhì)量和重建 分辨率的同時(shí),相應(yīng)需求的計(jì)算資源和存儲(chǔ)資源都非常大,重建速度已成為CT技術(shù)走向?qū)?用的一個(gè)瓶頸,如何對CT重建過程加速是目前該領(lǐng)域研究的一個(gè)難點(diǎn)問題。
[0003]目前,實(shí)際CT系統(tǒng)中應(yīng)用的主流算法主要集中于以濾波反投影為基礎(chǔ)的解析類 重建算法上,如FBP、FDK等算法。在這類算法中,反投影過程所占計(jì)算消耗的比例最高,對 反投影計(jì)算的加速是實(shí)際應(yīng)用中重建加速的關(guān)鍵點(diǎn)。
[0004] 在半導(dǎo)體工藝和并行計(jì)算技術(shù)進(jìn)步的推動(dòng)下,特別是以GPU為代表的眾核處理器 的推出,使得圖像重建速度已不再是一個(gè)瓶頸。在眾多高性能計(jì)算方案中,基于CUDA的圖 像重建算法加速效果十分顯著,利用CUDA實(shí)現(xiàn)對CT重建的反投影過程進(jìn)行加速是該領(lǐng)域 的重要研究方向。
[0005] 經(jīng)過現(xiàn)有技術(shù)的文獻(xiàn)檢索發(fā)現(xiàn),利用CUDA加速CT重建反投影的文章采取的實(shí) 現(xiàn)方式存在訪存帶寬受限、自適應(yīng)程度低等不足。2011年,Papenhausen在Workshopon HighPerformanceImageReconstruction上發(fā)表〈〈GPU-acceleratedback-projection revisited:squeezingperformancebycarefultuning》,通過常數(shù)存儲(chǔ)器、紋理存儲(chǔ)器 和一次反投影多個(gè)投影等更精細(xì)的優(yōu)化策略,使得GPU在圖像重建中的優(yōu)勢得到更好的 發(fā)揮。2014 年,Zhang等人在AppliedMechanicsandMaterials上發(fā)表〈〈Comparison ofParallelComputingMethodsforFastCone-BeamReconstructionwithSimilar OptimizationStrategies》,充分利用了GPU受限于訪存帶寬而不是計(jì)算帶寬的特點(diǎn),通過 一次反投影更多投影的方式,對于5123的重建圖像僅需要2. 1秒。但上述方法的性能瓶頸 是都需要人為來識別,加速策略的自適應(yīng)程度低。
【發(fā)明內(nèi)容】
[0006] 本發(fā)明克服了現(xiàn)有技術(shù)中,利用CUDA加速CT重建反投影的實(shí)現(xiàn)方式存在訪存帶 寬受限、自適應(yīng)程度低等問題,提供一種自適應(yīng)程度高的基于遺傳算法的CT圖像重建反投 影加速方法。
[0007] 本發(fā)明的技術(shù)解決方案是,提供一種具有以下步驟的基于遺傳算法的CT圖像重 建反投影加速方法:其在CUDA編程框架下,基于CUDA的反投影并行計(jì)算策略如下:
[0008] (1) -次反投影核函數(shù)運(yùn)算處理多個(gè)投影,減少重建圖像體素值更新時(shí)對全局存 儲(chǔ)器的訪問次數(shù);
[0009] (2)合理設(shè)計(jì)線程網(wǎng)格(grid)和線程塊(block)的維度和順序來保證全局存儲(chǔ)器 的合并訪問,降低重建圖像體素值更新時(shí)對全局存儲(chǔ)器的訪問延遲;
[0010] (3)使用常數(shù)存儲(chǔ)器保存反投影中的常數(shù),比如三角函數(shù)值,減少算術(shù)指令的運(yùn)算 時(shí)間;
[0011] (4)使用紋理存儲(chǔ)器實(shí)現(xiàn)雙線性插值,減少算術(shù)指令的運(yùn)算時(shí)間;
[0012] (5)約簡反投影運(yùn)算中的相同因子,如相同的除法,減少算術(shù)指令的運(yùn)算時(shí)間。
[0013] 所述定義策略⑴中一次反投影處理I個(gè)投影,策略⑵中block的維度 為(Bx,By)、一個(gè)線程更新K個(gè)體素,建立以(I,K,Bx,By)為參數(shù)、以反投影計(jì)算時(shí)間 T(I,K,Bx,By)為代價(jià)函數(shù)的最優(yōu)化模型
[0014]
[0015]
[0016] 公式中N代表自然數(shù)空間,(Nx,Ny,Nz)為重建圖像沿三個(gè)坐標(biāo)軸方向的體素?cái)?shù) 量,Np為CT采集的投影數(shù)量,N13_為GPU硬件對于多層紋理層數(shù)的上限,N"為GPU全局存 儲(chǔ)器容量存儲(chǔ)投影數(shù)量的上限,隊(duì)為GPU硬件對于block中所包含線程數(shù)量的上限,約束 mod(Bx*By, 32) = 0是為了保證block中的線程數(shù)量為warp(包含32個(gè)線程)的整數(shù)倍。
[0017] 所述最優(yōu)化模型采用SGA求解步驟如下:
[0018] 步驟1 :隨機(jī)生成Μ個(gè)個(gè)體(I,K,Bx,By)作為初始種群,并對每個(gè)個(gè)體進(jìn)行編碼。 由于個(gè)體(I,K,Bx,By)全部是整數(shù),因此直接采用每個(gè)參數(shù)的二進(jìn)制表示作為基因編碼, 并將其串聯(lián)在一起組成基因序列;
[0019] 步驟2 :編譯每個(gè)個(gè)體對應(yīng)的反投影核函數(shù)為動(dòng)態(tài)鏈接庫,參數(shù)最優(yōu)化搜索程序 調(diào)用該動(dòng)態(tài)鏈接庫并記錄反投影時(shí)間,從而得到每個(gè)個(gè)體的適應(yīng)度;
[0020] 步驟3 :當(dāng)終止條件未達(dá)到時(shí),執(zhí)行下述操作:
[0021] 子步驟3. 1 :基于輪盤賭算法執(zhí)行選擇與復(fù)制算子;
[0022] 子步驟3. 2 :以概率Pc執(zhí)行交叉算子;
[0023] 子步驟3. 3 :以概率Pm執(zhí)行變異算子;
[0024] 子步驟3. 4 :驗(yàn)證新產(chǎn)生的個(gè)體是否滿足模型的約束條件。如果滿足,則執(zhí)行下一 步;否則重新執(zhí)行步驟3. 2和3. 3,直至滿足約束條件;
[0025] 子步驟3. 5 :對每個(gè)個(gè)體的基因編碼進(jìn)行解碼得到(I,K,Bx,By),然后重復(fù)步驟2, 計(jì)算新一代種群中每個(gè)個(gè)體的適應(yīng)度;
[0026] 步驟4 :當(dāng)終止條件達(dá)到時(shí),輸出適應(yīng)度最小的個(gè)體,并對其進(jìn)行解碼得到最優(yōu)的 配置參數(shù)。
[0027] 本方法其在CUDA編程框架下,基于CUDA的反投影并行計(jì)算分為三個(gè)優(yōu)化部分:
[0028] 優(yōu)化1 :在第一次反投影核函數(shù)運(yùn)算之前,首先完成I個(gè)投影的數(shù)據(jù)上傳,然后在 核函數(shù)運(yùn)算的同時(shí)上傳下次需要處理的投影數(shù)據(jù);
[0029] 優(yōu)化2 :在接下來的反投影中,GPU在對上次上傳的投影數(shù)據(jù)進(jìn)行反投影的同時(shí), 上傳下次需要處理的投影數(shù)據(jù);
[0030] 優(yōu)化3 :對于最后一次反投影,將重建圖像分成均等的兩個(gè)部分,采用兩個(gè)核函數(shù) 分別完成對應(yīng)的反投影,當(dāng)?shù)谝粋€(gè)核函數(shù)完成反投影之后即開始下載數(shù)據(jù)到內(nèi)存,同時(shí)第 二個(gè)核函數(shù)計(jì)算另一半重建圖像,待反投影結(jié)束后下載數(shù)據(jù)到內(nèi)存。
[0031] 與現(xiàn)有技術(shù)相比,本發(fā)明基于遺傳算法的CT圖像重建反投影加速方法具有以下 優(yōu)點(diǎn):本發(fā)明反投影過程所占計(jì)算消耗的比例低,通過常數(shù)存儲(chǔ)器、紋理存儲(chǔ)器和一次反投 影多個(gè)投影等更精細(xì)的優(yōu)化策略,使得GPU在圖像重建中的優(yōu)勢得到更好的發(fā)揮;不需要 人為來識別,加速策略的自適應(yīng)程度高。提出的流水處理方法優(yōu)點(diǎn)是時(shí)序控制簡單,容易實(shí) 現(xiàn)。
【附圖說明】
[0032] 圖1是本發(fā)明基于遺傳算法的CT圖像重建反投影加速方法的加速流程圖;
[0033] 圖2是本發(fā)明基于遺傳算法的CT圖像重建反投影加速方法采用SGA來求解模型 的算法流程圖;
[0034] 圖3是本發(fā)明基于遺傳算法的CT圖像重建反投影加速方法中反投影流水處理方 法的示意圖;
[0035] 圖4是本發(fā)明基于遺傳算法的CT圖像重建反投影加速方法中RabbitCT的(a)xy 切片、(b)xz切片、(c)yz切片、(d)三維渲染圖像的重建圖像。
【具體實(shí)施方式】
[0036] 下面結(jié)合附圖和【具體實(shí)施方式】對本發(fā)明基于遺傳算法的CT圖像重建反投影加 速方法作進(jìn)一步說明:一種基于遺傳算法的CT圖像重建反投影加速方法,在CUDA編程框 架下,基于CUDA的反投影并行計(jì)算策略包括以下幾點(diǎn):(1) 一次反投影核函數(shù)運(yùn)算處理 多個(gè)投影,減少重建圖像體素值更新時(shí)對全局存儲(chǔ)器的訪問次數(shù);(2)合理設(shè)計(jì)線程網(wǎng)格 (grid)和線程塊(block)的維度和順序來保證全局存儲(chǔ)器的合并訪問,降低重建圖像體素 值更新時(shí)對全局存儲(chǔ)器的訪問延遲;(3)使用常數(shù)存儲(chǔ)器保存反投影中的常數(shù)(比如三角 函數(shù)值等),減少算術(shù)指令的運(yùn)算時(shí)間;(4)使用紋理存儲(chǔ)器實(shí)現(xiàn)雙線性插值,減少算術(shù)指 令的運(yùn)算時(shí)間;(5)約簡反投影運(yùn)算中的相同因子(如相同的除法),減少算術(shù)指令的運(yùn)算 時(shí)間。
[0037] 對于不同的GPU平臺,上述并行計(jì)算策略中的(3)-(5)都是不變的,但策略(1)和 (2)需要調(diào)整其中的配置參數(shù)才能使反投影并行計(jì)算達(dá)到最優(yōu)。目前,調(diào)整策略(1)和(2) 中的配置參數(shù)完全由人工嘗試,若有一種方法能夠使得策略(1)和(2)自動(dòng)地隨GPU硬件 的變化而改變,則圖像重建算法在GPU上的最優(yōu)并行計(jì)算就可以達(dá)到自適應(yīng)的目的,而不 必人工進(jìn)行干預(yù)。
[0038] 為此,本發(fā)明提出以反投影的配置參數(shù)為變量、以反投影時(shí)間為目標(biāo)函數(shù)的最優(yōu) 化模型,然后通過遺傳算法來搜索最優(yōu)的配置參數(shù),從而實(shí)現(xiàn)反投影的自適應(yīng)計(jì)算。
[0039] 本方法確定的最優(yōu)化模型如下:定義策略(1)中一次反投影處理I個(gè)投影,策略 (2)中block的維度為(Bx,By)、一個(gè)線程更新K個(gè)體素。本發(fā)明建立以(I,K,Bx,By)為參 數(shù)、以反投影計(jì)算時(shí)間T(I,K,Bx,By