本發(fā)明涉及醫(yī)學(xué)圖像數(shù)據(jù)處理技術(shù)領(lǐng)域,尤其涉及一種醫(yī)學(xué)三維圖像的數(shù)據(jù)處理方法及系統(tǒng)。
背景技術(shù):
臨床應(yīng)用中除了對三維可視化重建圖像質(zhì)量提出較高的要求以外,對交互繪制速度也提出了較高的要求?;诠饩€投射方法可以生成高質(zhì)量的三維圖像,能夠滿足臨床診斷的需要。但它的一個突出缺點(diǎn)就是繪制速度慢,如果沒有一種有效的加速方法對其繪制速度進(jìn)行改善的話,很難適應(yīng)實(shí)際應(yīng)用和醫(yī)學(xué)圖像技術(shù)發(fā)展的要求。光線投射方法提出以后,相應(yīng)的加速技術(shù)的研究就從來沒有停止過。目前,針對于光線投射的軟件加速技術(shù)主要有以下幾種:包圍盒技術(shù)(bounding box),空間剖分(space subdivision)技術(shù)和光線相關(guān)性(ray coherence)技術(shù)。
以上提到的一些加速方法,主要都是基于忽略無效計算的思想來減少時間消耗,應(yīng)該說都取得了很好的加速效果,但對于數(shù)據(jù)量越來越大的醫(yī)學(xué)影像三維可視化,還是很難達(dá)到實(shí)時的顯示效果。
綜上可知,現(xiàn)有技術(shù)在實(shí)際使用上顯然存在不便與缺陷,所以有必要加以改進(jìn)。
技術(shù)實(shí)現(xiàn)要素:
針對上述的缺陷,本發(fā)明的目的在于提供一種醫(yī)學(xué)三維圖像的數(shù)據(jù)處理方法及系統(tǒng),其可以加速三維可視化的處理速度,并且避免大量的代碼移植。
為了實(shí)現(xiàn)上述目的,本發(fā)明提供一種醫(yī)學(xué)三維圖像的數(shù)據(jù)處理方法,包括以下步驟:
A、接收數(shù)據(jù)輸入;
B、圖形處理器初始化后,拷貝屏幕象素光線追蹤所述數(shù)據(jù)到Device端;
C、調(diào)用函數(shù)在Device端進(jìn)行光線追蹤采樣合成計算;
D、拷貝屏幕象素結(jié)果數(shù)據(jù)到Host端。
根據(jù)本發(fā)明的醫(yī)學(xué)三維圖像的數(shù)據(jù)處理方法,所述步驟B進(jìn)一步包括:
B1、創(chuàng)建接口導(dǎo)出類CGPUSpeedUI;
B2、在VS2008環(huán)境下將所述接口導(dǎo)出類編譯成對應(yīng)的lib文件;
B3、在host端CPU程序中準(zhǔn)備劑量計算需要的數(shù)據(jù);
B4、通過所述調(diào)用接口類CGPUSpeedUI的成員函數(shù)將所述劑量計算需要的數(shù)據(jù)復(fù)制到顯卡內(nèi)存中;
B5、device端核心程序執(zhí)行結(jié)束后再通過所述調(diào)用接口類CGPUSpeedUI的成員函數(shù)將計算好的數(shù)據(jù)復(fù)制到同主內(nèi)存中。
根據(jù)本發(fā)明的醫(yī)學(xué)三維圖像的數(shù)據(jù)處理方法,所述步驟B4中,將顯卡內(nèi)存中的只讀數(shù)據(jù)聲明為紋理數(shù)據(jù),將顯卡內(nèi)存中的可讀寫數(shù)據(jù)聲明為全局變量。
本發(fā)明還相應(yīng)的提供一種醫(yī)學(xué)三維圖像的數(shù)據(jù)處理系統(tǒng),包括:
數(shù)據(jù)接收模塊,用于接收數(shù)據(jù)輸入;
圖形處理器,用于初始化后拷貝屏幕象素光線追蹤所述數(shù)據(jù)到Device端;
計算處理模塊,調(diào)用函數(shù)在Device端進(jìn)行光線追蹤采樣合成計算;
數(shù)據(jù)傳輸模塊,拷貝屏幕象素結(jié)果數(shù)據(jù)到Host端。
根據(jù)本發(fā)明的醫(yī)學(xué)三維圖像的數(shù)據(jù)處理系統(tǒng),所述圖形處理器進(jìn)一步用于:
創(chuàng)建接口導(dǎo)出類CGPUSpeedUI;
在VS2008環(huán)境下將所述接口導(dǎo)出類CGPUSpeedUI編譯成對應(yīng)的lib文件;
在host端CPU程序中準(zhǔn)備劑量計算需要的數(shù)據(jù);
通過所述調(diào)用接口類CGPUSpeedUI的成員函數(shù)將所述劑量計算需要的數(shù)據(jù)復(fù)制到顯卡內(nèi)存中;
在device端核心程序執(zhí)行結(jié)束后通過所述調(diào)用接口類CGPUSpeedUI的成員函數(shù)將計算好的數(shù)據(jù)復(fù)制到同主內(nèi)存中。
根據(jù)本發(fā)明的醫(yī)學(xué)三維圖像的數(shù)據(jù)處理系統(tǒng),所述圖形處理器進(jìn)一步用于將顯卡內(nèi)存中的只讀數(shù)據(jù)聲明為紋理數(shù)據(jù),將顯卡內(nèi)存中的可讀寫數(shù)據(jù)聲明為全局變量。
本發(fā)明基于NVIDIA顯卡通用計算架構(gòu)CUDA技術(shù),將GPU加速技術(shù)應(yīng)用于醫(yī)學(xué)三維可視化體顯示中,三維可視化重建速度得到了大幅度的提高。同時,利用MFC擴(kuò)展動態(tài)庫及導(dǎo)出類技術(shù),在架構(gòu)設(shè)計上避免了大量代碼移植工作。
附圖說明
圖1是本發(fā)明的醫(yī)學(xué)三維圖像的數(shù)據(jù)處理系統(tǒng)結(jié)構(gòu)示意圖;
圖2是本發(fā)明一實(shí)施例的軟件架構(gòu)圖;
圖3是本發(fā)明一實(shí)施例的醫(yī)學(xué)三維圖像的數(shù)據(jù)處理方法流程圖。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
本發(fā)明是基于NVIDIA顯卡通用計算架構(gòu)CUDA(并行計算架構(gòu)平臺)技術(shù),將GPU加速技術(shù)應(yīng)用于醫(yī)學(xué)三維可視化體顯示中,使三維可視化重建速度得到大幅度提高。同時,利用MFC擴(kuò)展動態(tài)庫及導(dǎo)出類技術(shù),在架構(gòu)設(shè)計上避免了大量代碼移植工作。并針對特定的GeForce 9600GT.顯卡,在試驗(yàn)過程中,對GPU同時執(zhí)行的線程數(shù)與計算時間做了統(tǒng)計,找到了計算時間最少的最優(yōu)線程數(shù)。
本發(fā)明中,如無特別說明,所涉及的VS6及VS2008均為計算機(jī)處理領(lǐng)域的原有含義。
參見圖1,本發(fā)明提供了一種醫(yī)學(xué)三維圖像的數(shù)據(jù)處理系統(tǒng),該系統(tǒng)100包括:
數(shù)據(jù)接收模塊10,用于接收數(shù)據(jù)輸入。
圖形處理器20,用于初始化后拷貝屏幕象素光線追蹤所需數(shù)據(jù)到Device端。
計算處理模塊30,調(diào)用函數(shù)在Device端進(jìn)行光線追蹤采樣合成計算。
數(shù)據(jù)傳輸模塊40,拷貝屏幕象素光線追蹤結(jié)果數(shù)據(jù)到Host端。
具體應(yīng)用中,通過光線投射法合成屏幕象素的光線追蹤過程對于每個象素都是獨(dú)立的,每個象素的光線追蹤過程都可以由GPU(圖形處理器)中的一個thread完成,具有非常好的并行計算特性,基于此,本發(fā)明提供了加速處理。
屏幕象素經(jīng)過離散處理后,對于屏幕任意離散點(diǎn)對應(yīng)象素顏色值cλ(um,vn)的計算可以在顯示芯片執(zhí)行最小單位thread中獨(dú)立進(jìn)行。加速過程是基于圖形處理器20處理的計算改進(jìn)。具體的,本發(fā)明預(yù)先創(chuàng)建接口導(dǎo)出類CGPUSpeedUI,并在VS2008環(huán)境下將所述接口導(dǎo)出類CGPUSpeedUI編譯成對應(yīng)的lib文件。在系統(tǒng)工作時,會優(yōu)先在host端CPU程序中準(zhǔn)備劑量計算需要的數(shù)據(jù),并通過所述調(diào)用接口類CGPUSpeedUI的成員函數(shù)將所述劑量計算需要的數(shù)據(jù)復(fù)制到顯卡內(nèi)存中,在device端核心程序執(zhí)行結(jié)束后通過所述調(diào)用接口類CGPUSpeedUI的成員函數(shù)將計算好的數(shù)據(jù)復(fù)制到同主內(nèi)存中。
在上述過程中,這些被復(fù)制到顯卡內(nèi)存中的數(shù)據(jù)包括需要在device端kernel程序需要定義的一些數(shù)組及變量。在CUDA內(nèi)存管理中,紋理內(nèi)存具有只讀屬性,全局內(nèi)存可以進(jìn)行讀寫操作。但紋理內(nèi)存空間具有高速緩存,紋理拾取僅在高速緩存未命中時,才會從設(shè)備內(nèi)存中讀取數(shù)據(jù),所以紋理內(nèi)存與全局內(nèi)存相比,具有更高的讀取效率。針對以上特性,我們對只讀數(shù)組采用紋理內(nèi)存方式管理,對于可讀寫數(shù)組聲明為全局變量,借此可以大大提高數(shù)據(jù)的處理速度。
更好的,結(jié)合圖2,由于本發(fā)明創(chuàng)建了一個接口導(dǎo)出類CGPUSpeedUI,在VS2008下將其編譯成相應(yīng)的lib文件。VS6工程通過該lib文件進(jìn)行編譯。這樣device端的kernel程序可以在VS2008下的動態(tài)庫執(zhí)行,不需要對原有工程做大量的代碼移植工作。
參見圖3,本發(fā)明提供了一種醫(yī)學(xué)三維圖像的數(shù)據(jù)處理方法,其可以通過如圖1所示的系統(tǒng)100實(shí)現(xiàn),該方法包括:
步驟S301,接收數(shù)據(jù)輸入。
步驟S302,圖形處理器初始化后,拷貝屏幕象素光線追蹤所需數(shù)據(jù)到Device端。
步驟S303,調(diào)用函數(shù)在Device端進(jìn)行光線追蹤采樣合成計算.
步驟S304,拷貝屏幕象素光線追蹤結(jié)果數(shù)據(jù)到Host端。
具體的,在步驟S302中,本發(fā)明預(yù)先創(chuàng)建接口導(dǎo)出類CGPUSpeedUI,并在VS2008環(huán)境下將所述接口導(dǎo)出類CGPUSpeedUI編譯成對應(yīng)的lib文件。在系統(tǒng)工作時,會優(yōu)先在host端CPU程序中準(zhǔn)備劑量計算需要的數(shù)據(jù),并通過所述調(diào)用接口類CGPUSpeedUI的成員函數(shù)將所述劑量計算需要的數(shù)據(jù)復(fù)制到顯卡內(nèi)存中,在device端核心程序執(zhí)行結(jié)束后通過所述調(diào)用接口類CGPUSpeedUI的成員函數(shù)將計算好的數(shù)據(jù)復(fù)制到同主內(nèi)存中。
在上述過程中,這些被復(fù)制到顯卡內(nèi)存中的數(shù)據(jù)包括需要在device端kernel程序需要定義的一些數(shù)組及變量。在CUDA內(nèi)存管理中,紋理內(nèi)存具有只讀屬性,全局內(nèi)存可以進(jìn)行讀寫操作。但紋理內(nèi)存空間具有高速緩存,紋理拾取僅在高速緩存未命中時,才會從設(shè)備內(nèi)存中讀取數(shù)據(jù),所以紋理內(nèi)存與全局內(nèi)存相比,具有更高的讀取效率。針對以上特性,我們對只讀數(shù)組采用紋理內(nèi)存方式管理,對于可讀寫數(shù)組聲明為全局變量,借此可以大大提高數(shù)據(jù)的處理速度。
綜上所述,本發(fā)明基于NVIDIA顯卡通用計算架構(gòu)CUDA技術(shù),將GPU加速技術(shù)應(yīng)用于醫(yī)學(xué)三維可視化體顯示中,三維可視化重建速度得到了大幅度的提高。同時,利用MFC擴(kuò)展動態(tài)庫及導(dǎo)出類技術(shù),在架構(gòu)設(shè)計上避免了大量代碼移植工作。
當(dāng)然,本發(fā)明還可有其它多種實(shí)施例,在不背離本發(fā)明精神及其實(shí)質(zhì)的情況下,熟悉本領(lǐng)域的技術(shù)人員當(dāng)可根據(jù)本發(fā)明作出各種相應(yīng)的改變和變形,但這些相應(yīng)的改變和變形都應(yīng)屬于本發(fā)明所附的權(quán)利要求的保護(hù)范圍。