本發(fā)明涉及數(shù)據(jù)處理,特別涉及一種醫(yī)學(xué)影像的體繪制處理方法和裝置。
背景技術(shù):
1、醫(yī)學(xué)影像的體繪制(volume?rendering)是一種基于醫(yī)學(xué)影像序列產(chǎn)生彩色二維圖像的圖像處理技術(shù)。目前常規(guī)用于體繪制圖構(gòu)建的算法有光線投射(ray?casting)算法。光線投射算法是一種基本的圖形學(xué)渲染技術(shù),最早由arthur?appel在1968年提出,該算法通過模擬光線在三維數(shù)據(jù)中的傳播路徑來實(shí)現(xiàn)三維體數(shù)據(jù)的重建和渲染;光線投射算法能夠較好地平衡計(jì)算復(fù)雜度和重建效果,但因?yàn)楣饩€數(shù)目較多所以計(jì)算量較大、繪制速度較慢、繪圖實(shí)時(shí)性較差。
2、隨著圖形處理器(graphics?processing?unit,gpu)的計(jì)算能力提升,利用gpu進(jìn)行并行計(jì)算成為解決大規(guī)模數(shù)據(jù)處理瓶頸、提高計(jì)算實(shí)時(shí)性的重要途徑。光線投射算法中每條光線的計(jì)算模式一致,與gpu的并行計(jì)算結(jié)構(gòu)特性匹配,若能利用gpu資源來處理光線投射算法的計(jì)算工作則勢(shì)必可以提升計(jì)算效率、加快繪制速度、提高繪圖實(shí)時(shí)性。傳統(tǒng)架構(gòu)gpu的光線投射算法是將計(jì)算映射到圖形api中,這種處理方式雖然方便用戶調(diào)用,但也無法對(duì)處理流程進(jìn)行優(yōu)化。
3、2007年nvidia發(fā)布了計(jì)算機(jī)統(tǒng)一設(shè)備架構(gòu)(computer?unified?devicearchitecture,cuda),cuda架構(gòu)給出了直接訪問gpu硬件的編程接口,通過這些接口可以直接配置/讀寫gpu顯存資源,可以對(duì)gpu運(yùn)行環(huán)境下的cuda內(nèi)核函數(shù)進(jìn)行定制,可以根據(jù)應(yīng)用需求對(duì)gpu運(yùn)行環(huán)境下的并行線程的數(shù)量進(jìn)行動(dòng)態(tài)設(shè)置。若能將cuda架構(gòu)應(yīng)用在醫(yī)學(xué)影像的體繪制處理方案上,不但可以提升計(jì)算效率、加快繪制速度、提高繪圖實(shí)時(shí)性,還能對(duì)光線投射算法的處理流程進(jìn)行定制。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明的目的,就是針對(duì)現(xiàn)有技術(shù)的缺陷,提供一種醫(yī)學(xué)影像的體繪制處理方法、裝置、電子設(shè)備及計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。本發(fā)明在調(diào)用cuda架構(gòu)進(jìn)行處理之前,會(huì)先根據(jù)醫(yī)學(xué)影像序列、視角點(diǎn)坐標(biāo)和視角點(diǎn)視距進(jìn)行視角點(diǎn)確認(rèn)和歸一化的三維紋理數(shù)據(jù)空間t構(gòu)建,并在視角點(diǎn)到三維紋理數(shù)據(jù)空間t的視角正交面的中心點(diǎn)的連線上任選一點(diǎn)作為對(duì)應(yīng)的成像平面點(diǎn),并在成像平面點(diǎn)作一個(gè)與視角正交面大小一致且四邊都平行的平面記為對(duì)應(yīng)的體繪制成像面,并基于體繪制成像尺寸對(duì)體繪制成像面進(jìn)行網(wǎng)格劃分得到多個(gè)成像面像素點(diǎn)p組成對(duì)應(yīng)的像素點(diǎn)集合,并從各個(gè)成像面像素點(diǎn)p出發(fā)朝著三維紋理數(shù)據(jù)空間t的方向作一條垂直于視角正交面的射線記為對(duì)應(yīng)的像素點(diǎn)投射光線并由得到的所有像素點(diǎn)投射光線組成對(duì)應(yīng)的投射光線集合;在完成以上數(shù)據(jù)準(zhǔn)備工作之后,會(huì)基于cuda架構(gòu)在gpu顯存中規(guī)劃數(shù)據(jù)存儲(chǔ)區(qū)來存儲(chǔ)三維紋理數(shù)據(jù)空間t、視角正交面、像素點(diǎn)集合和投射光線集合,并規(guī)劃一個(gè)rgb像素組存儲(chǔ)區(qū)用于對(duì)后續(xù)的計(jì)算結(jié)果進(jìn)行存儲(chǔ);并基于cuda架構(gòu)在gpu運(yùn)行環(huán)境下為每個(gè)成像面像素點(diǎn)p創(chuàng)建一個(gè)調(diào)用光線投射算法核函數(shù)的線程記為對(duì)應(yīng)的第一像素點(diǎn)線程,并在gpu運(yùn)行環(huán)境下對(duì)所有第一像素點(diǎn)線程進(jìn)行并行執(zhí)行;該光線投射算法核函數(shù)為一個(gè)定制的cuda內(nèi)核函數(shù),用于按光線投射算法和lambert光照模型根據(jù)gpu顯存中存儲(chǔ)的三維紋理數(shù)據(jù)空間t、視角正交面和一條指定投射光線對(duì)該投射光線對(duì)應(yīng)像素點(diǎn)的rgb像素進(jìn)行計(jì)算并基于計(jì)算結(jié)果對(duì)rgb像素組存儲(chǔ)區(qū)進(jìn)行更新;最后,在gpu顯存中的rgb像素組存儲(chǔ)區(qū)內(nèi)的所有rgb像素組都不為空時(shí)由所有rgb像素組進(jìn)行圖像構(gòu)建得到對(duì)應(yīng)的體繪制圖像并顯示。本發(fā)明將cuda架構(gòu)應(yīng)用在了醫(yī)學(xué)影像的體繪制處理方案上,可以提升醫(yī)學(xué)影像體繪制的計(jì)算效率、繪制速度和實(shí)時(shí)性繪圖效果;本發(fā)明通過定制cuda內(nèi)核函數(shù)實(shí)現(xiàn)了一種在lambert光照模型下基于光強(qiáng)-像素映射關(guān)系來對(duì)成像像素點(diǎn)進(jìn)行著色的光線投射算法處理流程,可以提高醫(yī)學(xué)影像體繪制的處理靈活性和優(yōu)化便捷度。
2、為實(shí)現(xiàn)上述目的,本發(fā)明實(shí)施例第一方面提供了一種醫(yī)學(xué)影像的體繪制處理方法,所述方法包括:
3、接收第一醫(yī)學(xué)影像序列、視角點(diǎn)坐標(biāo)、視角點(diǎn)視距和體繪制成像尺寸w0×h0;所述第一醫(yī)學(xué)影像序列由多個(gè)第一醫(yī)學(xué)影像順序排序而成;所述第一醫(yī)學(xué)影像為一個(gè)三維ct影像或一個(gè)三維mr?i影像;每個(gè)所述第一醫(yī)學(xué)影像都由多個(gè)影像像素點(diǎn)組成;每個(gè)所述影像像素點(diǎn)至少對(duì)應(yīng)一個(gè)三維影像坐標(biāo)(x,y,z)和一個(gè)影像灰度;所述三維影像坐標(biāo)(x,y,z)為一個(gè)xyz坐標(biāo)系下的空間坐標(biāo),所述xyz坐標(biāo)系為一個(gè)由x、y、z軸組成的三維笛卡爾坐標(biāo)系;所述體繪制成像尺寸w0×h0中的w0、h0分別為體繪制成像的像素寬度和像素高度;
4、根據(jù)所述第一醫(yī)學(xué)影像序列、所述視角點(diǎn)坐標(biāo)和所述視角點(diǎn)視距進(jìn)行視角點(diǎn)確認(rèn)和歸一化的三維紋理數(shù)據(jù)空間構(gòu)建得到對(duì)應(yīng)的第一視角點(diǎn)和三維紋理數(shù)據(jù)空間t;所述三維紋理數(shù)據(jù)空間t為一個(gè)在whd坐標(biāo)系下形狀為1×1×1的正方體空間,所述whd坐標(biāo)系為一個(gè)由寬度w軸、高度h軸和深度d軸組成的三維笛卡爾坐標(biāo)系;所述三維紋理數(shù)據(jù)空間t內(nèi)包括多個(gè)紋理體素點(diǎn)t;所述紋理體素點(diǎn)t與所述影像像素點(diǎn)一一對(duì)應(yīng);每個(gè)所述紋理體素點(diǎn)t對(duì)應(yīng)一個(gè)三維坐標(biāo)(w,h,d)和一個(gè)紋理體素灰度,三維坐標(biāo)值w、h、d的取值范圍都在0到1之間,所述紋理體素灰度與對(duì)應(yīng)的所述影像灰度一致;所述三維紋理數(shù)據(jù)空間t的八個(gè)側(cè)面中與所述第一視角點(diǎn)距離最近的一個(gè)側(cè)面記為對(duì)應(yīng)的視角正交面;所述視角正交面的中心點(diǎn)與所述第一視角點(diǎn)的連線垂直所述視角正交面;
5、在所述第一視角點(diǎn)到所述三維紋理數(shù)據(jù)空間t的所述視角正交面的中心點(diǎn)的連線上任選一點(diǎn)作為對(duì)應(yīng)的成像平面點(diǎn);并在所述成像平面點(diǎn)作一個(gè)與所述視角正交面大小一致且四邊都平行的平面記為對(duì)應(yīng)的體繪制成像面;基于所述體繪制成像尺寸w0×h0對(duì)所述體繪制成像面進(jìn)行網(wǎng)格劃分得到對(duì)應(yīng)的w0×h0個(gè)成像面像素點(diǎn)p組成對(duì)應(yīng)的第一像素點(diǎn)集合;并從各個(gè)所述成像面像素點(diǎn)p出發(fā)朝著所述三維紋理數(shù)據(jù)空間t的方向作一條垂直于所述視角正交面的射線記為對(duì)應(yīng)的像素點(diǎn)投射光線,并由得到的所有所述像素點(diǎn)投射光線組成對(duì)應(yīng)的第一投射光線集合;
6、基于cuda函數(shù)集中用于規(guī)劃內(nèi)存空間以及用于讀寫內(nèi)存數(shù)據(jù)的處理函數(shù)在gpu顯存中規(guī)劃一個(gè)三維紋理數(shù)據(jù)存儲(chǔ)區(qū)、一個(gè)正交面數(shù)據(jù)存儲(chǔ)區(qū)、一個(gè)像素點(diǎn)數(shù)據(jù)存儲(chǔ)區(qū)和一個(gè)投射光線數(shù)據(jù)存儲(chǔ)區(qū)用于存儲(chǔ)對(duì)應(yīng)的所述三維紋理數(shù)據(jù)空間t、所述三維紋理數(shù)據(jù)空間t的所述視角正交面、所述第一像素點(diǎn)集合和所述第一投射光線集合;并在gpu顯存中規(guī)劃一個(gè)rgb像素組存儲(chǔ)區(qū);所述rgb像素組存儲(chǔ)區(qū)用于存儲(chǔ)多個(gè)rgb像素組,每個(gè)所述rgb像素組由r通道像素值、g通道像素值和b通道像素值組成,所述rgb像素組存儲(chǔ)區(qū)中所述rgb像素組的數(shù)量與所述像素點(diǎn)數(shù)據(jù)存儲(chǔ)區(qū)中所述成像面像素點(diǎn)p的數(shù)量匹配且所述rgb像素組與所述成像面像素點(diǎn)p一一對(duì)應(yīng),所述rgb像素組存儲(chǔ)區(qū)內(nèi)存儲(chǔ)的所有所述rgb像素組都初始化為空;
7、在gpu運(yùn)行環(huán)境下為每個(gè)所述成像面像素點(diǎn)p創(chuàng)建一個(gè)調(diào)用光線投射算法核函數(shù)的線程記為對(duì)應(yīng)的第一像素點(diǎn)線程;并在gpu運(yùn)行環(huán)境下對(duì)所有所述第一像素點(diǎn)線程進(jìn)行并行執(zhí)行;所述光線投射算法核函數(shù)為一個(gè)只能在gpu運(yùn)行環(huán)境下運(yùn)行且只能使用gpu顯存的cuda內(nèi)核函數(shù);所述光線投射算法核函數(shù)的輸入?yún)?shù)為第一像素點(diǎn)索引;所述第一像素點(diǎn)索引為gpu顯存中存儲(chǔ)的所述第一像素點(diǎn)集合中的一個(gè)所述成像面像素點(diǎn)p對(duì)應(yīng)的唯一索引號(hào);所述光線投射算法核函數(shù)用于將gpu顯存中存儲(chǔ)的所述第一像素點(diǎn)集合中與所述像素點(diǎn)索引對(duì)應(yīng)的所述成像面像素點(diǎn)p作為對(duì)應(yīng)的當(dāng)前像素點(diǎn),并將gpu顯存中存儲(chǔ)的所述第一像素點(diǎn)集合中與所述當(dāng)前成像面像素點(diǎn)對(duì)應(yīng)的所述像素點(diǎn)投射光線作為對(duì)應(yīng)的當(dāng)前投射光線,并按光線投射算法和lambert光照模型根據(jù)gpu顯存中存儲(chǔ)的所述三維紋理數(shù)據(jù)空間t、所述視角正交面和所述當(dāng)前投射光線對(duì)所述當(dāng)前像素點(diǎn)的rgb像素進(jìn)行計(jì)算并基于計(jì)算結(jié)果對(duì)所述rgb像素組存儲(chǔ)區(qū)進(jìn)行更新;各個(gè)所述第一像素點(diǎn)線程的輸入?yún)?shù)為第二像素點(diǎn)索引;各個(gè)所述第一像素點(diǎn)線程用于將輸入的所述第二像素點(diǎn)索引作為對(duì)應(yīng)的所述第一像素點(diǎn)索引向所述光線投射算法核函數(shù)輸入并運(yùn)行所述光線投射算法核函數(shù)進(jìn)行計(jì)算;
8、在gpu顯存中的所述rgb像素組存儲(chǔ)區(qū)內(nèi)的所有所述rgb像素組都不為空時(shí),基于得到的所有所述rgb像素組進(jìn)行圖像構(gòu)建并將得到的構(gòu)建圖像作為對(duì)應(yīng)的體繪制圖像并顯示。
9、優(yōu)選的,所述根據(jù)所述第一醫(yī)學(xué)影像序列、所述視角點(diǎn)坐標(biāo)和所述視角點(diǎn)視距進(jìn)行視角點(diǎn)確認(rèn)和歸一化的三維紋理數(shù)據(jù)空間構(gòu)建得到對(duì)應(yīng)的第一視角點(diǎn)和三維紋理數(shù)據(jù)空間t,具體包括:
10、對(duì)所述第一醫(yī)學(xué)影像序列內(nèi)所有所述三維影像坐標(biāo)(x,y,z)中最大的x、y、z軸坐標(biāo)進(jìn)行識(shí)別得到對(duì)應(yīng)的最大值xmax、ymax、zmax;并將所述最大值xmax、ymax和zmax中的最大值作為對(duì)應(yīng)的最大邊長(zhǎng)b;并在所述xyz坐標(biāo)系中,基于所述最大邊長(zhǎng)b構(gòu)建一個(gè)形狀為b×b×b的正方體空間記為對(duì)應(yīng)的三維體數(shù)據(jù)空間r1;并將所述第一醫(yī)學(xué)影像序列內(nèi)各個(gè)所述影像像素點(diǎn)在所述三維體數(shù)據(jù)空間r1內(nèi)對(duì)應(yīng)的空間坐標(biāo)點(diǎn)記為對(duì)應(yīng)的體素點(diǎn)v;所述體素點(diǎn)v與所述影像像素點(diǎn)一一對(duì)應(yīng);
11、在所述xyz坐標(biāo)系中基于所述視角點(diǎn)坐標(biāo)進(jìn)行視角點(diǎn)標(biāo)記得到對(duì)應(yīng)的所述第一視角點(diǎn);并對(duì)所述三維體數(shù)據(jù)空間r1的八個(gè)側(cè)面中心點(diǎn)到所述第一視角點(diǎn)的直線距離進(jìn)行計(jì)算,并將其中距離最短的一個(gè)側(cè)面作為對(duì)應(yīng)的所述視角正交面;并在所述xyz坐標(biāo)系中對(duì)所述三維體數(shù)據(jù)空間r1進(jìn)行旋轉(zhuǎn)和位移,直到旋轉(zhuǎn)位移后得到的三維體數(shù)據(jù)空間r2的所述視角正交面的中心點(diǎn)和所述第一視角點(diǎn)之間的連線與所述視角正交面垂直且連線長(zhǎng)度與所述視角點(diǎn)視距匹配為止;并在旋轉(zhuǎn)位移過程中,對(duì)所述三維體數(shù)據(jù)空間r1中的各個(gè)所述體素點(diǎn)v的空間坐標(biāo)進(jìn)行對(duì)等的旋轉(zhuǎn)和位移得到所述三維體數(shù)據(jù)空間r2中對(duì)應(yīng)的體素點(diǎn)v*;所述體素點(diǎn)v*與所述體素點(diǎn)v一一對(duì)應(yīng);
12、將所述三維體數(shù)據(jù)空間r2中所述視角正交面的正對(duì)面記為對(duì)應(yīng)的正交面對(duì)面;并以所述視角正交面的左下角頂點(diǎn)為原點(diǎn)、以所述視角正交面的左下角頂點(diǎn)到右下角頂點(diǎn)方向?yàn)閷挾葁軸方向、以所述視角正交面的左下角頂點(diǎn)到左上角頂點(diǎn)方向?yàn)楦叨萮軸方向、以所述視角正交面的左下角頂點(diǎn)到所述正交面對(duì)面的左下角頂點(diǎn)方向?yàn)樯疃萪軸方向構(gòu)建一個(gè)三維笛卡爾坐標(biāo)系記為對(duì)應(yīng)的所述whd坐標(biāo)系;并將所述xyz坐標(biāo)系下的所述三維體數(shù)據(jù)空間r2在所述whd坐標(biāo)系下對(duì)應(yīng)的三維體數(shù)據(jù)空間記為對(duì)應(yīng)的三維體數(shù)據(jù)空間r3;并基于所述whd坐標(biāo)系和所述xyz坐標(biāo)系的旋轉(zhuǎn)位移關(guān)系對(duì)所述三維體數(shù)據(jù)空間r2中的各個(gè)所述體素點(diǎn)v*的空間坐標(biāo)進(jìn)行對(duì)等的旋轉(zhuǎn)和位移得到所述三維體數(shù)據(jù)空間r3中對(duì)應(yīng)的體素點(diǎn)v’;所述體素點(diǎn)v’的三維坐標(biāo)表達(dá)為(w’,h’,d’);所述體素點(diǎn)v’與所述體素點(diǎn)v*一一對(duì)應(yīng);
13、在所述whd坐標(biāo)系中基于所述最大邊長(zhǎng)b對(duì)所述三維體數(shù)據(jù)空間r3的三維尺寸以及各個(gè)所述體素點(diǎn)v’的三維坐標(biāo)進(jìn)行歸一化處理,并將得到的歸一化數(shù)據(jù)空間作為對(duì)應(yīng)的所述三維紋理數(shù)據(jù)空間t,并將所述三維紋理數(shù)據(jù)空間t中與各個(gè)所述體素點(diǎn)v’對(duì)應(yīng)空間坐標(biāo)點(diǎn)作為對(duì)應(yīng)的所述紋理體素點(diǎn)t;所述三維紋理數(shù)據(jù)空間t為一個(gè)形狀為(b/b)×(b/b)×(b/b)=1×1×1的正方體空間;所述紋理體素點(diǎn)t與所述體素點(diǎn)v’一一對(duì)應(yīng);所述紋理體素點(diǎn)t的三維坐標(biāo)(w,h,d)與所述體素點(diǎn)v’的三維坐標(biāo)(w’,h’,d’)的對(duì)應(yīng)關(guān)系為w=w’/b,h=h’/b,d=d’/b;
14、基于所述最大邊長(zhǎng)b對(duì)所述視角點(diǎn)視距進(jìn)行歸一化計(jì)算得到對(duì)應(yīng)的歸一化視距=視角點(diǎn)視距/b;并將所述三維紋理數(shù)據(jù)空間t的所述視角正交面的中心點(diǎn)記為對(duì)應(yīng)的當(dāng)前中心點(diǎn);并在所述當(dāng)前中心點(diǎn)處,從所述當(dāng)前中心點(diǎn)出發(fā)向所述三維紋理數(shù)據(jù)空間t外側(cè)方向做所述視角正交面的垂線記為對(duì)應(yīng)的外沿垂線;并將所述外沿垂線上與所述當(dāng)前中心點(diǎn)的距離與所述歸一化視距匹配的空間點(diǎn)坐標(biāo)作為所述第一視角點(diǎn)的新坐標(biāo)。
15、優(yōu)選的,所述按光線投射算法和lambert光照模型根據(jù)gpu顯存中存儲(chǔ)的所述三維紋理數(shù)據(jù)空間t、所述視角正交面和所述當(dāng)前投射光線對(duì)所述當(dāng)前像素點(diǎn)的rgb像素進(jìn)行計(jì)算并基于計(jì)算結(jié)果對(duì)所述rgb像素組存儲(chǔ)區(qū)進(jìn)行更新,具體包括:
16、步驟31,所述光線投射算法核函數(shù)為所述當(dāng)前像素點(diǎn)設(shè)置一個(gè)對(duì)應(yīng)的像素點(diǎn)光照強(qiáng)度i;并將所述像素點(diǎn)光照強(qiáng)度i初始化為一個(gè)預(yù)設(shè)的小于0的負(fù)強(qiáng)度閾值;并將預(yù)設(shè)的體繪制光源點(diǎn)坐標(biāo)對(duì)應(yīng)的空間坐標(biāo)點(diǎn)記為對(duì)應(yīng)的體繪制光源點(diǎn);
17、步驟32,并對(duì)所述當(dāng)前投射光線與所述視角正交面的交點(diǎn)進(jìn)行計(jì)算得到對(duì)應(yīng)的起始交點(diǎn);并將所述起始交點(diǎn)作為對(duì)應(yīng)的光線采樣點(diǎn)s;
18、步驟33,并對(duì)所述光線采樣點(diǎn)s對(duì)應(yīng)的采樣點(diǎn)灰度進(jìn)行識(shí)別,具體為:對(duì)所述三維紋理數(shù)據(jù)空間t中是否存在與所述光線采樣點(diǎn)s的空間坐標(biāo)匹配的所述紋理體素點(diǎn)t進(jìn)行確認(rèn);若存在,則將與所述光線采樣點(diǎn)s的空間坐標(biāo)匹配的所述紋理體素點(diǎn)t的所述紋理體素灰度作為對(duì)應(yīng)的所述采樣點(diǎn)灰度;若不存在,則在所述三維紋理數(shù)據(jù)空間t中對(duì)所述光線采樣點(diǎn)s的前后、左后、上下三組方向上的成對(duì)鄰域紋理體素點(diǎn)進(jìn)行搜索,若只搜索到其中一組方向上的一對(duì)鄰域紋理體素點(diǎn)則基于一維線性插值法根據(jù)當(dāng)前搜索到的這一對(duì)鄰域紋理體素點(diǎn)的所述紋理體素灰度進(jìn)行一維線性插值計(jì)算并將計(jì)算結(jié)果作為對(duì)應(yīng)的所述采樣點(diǎn)灰度,若搜索到其中兩組方向上的兩對(duì)鄰域紋理體素點(diǎn)則基于雙線性插值法根據(jù)當(dāng)前搜索到的這兩對(duì)鄰域紋理體素點(diǎn)的所述紋理體素灰度進(jìn)行雙線性插值計(jì)算并將計(jì)算結(jié)果作為對(duì)應(yīng)的所述采樣點(diǎn)灰度,若搜索三組方向上的三對(duì)鄰域紋理體素點(diǎn)則基于三線性插值法根據(jù)當(dāng)前搜索到的這三對(duì)鄰域紋理體素點(diǎn)的所述紋理體素灰度進(jìn)行三線性插值計(jì)算并將計(jì)算結(jié)果作為對(duì)應(yīng)的所述采樣點(diǎn)灰度;
19、步驟34,并對(duì)所述采樣點(diǎn)灰度是否超過預(yù)設(shè)的灰度閾值進(jìn)行識(shí)別;若是,則轉(zhuǎn)至步驟35;若否,則轉(zhuǎn)至步驟36;
20、步驟35,基于所述光線采樣點(diǎn)s的梯度確認(rèn)對(duì)應(yīng)的單位法向量n;并基于所述光線采樣點(diǎn)s到所述體繪制光源點(diǎn)的直線方向確認(rèn)對(duì)應(yīng)的單位光源向量l;并按lambert光照模型的光照強(qiáng)度計(jì)算方式,基于預(yù)設(shè)的環(huán)境光漫反射系數(shù)ka、預(yù)設(shè)的環(huán)境光照強(qiáng)度i?a、預(yù)設(shè)的光源漫反射系數(shù)kd、預(yù)設(shè)的光源光照強(qiáng)度i?d以及所述單位法向量n和所述單位光源向量l進(jìn)行光照強(qiáng)度計(jì)算得到對(duì)應(yīng)的光照強(qiáng)度i*;并基于所述光照強(qiáng)度i*對(duì)所述像素點(diǎn)光照強(qiáng)度i進(jìn)行重置;并對(duì)重置后的所述像素點(diǎn)光照強(qiáng)度i是否大于0進(jìn)行識(shí)別,若是則轉(zhuǎn)至步驟36,若否則轉(zhuǎn)至步驟37;
21、其中,i*=ka×ia+ka×id(l·n);
22、步驟36,對(duì)所述光線采樣點(diǎn)s到所述起始交點(diǎn)的距離是否超過預(yù)設(shè)的第一長(zhǎng)度進(jìn)行識(shí)別;若是,則轉(zhuǎn)至步驟37;若否,則將所述當(dāng)前投射光線上在所述光線采樣點(diǎn)s之后且與所述光線采樣點(diǎn)s的距離為預(yù)設(shè)的遞進(jìn)步長(zhǎng)△d的空間坐標(biāo)點(diǎn)作為新的所述光線采樣點(diǎn)s,并返回步驟33;所述第一長(zhǎng)度默認(rèn)為
23、步驟37,將所述rgb像素組存儲(chǔ)區(qū)中與所述當(dāng)前像素點(diǎn)對(duì)應(yīng)的所述rgb像素組記為對(duì)應(yīng)的當(dāng)前像素組;并對(duì)所述像素點(diǎn)光照強(qiáng)度i是否大于0進(jìn)行識(shí)別;若所述像素點(diǎn)光照強(qiáng)度i小于或等于0,則由預(yù)設(shè)的背景r通道像素值、預(yù)設(shè)的背景g通道像素值和預(yù)設(shè)的背景b通道像素值對(duì)所述當(dāng)前像素組中對(duì)應(yīng)的所述r通道像素值、所述g通道像素值和所述b通道像素值進(jìn)行設(shè)置;若所述像素點(diǎn)光照強(qiáng)度i大于0,則基于預(yù)設(shè)的r通道像素系數(shù)r0、預(yù)設(shè)的g通道像素系數(shù)g0、預(yù)設(shè)的b通道像素系數(shù)b0和所述像素點(diǎn)光照強(qiáng)度i計(jì)算對(duì)應(yīng)的第一像素值=r0×i、第二像素值=g0×i和第三像素值=b0×i,并由計(jì)算得到的所述第一、第二和第三像素值對(duì)所述當(dāng)前像素組中對(duì)應(yīng)的所述r通道像素值、所述g通道像素值和所述b通道像素值進(jìn)行設(shè)置。
24、本發(fā)明實(shí)施例第二方面提供了一種用于實(shí)現(xiàn)上述第一方面所述的醫(yī)學(xué)影像的體繪制處理方法的裝置,所述裝置包括:數(shù)據(jù)接收模塊、第一數(shù)據(jù)預(yù)處理模塊、第二數(shù)據(jù)預(yù)處理模塊、第一cuda處理模塊、第二cuda處理模塊和體繪制圖像構(gòu)圖模塊;
25、所述數(shù)據(jù)接收模塊用于接收第一醫(yī)學(xué)影像序列、視角點(diǎn)坐標(biāo)、視角點(diǎn)視距和體繪制成像尺寸w0×h0;所述第一醫(yī)學(xué)影像序列由多個(gè)第一醫(yī)學(xué)影像順序排序而成;所述第一醫(yī)學(xué)影像為一個(gè)三維ct影像或一個(gè)三維mr?i影像;每個(gè)所述第一醫(yī)學(xué)影像都由多個(gè)影像像素點(diǎn)組成;每個(gè)所述影像像素點(diǎn)至少對(duì)應(yīng)一個(gè)三維影像坐標(biāo)(x,y,z)和一個(gè)影像灰度;所述三維影像坐標(biāo)(x,y,z)為一個(gè)xyz坐標(biāo)系下的空間坐標(biāo),所述xyz坐標(biāo)系為一個(gè)由x、y、z軸組成的三維笛卡爾坐標(biāo)系;所述體繪制成像尺寸w0×h0中的w0、h0分別為體繪制成像的像素寬度和像素高度;
26、所述第一數(shù)據(jù)預(yù)處理模塊用于根據(jù)所述第一醫(yī)學(xué)影像序列、所述視角點(diǎn)坐標(biāo)和所述視角點(diǎn)視距進(jìn)行視角點(diǎn)確認(rèn)和歸一化的三維紋理數(shù)據(jù)空間構(gòu)建得到對(duì)應(yīng)的第一視角點(diǎn)和三維紋理數(shù)據(jù)空間t;所述三維紋理數(shù)據(jù)空間t為一個(gè)在whd坐標(biāo)系下形狀為1×1×1的正方體空間,所述whd坐標(biāo)系為一個(gè)由寬度w軸、高度h軸和深度d軸組成的三維笛卡爾坐標(biāo)系;所述三維紋理數(shù)據(jù)空間t內(nèi)包括多個(gè)紋理體素點(diǎn)t;所述紋理體素點(diǎn)t與所述影像像素點(diǎn)一一對(duì)應(yīng);每個(gè)所述紋理體素點(diǎn)t對(duì)應(yīng)一個(gè)三維坐標(biāo)(w,h,d)和一個(gè)紋理體素灰度,三維坐標(biāo)值w、h、d的取值范圍都在0到1之間,所述紋理體素灰度與對(duì)應(yīng)的所述影像灰度一致;所述三維紋理數(shù)據(jù)空間t的八個(gè)側(cè)面中與所述第一視角點(diǎn)距離最近的一個(gè)側(cè)面記為對(duì)應(yīng)的視角正交面;所述視角正交面的中心點(diǎn)與所述第一視角點(diǎn)的連線垂直所述視角正交面;
27、所述第二數(shù)據(jù)預(yù)處理模塊用于在所述第一視角點(diǎn)到所述三維紋理數(shù)據(jù)空間t的所述視角正交面的中心點(diǎn)的連線上任選一點(diǎn)作為對(duì)應(yīng)的成像平面點(diǎn);并在所述成像平面點(diǎn)作一個(gè)與所述視角正交面大小一致且四邊都平行的平面記為對(duì)應(yīng)的體繪制成像面;基于所述體繪制成像尺寸w0×h0對(duì)所述體繪制成像面進(jìn)行網(wǎng)格劃分得到對(duì)應(yīng)的w0×h0個(gè)成像面像素點(diǎn)p組成對(duì)應(yīng)的第一像素點(diǎn)集合;并從各個(gè)所述成像面像素點(diǎn)p出發(fā)朝著所述三維紋理數(shù)據(jù)空間t的方向作一條垂直于所述視角正交面的射線記為對(duì)應(yīng)的像素點(diǎn)投射光線,并由得到的所有所述像素點(diǎn)投射光線組成對(duì)應(yīng)的第一投射光線集合;
28、所述第一cuda處理模塊用于基于cuda函數(shù)集中用于規(guī)劃內(nèi)存空間以及用于讀寫內(nèi)存數(shù)據(jù)的處理函數(shù)在gpu顯存中規(guī)劃一個(gè)三維紋理數(shù)據(jù)存儲(chǔ)區(qū)、一個(gè)正交面數(shù)據(jù)存儲(chǔ)區(qū)、一個(gè)像素點(diǎn)數(shù)據(jù)存儲(chǔ)區(qū)和一個(gè)投射光線數(shù)據(jù)存儲(chǔ)區(qū)用于存儲(chǔ)對(duì)應(yīng)的所述三維紋理數(shù)據(jù)空間t、所述三維紋理數(shù)據(jù)空間t的所述視角正交面、所述第一像素點(diǎn)集合和所述第一投射光線集合;并在gpu顯存中規(guī)劃一個(gè)rgb像素組存儲(chǔ)區(qū);所述rgb像素組存儲(chǔ)區(qū)用于存儲(chǔ)多個(gè)rgb像素組,每個(gè)所述rgb像素組由r通道像素值、g通道像素值和b通道像素值組成,所述rgb像素組存儲(chǔ)區(qū)中所述rgb像素組的數(shù)量與所述像素點(diǎn)數(shù)據(jù)存儲(chǔ)區(qū)中所述成像面像素點(diǎn)p的數(shù)量匹配且所述rgb像素組與所述成像面像素點(diǎn)p一一對(duì)應(yīng),所述rgb像素組存儲(chǔ)區(qū)內(nèi)存儲(chǔ)的所有所述rgb像素組都初始化為空;
29、所述第二cuda處理模塊用于在gpu運(yùn)行環(huán)境下為每個(gè)所述成像面像素點(diǎn)p創(chuàng)建一個(gè)調(diào)用光線投射算法核函數(shù)的線程記為對(duì)應(yīng)的第一像素點(diǎn)線程;并在gpu運(yùn)行環(huán)境下對(duì)所有所述第一像素點(diǎn)線程進(jìn)行并行執(zhí)行;所述光線投射算法核函數(shù)為一個(gè)只能在gpu運(yùn)行環(huán)境下運(yùn)行且只能使用gpu顯存的cuda內(nèi)核函數(shù);所述光線投射算法核函數(shù)的輸入?yún)?shù)為第一像素點(diǎn)索引;所述第一像素點(diǎn)索引為gpu顯存中存儲(chǔ)的所述第一像素點(diǎn)集合中的一個(gè)所述成像面像素點(diǎn)p對(duì)應(yīng)的唯一索引號(hào);所述光線投射算法核函數(shù)用于將gpu顯存中存儲(chǔ)的所述第一像素點(diǎn)集合中與所述像素點(diǎn)索引對(duì)應(yīng)的所述成像面像素點(diǎn)p作為對(duì)應(yīng)的當(dāng)前像素點(diǎn),并將gpu顯存中存儲(chǔ)的所述第一像素點(diǎn)集合中與所述當(dāng)前成像面像素點(diǎn)對(duì)應(yīng)的所述像素點(diǎn)投射光線作為對(duì)應(yīng)的當(dāng)前投射光線,并按光線投射算法和lambert光照模型根據(jù)gpu顯存中存儲(chǔ)的所述三維紋理數(shù)據(jù)空間t、所述視角正交面和所述當(dāng)前投射光線對(duì)所述當(dāng)前像素點(diǎn)的rgb像素進(jìn)行計(jì)算并基于計(jì)算結(jié)果對(duì)所述rgb像素組存儲(chǔ)區(qū)進(jìn)行更新;各個(gè)所述第一像素點(diǎn)線程的輸入?yún)?shù)為第二像素點(diǎn)索引;各個(gè)所述第一像素點(diǎn)線程用于將輸入的所述第二像素點(diǎn)索引作為對(duì)應(yīng)的所述第一像素點(diǎn)索引向所述光線投射算法核函數(shù)輸入并運(yùn)行所述光線投射算法核函數(shù)進(jìn)行計(jì)算;
30、所述體繪制圖像構(gòu)圖模塊用于在gpu顯存中的所述rgb像素組存儲(chǔ)區(qū)內(nèi)的所有所述rgb像素組都不為空時(shí),基于得到的所有所述rgb像素組進(jìn)行圖像構(gòu)建并將得到的構(gòu)建圖像作為對(duì)應(yīng)的體繪制圖像并顯示。
31、本發(fā)明實(shí)施例第三方面提供了一種電子設(shè)備,包括:存儲(chǔ)器、處理器和收發(fā)器;
32、所述處理器用于與所述存儲(chǔ)器耦合,讀取并執(zhí)行所述存儲(chǔ)器中的指令,以實(shí)現(xiàn)上述第一方面所述的方法步驟;
33、所述收發(fā)器與所述處理器耦合,由所述處理器控制所述收發(fā)器進(jìn)行消息收發(fā)。
34、本發(fā)明實(shí)施例第四方面提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)有計(jì)算機(jī)指令,當(dāng)所述計(jì)算機(jī)指令被計(jì)算機(jī)執(zhí)行時(shí),使得所述計(jì)算機(jī)執(zhí)行上述第一方面所述的方法的指令。
35、本發(fā)明實(shí)施例提供了一種醫(yī)學(xué)影像的體繪制處理方法、裝置、電子設(shè)備及計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。由上述內(nèi)容可知,本發(fā)明實(shí)施例在調(diào)用cuda架構(gòu)進(jìn)行處理之前,會(huì)先根據(jù)醫(yī)學(xué)影像序列、視角點(diǎn)坐標(biāo)和視角點(diǎn)視距進(jìn)行視角點(diǎn)確認(rèn)和歸一化的三維紋理數(shù)據(jù)空間t構(gòu)建,并在視角點(diǎn)到三維紋理數(shù)據(jù)空間t的視角正交面的中心點(diǎn)的連線上任選一點(diǎn)作為對(duì)應(yīng)的成像平面點(diǎn),并在成像平面點(diǎn)作一個(gè)與視角正交面大小一致且四邊都平行的平面記為對(duì)應(yīng)的體繪制成像面,并基于體繪制成像尺寸對(duì)體繪制成像面進(jìn)行網(wǎng)格劃分得到多個(gè)成像面像素點(diǎn)p組成對(duì)應(yīng)的像素點(diǎn)集合,并從各個(gè)成像面像素點(diǎn)p出發(fā)朝著三維紋理數(shù)據(jù)空間t的方向作一條垂直于視角正交面的射線記為對(duì)應(yīng)的像素點(diǎn)投射光線并由得到的所有像素點(diǎn)投射光線組成對(duì)應(yīng)的投射光線集合;在完成以上數(shù)據(jù)準(zhǔn)備工作之后,會(huì)基于cuda架構(gòu)在gpu顯存中規(guī)劃數(shù)據(jù)存儲(chǔ)區(qū)來存儲(chǔ)三維紋理數(shù)據(jù)空間t、視角正交面、像素點(diǎn)集合和投射光線集合,并規(guī)劃一個(gè)rgb像素組存儲(chǔ)區(qū)用于對(duì)后續(xù)的計(jì)算結(jié)果進(jìn)行存儲(chǔ);并基于cuda架構(gòu)在gpu運(yùn)行環(huán)境下為每個(gè)成像面像素點(diǎn)p創(chuàng)建一個(gè)調(diào)用光線投射算法核函數(shù)的線程記為對(duì)應(yīng)的第一像素點(diǎn)線程,并在gpu運(yùn)行環(huán)境下對(duì)所有第一像素點(diǎn)線程進(jìn)行并行執(zhí)行;該光線投射算法核函數(shù)為一個(gè)定制的cuda內(nèi)核函數(shù),用于按光線投射算法和lambert光照模型根據(jù)gpu顯存中存儲(chǔ)的三維紋理數(shù)據(jù)空間t、視角正交面和一條指定投射光線對(duì)該投射光線對(duì)應(yīng)像素點(diǎn)的rgb像素進(jìn)行計(jì)算并基于計(jì)算結(jié)果對(duì)rgb像素組存儲(chǔ)區(qū)進(jìn)行更新;最后,在gpu顯存中的rgb像素組存儲(chǔ)區(qū)內(nèi)的所有rgb像素組都不為空時(shí)由所有rgb像素組進(jìn)行圖像構(gòu)建得到對(duì)應(yīng)的體繪制圖像并顯示。本發(fā)明實(shí)施例將cuda架構(gòu)應(yīng)用在了醫(yī)學(xué)影像的體繪制處理方案上,提升了醫(yī)學(xué)影像體繪制的計(jì)算效率、繪制速度和實(shí)時(shí)性繪圖效果;本發(fā)明實(shí)施例通過定制cuda內(nèi)核函數(shù)實(shí)現(xiàn)了一種在lambert光照模型下基于光強(qiáng)-像素映射關(guān)系來對(duì)成像像素點(diǎn)進(jìn)行著色的光線投射算法處理流程,提高了醫(yī)學(xué)影像體繪制的處理靈活性和優(yōu)化便捷度。