商洪濤唐 輝徐 濤
基于分布式多圖像處理器的醫(yī)學(xué)影像體繪制算法
商洪濤①唐 輝①徐 濤①
目的:計算機醫(yī)學(xué)圖像處理具有所需計算量和計算涉及數(shù)據(jù)量巨大的特點,需將高性能計算技術(shù)應(yīng)用于計算機醫(yī)學(xué)圖像處理中,以適應(yīng)計算涉及數(shù)據(jù)量大和計算速度快的要求。方法:計算統(tǒng)一設(shè)備架構(gòu)(CUDA)技術(shù)可使圖像處理單元(GPU)進行通用并行計算,使其能夠提供強大的計算能力。由于分布式并行計算是實現(xiàn)高性能計算的主要方式,故提出一種實用的分布式并行計算模式,即基于分布式多GPU的并行計算模式,其中多臺計算機將使用消息傳遞接口(MPI)并行編程環(huán)境配置成分布式集群系統(tǒng)。結(jié)果:以醫(yī)學(xué)影像體繪制算法為例分析該計算模式,使得其算法計算時間較短,計算效率較高。結(jié)論:使用MPI集群和GPU進行算法加速,可很好地解決無法實現(xiàn)醫(yī)學(xué)影像的實時三維重建的問題。
分布式多圖像處理單元;光線投射體繪制;醫(yī)學(xué)影像處理;算法
近年來,隨著計算機科學(xué)技術(shù)的快速發(fā)展,在醫(yī)學(xué)領(lǐng)域可以利用計算機獲取、存儲、傳輸、處理各種醫(yī)學(xué)影像和醫(yī)學(xué)管理信息,從而極大提高了工作效率。醫(yī)學(xué)與計算機科學(xué)技術(shù)相結(jié)合的邊緣學(xué)科的大量涌現(xiàn)對醫(yī)學(xué)的快速發(fā)展起著重要的作用。計算機應(yīng)用技術(shù)在醫(yī)學(xué)中的應(yīng)用主要包括:計算機輔助診斷和輔助決策系統(tǒng)、醫(yī)學(xué)信息系統(tǒng)、衛(wèi)生行政管理信息系統(tǒng)、計算機醫(yī)學(xué)圖像處理與圖像識別系統(tǒng)等。
在現(xiàn)代醫(yī)學(xué)研究與臨床診斷中許多重要信息都是以圖像的形式出現(xiàn)的。以往醫(yī)學(xué)圖像是由醫(yī)生進行低效率的人工分析和處理。而隨著計算機應(yīng)用技術(shù)在醫(yī)學(xué)圖像處理方面應(yīng)用的逐步加深,計算機醫(yī)學(xué)圖像處理所面臨的困難也更加復(fù)雜。其中醫(yī)學(xué)圖像處理
要求的計算量特別巨大、計算所涉及的數(shù)據(jù)量非常大是影響計算機醫(yī)學(xué)圖像處理技術(shù)發(fā)展和實際應(yīng)用的關(guān)鍵問題所在。分布式集群計算與利用圖像處理單元(graphic processing unit,GPU)并行能提供巨大的計算量,因此分布式GPU計算模式對于醫(yī)學(xué)影像處理技術(shù)的發(fā)展和應(yīng)用是很有價值的。基于對多種并行計算模型的分析,提出使用基于分布式多GPU的并行計算模式,即:使用消息傳遞接口(message passing interface,MPI)組成具有并行計算能力的計算機集群,集群中的計算機利用計算統(tǒng)一設(shè)備架構(gòu)(compute unified device architecture, CUDA)技術(shù)使用GPU進行計算。使用MPI組成計算機集群[1]。
2.1 MPI集群
MPI產(chǎn)生于1994年,經(jīng)過數(shù)年的發(fā)展已成為消息環(huán)境并行計算的標準。MPI是并行計算機消息傳遞接口的標準,其在性能、功能和移植性上有較好的平衡,是目前最廣泛使用的并行編程環(huán)境。由于MPI具有移植性好、效率高、功能強大等優(yōu)點,適用于分布內(nèi)存的并行計算機系統(tǒng)的消息傳遞模型[2]。集群系統(tǒng)是利用網(wǎng)絡(luò)將一組計算機按某種結(jié)構(gòu)鏈接起來,在并行程序設(shè)計支持下協(xié)調(diào)處理、統(tǒng)一調(diào)度,實現(xiàn)高效并行處理的系統(tǒng)。本文涉及的集群是使用MPI并行程序設(shè)計環(huán)境和消息傳遞方式實現(xiàn)的各主機之間的并行處理和通信。
2.2 GPU和CUDA技術(shù)
隨著GPU的快速發(fā)展,其單精度浮點計算能力已遠高于CPU。CUDA是NVIDIA公司于2006年在GeForce 8800系列顯卡上推出的統(tǒng)一設(shè)備架構(gòu),是將GPU用于通用計算(GPGPU)的一種實現(xiàn),它改變了GPU的編程及存儲模式,使得GPU編程簡單易學(xué)并極大地發(fā)揮了GPU的并行計算能力[3]。CUDA實現(xiàn)了GPU通用并行計算的能力,其硬件體系結(jié)構(gòu)由若干單指令多數(shù)據(jù)的多處理器組成,每個多處理器有一個共享內(nèi)存、固定緩存、紋理緩存。CUDA的程序設(shè)計語言以C語言為基礎(chǔ)實現(xiàn),因此更加靈活并便于學(xué)習(xí)。CUDA的并行計算能力來自于在GPU上同時大量運行的線程,這些線程以網(wǎng)格的形式組成了線程塊,并且共享一塊內(nèi)存中的數(shù)據(jù)就可實現(xiàn)數(shù)據(jù)的并行處理[4]。
體繪制技術(shù)的實現(xiàn)是對三維離散數(shù)據(jù)場重新采樣和醫(yī)學(xué)圖像合成的過程。體繪制技術(shù)有很多實現(xiàn)方式,其中,由Levoy提出的光線投射算法是一種圖像空間掃描的實現(xiàn)體繪制的離散方法[5],它所針對的數(shù)據(jù)是符合規(guī)則數(shù)據(jù)場類型的。由CT或MRI產(chǎn)生的體數(shù)據(jù),符合數(shù)字影像和通信(digital imaging and communications in medicine, DICOM)標準,該數(shù)據(jù)屬于規(guī)則數(shù)據(jù)場類型。
該算法定義分布在均勻網(wǎng)格或規(guī)則網(wǎng)格的網(wǎng)格點上的三維空間數(shù)據(jù)為 f(xi,yj,zk)??梢愿鶕?jù)某種數(shù)據(jù)值分類的方法,將數(shù)據(jù)空間中的數(shù)據(jù)根據(jù)數(shù)值不同而進行分類,可以得到數(shù)據(jù)空間中每個數(shù)據(jù)點的顏色值和不透明度值。假定從屏幕上每個像素點發(fā)出一條射線,該射線沿著已設(shè)定的觀察方向射出并穿過三維數(shù)據(jù)場,在這條射線上選擇K個采樣點。在數(shù)據(jù)空間中找到距離該采樣點最近的8個數(shù)據(jù)點,根據(jù)這8個數(shù)據(jù)點的顏色值和不透明度值進行三次線性插值,求得該采樣點的顏色值和不透明度值。然后將該射線上K個取樣點的顏色值和不透明度值計算出來,最后將其顏色值和不透明度值按照某種規(guī)則加以合成,所得到的則是發(fā)出射線的像素點的顏色值和不透明度值。屏幕上所有像素點都經(jīng)過同樣的過程求得其顏色值和不透明度值,便得到數(shù)據(jù)空間的三維可視化結(jié)果(如圖1(a)、(b)所示)。
圖1 光線投射算法說明圖
圖1所示為該過程的說明,光線沿著視線方向從屏幕發(fā)出并穿過體數(shù)據(jù)空間,假設(shè)射線上存在重采樣點P,由三維數(shù)據(jù)空間 f(xi,yj,zk)可知與P相鄰近的8個體元的顏色值和不透明度值。根據(jù)這8個體元的顏色值和不透明度值進行三次線性插值便得到P的顏色值和不透明度值。將射線上所有采樣點的顏色值和不透明度值合成,即可得到屏幕上該像素的值。
4.1 基于CUDA的光線投射體繪制加速算法
由于CPU和GPU的體系結(jié)構(gòu)所決定,CPU在分支處理和隨機內(nèi)存訪問方面具有GPU所不具備的優(yōu)勢,在處理串行工作上具有先天的優(yōu)勢。而GPU因其特殊的核心設(shè)計,在處理具有大量浮點并行計算時有天然的優(yōu)勢。使用CPU+GPU的異構(gòu)運算方式可實現(xiàn)對計算機的高效使用。
利用CUDA實現(xiàn)光線投射算法時,使用GPU上大量的線程模擬屏幕上像素點發(fā)射出的射線。線程首先根據(jù)采樣點附近的體元進行三次線性插值,進而得到采樣點的顏色和不透明度數(shù)據(jù),再將該射線上的所有采樣點的顏色和不透明度數(shù)據(jù)按合適的規(guī)則進行累加,得到屏幕上某個像素點數(shù)據(jù)值。由于每條模擬光線相互并行且無干擾,因此每個線程執(zhí)行的指令相同,而處理的數(shù)據(jù)不同。這非常符合CUDA的計算模式—“多線程,單指令”[7],具體步驟如下。
(1)首先在主機端初始化CUDA環(huán)境。然后醫(yī)學(xué)影像序列從CPU的內(nèi)存以三維紋理的形式映射到GPU的顯存中[8]。同時依據(jù)結(jié)果圖像的大小(像素的數(shù)量)確定GPU中調(diào)用的線程的組織結(jié)構(gòu)及數(shù)量。實驗中使用的線程塊為16×16,最終的圖像為512×512。
(2)計算包圍盒。算法中的視點發(fā)出的射線有些并沒有穿過體數(shù)據(jù)空間,即該射線在計算過程中是無效的,導(dǎo)致不需進行計算的射線參與了計算過程。為減少不必要的計算量,先假設(shè)體數(shù)據(jù)周圍存在一個包圍盒,只有穿過包圍盒的光線才有可能通過物體,是應(yīng)該計算的有效光線[9]。
(3)取得每條射線上采樣點的顏色值和不透明度值,此過程可由GPU自動完成[10]。并將射線上所有采樣結(jié)果進行累加,得到像素點的最終顏色值和不透明度值,最后將結(jié)果圖像顯示到屏幕上[11]。
CUDA的工作模式如圖2所示。
圖2 CUDA的工作模式
4.2 基于MPI集群多GPU的體繪制算法
MPI的并行工作模式為“單指令,多數(shù)據(jù)”模式。算法思路是將計算任務(wù)分配到集群中的各個計算機上,并使用其GPU進行體繪制算法的計算,具體實現(xiàn)步驟如下。
(1)配置MPI環(huán)境。在局域網(wǎng)中使用MPI將若干計算機聯(lián)接組成集群。實驗中使用兩臺計算機組成集群,初始化MPI環(huán)境,將需處理的醫(yī)學(xué)影像序列在集群內(nèi)廣播,并在所有機器內(nèi)保存所需處理的數(shù)據(jù)集。
(2)分配計算任務(wù)。在集群內(nèi)將計算任務(wù)平均分配。
(3)在每個計算節(jié)點使用基于CUDA的光線投射算法,使用GPU進行計算。計算完成后將計算結(jié)果匯集到主節(jié)點,組成結(jié)果圖像并顯示。
4.3 實驗結(jié)果及分析
實驗效果如圖3所示,實驗數(shù)據(jù)為標準DICOM醫(yī)學(xué)影像,實驗數(shù)據(jù)為200層的頭部數(shù)據(jù)和400層的腿部數(shù)據(jù),單層圖像為512×512。實驗設(shè)備為兩臺個人PC機,顯卡為NVIDIA GeForce 9800系列,顯存為1 GB,內(nèi)存為4 GB。
圖3 腿部和頭部實驗效果圖
實驗對頭部和腿部醫(yī)學(xué)圖像序列進行了體繪制工作,同時對光線投射算法在CPU、GPU和本文算法的計算時間進行對比(見表1)。實驗中假定集群中的每臺計算機保存有數(shù)據(jù)集,并不需要網(wǎng)絡(luò)的傳輸,而算法中沒有將傳輸時間記錄其中。從表中可看出本文的算法計算時間比較短,計算效率較高。由于MPI在各機器間有同步工作,因此其加速比并不呈線性增長。
表1 CPU、GPU和本文算法實驗結(jié)果的對比
光線投射算法相比與其他三維重建可視化算法,其成像質(zhì)量比較高,同時所需計算量大、時間長,往往在實際應(yīng)用中無法實現(xiàn)醫(yī)學(xué)影像的實時三維重建。使用MPI集群和GPU進行算法加速則可很好地解決這一問題,在保證影像重建質(zhì)量的同時保證了計算速度的要求。
[1]都志輝,李立三.高性能計算并行編程技術(shù)—MPI并行程序設(shè)計[M].北京:清華大學(xué)出版社,2001.
[2]袁景艷,劉方愛,趙芳芳.基于MPI的集群系統(tǒng)的研究[J].信息技術(shù)與信息化,2010(2):33-35.
[3]NVIDIA.CUDA compute unified device architecture: programming guide version 2.3[J]. Santa Clara California August,2009(32):105.
[4]吳磊,王斌.基于CUDA的體繪制GPU加速算法[J].生命科學(xué)儀器,2009,12(7):26-29.
[5]唐澤圣.三維數(shù)據(jù)場可視化[M].北京:清華大學(xué)出版社,2000:10.
[6]張尤賽,陳福民.三維醫(yī)學(xué)圖像的體繪制技術(shù)綜述[J].計算機工程與應(yīng)用,2002,38(8):18-19.
[7]張浩,李利軍,林嵐.GPU的通用計算研究[J].計算機與數(shù)字工程,2005,33(12):60-61.
[8]楊傳琦.大規(guī)模數(shù)據(jù)體繪制及多維傳輸函數(shù)技術(shù)的研究與實現(xiàn)[D].浙江大學(xué)碩士學(xué)位論文,杭州:浙江大學(xué),2006:5-6.
[9]馮高峰.基于Cell多核的光線投射并行算法[J].計算機應(yīng)用,2009,29(1):245-247.
[10]薛劍,田捷,戴亞康,等.海量醫(yī)學(xué)數(shù)據(jù)處理框架及快速體繪制算法[J].軟件學(xué)報,2008,19(12):3237-3248.
[11]王文舉,侯德文.幾種變換域體繪制算法的比較研究[J].計算機技術(shù)與發(fā)展,2008,18(4):80-83.
Volume rendering algorithm of medical image on distributed GPUS
SHANG Hong-tao, TANG Hui, XU Tao
Objective: Medical image processing with computer needs great computation and process lots of data, so high performance computing will be applied to medical image processing, in order to adapt the great computation requirement. Methods: The CUDA (Compute Unifed Device Architecture ) technology introduced from NVIDIA , made the GPU use the general purpose parallel computing, which provide powerful computational capabilities. The computing power was used in the paper. As distributed parallel computing is the main way to realize high performance computing, this paper presented a practical distributed parallel computing model. It is based on distributed multi-GPU (Graphic Processing Unit) of the parallel computing model, where multiple computers using MPI (Message Passing Interface) parallel programming environment configured as a distributed cluster system. Results: Make an analysis of the computing model, which is based on medical image volume rendering algorithm. It is shown that the algorithm takes less computing time and has higher computational efficiency. Conclusion: The problem of real-time 3D reconstruction in medical image has been solved by using the MIP clusters and the GPU to accelerated the effect of this algorithm.
Distributed multi-GPU; Volume rendering; Medical image processing; Algorithm
Department of Medical Engineering, General Hospital of Beijing Command, Beijing 100700, China.
1672-8270(2012)08-0004-04
TP391.41
A
商洪濤,女,(1977- ),本科學(xué)歷,主管技師。北京軍區(qū)總醫(yī)院醫(yī)學(xué)工程科,從事測試計量技術(shù)方面的工作,研究方向為生物醫(yī)學(xué)工程。
2012-04-05
①北京軍區(qū)總醫(yī)院醫(yī)學(xué)工程科 北京 100700
China Medical Equipment,2012,9(8):4-7.