安陽師范學(xué)院軟件學(xué)院 彭云峰
隨著醫(yī)學(xué)影像成像技術(shù)的不斷發(fā)展,超聲,CT,MRI,PET等不同類型的醫(yī)學(xué)影像技術(shù)在醫(yī)學(xué)臨床應(yīng)用上起著越來越重要的作用。MRI核磁共振成像技術(shù)具有其它技術(shù)所不能比擬的優(yōu)勢。它無輻射,三維分辨能力高,解剖分辨率高,軟組織對比度高,具有多成像參數(shù)。這些優(yōu)勢使它成為各種臨床疾病診斷的重要輔助手段。它在醫(yī)學(xué)臨床診斷時,能夠?qū)浗M織進(jìn)行非常清晰的成像,為腦部,肌肉,骨骼,骨髓的細(xì)節(jié)的觀察提供重要幫助。它空間分辨率高。同時層析斷面可以選擇方向,從而建立被成像部位的清晰立體圖像。這些優(yōu)點使它能在病變尚未顯示形態(tài)變化之前就能暴露出生物組織的化學(xué)變化,在各種嚴(yán)重疾病的早期診斷中起著非常重要的作用。MRI成像時,人體內(nèi)部的氫質(zhì)子形成的磁矩在外部磁場作用下出現(xiàn)馳豫現(xiàn)象。外部磁場撤離后,氫質(zhì)子釋放激勵能量,被人體外的接受線圈接受,通過后處理,獲取圖像的具體內(nèi)容。fMRI(functional)功能成像[1],是基于大腦進(jìn)行某項活動時局部腦區(qū)血氧水平的變化,來觀察進(jìn)行某項任務(wù)時所謂"腦激活"情況是BOLD信號成像。MRI可認(rèn)為時間分辨率為無窮大(不發(fā)生損傷或病理性改變及老化因素等影響,腦結(jié)構(gòu)基本保持穩(wěn)定),fMRI的時間分辨率為秒級。
SPM(statistical parametric mapping)[2]指的是建立和評估統(tǒng)計處理方法,用于對功能影像數(shù)據(jù)的假設(shè)檢驗。SPM在處理圖像時要經(jīng)過以下步驟:預(yù)處理,模型估計,和結(jié)果顯示。這將是本文后面將要構(gòu)件化的主要功能模塊。SPM軟件包已用于分析大腦圖像序列。由于大腦圖像比較復(fù)雜,圖像的隱含信息比較多,對圖像的分辨率要求也比較高。SPM目前可用于分析fMRI,PET, SPECT等圖像。SPM預(yù)處理圖像時要將所得數(shù)據(jù)進(jìn)行對齊,平滑,標(biāo)準(zhǔn)化等,然后將將刺激的時間等信息與血流動力函數(shù)進(jìn)行卷積,進(jìn)行相關(guān)分析),最后察看結(jié)果。由于SPM要處理大量的圖像數(shù)據(jù),對數(shù)據(jù)進(jìn)行計算和分析,它的成像過程要花費大量的時間。而且,SPM本身用Matlab實現(xiàn),可修改和可擴(kuò)充性都不強(qiáng),對底層硬件平臺的適應(yīng)能力也欠佳。
圖1 基于SPM的圖像處理框架
為更快地處理醫(yī)學(xué)影像數(shù)據(jù),提高程序運行速度,可以采用MPI和OpenMP混合編程來處理程序中可以并行處理的大量圖像數(shù)據(jù)。為此,本研究實現(xiàn)了一個簡單的基于SPM的圖像處理框架。本框架采用了SPM軟件中的若干關(guān)鍵功能模塊。用C語言結(jié)合MPI和OpenMP語句實現(xiàn)。如圖1所示,該框架主要包含3個模塊,分別對應(yīng)圖像處理中的3個步驟。其中第一個模塊采用C+OpenMP的方式實現(xiàn)。由于OpenMP編程模型在共享存儲式并行方面具有強(qiáng)大能力,數(shù)據(jù)預(yù)處理過程可以通過OpenMP線程并行執(zhí)行,由于在此數(shù)據(jù)預(yù)處理過程中,輸入數(shù)據(jù)之間的依賴關(guān)系較弱,程序執(zhí)行的并行度幾乎完全依賴于能夠使用的CPU處理核心。采用這樣的方式,不同的圖像信息,或同一圖像不同部位的信息都可以被共享內(nèi)存的多核處理器并行處理,極大地提高了圖像預(yù)處理的速度。第2個模塊用來進(jìn)行模型估計,將刺激的時間、間隔與血流動力函數(shù)進(jìn)行卷積,所得結(jié)果與全腦象素信號進(jìn)行相關(guān)分析。這是一個計算量更大的操作,也是本圖像處理程序的核心功能。為了更好地處理數(shù)據(jù),本模塊采用MPI和OpenMP混合編程實現(xiàn)。對于數(shù)據(jù)之間耦合比較密切的計算,采用共享存儲式編程,減少任務(wù)之間通信,交互的代價。對于數(shù)據(jù)耦合較弱的運算,則采用MPI進(jìn)程并行的方式實現(xiàn),利用執(zhí)行平臺的可擴(kuò)展性,提高程序執(zhí)行的并行度。結(jié)果顯示模塊比較簡單,只使用C語言編程實現(xiàn)。
通過以上方式,本研究建立了一個基于SPM算法的并行圖像處理程序框架。但是,在圖像預(yù)處理,模型估計的執(zhí)行過程中,有可能對某一功能有不同的實現(xiàn)算法。同時,由于執(zhí)行平臺可能是一個異構(gòu)的集群,可用資源的情況會發(fā)生動態(tài)的變化。為了方便軟件用戶在算法實現(xiàn)中做出選擇,同時讓程序能夠根據(jù)平臺資源的變化,自動地調(diào)整程序運行的并行度,更充分地利用平臺的資源,提高程序性能,本研究將上面的圖像處理程序使用cca-tools[3]制作成了并行構(gòu)件程序?;贑CA并行構(gòu)件模型,美國的并行計算研究者們制定了CCA并行構(gòu)件體系結(jié)構(gòu)規(guī)范,對該體系結(jié)構(gòu)的組成元素,構(gòu)件,接口,框架和多語言互操作機(jī)制進(jìn)行了完整和清晰的定義,同時實現(xiàn)了一套以bocca工程工具,CCAFFEINE運行框架和Babel編譯器為核心的并行構(gòu)件開發(fā)工具包cca-tools,能夠方便快捷地開發(fā)CCA并行構(gòu)件程序。要成為一個符合CCA規(guī)范的并行構(gòu)件,只要實現(xiàn)特定的SetServices方法即可,對被封裝的并行代碼的要求很少。將并行程序制作成CCA構(gòu)件,同一功能的不同算法實現(xiàn)提供的是相同的接口。用戶可以根據(jù)自己的需要選擇不同的實現(xiàn),通過接口和程序的其它部分連接起來。比如對數(shù)據(jù)預(yù)處理中的平滑功能,可使用理想濾波器、梯形濾波器、巴特沃斯濾波器、指數(shù)型濾波器進(jìn)行濾波處理。將不同的濾波器實現(xiàn)為CCA并行構(gòu)件,使用時只要通過調(diào)用濾波器接口,就可以選擇任何一個濾波器處理圖像數(shù)據(jù)。將并行圖像處理程序制作為構(gòu)件,還能結(jié)合對運行平臺資源的管理,動態(tài)地改變程序的并行度。資源管理引擎能夠通過實時探測的方法,得到平臺資源的具體信息,包括處理器核數(shù),內(nèi)存,網(wǎng)絡(luò)帶寬等信息。對使用OpenMP共享內(nèi)存模型的代碼來說,根據(jù)同一臺服務(wù)器上共享內(nèi)存的處理器核數(shù)信息,可以靈活地增加或減少程序運行的線程數(shù),提高對處理器資源的利用率,同時提高程序運行的性能。對使用MPI并行編程模型的代碼來說,當(dāng)運行平臺上的服務(wù)器個數(shù)發(fā)生變化時,可以增加或減少MPI進(jìn)程,改變程序的并行度,提高程序性能。對于前面程序當(dāng)中的模塊2,同時使用MPI和OpenMP編程模型,可以把程序部署在多核集群上。關(guān)系比較密切的任務(wù)被放在同一個多核服務(wù)器上,比如卷積操作和分析操作具有前后依賴關(guān)系,它們可以放在同一個服務(wù)器上,減少任務(wù)之間通信的開銷。而對于不同圖像的處理,由于它們之間的耦合較小,可以被放在不同的服務(wù)器上,通過MPI進(jìn)程并行的方式執(zhí)行,只要做好任務(wù)的分配和結(jié)果的收集即可。
本研究利用CCA并行構(gòu)件技術(shù),將SPM軟件包中的不同功能模塊實現(xiàn)為符合CCA標(biāo)準(zhǔn)的并行構(gòu)件,對于同一圖像處理功能,可能有不同的算法實現(xiàn)。用戶在運行程序使在這些實現(xiàn)中做出選擇,并通過相應(yīng)的調(diào)用接口,把不同的并行構(gòu)件連接起來,組成圖像處理程序。結(jié)合部署運行并行程序的集群平臺,混合使用MPI和OpenMP兩種編程模型,針對構(gòu)件代碼中不同任務(wù)的依賴關(guān)系,可以靈活地改變構(gòu)件運行的并行度,既充分地利用了平臺的計算資源,又提高了圖像處理功能的運行速度,提高了整個程序的性能。
[1]The FIL Methods group.SPM[EB/OL].http://www.fil.ion.ucl.ac.uk/spm/.
[2]Wikipedia.Functional magnetic resonance imaging[EB/OL]. https://en.wikipedia.org/wiki/Functional_magnetic_resonance_imaging.
[3]The Common Component Architecture Forum.CCA Forum Homepage[EB/OL].http://www.cca-forum.org/.